株式会社コーソル

コーソルDatabaseエンジニアのブログ

技術ブログ

PDBアーカイブ形式 – (全部俺)某Oracle書籍を25日後に脱稿するXX歳のAdvent Calendar 2021 4日目

Oracle ACEの渡部です。

この記事は(全部俺)某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書籍」の記載と、一連の投稿は品質が全く異なります

    • 「某Oracle書籍」の記載は、十分に推敲を重ねた、図や表を用いた丁寧なものです。一方、一連の投稿はメモ書きの延長のレベルで、概して推敲が不十分で図や表はあまり使っていません。
    • 「某Oracle書籍」の記載は、先頭から読んでいけばスンナリ理解できるように工夫された完結性・完備性が高いものです。一方、一連の投稿は特定の観点やトピックにのみ関連するものです。内容を理解するには前提知識が求められます。

[宣伝] これまでに渡部が執筆した書籍の一覧

2022/3/25 追記

12月中の脱稿には失敗してしまいましたが、その後鋭意執筆を進め、2022年5月27日に「オラクルマスター教科書 Gold DBA Oracle Database Administration II」を販売開始します。詳細は以下をご覧ください。

ORACLE MASTER Bronze DBA 2019試験対策本の発売日が決定しました

PDBアーカイブ形式で切断

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アーカイブ形式を接続

切断した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試験対策本の発売日が決定しました

プロフィール

On7tWW6m1Ul4

渡部 亮太

・Oracle ACE
・AWS Certified Solutions Architect - Associate
・ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数

カテゴリー

アーカイブ