read only設定

(8.0.21)

show variables like '%read%only%';

innodb_read_only →スーパーユーザも書き込み不可
read_only →スーパーユーザは書き込み可能
super_read_only →スーパーユーザも書き込み不可
transaction_read_only →スーパーユーザも書き込み不可(トランザクションレベル)


※super_read_onlyとinnodb_read_onlyに機能的な差はない模様


-- データベースレベル

select @@read_only;
select @@innodb_read_only;
select @@super_read_only;

-- テーブルレベル
ない模様


-- トランザクションレベル
set transaction_read_only=ON;

select @@transaction_read_only;

 

(19c)

-- データベースレベル(CDB)

shutdown immediate;
startup mount;
alter database open read only;
alter database open read write;

select open_mode from v$database;


-- データベースレベル(PDB)

alter pluggable database pdb1 close immediate;
alter pluggable database pdb1 open read only;
alter pluggable database pdb1 open read write;

select * from v$pdbs;

-- テーブルレベル

alter table tab1 read only;
alter table tab1 read write;

select table_name,read_only from user_tables where table_name = 'TAB1';


-- トランザクションレベル

set transaction read only;
set transaction read write;

 

(13)

 

-- データベースレベル


alter database test set default_transaction_read_only = on;
alter database test set default_transaction_read_only = off;
show default_transaction_read_only;


※新規セッションから有効


-- テーブルレベル
ない模様


-- トランザクションレベル

set transaction read only;
set transaction read write;

 

(2019)


-- データベースレベル

ALTER DATABASE test SET READ_ONLY;
ALTER DATABASE test SET READ_WRITE;

select name,is_read_only from sys.databases;

 

-- テーブルレベル
ない模様

-- トランザクションレベル
ない模様