技術ブログ
技術ブログ
目次
この記事は(全部俺)某Oracle書籍を25日後に脱稿するXX歳の Advent Calendar 2021の5日目の記事です。4日目の記事はPDBアーカイブ形式 - (全部俺)某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書籍」の記載内容と、一連の投稿の記載内容は異なります
オラクルマスター教科書 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試験対策本の発売日が決定しました
PDBを接続するためには、前提条件を満たす必要があるとされています。 前提条件については、マニュアルに記載がありますが、
どうも以下の点で記載がイマイチなように思われます。
以下の記載では、検証したことを記録しておきます。 若干まとまりが無いですが、ご理解くださいませ(もっとちゃんとマニュアル書いてほしい!)。
DBMS_PDB.CHECK_PLUG_COMPATIBILITYファンクションを実行すると、互換性チェックを実行できます。チェック結果は、PDB_PLUG_IN_VIOLATIONSビューに格納されます。
SET SERVEROUTPUT ON
DECLARE
compatible CONSTANT VARCHAR2(3) :=
CASE DBMS_PDB.CHECK_PLUG_COMPATIBILITY(
pdb_descr_file => '&xml_file')
WHEN TRUE THEN 'YES'
ELSE 'NO'
END;
BEGIN
DBMS_OUTPUT.PUT_LINE(compatible);
END;
/
SELECT * FROM PDB_PLUG_IN_VIOLATIONS;
私の調べた限り、異なるリリース間での切断→接続に関して、明確な記述を確認できませんでした。これについて、簡単に検証してみました。
ある程度予想どおりですが、異なるリリースの場合、互換性チェックが「ERROR」となります。 しかし、その他の条件が許せば、PDBをアップグレードすることで接続が可能です。
SQL> SELECT type, cause, message FROM PDB_PLUG_IN_VIOLATIONS
2 WHERE time > TO_TIMESTAMP('2021-11-20', 'YYYY-MM-DD')
3 AND name = 'PDB1'
4 AND type = 'ERROR';
TYPE CAUSE
--------- ----------------
MESSAGE
------------------------------------------------------------------------------------------------------------------------
ERROR VSN not match
PDB's version does not match CDB's version: PDB's version 18.0.0.0.0. CDB's version 19.0.0.0.0.
ERROR SQL Patch
Interim patch 27923415/22239273 (OJVM RELEASE UPDATE: 18.3.0.0.180717 (27923415)): Not installed in the CDB but installe
d in the PDB
ERROR SQL Patch
'19.3.0.0.0 Release_Update 1904101227' is installed in the CDB but '18.3.0.0.0 Release_Update 180628094' is installed in
the PDB
SQL> col cause format a16
SQL> SELECT type, cause, message FROM PDB_PLUG_IN_VIOLATIONS
2 WHERE time > TO_TIMESTAMP('2021-11-20', 'YYYY-MM-DD')
3 AND name = 'PDB2'
4 AND type = 'ERROR';
TYPE CAUSE
--------- ----------------
MESSAGE
------------------------------------------------------------------------------------------------------------------------
ERROR VSN not match
PDB's version does not match CDB's version: PDB's version 12.1.0.2.0. CDB's version 19.0.0.0.0.
ERROR OPTION
PDB's version is lower than CDB and PDB has more components than the CDB, plug in is not allowed.
ERROR APEX
APEX mismatch: PDB has installed common APEX. CDB has not installed APEX.
APEXが導入済みの場合、 異なるリリース間でのPDBの接続がORA-65346で失敗することがあるようです。
ORA-65346 The PDB version is lower and components (APEX) are missing in CDB.
ORA-65346: PDBのバージョンが低く、CDBにコンポーネント(APEX)がありません。
以下に実行例を示します。
SQL> CREATE PLUGGABLE DATABASE pdb2
2 USING '/u01/app/oracle/oradata/pdb2/pdb2.xml' NOCOPY;
CREATE PLUGGABLE DATABASE pdb2
*
行1でエラーが発生しました。:
ORA-65346: PDBのバージョンが低く、CDBにコンポーネント(APEX)がありません。
対処方法は以下の2つのようです。
apxremov_con.sqlを実行すると、マルチテナント環境で全コンテナのAPEXを削除できます。
以下に実行例を示します。
[oracle@ol68n11 ~]$ cd $ORACLE_HOME/apex
[oracle@ol68n11 apex]$ sqlplus / as sysdba @apxremov_con
SQL*Plus: Release 12.1.0.2.0 Production on 火 11月 23 16:15:10 2021
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
に接続されました。
PL/SQLプロシージャが正常に完了しました。
Performing installation in multitenant container database in the background.
The installation progress is spooled into apxremov*_con*.log files.
Please wait...
catcon: ALL catcon-related output will be written to apxremov1_con_catcon_3317.lst
catcon: See apxremov1_con*.log files for output generated by scripts
catcon: See apxremov1_con_*.lst files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to apxremov2_con_catcon_3398.lst
catcon: See apxremov2_con*.log files for output generated by scripts
catcon: See apxremov2_con_*.lst files for spool files, if any
catcon.pl: completed successfully
Installation completed. Log files for each container can be found in:
apxremov*_con*.log
You can quickly scan for ORA errors or compilation errors by using a utility
like grep:
grep ORA- *.log
grep PLS- *.log
SQL>
異なるリリース間でのPDBの接続がORA-65346で失敗するとき、 PDBのメタデータXMLファイルに以下のようなの行がある場合があります。
<APEX>4.2.5.00.08:1</APEX>
この行を削除すると、接続におけるORA-65346を回避できるようです。 (サポートされるかは不明…)
PDB接続後に、UPGRADEモードでPDBをOPENし、catctl.pl経由でcatupgrd.sqlを実行することで、PDBをアップグレードできます。
実行結果を以下に示します。
SQL> CREATE PLUGGABLE DATABASE pdb2
2 USING '/u01/app/oracle/oradata/cdb/pdb2/pdb2.xml' NOCOPY;
プラガブル・データベースが作成されました。
SQL> ALTER SESSION SET CONTAINER=pdb2;
セッションが変更されました。
SQL> ALTER PLUGGABLE DATABASE OPEN UPGRADE;
プラガブル・データベースが変更されました。
SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0との接続が切断されました。
[oracle@ol78n12 cdb]$ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/rdbms/admin/catctl.pl -d \
> $ORACLE_HOME/rdbms/admin -c 'pdb2' -l $ORACLE_BASE catupgrd.sql
Argument list for [/u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catctl.pl]
For Oracle internal use only A = 0
Run in c = pdb2
Do not run in C = 0
Input Directory d = /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin
Echo OFF e = 1
Simulate E = 0
Forced cleanup F = 0
Log Id i = 0
Child Process I = 0
Log Dir l = /u01/app/oracle
Priority List Name L = 0
Upgrade Mode active M = 0
SQL Process Count n = 0
SQL PDB Process Count N = 0
Open Mode Normal o = 0
Start Phase p = 0
End Phase P = 0
Reverse Order r = 0
AutoUpgrade Resume R = 0
Script s = 0
Serial Run S = 0
RO User Tablespaces T = 0
Display Phases y = 0
Debug catcon.pm z = 0
Debug catctl.pl Z = 0
catctl.pl VERSION: [19.0.0.0.0]
STATUS: [Production]
BUILD: [RDBMS_19.3.0.0.0DBRU_LINUX.X64_190417]
/u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/orahome = [/u01/app/oracle/product/19.0.0/dbhome_1]
/u01/app/oracle/product/19.0.0/dbhome_1/bin/orabasehome = [/u01/app/oracle/product/19.0.0/dbhome_1]
catctlGetOraBaseLogDir = [/u01/app/oracle/product/19.0.0/dbhome_1]
Analyzing file /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catupgrd.sql
Log file directory = [/u01/app/oracle]
catcon::set_log_file_base_path: ALL catcon-related output will be written to [/u01/app/oracle/catupgrd_catcon_12354.lst]
catcon::set_log_file_base_path: catcon: See [/u01/app/oracle/catupgrd*.log] files for output generated by scripts
catcon::set_log_file_base_path: catcon: See [/u01/app/oracle/catupgrd_*.lst] files for spool files, if any
Number of Cpus = 1
Database Name = cdb
DataBase Version = 19.0.0.0.0
PDB Parallel SQL Process Count = [2] is higher or equal to CPU Count = [1]
Concurrent PDB Upgrades defaulting to CPU Count [1]
Parallel SQL Process Count (PDB) = 2
Parallel SQL Process Count (CDB$ROOT) = 4
Concurrent PDB Upgrades = 1
Generated PDB Inclusion:[PDB2]
CDB$ROOT Open Mode = [OPEN]
Start processing of PDBs (PDB2)
[/u01/app/oracle/product/19.0.0/dbhome_1/perl/bin/perl /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catctl.pl -d /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin -c 'PDB2' -l /u01/app/oracle -I -i pdb2 -n 2 catupgrd.sql]
Argument list for [/u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catctl.pl]
For Oracle internal use only A = 0
Run in c = PDB2
Do not run in C = 0
Input Directory d = /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin
Echo OFF e = 1
Simulate E = 0
Forced cleanup F = 0
Log Id i = pdb2
Child Process I = 1
Log Dir l = /u01/app/oracle
Priority List Name L = 0
Upgrade Mode active M = 0
SQL Process Count n = 2
SQL PDB Process Count N = 0
Open Mode Normal o = 0
Start Phase p = 0
End Phase P = 0
Reverse Order r = 0
AutoUpgrade Resume R = 0
Script s = 0
Serial Run S = 0
RO User Tablespaces T = 0
Display Phases y = 0
Debug catcon.pm z = 0
Debug catctl.pl Z = 0
catctl.pl VERSION: [19.0.0.0.0]
STATUS: [Production]
BUILD: [RDBMS_19.3.0.0.0DBRU_LINUX.X64_190417]
/u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/orahome = [/u01/app/oracle/product/19.0.0/dbhome_1]
/u01/app/oracle/product/19.0.0/dbhome_1/bin/orabasehome = [/u01/app/oracle/product/19.0.0/dbhome_1]
catctlGetOraBaseLogDir = [/u01/app/oracle/product/19.0.0/dbhome_1]
Analyzing file /u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/catupgrd.sql
Log file directory = [/u01/app/oracle]
catcon::set_log_file_base_path: ALL catcon-related output will be written to [/u01/app/oracle/catupgrdpdb2_catcon_12618.lst]
catcon::set_log_file_base_path: catcon: See [/u01/app/oracle/catupgrdpdb2*.log] files for output generated by scripts
catcon::set_log_file_base_path: catcon: See [/u01/app/oracle/catupgrdpdb2_*.lst] files for spool files, if any
Number of Cpus = 1
Database Name = cdb
DataBase Version = 19.0.0.0.0
PDB2 Open Mode = [MIGRATE]
Generated PDB Inclusion:[PDB2]
CDB$ROOT Open Mode = [OPEN]
Components in [PDB2]
Installed [APEX APS CATALOG CATJAVA CATPROC CONTEXT DV JAVAVM OLS ORDIM OWM SDO XDB XML XOQ]
Not Installed [EM MGW ODM RAC WK]
------------------------------------------------------
Phases [0-107] Start Time:[2021_11_23 13:03:32]
Container Lists Inclusion:[PDB2] Exclusion:[NONE]
------------------------------------------------------
*********** Executing Change Scripts ***********
Serial Phase #:0 [PDB2] Files:1 Time: 39s
*************** Catalog Core SQL ***************
Serial Phase #:1 [PDB2] Files:5 Time: 40s
Restart Phase #:2 [PDB2] Files:1 Time: 2s
*********** Catalog Tables and Views ***********
Parallel Phase #:3 [PDB2] Files:19 Time: 28s
Restart Phase #:4 [PDB2] Files:1 Time: 2s
************* Catalog Final Scripts ************
Serial Phase #:5 [PDB2] Files:7 Time: 22s
***************** Catproc Start ****************
Serial Phase #:6 [PDB2] Files:1 Time: 14s
***************** Catproc Types ****************
Serial Phase #:7 [PDB2] Files:2 Time: 13s
Restart Phase #:8 [PDB2] Files:1 Time: 1s
**************** Catproc Tables ****************
Parallel Phase #:9 [PDB2] Files:67 Time: 39s
Restart Phase #:10 [PDB2] Files:1 Time: 1s
************* Catproc Package Specs ************
Serial Phase #:11 [PDB2] Files:1 Time: 51s
Restart Phase #:12 [PDB2] Files:1 Time: 1s
************** Catproc Procedures **************
Parallel Phase #:13 [PDB2] Files:94 Time: 13s
Restart Phase #:14 [PDB2] Files:1 Time: 3s
Parallel Phase #:15 [PDB2] Files:120 Time: 16s
Restart Phase #:16 [PDB2] Files:1 Time: 1s
Serial Phase #:17 [PDB2] Files:22 Time: 7s
Restart Phase #:18 [PDB2] Files:1 Time: 2s
***************** Catproc Views ****************
Parallel Phase #:19 [PDB2] Files:32 Time: 25s
Restart Phase #:20 [PDB2] Files:1 Time: 1s
Serial Phase #:21 [PDB2] Files:3 Time: 14s
Restart Phase #:22 [PDB2] Files:1 Time: 1s
Parallel Phase #:23 [PDB2] Files:25 Time: 163s
Restart Phase #:24 [PDB2] Files:1 Time: 2s
Parallel Phase #:25 [PDB2] Files:12 Time: 94s
Restart Phase #:26 [PDB2] Files:1 Time: 0s
Serial Phase #:27 [PDB2] Files:1 Time: 0s
Serial Phase #:28 [PDB2] Files:3 Time: 8s
Serial Phase #:29 [PDB2] Files:1 Time: 0s
Restart Phase #:30 [PDB2] Files:1 Time: 1s
*************** Catproc CDB Views **************
Serial Phase #:31 [PDB2] Files:1 Time: 7s
Restart Phase #:32 [PDB2] Files:1 Time: 1s
Serial Phase #:34 [PDB2] Files:1 Time: 0s
***************** Catproc PLBs *****************
Serial Phase #:35 [PDB2] Files:293 Time: 18s
Serial Phase #:36 [PDB2] Files:1 Time: 0s
Restart Phase #:37 [PDB2] Files:1 Time: 1s
Serial Phase #:38 [PDB2] Files:6 Time: 8s
Restart Phase #:39 [PDB2] Files:1 Time: 1s
*************** Catproc DataPump ***************
Serial Phase #:40 [PDB2] Files:3 Time: 31s
Restart Phase #:41 [PDB2] Files:1 Time: 1s
****************** Catproc SQL *****************
Parallel Phase #:42 [PDB2] Files:13 Time: 107s
Restart Phase #:43 [PDB2] Files:1 Time: 2s
Parallel Phase #:44 [PDB2] Files:11 Time: 11s
Restart Phase #:45 [PDB2] Files:1 Time: 2s
Parallel Phase #:46 [PDB2] Files:3 Time: 7s
Restart Phase #:47 [PDB2] Files:1 Time: 2s
************* Final Catproc scripts ************
Serial Phase #:48 [PDB2] Files:1 Time: 12s
Restart Phase #:49 [PDB2] Files:1 Time: 2s
************** Final RDBMS scripts *************
Serial Phase #:50 [PDB2] Files:1 Time: 21s
************ Upgrade Component Start ***********
Serial Phase #:51 [PDB2] Files:1 Time: 6s
Restart Phase #:52 [PDB2] Files:1 Time: 2s
********** Upgrading Java and non-Java *********
Serial Phase #:53 [PDB2] Files:2 Time: 221s
***************** Upgrading XDB ****************
Restart Phase #:54 [PDB2] Files:1 Time: 2s
Serial Phase #:56 [PDB2] Files:3 Time: 15s
Serial Phase #:57 [PDB2] Files:3 Time: 9s
Parallel Phase #:58 [PDB2] Files:10 Time: 10s
Parallel Phase #:59 [PDB2] Files:25 Time: 12s
Serial Phase #:60 [PDB2] Files:4 Time: 14s
Serial Phase #:61 [PDB2] Files:1 Time: 0s
Serial Phase #:62 [PDB2] Files:32 Time: 10s
Serial Phase #:63 [PDB2] Files:1 Time: 0s
Parallel Phase #:64 [PDB2] Files:6 Time: 14s
Serial Phase #:65 [PDB2] Files:2 Time: 18s
Serial Phase #:66 [PDB2] Files:3 Time: 26s
**************** Upgrading ORDIM ***************
Restart Phase #:67 [PDB2] Files:1 Time: 1s
Serial Phase #:69 [PDB2] Files:1 Time: 9s
Parallel Phase #:70 [PDB2] Files:2 Time: 23s
Restart Phase #:71 [PDB2] Files:1 Time: 1s
Parallel Phase #:72 [PDB2] Files:2 Time: 10s
Serial Phase #:73 [PDB2] Files:2 Time: 8s
***************** Upgrading SDO ****************
Restart Phase #:74 [PDB2] Files:1 Time: 2s
Serial Phase #:76 [PDB2] Files:1 Time: 27s
Serial Phase #:77 [PDB2] Files:2 Time: 9s
Restart Phase #:78 [PDB2] Files:1 Time: 0s
Serial Phase #:79 [PDB2] Files:1 Time: 12s
Restart Phase #:80 [PDB2] Files:1 Time: 2s
Parallel Phase #:81 [PDB2] Files:3 Time: 44s
Restart Phase #:82 [PDB2] Files:1 Time: 2s
Serial Phase #:83 [PDB2] Files:1 Time: 9s
Restart Phase #:84 [PDB2] Files:1 Time: 2s
Serial Phase #:85 [PDB2] Files:1 Time: 13s
Restart Phase #:86 [PDB2] Files:1 Time: 2s
Parallel Phase #:87 [PDB2] Files:4 Time: 59s
Restart Phase #:88 [PDB2] Files:1 Time: 2s
Serial Phase #:89 [PDB2] Files:1 Time: 8s
Restart Phase #:90 [PDB2] Files:1 Time: 2s
Serial Phase #:91 [PDB2] Files:2 Time: 18s
Restart Phase #:92 [PDB2] Files:1 Time: 1s
Serial Phase #:93 [PDB2] Files:1 Time: 6s
Restart Phase #:94 [PDB2] Files:1 Time: 2s
******* Upgrading ODM, WK, EXF, RUL, XOQ *******
Serial Phase #:95 [PDB2] Files:1 Time: 13s
Restart Phase #:96 [PDB2] Files:1 Time: 2s
*********** Final Component scripts ***********
Serial Phase #:97 [PDB2] Files:1 Time: 7s
************* Final Upgrade scripts ************
Serial Phase #:98 [PDB2] Files:1 Time: 98s
******************* Migration ******************
Serial Phase #:99 [PDB2] Files:1 Time: 29s
*** End PDB Application Upgrade Pre-Shutdown ***
Serial Phase #:100 [PDB2] Files:1 Time: 6s
Serial Phase #:101 [PDB2] Files:1 Time: 15s
Serial Phase #:102 [PDB2] Files:1 Time: 6s
***************** Post Upgrade *****************
Serial Phase #:103 [PDB2] Files:1 Time: 30s
**************** Summary report ****************
Serial Phase #:104 [PDB2] Files:1 Time: 7s
*** End PDB Application Upgrade Post-Shutdown **
Serial Phase #:105 [PDB2] Files:1 Time: 6s
Serial Phase #:106 [PDB2] Files:1 Time: 10s
Serial Phase #:107 [PDB2] Files:1 Time: 0s
------------------------------------------------------
Phases [0-107] End Time:[2021_11_23 13:31:53]
Container Lists Inclusion:[PDB2] Exclusion:[NONE]
------------------------------------------------------
Grand Total Time: 1701s [PDB2]
LOG FILES: (/u01/app/oracle/catupgrdpdb2*.log)
Upgrade Summary Report Located in:
/u01/app/oracle/upg_summary.log
Time: 1776s For PDB(s)
Grand Total Time: 1776s
LOG FILES: (/u01/app/oracle/catupgrd*.log)
Grand Total Upgrade Time: [0d:0h:29m:36s]
[oracle@ol78n12 cdb]$
仮想コア数1のVirtualBox環境ではありますが、なかなか時間がかかりますね・・・
2022/3/25 追記
12月中の脱稿には失敗してしまいましたが、その後鋭意執筆を進め、2022年5月27日に「オラクルマスター教科書 Gold DBA Oracle Database Administration II」を販売開始します。詳細は以下をご覧ください。
ORACLE MASTER Bronze DBA 2019試験対策本の発売日が決定しました