前回のおさらい
こんにちは。プラチナホルダー浜辺です。
前回はCDB/PDBへの接続をお伝えしました。
本ビジネスブログの右側の「最新の投稿」の下にある
カテゴリー > [連載]マルチテナント
から確認できます。
こちらに更新していきますので、宜しくお願いします。
CDB/PDBの起動停止
CDBの起動停止方法は従来のデータベースと同じですが、PDBは独自のコマンドにより起動停止を行うことも可能です。
また、CDBが起動した状態であれば、特定のPDBのみを停止することが可能ですので、メンテナンスが必要な際の影響を少なくすることが出来ます。
マルチテナント構成で、2つのPDBが存在
PDB1 | TEST122PDB |
---|---|
PDB2 | TEST122PDB2 |
CDBの起動
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 データベースがマウントされました。 データベースがオープンされました。 SQL> SQL> SQL> SQL> show con_name CON_NAME ------------------------------ CDB$ROOT SQL> SQL> SQL> select instance_name, status from v$instance; INSTANCE_NAME ------------------------------------------------ STATUS ------------------------------------ test122cdb OPEN
従来型と同様、CDBに接続して startup を実行します。
CDBの停止
SQL> SQL> shutdown immediate; データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。 SQL> SQL> SQL> show con_name ERROR: ORA-01034: ORACLE not available プロセスID: 0 セッションID: 0、シリアル番号: 0 SP2-1545: この機能にはデータベースの可用性が必要です。
従来型と同様、CDBに接続して shutdown を実行します。
CDBの起動停止はこれまでと変わらないです!
では、続いてPDBの手順です。
PDBの起動
まず、PDBに関して、デフォルトの場合、CDBが起動した状態ではMOUNT状態で起動しています。
インスタンス、制御ファイルはCDB管理であるため、PDBがSHUTDOWN状態ではなく、MOUNT状態というのは頷けますね。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB MOUNTED 4 TEST122PDB2 MOUNTED
まずは、オーソドックスにCDBから全PDB一斉起動方法をご紹介します。
コマンドはCDBに接続した状態で実行します。
TEST122PDB、TEST122PDB2 共に 「 MOUNTED 」 状態です。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB MOUNTED 4 TEST122PDB2 MOUNTED
ここで起動コマンドを一発!
SQL> alter pluggable database all open; プラガブル・データベースが変更されました。
TEST122PDB、TEST122PDB2 共に 「 READ WRITE (=OPEN)」 状態となりました。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB READ WRITE NO 4 TEST122PDB2 READ WRITE NO
では、次に指定したPDBのみ起動させる手順をご紹介します。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB MOUNTED 4 TEST122PDB2 MOUNTED
先ほどのコマンドで all の場所をPDB名に置き換えて実行します。
SQL> alter pluggable database TEST122PDB open; プラガブル・データベースが変更されました。
指定したPDBのみ起動に成功しました。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB READ WRITE NO 4 TEST122PDB2 MOUNTED
他には、カンマ区切りで複数のPDB起動を制御できたり、except オプションを指定することで特定のPDBを除いてPDBを起動することができます。
複数PDB起動例
SQL> alter pluggable database TEST122PDB, TEST122PDB2 open; プラガブル・データベースが変更されました。
特定のPDBを除いたPDB起動例
SQL> alter pluggable database all except TEST122PDB2 open; プラガブル・データベースが変更されました。
上記まではCDBに接続した状態でのPDB起動でしたが、PDBに接続した状態でもPDBを起動できます。
コマンドは特定のPDBに接続した状態で「 alter database open 」 実行です。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 TEST122PDB MOUNTED SQL> SQL> alter database open; データベースが変更されました。 SQL> SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 TEST122PDB READ WRITE NO
はい!見事、起動できましたね。
続いて、PDBの停止ですが、基本的に起動とパターンが同じですので、一部説明を割愛しながらご紹介します。
PDBの停止
まず、CDBから全PDB一斉停止方法となります。
コマンドはCDBに接続した状態で実行します。
TEST122PDB、TEST122PDB2 共に 「 READ WRITE (=OPEN)」 状態で、下記コマンド実行となります。
SQL> alter pluggable database all close immediate; プラガブル・データベースが変更されました。 SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB MOUNTED 4 TEST122PDB2 MOUNTED
見事、全PDB停止できました。
コマンドは shutdown ではなく close となっているところに注意ですね!
次に指定したPDBのみ停止させる手順です。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB READ WRITE NO 4 TEST122PDB2 MOUNTED
先ほどのコマンドで all のところをPDB名に置き換えて実行します。
SQL> SQL> SQL> alter pluggable database TEST122PDB close immediate; プラガブル・データベースが変更されました。 SQL> SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB MOUNTED 4 TEST122PDB2 MOUNTED
指定したPDBのみ停止に成功しました。
起動の時と同様に、カンマ区切りで複数のPDB停止を制御できたり、except オプションにより特定のPDBを除いてPDBを停止することができます。
複数PDB停止例
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB READ WRITE NO 4 TEST122PDB2 READ WRITE NO SQL> SQL> alter pluggable database TEST122PDB, TEST122PDB2 close immediate; プラガブル・データベースが変更されました。
特定のPDBを除いたPDB停止例
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 2 PDB$SEED READ ONLY NO 3 TEST122PDB READ WRITE NO 4 TEST122PDB2 READ WRITE NO SQL> SQL> SQL> alter pluggable database all except TEST122PDB2 close immediate; プラガブル・データベースが変更されました。
次にPDBに接続した状態でのPDB停止方法です。
コマンドは特定のPDBに接続した状態で「 shutdown immediate 」 実行となります。
SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 TEST122PDB READ WRITE NO SQL> SQL> shutdown immediate; プラガブル・データベースがクローズされました。 SQL> SQL> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- ------------------------------ ---------- ---------- 3 TEST122PDB MOUNTED
はい!見事、停止できましたね。
起動/停止の確認については
CDB | select instance_name,status from v$instance; |
---|---|
PDB | show pdbs select con_id,name,open_mode from v$pdbs; |
などで確認を行ってください。
それではCDB/PDBの起動停止は以上です。
そして、次回は、PDBの自動起動です!
乞うご期待!!!