技術ブログ
技術ブログ
目次
この記事は(全部俺)某Oracle書籍を25日後に脱稿するXX歳の Advent Calendar 2021の3日目の記事です。2日目の記事はPDBのUnPlugとPlug - (全部俺)某Oracle書籍を25日後に脱稿するXX歳のAdvent Calendar 2021 2日目でした。
つい「カッと」なって(全部俺)某Oracle書籍を25日後に脱稿するXX歳の Advent Calendar 2021を作ってしまいました。
オラクルマスター教科書 Bronze DBA Oracle Database Fundamentals、 オラクルマスター教科書 Silver DBA Oracle Database Administration Iに続く「某Oracle書籍」を執筆中のOracle ACE 渡部が、12月25日のドラフト脱稿目指して1日1記事頑張って投稿してゆきたいと思います!
「某Oracle書籍」執筆中に実施した下調べの内容や、「某Oracle書籍」のターゲットを超える内容、内容的に関連するセミナー資料の抜粋などを記載する予定です。
2021年12月時点で「某Oracle書籍」の発売時期は未定です。もう少々お待ちを。
万が一、関係者から怒られたら途中でやめるかも(たぶん大丈夫だと思うのだけど)
執筆中の「某Oracle書籍」の記載内容と、一連の投稿の記載内容は異なります
「某Oracle書籍」の記載と、一連の投稿は品質が全く異なります 。
オラクルマスター教科書 Silver DBA Oracle Database Administration I https://www.amazon.co.jp/dp/4798166359/ (2021年5月28日 発売)
オラクルマスター教科書 Bronze DBA Oracle Database Fundamentals https://www.amazon.co.jp/dp/4798166367/ (2020年9月17日 発売)
2022/3/25 追記
12月中の脱稿には失敗してしまいましたが、その後鋭意執筆を進め、2022年5月27日に「オラクルマスター教科書 Gold DBA Oracle Database Administration II」を販売開始します。詳細は以下をご覧ください。
ORACLE MASTER Bronze DBA 2019試験対策本の発売日が決定しました
Oracle 12.2からPDBアーカイブ形式でのPDB切断、接続がサポートされました。
UNPLUB INTO句のファイル名の拡張子を.pdbとすると、PDBアーカイブ形式でPDB切断されます。
SQL> ALTER PLUGGABLE DATABASE pdb1 UNPLUG INTO '/var/tmp/pdb1.pdb';
プラガブル・データベースが変更されました。
SQL> SELECT pdb_name, guid, status FROM CDB_PDBS;
PDB_NAME GUID STATUS
------------ -------------------------------- ----------
PDB1 CFEDB86C8C2A16DFE0530C38A8C03CB0 UNPLUGGED
PDB$SEED CFED97BB79780DFFE0530C38A8C06278 NORMAL
PDB2 CFEDB91B222A174EE0530C38A8C0A61D NORMAL
PDBアーカイブ形式の実体は、データファイルとXMLを含むZIPファイルです。
[oracle@ol78n12 ~]$ cd /var/tmp
[oracle@ol78n12 tmp]$ file /var/tmp/pdb1.pdb
/var/tmp/pdb1.pdb: Zip archive data, at least v3.0 to extract
[oracle@ol78n12 tmp]$ unzip -l /var/tmp/pdb1.pdb
Archive: /var/tmp/pdb1.pdb
Length Date Time Name
--------- ---------- ----- ----
283115520 11-23-2021 12:21 system01.dbf
346030080 11-23-2021 12:21 sysaux01.dbf
104857600 11-23-2021 12:21 undotbs01.dbf
5242880 11-23-2021 12:21 users01.dbf
7508 11-23-2021 12:21 /var/tmp/pdb1.xml
--------- -------
739253588 5 files
XMLファイルは通常の切断と類似しています。
[oracle@ol78n12 tmp]$ unzip /var/tmp/pdb1.pdb /var/tmp/pdb1.xml
Archive: /var/tmp/pdb1.pdb
warning: stripped absolute path spec from /var/tmp/pdb1.xml
inflating: var/tmp/pdb1.xml
[oracle@ol78n12 tmp]$ cat var/tmp/pdb1.xml
<?xml version="1.0" encoding="UTF-8"?>
<PDB>
<xmlversion>1</xmlversion>
<pdbname>PDB1</pdbname>
<cid>3</cid>
<byteorder>1</byteorder>
<vsn>318767104</vsn>
<vsns>
<vsnnum>19.0.0.0.0</vsnnum>
<cdbcompt>19.0.0.0.0</cdbcompt>
<pdbcompt>19.0.0.0.0</pdbcompt>
<vsnlibnum>0.0.0.0.24</vsnlibnum>
<vsnsql>24</vsnsql>
<vsnbsv>8.0.0.0.0</vsnbsv>
</vsns>
<dbid>488255261</dbid>
<ncdb2pdb>0</ncdb2pdb>
<cdbid>2204331272</cdbid>
<guid>CFEDB86C8C2A16DFE0530C38A8C03CB0</guid>
<uscnbas>2137195</uscnbas>
<uscnwrp>0</uscnwrp>
<undoscn>280</undoscn>
<rdba>4194824</rdba>
<tablespace>
<name>SYSTEM</name>
<type>0</type>
<tsn>0</tsn>
<status>1</status>
<issft>0</issft>
<isnft>0</isnft>
<encts>0</encts>
<flags>0</flags>
<bmunitsize>8</bmunitsize>
<file>
<path>/u01/app/oracle/oradata/CDB/pdb1/system01.dbf</path>
<afn>9</afn>
<rfn>1</rfn>
<createscnbas>2131059</createscnbas>
<createscnwrp>0</createscnwrp>
<status>1</status>
<fileblocks>34560</fileblocks>
<blocksize>8192</blocksize>
<vsn>318767104</vsn>
<fdbid>488255261</fdbid>
<fcpsb>2137186</fcpsb>
<fcpsw>0</fcpsw>
<frlsb>1920977</frlsb>
<frlsw>0</frlsw>
<frlt>1087727754</frlt>
<autoext>1</autoext>
<maxsize>4194302</maxsize>
<incsize>1280</incsize>
<plugscn>0</plugscn>
<plugafn>0</plugafn>
<plugdbid>0</plugdbid>
</file>
</tablespace>
<tablespace>
<name>SYSAUX</name>
<type>0</type>
<tsn>1</tsn>
<status>1</status>
<issft>0</issft>
<isnft>0</isnft>
<encts>0</encts>
<flags>0</flags>
<bmunitsize>8</bmunitsize>
<file>
<path>/u01/app/oracle/oradata/CDB/pdb1/sysaux01.dbf</path>
<afn>10</afn>
<rfn>4</rfn>
<createscnbas>2131063</createscnbas>
<createscnwrp>0</createscnwrp>
<status>1</status>
<fileblocks>42240</fileblocks>
<blocksize>8192</blocksize>
<vsn>318767104</vsn>
<fdbid>488255261</fdbid>
<fcpsb>2137186</fcpsb>
<fcpsw>0</fcpsw>
<frlsb>1920977</frlsb>
<frlsw>0</frlsw>
<frlt>1087727754</frlt>
<autoext>1</autoext>
<maxsize>4194302</maxsize>
<incsize>1280</incsize>
<plugscn>0</plugscn>
<plugafn>0</plugafn>
<plugdbid>0</plugdbid>
</file>
</tablespace>
<tablespace>
<name>UNDOTBS1</name>
<type>2</type>
<tsn>2</tsn>
<status>1</status>
<issft>0</issft>
<isnft>0</isnft>
<encts>0</encts>
<flags>0</flags>
<bmunitsize>8</bmunitsize>
<file>
<path>/u01/app/oracle/oradata/CDB/pdb1/undotbs01.dbf</path>
<afn>11</afn>
<rfn>9</rfn>
<createscnbas>2131067</createscnbas>
<createscnwrp>0</createscnwrp>
<status>1</status>
<fileblocks>12800</fileblocks>
<blocksize>8192</blocksize>
<vsn>318767104</vsn>
<fdbid>488255261</fdbid>
<fcpsb>2137186</fcpsb>
<fcpsw>0</fcpsw>
<frlsb>1920977</frlsb>
<frlsw>0</frlsw>
<frlt>1087727754</frlt>
<autoext>1</autoext>
<maxsize>4194302</maxsize>
<incsize>640</incsize>
<plugscn>0</plugscn>
<plugafn>0</plugafn>
<plugdbid>0</plugdbid>
</file>
</tablespace>
<tablespace>
<name>TEMP</name>
<type>1</type>
<tsn>3</tsn>
<status>1</status>
<issft>0</issft>
<isnft>0</isnft>
<encts>0</encts>
<flags>0</flags>
<bmunitsize>128</bmunitsize>
<file>
<path>/u01/app/oracle/oradata/CDB/pdb1/temp01.dbf</path>
<afn>3</afn>
<rfn>1</rfn>
<createscnbas>2131060</createscnbas>
<createscnwrp>0</createscnwrp>
<status>1</status>
<fileblocks>4608</fileblocks>
<blocksize>8192</blocksize>
<vsn>318767104</vsn>
<autoext>1</autoext>
<maxsize>4194302</maxsize>
<incsize>80</incsize>
<plugscn>0</plugscn>
<plugafn>0</plugafn>
<plugdbid>0</plugdbid>
</file>
</tablespace>
<tablespace>
<name>USERS</name>
<type>0</type>
<tsn>5</tsn>
<status>1</status>
<issft>0</issft>
<isnft>0</isnft>
<encts>0</encts>
<flags>0</flags>
<bmunitsize>8</bmunitsize>
<file>
<path>/u01/app/oracle/oradata/CDB/pdb1/users01.dbf</path>
<afn>12</afn>
<rfn>12</rfn>
<createscnbas>2132582</createscnbas>
<createscnwrp>0</createscnwrp>
<status>1</status>
<fileblocks>640</fileblocks>
<blocksize>8192</blocksize>
<vsn>318767104</vsn>
<fdbid>488255261</fdbid>
<fcpsb>2137186</fcpsb>
<fcpsw>0</fcpsw>
<frlsb>1920977</frlsb>
<frlsw>0</frlsw>
<frlt>1087727754</frlt>
<autoext>1</autoext>
<maxsize>4194302</maxsize>
<incsize>160</incsize>
<plugscn>0</plugscn>
<plugafn>0</plugafn>
<plugdbid>0</plugdbid>
</file>
</tablespace>
<recover>0</recover>
<optional>
<ncdb2pdb>0</ncdb2pdb>
<csid>873</csid>
<ncsid>2000</ncsid>
<options>
<option>APS=19.0.0.0.0</option>
<option>CATALOG=19.0.0.0.0</option>
<option>CATJAVA=19.0.0.0.0</option>
<option>CATPROC=19.0.0.0.0</option>
<option>CONTEXT=19.0.0.0.0</option>
<option>DV=19.0.0.0.0</option>
<option>JAVAVM=19.0.0.0.0</option>
<option>OLS=19.0.0.0.0</option>
<option>ORDIM=19.0.0.0.0</option>
<option>OWM=19.0.0.0.0</option>
<option>SDO=19.0.0.0.0</option>
<option>XDB=19.0.0.0.0</option>
<option>XML=19.0.0.0.0</option>
<option>XOQ=19.0.0.0.0</option>
</options>
<olsoid>0</olsoid>
<dv>0</dv>
<APEX>NULL</APEX>
<parameters>
<parameter>processes=300</parameter>
<parameter>nls_language='JAPANESE'</parameter>
<parameter>nls_territory='JAPAN'</parameter>
<parameter>db_block_size=8192</parameter>
<parameter>compatible='19.0.0'</parameter>
<parameter>open_cursors=300</parameter>
<parameter>pga_aggregate_target=615514112</parameter>
<parameter>enable_pluggable_database=TRUE</parameter>
</parameters>
<sqlpatches>
<sqlpatch>19.3.0.0.0 Release_Update 1904101227 (RU): APPLY SUCCESS</sqlpatch>
</sqlpatches>
<tzvers>
<tzver>primary version:32</tzver>
<tzver>secondary version:0</tzver>
</tzvers>
<walletkey>0</walletkey>
<services/>
<opatches>
<opatch>29517242</opatch>
</opatches>
<hasclob>1</hasclob>
<awr>
<loadprofile>CPU used by this session=37.127825</loadprofile>
<loadprofile>DB time=45.604454</loadprofile>
<loadprofile>db block changes=1541.945762</loadprofile>
<loadprofile>execute count=618.041616</loadprofile>
<loadprofile>logons cumulative=1.050821</loadprofile>
<loadprofile>parse count (hard)=23.400930</loadprofile>
<loadprofile>parse count (total)=362.455812</loadprofile>
<loadprofile>physical reads=136.681189</loadprofile>
<loadprofile>physical writes=2.196912</loadprofile>
<loadprofile>redo size=339788.290485</loadprofile>
<loadprofile>session logical reads=4898.472274</loadprofile>
<loadprofile>user calls=5.393047</loadprofile>
<loadprofile>user commits=1.296906</loadprofile>
<loadprofile>user rollbacks=0.037975</loadprofile>
</awr>
<hardvsnchk>0</hardvsnchk>
<localundo>1</localundo>
<apps/>
<dbedition>8</dbedition>
<dvopsctl>2</dvopsctl>
<clnupsrcpal>1</clnupsrcpal>
</optional>
</PDB>
[oracle@ol78n12 tmp]$
切断したPDBアーカイブ形式を接続してみます。
SQL> CREATE PLUGGABLE DATABASE pdb1 USING '/var/tmp/pdb1.pdb';
CREATE PLUGGABLE DATABASE pdb1 USING '/var/tmp/pdb1.pdb'
*
行1でエラーが発生しました。:
ORA-65018: FILE_NAME_CONVERTまたはNOCOPYを指定する必要があります
XML形式での接続と同様に、句を指定しないとエラーとなります。
SQL> CREATE PLUGGABLE DATABASE pdb1 USING '/var/tmp/pdb1.pdb' NOCOPY;
CREATE PLUGGABLE DATABASE pdb1 USING '/var/tmp/pdb1.pdb' NOCOPY
*
行1でエラーが発生しました。:
ORA-65314:
アーカイブ・ファイルを使用してPDBをプラグインする際にNOCOPYを使用できません
NOCOPYを指定してもエラーとなります。データファイルがPDBアーカイブ(実体はZIPファイル)の中にあるので、想定される動作です。
SQL> CREATE PLUGGABLE DATABASE pdb1 USING '/var/tmp/pdb1.pdb'
2 COPY FILE_NAME_CONVERT = ( '/CDB/', '/CDB2/' );
CREATE PLUGGABLE DATABASE pdb1 USING '/var/tmp/pdb1.pdb'
*
行1でエラーが発生しました。:
ORA-65005: ファイルのファイル名パターンが欠落しているか無効です -
/var/tmp/system01.dbf
しかし、XML形式での接続に成功したときと同様のCREATE PLUGGABLE DATABASE文を実行してもエラーとなります。
SQL> CREATE PLUGGABLE DATABASE pdb1 USING '/var/tmp/pdb1.pdb' COPY
2 FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/CDB/', '/u01/app/oracle/oradata/CDB2/');
CREATE PLUGGABLE DATABASE pdb1 USING '/var/tmp/pdb1.pdb' COPY
*
行1でエラーが発生しました。:
ORA-65005: ファイルのファイル名パターンが欠落しているか無効です -
/var/tmp/system01.dbf
PDBアーカイブ形式を使用した場合、変換ルールにおける変換元のファイル名には、アーカイブファイルの位置を起点にしたものを指定する必要があるようです。
SQL> CREATE PLUGGABLE DATABASE pdb1 USING '/var/tmp/pdb1.pdb'
2 COPY FILE_NAME_CONVERT = ( '/var/tmp/', '/u01/app/oracle/oradata/CDB2/pdb1/' );
プラガブル・データベースが作成されました。
SQL> ALTER PLUGGABLE DATABASE pdb1 OPEN;
プラガブル・データベースが変更されました。
SQL> CONNECT system/Password123@localhost:1521/pdb1
接続されました。
SQL> SELECT file_name FROM DBA_DATA_FILES;
FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/CDB2/pdb1/system01.dbf
/u01/app/oracle/oradata/CDB2/pdb1/sysaux01.dbf
/u01/app/oracle/oradata/CDB2/pdb1/undotbs01.dbf
/u01/app/oracle/oradata/CDB2/pdb1/users01.dbf
SQL>
2022/3/25 追記
12月中の脱稿には失敗してしまいましたが、その後鋭意執筆を進め、2022年5月27日に「オラクルマスター教科書 Gold DBA Oracle Database Administration II」を販売開始します。詳細は以下をご覧ください。
ORACLE MASTER Bronze DBA 2019試験対策本の発売日が決定しました