はじめに
CDB構成におけるPDBはデフォルトでは、CLOSE状態です。Alter Pluggable Database コマンドなどで OPEN状態にし、CDBが再起動された際に自動的にPDBまでOPENさせたい場合などでは SAVE STATE などで状態を維持する事ができます。
ただ、これはシングル・インスタンスの場合であり、21c以降のRAC環境においては違います。21cにおいてPDBは GI (Clusterware) の1リソースとして管理される事になった事に起因します。
RAC環境で再起動時に特定のPDBをCLOSE状態の維持をする場合は、クラスタリソースとして登録されたPDBのプロパティを変更する事で可能になります。
ただし、このような状態は推奨されませんのでご注意下さい。
RAC環境で再起動時のPDBについて確認
- srvctlコマンドでRACの稼働状況を確認します
[oracle@node01 ~]$ srvctl status pdb -db orcl23ai -pdb ORCL23AIPDB1
プラガブル・データベースORCL23AIPDB1は有効です。
データベースorcl23aiのプラガブル・データベースORCL23AIPDB1は、ノード: node01,node02で実行中です
(node01から sys で接続)
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCL23AIPDB1 READ WRITE NO
- node01で 対象のPDBをCLOSEしてSAVE STATE を試します
SQL> alter pluggable database ORCL23AIPDB1 close;
プラガブル・データベースが変更されました。
経過: 00:00:09.45
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCL23AIPDB1 MOUNTED
SQL> alter pluggable database ORCL23AIPDB1 save state;
プラガブル・データベースが変更されました。
[oracle@node01 ~]$ srvctl status pdb -db orcl23ai -pdb ORCL23AIPDB1
プラガブル・データベースORCL23AIPDB1は有効です。
データベースorcl23aiのプラガブル・データベースORCL23AIPDB1は、ノード: node02で実行中です
node01では停止した状態で Save State しました。
- CDBを再起動します
SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup
ORACLEインスタンスが起動しました。
Total System Global Area 4946727280 bytes
Fixed Size 5370224 bytes
Variable Size 3019898880 bytes
Database Buffers 1912602624 bytes
Redo Buffers 8855552 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCL23AIPDB1 READ WRITE NO
[oracle@node01 ~]$ srvctl status pdb -db orcl23ai -pdb ORCL23AIPDB1
プラガブル・データベースORCL23AIPDB1は有効です。
データベースorcl23aiのプラガブル・データベースORCL23AIPDB1は、ノード: node01,node02で実行中です
node01および node02 でOPENされた事が確認されます。(Save State が無効)
クラスタ・リソースPDB のプロパティを変更する
- Srvctl -help よりシンタックスを確認
使用方法: srvctl enable pdb -db -pdb [-node ]
使用方法: srvctl disable pdb -db -pdb [-node ] - node1で起動されないように srvctl disable pdb します
[oracle@node01 ~]$srvctl disable pdb -db orcl23ai -pdb ORCL23AIPDB1 -node node01
[oracle@node01 ~]$ srvctl status pdb -db orcl23ai -pdb ORCL23AIPDB1
プラガブル・データベースORCL23AIPDB1は有効です。
データベースorcl23aiのプラガブル・データベースORCL23AIPDB1は、ノード: node02で実行中です
- リブート後、node1で起動されない事を確認
(node01から sys で接続)
SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup
ORACLEインスタンスが起動しました。
Total System Global Area 4946727280 bytes
Fixed Size 5370224 bytes
Variable Size 3019898880 bytes
Database Buffers 1912602624 bytes
Redo Buffers 8855552 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCL23AIPDB1 MOUNTED
disable 設定が機能しています。
- 元の状態に戻す
[oracle@node01 ~]srvctl enable pdb -db orcl23ai -pdb ORCL23AIPDB1 -node node01
SQL> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 ORCL23AIPDB1 MOUNTED
※ Enable だけでは OPENされないことに注意
SQL> shutdown immediate
データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> startup
ORACLEインスタンスが起動しました。
Total System Global Area 4946727280 bytes
Fixed Size 5370224 bytes
Variable Size 3019898880 bytes
Database Buffers 1912602624 bytes
Redo Buffers 8855552 bytes
データベースがマウントされました。
データベースがオープンされました。
[oracle@node01 ~]$ srvctl status pdb -db orcl23ai -pdb ORCL23AIPDB1
プラガブル・データベースORCL23AIPDB1は有効です。
データベースorcl23aiのプラガブル・データベースORCL23AIPDB1は、ノード: node01,node02で実行中です
最後に
Oracle Database 21cからの仕様変更により PDBは GI – Clusterware のリソースとして登録・管理され、よりCDBからの分離性が高まっています。これにより有益な面が増える半面、19cまでの設定や運用が変更を求められるケースや、その変更やリスクに気付けずにトラブルを引き起こす事もあるかも知れません。
推奨されない運用形態だとはされていますが、このようなケースでも可能な範囲で拾っていきたいと思います。