(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;
-- テーブルレベル
ない模様
-- トランザクションレベル
ない模様