前回のおさらい
こんにちは。プラチナホルダー浜辺です。
前回はCDB/PDBの起動停止をお伝えしました。
本ビジネスブログの右側の「最新の投稿」の下にある
カテゴリー > [連載]マルチテナント
から確認できます。
こちらに更新していきますので、宜しくお願いします。
PDBの自動起動
前回、下記紹介したことを覚えていらっしゃいますか?
【PDBの起動】
まず、PDBに関して、デフォルトの場合、CDBが起動した状態ではMOUNT状態で起動しています。 |
「覚えてまーす」という人、ありがとうございます。
「え?そんなこと書いてあった?」という人、データベースを運用する上で大切なことですので、これを機に覚えていただければ幸いです。
CDBを起動しただけでは、PDBはMOUNT状態となっており、データファイルにアクセスできません。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB MOUNTED 4 TEST122PDB2 MOUNTED
試しにPDBに接続して、ユーザ表にアクセスしてみます。
SQL> alter session set container=TEST122PDB; セッションが変更されました。 SQL> select * from test_tab; select * from test_tab * 行1でエラーが発生しました。: ORA-01219: データベースまたはプラガブル・データベースがオープンしていません: 固定の表またはビューに対する問合せのみ可能です
想定どおり、アクセス出来ません。
MOUNT状態なので当然の結果ですね!
では、前回の復習も兼ねて、PDBを起動させてユーザ表にアクセスしてみましょう。
SQL> alter database open; データベースが変更されました。 SQL> SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 TEST122PDB READ WRITE NO
PDBがOPENできました!
SQL> select * from test_tab; COL1 COL2 ------------------------------ ---------- data1
PDBがOPEN状態であれば、勿論ユーザ表にアクセスできます。
でも、CDBを起動する度に、PDBを起動するのは手間ですよね?
ご安心ください。PDBも自動起動設定できます。
自動起動の設定方法はDatabaseのバージョンが12.1.0.1と12.1.0.2以降で異なりますが、今回は改善された12.1.0.2以降の方法をご紹介させていただきます。
PDB 自動起動設定
CDBを起動した状態から始めます。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB MOUNTED 4 TEST122PDB2 MOUNTED
まず、自動起動させたいPDBを起動させます。
SQL> alter pluggable database TEST122PDB open; プラガブル・データベースが変更されました。
PDB「TEST122PDB」が起動しました。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB READ WRITE NO 4 TEST122PDB2 MOUNTED
次に下記のコマンドを実行し、自動起動となるように設定します。
SQL> alter pluggable database all save state; プラガブル・データベースが変更されました。
これで次回からPDB「TEST122PDB」はCDB起動時に自動で起動します。
試しにCDBを再起動してみましょう。
SQL> shutdown immediate; データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。
SQL> startup ORACLEインスタンスが起動しました。 Total System Global Area 3539992576 bytes Fixed Size 8798840 bytes Variable Size 822087048 bytes Database Buffers 2701131776 bytes Redo Buffers 7974912 bytes データベースがマウントされました。 データベースがオープンされました。
はい!見事、自動起動設定を行ったPDB「TEST122PDB」のみ起動しています。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB READ WRITE NO 4 TEST122PDB2 MOUNTED
このような形で自動起動の設定を行いますが、1点注意事項があります。
「 alter pluggable database all save state; 」のコマンドに関して、現在のPDB起動状態をセーブするコマンドなので自動起動させたいPDBが停止している状態で実行しても、自動起動とならないので注意してくださいね!
PDB「TEST122PDB2」が自動起動されてないのは、PDBが停止した状態で「 alter pluggable database all save state; 」のコマンドを実行したからです!
以上で、PDBの自動起動の紹介は終わりです。
いかがでしたでしょうか?
個人的にはPDBの自動起動の設定が容易に行えて便利だと感じました!
次回は、いよいよPDBの作成方法をご紹介します。
乞うご期待!!!