scriptコマンドメモ

scriptコマンドについてメモ

LANG環境変数は下記

[oracle@oracledev ~]$ printenv | grep LANG
LANG=ja_JP.UTF-8

scriptコマンドで作業ログを取る際に制御コードが入ってしまうという話を聞いて 試してみた。

script を実行して、一連の作業を記録した際の標準出力(ターミナルの出力を手動でコピーしてテキストに貼り付けたもの)

[oracle@oracledev ~]$ script operation.log
スクリプトを開始しました、ファイルは operation.log です
[oracle@oracledev ~]$ ls -l
合計 92
-rw-r-----. 1 oracle oinstall 26593 11月  3 14:06 2019 dbca.rsp
drwxrwxrwx. 5 oracle oinstall  4096  5月  9 15:51 2021 examples
-rw-r--r--. 1 oracle oinstall     0  3月 13 15:56 2022 operation.log
-rwxr-xr-x. 1 oracle oinstall   281  6月  2 21:02 2021 ora12201.env
drwxr-xr-x. 4 oracle oinstall  4096  6月 27 16:52 2021 project
drwxr-xr-x. 3 oracle oinstall  4096 11月 28 15:20 2021 work
drwxr-xr-x. 2 oracle oinstall  4096 11月  2 22:21 2019 ダウンロード
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 テンプレート
drwxr-xr-x. 2 oracle oinstall  4096 11月  3 13:39 2019 デスクトップ
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 ドキュメント
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 ビデオ
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 音楽
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 画像
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 公開
[oracle@oracledev ~]$ cat ora12201.env 
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export NLS_LANG=Japanese_Japan.AL32UTF8
#export NLS_LANG=American_America.US8PC437
export ORACLE_UNQNAME=orcl
export JAVA_HOME=$ORACLE_HOME/jdk
[oracle@oracledev ~]$ 
[oracle@oracledev ~]$ cd /u01/app/
[oracle@oracledev app]$ ll
合計 8
drwxrwx---.  5 oracle oinstall 4096 11月  2 22:55 2019 oraInventory
drwxrwxr-x. 10 oracle oinstall 4096 11月  3 14:06 2019 oracle
[oracle@oracledev app]$ cd oracle/
[oracle@oracledev oracle]$ ll
合計 32
drwxr-x---.  3 oracle oinstall 4096 11月  3 14:06 2019 admin
drwxr-x---.  3 oracle oinstall 4096 11月  3 14:24 2019 audit
drwxr-x---.  5 oracle oinstall 4096 11月  3 15:07 2019 cfgtoollogs
drwxr-xr-x.  2 oracle oinstall 4096 11月  2 23:50 2019 checkpoints
drwxrwxr-x. 21 oracle oinstall 4096 11月  2 22:55 2019 diag
drwxr-x---.  3 oracle oinstall 4096 11月  3 14:06 2019 fast_recovery_area
drwxr-x---.  3 oracle oinstall 4096 11月  3 14:06 2019 oradata
drwxr-xr-x.  3 oracle oinstall 4096 11月  2 22:51 2019 product
[oracle@oracledev oracle]$ cd diag/rdbms/orcl/orcl/trace/
[oracle@oracledev trace]$ ls -l alert_orcl.log 
-rw-r-----. 1 oracle oinstall 581609  3月 13 15:55 2022 alert_orcl.log
[oracle@oracledev trace]$ tail -n 20 alert_orcl.log 
Closing scheduler window
Closing Resource Manager plan via scheduler window
Clearing Resource Manager plan via parameter
2021-12-29T07:00:13.653893+09:00
Thread 1 advanced to log sequence 47 (LGWR switch)
  Current log# 2 seq# 47 mem# 0: /u01/app/oracle/oradata/orcl/redo02.log
2021-12-29T13:46:47.889999+09:00
Warning: VKTM detected a forward time drift. 
Time drifts can result in unexpected behavior such as time-outs. 
Please see the VKTM trace file for more details:
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_vktm_3111.trc
2022-03-13T15:55:01.398383+09:00
Warning: VKTM detected a forward time drift. 
Time drifts can result in unexpected behavior such as time-outs. 
Please see the VKTM trace file for more details:
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_vktm_3111.trc
2022-03-13T15:55:32.468230+09:00
TABLE SYS.WRP$_REPORTS: ADDED INTERVAL PARTITION SYS_P1046 (4455) VALUES LESS THAN (TO_DATE(' 2022-03-14 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
TABLE SYS.WRP$_REPORTS_DETAILS: ADDED INTERVAL PARTITION SYS_P1047 (4455) VALUES LESS THAN (TO_DATE(' 2022-03-14 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
TABLE SYS.WRP$_REPORTS_TIME_BANDS: ADDED INTERVAL PARTITION SYS_P1050 (4454) VALUES LESS THAN (TO_DATE(' 2022-03-13 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
[oracle@oracledev trace]$ 
[oracle@oracledev trace]$ 
[oracle@oracledev trace]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_oracledev-lv_root
                       26G   21G  4.6G  82% /
tmpfs                 2.0G   72K  2.0G   1% /dev/shm
/dev/sda1             477M   79M  370M  18% /boot
01_shared             238G  186G   52G  79% /media/sf_01_shared
[oracle@oracledev trace]$ exit
exit
スクリプトを終了しました、ファイルは operation.log です

catで作業ログoperation.logを表示

[oracle@oracledev ~]$ pwd
/home/oracle
[oracle@oracledev ~]$ ls -l
合計 100
-rw-r-----. 1 oracle oinstall 26593 11月  3 14:06 2019 dbca.rsp
drwxrwxrwx. 5 oracle oinstall  4096  5月  9 15:51 2021 examples
-rwxr-xr-x. 1 oracle oinstall 15364 10月 14 22:56 2019 hacker.png
-rw-r--r--. 1 oracle oinstall  5421  3月 13 15:58 2022 operation.log
-rwxr-xr-x. 1 oracle oinstall   281  6月  2 21:02 2021 ora12201.env
drwxr-xr-x. 4 oracle oinstall  4096  6月 27 16:52 2021 project
drwxr-xr-x. 3 oracle oinstall  4096 11月 28 15:20 2021 work
drwxr-xr-x. 2 oracle oinstall  4096 11月  2 22:21 2019 ダウンロード
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 テンプレート
drwxr-xr-x. 2 oracle oinstall  4096 11月  3 13:39 2019 デスクトップ
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 ドキュメント
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 ビデオ
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 音楽
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 画像
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 公開
[oracle@oracledev ~]$ cat operation.log
スクリプトは 2022年03月13日 15時56分24秒
 に開始しました[oracle@oracledev ~]$ ls -l
合計 92
-rw-r-----. 1 oracle oinstall 26593 11月  3 14:06 2019 dbca.rsp
drwxrwxrwx. 5 oracle oinstall  4096  5月  9 15:51 2021 examples
-rwxr-xr-x. 1 oracle oinstall 15364 10月 14 22:56 2019 hacker.png
-rw-r--r--. 1 oracle oinstall     0  3月 13 15:56 2022 operation.log
-rwxr-xr-x. 1 oracle oinstall   281  6月  2 21:02 2021 ora12201.env
drwxr-xr-x. 4 oracle oinstall  4096  6月 27 16:52 2021 project
drwxr-xr-x. 3 oracle oinstall  4096 11月 28 15:20 2021 work
drwxr-xr-x. 2 oracle oinstall  4096 11月  2 22:21 2019 ダウンロード
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 テンプレート
drwxr-xr-x. 2 oracle oinstall  4096 11月  3 13:39 2019 デスクトップ
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 ドキュメント
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 ビデオ
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 音楽
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 画像
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 公開
[oracle@oracledev ~]$ cat ora12201.env 
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export NLS_LANG=Japanese_Japan.AL32UTF8
#export NLS_LANG=American_America.US8PC437
export ORACLE_UNQNAME=orcl
export JAVA_HOME=$ORACLE_HOME/jdk
[oracle@oracledev ~]$ 
[oracle@oracledev ~]$ cd /u01/app/
[oracle@oracledev app]$ ll
合計 8
drwxrwx---.  5 oracle oinstall 4096 11月  2 22:55 2019 oraInventory
drwxrwxr-x. 10 oracle oinstall 4096 11月  3 14:06 2019 oracle
[oracle@oracledev app]$ cd oracle/
[oracle@oracledev oracle]$ ll
合計 32
drwxr-x---.  3 oracle oinstall 4096 11月  3 14:06 2019 admin
drwxr-x---.  3 oracle oinstall 4096 11月  3 14:24 2019 audit
drwxr-x---.  5 oracle oinstall 4096 11月  3 15:07 2019 cfgtoollogs
drwxr-xr-x.  2 oracle oinstall 4096 11月  2 23:50 2019 checkpoints
drwxrwxr-x. 21 oracle oinstall 4096 11月  2 22:55 2019 diag
drwxr-x---.  3 oracle oinstall 4096 11月  3 14:06 2019 fast_recovery_area
drwxr-x---.  3 oracle oinstall 4096 11月  3 14:06 2019 oradata
drwxr-xr-x.  3 oracle oinstall 4096 11月  2 22:51 2019 product
[oracle@oracledev oracle]$ cd diag/rdbms/orcl/orcl/trace/
[oracle@oracledev trace]$ ls -l alert_orcl.log 
-rw-r-----. 1 oracle oinstall 581609  3月 13 15:55 2022 alert_orcl.log
[oracle@oracledev trace]$ tail -n 20 alert_orcl.log 
Closing scheduler window
Closing Resource Manager plan via scheduler window
Clearing Resource Manager plan via parameter
2021-12-29T07:00:13.653893+09:00
Thread 1 advanced to log sequence 47 (LGWR switch)
  Current log# 2 seq# 47 mem# 0: /u01/app/oracle/oradata/orcl/redo02.log
2021-12-29T13:46:47.889999+09:00
Warning: VKTM detected a forward time drift. 
Time drifts can result in unexpected behavior such as time-outs. 
Please see the VKTM trace file for more details:
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_vktm_3111.trc
2022-03-13T15:55:01.398383+09:00
Warning: VKTM detected a forward time drift. 
Time drifts can result in unexpected behavior such as time-outs. 
Please see the VKTM trace file for more details:
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_vktm_3111.trc
2022-03-13T15:55:32.468230+09:00
TABLE SYS.WRP$_REPORTS: ADDED INTERVAL PARTITION SYS_P1046 (4455) VALUES LESS THAN (TO_DATE(' 2022-03-14 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
TABLE SYS.WRP$_REPORTS_DETAILS: ADDED INTERVAL PARTITION SYS_P1047 (4455) VALUES LESS THAN (TO_DATE(' 2022-03-14 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
TABLE SYS.WRP$_REPORTS_TIME_BANDS: ADDED INTERVAL PARTITION SYS_P1050 (4454) VALUES LESS THAN (TO_DATE(' 2022-03-13 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
[oracle@oracledev trace]$ 
[oracle@oracledev trace]$ 
[oracle@oracledev trace]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_oracledev-lv_root
                       26G   21G  4.6G  82% /
tmpfs                 2.0G   72K  2.0G   1% /dev/shm
/dev/sda1             477M   79M  370M  18% /boot
01_shared             238G  186G   52G  79% /media/sf_01_shared
[oracle@oracledev trace]$ exit
exit

スクリプトは 2022年03月13日 15時58分00秒
 に終了しました[oracle@oracledev ~]$ 

lessでoperation.log を表示

スクリプトは 2022年03月13日 15時56分24秒
 に開始しましたESC]0;oracle@oracledev:~^GESC[?1034h[oracle@oracledev ~]$ ls -l
合計 92
-rw-r-----. 1 oracle oinstall 26593 11月  3 14:06 2019 dbca.rsp
drwxrwxrwx. 5 oracle oinstall  4096  5月  9 15:51 2021 ESC[0mESC[34;42mexamplesESC[0m
-rwxr-xr-x. 1 oracle oinstall 15364 10月 14 22:56 2019 ESC[01;32mhacker.pngESC[0m
-rw-r--r--. 1 oracle oinstall     0  3月 13 15:56 2022 operation.log
-rwxr-xr-x. 1 oracle oinstall   281  6月  2 21:02 2021 ESC[01;32mora12201.envESC[0m
drwxr-xr-x. 4 oracle oinstall  4096  6月 27 16:52 2021 ESC[01;34mprojectESC[0m
drwxr-xr-x. 3 oracle oinstall  4096 11月 28 15:20 2021 ESC[01;34mworkESC[0m
drwxr-xr-x. 2 oracle oinstall  4096 11月  2 22:21 2019 ESC[01;34mダウンロードESC[0m
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 ESC[01;34mテンプレートESC[0m
drwxr-xr-x. 2 oracle oinstall  4096 11月  3 13:39 2019 ESC[01;34mデスクトップESC[0m
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 ESC[01;34mドキュメントESC[0m
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 ESC[01;34mビデオESC[0m
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 ESC[01;34m音楽ESC[0m
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 ESC[01;34m画像ESC[0m
drwxr-xr-x. 2 oracle oinstall  4096 10月 14 22:47 2019 ESC[01;34m公開ESC[0m
ESC[mESC]0;oracle@oracledev:~^G[oracle@oracledev ~]$ cat ora12201.env 
export ORACLE_SID=orcl
export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
export NLS_LANG=Japanese_Japan.AL32UTF8
#export NLS_LANG=American_America.US8PC437
export ORACLE_UNQNAME=orcl
export JAVA_HOME=$ORACLE_HOME/jdk
ESC]0;oracle@oracledev:~^G[oracle@oracledev ~]$ 
ESC]0;oracle@oracledev:~^G[oracle@oracledev ~]$ cd ESC[K/u01/app/ora^G^HESC[ESC[ESC[K
ESC]0;oracle@oracledev:/u01/app^G[oracle@oracledev app]$ ll
合計 8
drwxrwx---.  5 oracle oinstall 4096 11月  2 22:55 2019 ESC[0mESC[01;34moraInventoryESC[0m
drwxrwxr-x. 10 oracle oinstall 4096 11月  3 14:06 2019 ESC[01;34moracleESC[0m
ESC[mESC]0;oracle@oracledev:/u01/app^G[oracle@oracledev app]$ cd ora^Gcle/
ESC]0;oracle@oracledev:/u01/app/oracle^G[oracle@oracledev oracle]$ ll
合計 32
drwxr-x---.  3 oracle oinstall 4096 11月  3 14:06 2019 ESC[0mESC[01;34madminESC[0m
drwxr-x---.  3 oracle oinstall 4096 11月  3 14:24 2019 ESC[01;34mauditESC[0m
drwxr-x---.  5 oracle oinstall 4096 11月  3 15:07 2019 ESC[01;34mcfgtoollogsESC[0m
drwxr-xr-x.  2 oracle oinstall 4096 11月  2 23:50 2019 ESC[01;34mcheckpointsESC[0m
drwxrwxr-x. 21 oracle oinstall 4096 11月  2 22:55 2019 ESC[01;34mdiagESC[0m
drwxr-x---.  3 oracle oinstall 4096 11月  3 14:06 2019 ESC[01;34mfast_recovery_areaESC[0m
drwxr-x---.  3 oracle oinstall 4096 11月  3 14:06 2019 ESC[01;34moradataESC[0m
drwxr-xr-x.  3 oracle oinstall 4096 11月  2 22:51 2019 ESC[01;34mproductESC[0m
ESC[mESC]0;oracle@oracledev:/u01/app/oracle^G[oracle@oracledev oracle]$ cd diag/rdbms/tra^G^HESC[ESC[ESC[K12^G^HESC[ESC[Korcl/orcl/12^G^HESC[ESC[Ktrace/
ESC]0;oracle@oracledev:/u01/app/oracle/diag/rdbms/orcl/orcl/trace^G[oracle@oracledev trace]$ ls -l alert_orcl.log 
-rw-r-----. 1 oracle oinstall 581609  3月 13 15:55 2022 alert_orcl.log
ESC]0;oracle@oracledev:/u01/app/oracle/diag/rdbms/orcl/orcl/trace^G[oracle@oracledev trace]$ tail -3ESC[ESC[Kn ESC[K20 alert_orcl.log 
Closing scheduler window
Closing Resource Manager plan via scheduler window
Clearing Resource Manager plan via parameter
2021-12-29T07:00:13.653893+09:00
Thread 1 advanced to log sequence 47 (LGWR switch)
  Current log# 2 seq# 47 mem# 0: /u01/app/oracle/oradata/orcl/redo02.log
2021-12-29T13:46:47.889999+09:00
Warning: VKTM detected a forward time drift. 
Time drifts can result in unexpected behavior such as time-outs. 
Please see the VKTM trace file for more details:
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_vktm_3111.trc
2022-03-13T15:55:01.398383+09:00
Warning: VKTM detected a forward time drift. 
Time drifts can result in unexpected behavior such as time-outs. 
Please see the VKTM trace file for more details:
/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_vktm_3111.trc
2022-03-13T15:55:32.468230+09:00
TABLE SYS.WRP$_REPORTS: ADDED INTERVAL PARTITION SYS_P1046 (4455) VALUES LESS THAN (TO_DATE(' 2022-03-14 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
TABLE SYS.WRP$_REPORTS_DETAILS: ADDED INTERVAL PARTITION SYS_P1047 (4455) VALUES LESS THAN (TO_DATE(' 2022-03-14 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
TABLE SYS.WRP$_REPORTS_TIME_BANDS: ADDED INTERVAL PARTITION SYS_P1050 (4454) VALUES LESS THAN (TO_DATE(' 2022-03-13 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
ESC]0;oracle@oracledev:/u01/app/oracle/diag/rdbms/orcl/orcl/trace^G[oracle@oracledev trace]$ 
ESC]0;oracle@oracledev:/u01/app/oracle/diag/rdbms/orcl/orcl/trace^G[oracle@oracledev trace]$ 
ESC]0;oracle@oracledev:/u01/app/oracle/diag/rdbms/orcl/orcl/trace^G[oracle@oracledev trace]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_oracledev-lv_root
                       26G   21G  4.6G  82% /
tmpfs                 2.0G   72K  2.0G   1% /dev/shm
/dev/sda1             477M   79M  370M  18% /boot
01_shared             238G  186G   52G  79% /media/sf_01_shared
ESC]0;oracle@oracledev:/u01/app/oracle/diag/rdbms/orcl/orcl/trace^G[oracle@oracledev trace]$ exit
exit

スクリプトは 2022年03月13日 15時58分00秒
 に終了しました
(END) 

確認結果

cat だと制御コードは表示されないが、lessでは制御コードが表示される。 (LANGの設定で変化しそう)

Oracle Database の高度な行圧縮機能を覗いてみた / JPOUG Advent Calendar Day 25

この記事は JPOUG Advent Calendar 2021 25日目の記事です。
24日目はみやくる(@miyacle0R)さんの記事「Azure SQL Database Ledger (Ledger/台帳)と Oracle Blockchain Table を比較してみた話」でした。

25日目は Oracle Advanced Compression の機能のひとつである、高度な行圧縮機能について、実際にブロックレベルでどのように圧縮されているかを確認します。理由はやってみたかったからです。

高度な行圧縮とは

Oracle Advanced Compression の機能のひとつで、OracleDatabase 12c から導入されました。
データ・ブロック内に格納された行データの重複値を排除することで圧縮を実現します。

データ・ブロックの先頭にシンボル表というものがあり、そこにはブロック内の行および列の重複値のコピーが格納されます。そして、ブロック内に存在する重複値はシンボル表を参照する短い値に置き換えられます。

また、挿入や更新の際、即時に圧縮が実行されるわけではなく、ブロック内のデータがデータ・ブロック内部で制御された閾値に達したタイミングで圧縮が実施されます。

参考情報

https://www.oracle.com/technetwork/jp/database/performance/acofaqotn-3861046-ja.pdf https://docs.oracle.com/cd/F19136_01/cncpt/tables-and-table-clusters.html#GUID-54EE5325-0894-4869-B3AD-8912D9B4A329 https://docs.oracle.com/cd/F19136_01/cncpt/logical-storage-structures.html#GUID-B248DC2A-3F65-42CF-ACA5-0B096CFCFC46

非圧縮表のデータ・ブロックを確認してみる

検証用に圧縮設定が有効でない表を作成後、テストデータを挿入し
それが含まれるデータ・ブロック を Block Dump として出力します。

SQL> -- テストユーザー作成
create user test
identified by oracle
default tablespace users;SQL>   2    3  

ユーザーが作成されました。

SQL> grant connect, resource to test;

権限付与が成功しました。

SQL> alter user test quota 256m on users;

ユーザーが変更されました。

SQL> -- テストテーブル作成(非圧縮)
create table test.disable_compress_tbl
 (
    col1 char(4) ,
    col2 varchar2(15)
 );SQL>   2    3    4    5  

表が作成されました。

SQL> -- 圧縮が有効か確認
col owner        format a10
col table_name   format a20
col compression  format a10
col compress_for format a10
select
  owner,
  table_name,
  compression,
  compress_for
from dba_tables
where owner = 'TEST'
and table_name = 'DISABLE_COMPRESS_TBL';
SQL> SQL> SQL> SQL> SQL>   2    3    4    5    6    7    8  
OWNER      TABLE_NAME           COMPRESSIO COMPRESS_F
---------- -------------------- ---------- ----------
TEST       DISABLE_COMPRESS_TBL DISABLED

SQL> -- データ挿入(1000行)
begin
  for i in 1..1000 loop
    insert into test.disable_compress_tbl(col1, col2) values(i,'MerryChristmas');
  end loop;
end;
/
SQL>   2    3    4    5    6  
PL/SQLプロシージャが正常に完了しました。
/

SQL> -- 統計情報収集
execute DBMS_STATS.GATHER_TABLE_STATS('TEST','DISABLE_COMPRESS_TBL');SQL> 

PL/SQLプロシージャが正常に完了しました。

SQL> -- テーブルのブロック数を確認
select
  table_name,
  avg_space,
  blocks
from dba_tables 
where owner = 'TEST'
and table_name = 'DISABLE_COMPRESS_TBL';
SQL>   2    3    4    5    6    7  
TABLE_NAME            AVG_SPACE     BLOCKS
-------------------- ---------- ----------
DISABLE_COMPRESS_TBL          0          5


SQL> -- file_id, block_id を確認
select
  dbms_rowid.rowid_to_absolute_fno(rowid, 'TEST', 'DISABLE_COMPRESS_TBL') file_id,
  dbms_rowid.rowid_block_number(rowid) block_id
from test.disable_compress_tbl
where col1 = 1; 
SQL>   2    3    4    5  
   FILE_ID   BLOCK_ID
---------- ----------
         4        134


SQL> -- block dump を出力
alter system dump datafile 4 block 134;
SQL> 
システムが変更されました。

[oracle@oracledev trace]$ ls -lrt
合計 11588
:
-rw-r-----. 1 oracle oinstall  555487 12月 25 11:06 2021 alert_orcl.log
-rw-r-----. 1 oracle oinstall    1073 12月 25 11:07 2021 orcl_ora_3117.trm 
-rw-r-----. 1 oracle oinstall   83280 12月 25 11:07 2021 orcl_ora_3117.trc <--★Block Dump
:

上記で出力した、非圧縮表の Block Dump の内容を確認します。 (1行目~3行目の格納データを抜粋)

▼orcl_ora_3117.trc
:
block_row_dump:
tab 0, row 0, @0x1f81                                   ★(1)
tl: 23 fb: --H-FL-- lb: 0x1  cc: 2
col  0: [ 4]  31 20 20 20
col  1: [14]  4d 65 72 72 79 43 68 72 69 73 74 6d 61 73 ★(2)
tab 0, row 1, @0x1f6a
tl: 23 fb: --H-FL-- lb: 0x1  cc: 2
col  0: [ 4]  32 20 20 20
col  1: [14]  4d 65 72 72 79 43 68 72 69 73 74 6d 61 73
tab 0, row 2, @0x1f53
tl: 23 fb: --H-FL-- lb: 0x1  cc: 2
col  0: [ 4]  33 20 20 20
col  1: [14]  4d 65 72 72 79 43 68 72 69 73 74 6d 61 73
:

★(1)~★(2)の4行が、ひとつの行の情報です。
それぞれの項目は下記です。(確認できた項目のみ記載しています)
・tab 0 : テーブル番号
・row : 行番号
・tl : メタデータを含む行の長さ
・cc : カラムの数

たとえば★(2)行のデータであれば、
col 1(2番目のカラム)のカラム長は 14 byte で
格納されているデータはASCIIで "4d 65 72 72 79 43 68 72 69 73 74 6d 61 73" です。
変換すると "MerryChristmas" となります。

今回検証で使用するデータ・ブロック内の col 1 のデータはすべて同じのため
★(2)行と同値のデータが2行目、3行目...と続いています。

高度な行圧縮が有効な表のデータ・ブロックを確認してみる

非圧縮表と同様に、検証用の表を作成後 Block Dump を出力し、中身を確認します。

-- テストテーブル作成(高度な行圧縮が有効)
SQL> create table test.enable_compress_tbl
 (
    col1 char(4) ,
    col2 varchar2(15)
 )row store compress advanced;  2    3    4    5  

表が作成されました。

SQL>    -- 圧縮が有効か確認
col owner        format a10
col table_name   format a20
col compression  format a10
col compress_for format a10
select
  owner,
  table_name,
  compression,
  compress_for
from dba_tables
where owner = 'TEST'
and table_name = 'ENABLE_COMPRESS_TBL';SQL> SQL> SQL> SQL> SQL>   2    3    4    5    6    7    8  

OWNER      TABLE_NAME           COMPRESSIO COMPRESS_F
---------- -------------------- ---------- ----------
TEST       ENABLE_COMPRESS_TBL  ENABLED    ADVANCED

SQL> -- データ挿入(1000行)
begin
  for i in 1..1000 loop
    insert into test.enable_compress_tbl(col1, col2) values(i,'MerryChristmas');
  end loop;
end;
/SQL>   2    3    4    5    6  

PL/SQLプロシージャが正常に完了しました。

SQL> -- 統計情報収集
execute DBMS_STATS.GATHER_TABLE_STATS('TEST','ENABLE_COMPRESS_TBL');SQL> 

PL/SQLプロシージャが正常に完了しました。

SQL> -- テーブルのブロック数を確認
select
  table_name,
  avg_space,
  blocks
from dba_tables 
where owner = 'TEST'
and table_name = 'ENABLE_COMPRESS_TBL';SQL>   2    3    4    5    6    7  

TABLE_NAME            AVG_SPACE     BLOCKS
-------------------- ---------- ----------
ENABLE_COMPRESS_TBL           0          5


SQL> -- file_id, block_id を確認
select
  dbms_rowid.rowid_to_absolute_fno(rowid, 'TEST', 'ENABLE_COMPRESS_TBL') file_id,
  dbms_rowid.rowid_block_number(rowid) block_id
from test.enable_compress_tbl
where col1 = 1; SQL>   2    3    4    5  

   FILE_ID   BLOCK_ID
---------- ----------
         4        142

SQL> -- block dump を出力
alter system dump datafile 4 block 142;SQL> 

システムが変更されました。
[oracle@oracledev ~]$ ls -lrt /u01/app/oracle/diag/rdbms/orcl/orcl/trace/
:
-rw-r-----. 1 oracle oinstall    1051 12月 25 15:47 2021 orcl_ora_3610.trm
-rw-r-----. 1 oracle oinstall  163759 12月 25 15:47 2021 orcl_ora_3610.trc ★
-rw-r-----. 1 oracle oinstall    4692 12月 25 15:48 2021 orcl_mmon_3163.trm
-rw-r-----. 1 oracle oinstall   26219 12月 25 15:48 2021 orcl_mmon_3163.trc
-rw-r-----. 1 oracle oinstall    4668 12月 25 15:48 2021 orcl_gen0_3115.trm
-rw-r-----. 1 oracle oinstall   26009 12月 25 15:48 2021 orcl_gen0_3115.trc

上記で出力した Block Dump の内容を確認します。(1行目~3行目の格納データを抜粋)

▼orcl_ora_3610.trc
:
block_row_dump:
tab 0, row 0, @0x1f87
tl: 17 fb: --H-FL-- lb: 0x0  cc: 1                       
col  0: [14]  4d 65 72 72 79 43 68 72 69 73 74 6d 61 73  ★(3)
bindmp: 02 4c d6 4d 65 72 72 79 43 68 72 69 73 74 6d 61 73
tab 1, row 0, @0x1f7e
tl: 9 fb: --H-FL-- lb: 0x1  cc: 2
col  0: [ 4]  31 20 20 20
col  1: [14]  4d 65 72 72 79 43 68 72 69 73 74 6d 61 73 ★(4)
bindmp: 2c 01 02 cc 31 20 20 20 00
tab 1, row 1, @0x1f75
tl: 9 fb: --H-FL-- lb: 0x1  cc: 2
col  0: [ 4]  32 20 20 20
col  1: [14]  4d 65 72 72 79 43 68 72 69 73 74 6d 61 73
bindmp: 2c 01 02 cc 32 20 20 20 00
:

※非圧縮表確認時に説明した項目については割愛します。

まず、★(3)の行で tab 0 のテーブルが、ひとつの列値(col 0)だけデータを持っていることが確認できます。 この tab 0 はシンボル表です。この中に、ブロック内の行および列の重複値のコピーが格納されます。 また、非圧縮表と異なり、bindmp という項目があります。これは圧縮された行データを示します。

なお、tab 1, row 0 以降から、シンボル表ではない、挿入した行データの情報となります。 下記に、今回出力された★(4)の bindmp の値と位置を記載します。
※4~8に格納された値の意味についてはわかりませんでした。

値の位置: 1  2  3  4  5  6  7  8  9
────────────────────────────────────
bindmp:  2c 01 02 cc 32 20 20 20 00
  • 1~3: 行のヘッダー情報
  • 4~8: 不明(5番目の値は1ずつ増加しているので行番号?)
  • 9 : シンボル表への参照を示します。(00 は tab 0, row 0 を参照している。)

なお、参照先 tab 0, row 0 は "4d 65 72 72 79 43 68 72 69 73 74 6d 61 73" となっており、 "MerryChristmas" が格納されています。

追加で確認

非圧縮表、高度な行圧縮が有効な表にて検証で挿入したデータが少なかったためか
使用ブロック数に差が出ませんでした。

なので、両方に9000行ほど追加して、使用するブロック数に差が出るか確認しました。

SQL> begin
  for i in 1001..9999 loop
    insert into test.disable_compress_tbl(col1, col2) values(i,'MerryChristmas');
  end loop;
end;
/  2    3    4    5    6  

PL/SQLプロシージャが正常に完了しました。

SQL> begin
  for i in 1001..9999 loop
    insert into test.enable_compress_tbl(col1, col2) values(i,'MerryChristmas');
  end loop;
end;
/  2    3    4    5    6  

PL/SQLプロシージャが正常に完了しました。


SQL> -- 統計情報収集
execute DBMS_STATS.GATHER_TABLE_STATS('TEST','DISABLE_COMPRESS_TBL');SQL> 

PL/SQLプロシージャが正常に完了しました。

SQL> -- 統計情報収集
execute DBMS_STATS.GATHER_TABLE_STATS('TEST','ENABLE_COMPRESS_TBL');SQL> 

PL/SQLプロシージャが正常に完了しました。


SQL> -- テーブルのブロック数を確認
select
  table_name,
  avg_space,
  blocks
from dba_tables 
where owner = 'TEST'
and table_name = 'DISABLE_COMPRESS_TBL';SQL>   2    3    4    5    6    7  

TABLE_NAME                           AVG_SPACE     BLOCKS
----------------------------------- ---------- ----------
DISABLE_COMPRESS_TBL                         0         35 ★非圧縮表

SQL> -- テーブルのブロック数を確認
select
  table_name,
  avg_space,
  blocks
from dba_tables 
where owner = 'TEST'
and table_name = 'ENABLE_COMPRESS_TBL';SQL>   2    3    4    5    6    7  

TABLE_NAME                           AVG_SPACE     BLOCKS
----------------------------------- ---------- ----------
ENABLE_COMPRESS_TBL                          0         20 ★高度な行圧縮が有効な表

高度な行圧縮が有効な表では、使用ブロック数が少ない事を確認できました。

まとめ

  • 高度な行圧縮について、データ・ブロック内で行データの重複値のコピーをシンボル表に格納している事が確認できました。

  • また、データ・ブロック内に存在する圧縮された行データについて、シンボル表を参照する短い値に置き換わる事を確認できました。

  • 高度な行圧縮を有効にした場合、使用するブロック数が少なく済む事が確認できました。

主な参考情報

Block Dump の出力や内容の確認方法については、下記エントリを参考にしました。
Oracle Database のデータ・ブロックのダンプとその解析 - ぱと隊長日誌

また、シンボル表や bindmp の確認については、下記エントリを参考にしました。
Oracle 11g検証 Advanced Compression その4 - InsightTechnology 旧ブログ
Oracle 11g検証 Advanced Compression その5 - InsightTechnology 旧ブログ
Oracle 11g検証 Advanced Compression その6 - InsightTechnology 旧ブログ

最後に

ノリと勢いで登録してしまった人生で初めての Advent Calendar でしたが
適度なプレッシャーがあり、書いていて楽しかったです。

もうクリスマスは終わりそうですが(現在 12/25 22:44)
みなさま、よいクリスマス&よいお年を!

(また来年も書きたーい!)

OracleDatabaseの制御ファイルを覗いてみた

目的

OracleDatabase の制御ファイルはバイナリファイルである。 このバイナリファイルの中に、どのような情報が記述されているのか実際に確認してみたい。

検討

以下3つの方法で確認してみる。
・cat
・strings
・od --strings

catコマンドで確認

[oracle@oracledev check_ctlfile]$ ll
合計 20704
-rw-r--r--. 1 oracle oinstall 10600448 11月 28 15:22 2021 cat_ctlfile.log
-rw-r-----. 1 oracle oinstall 10600448 11月 28 15:21 2021 control01.ctl
[oracle@oracledev check_ctlfile]$ cat control01.ctl
�����@�}|{z���+� 
                 <�t\ORCL})�@G`�l�<�[�����$����������'��[��@�l�<c��@G`'���,����,����,����,���,���       �,���
�,���
     ��
��������|)���B`|)�{)��}�B{)�|)����l�<ORC@@@�l�< 
                                                �\��^

�l�<i<'u\�+<�

              H

ddj
  �Ydd8[ddT\228`$&$&&�a��Hc


                           `d��
                               e���o��Lr���s��,|ss(}��~22���|�����8�$$��� ���t��8�99��(@X��P�� � h@
@\��
    7

H8��,=�>qql?��|)�{)����l�<ORC@@@�l�< 
                                     �\��^

�l�<i<'u\�+<�

              H

ddj
  �Ydd8[ddT\228`$&$&&�a��Hc


                           `d��
                               e���o��Lr���s��,|ss(}��~22���|�����8�$$��� ���t��8�99��(@X��P�� � h@
@\��
    7

H8��,=�>qql?��{)�z)��~8�\���@'8�'�l�<&orcl��@z)�j)���}V�a
                                                         �@'�'�l�<&orcl��@j)�Z)��l=@%G����X@�@���@�@&�
                                                                                                      �@���@}V�a
                                                                                                                �@�@'���}V�a
                                                                                                                            �@���������@�Z)�z)��V�@%G����X@�@���@�@&�
   �@���@}V�a
             �@�@'8}V�a
                       �@���������@�z)�z)���n^ ��l�<�\���@H�\���@�� f
��l�<l?�\���@H�\���@��� &@��l�<�#�\���@G�\����z)�j)���n^ ��l�<}V�a
                                                                  �@G����������Y@�� f
��l�<2}V�a
��l�<l?}V�a@G����������Y@��d q
           �@G����������Y@��� &@��l�<�#}V�a
                                           �@F������������j)������������<���K/u01/app/oracle/oradata/orcl/redo01.log/u01/app/oracle/oradata/orcl/redo02.log/u01/app/oracle/oradata/orcl/redo03.log/u01/app/oracle/oradata/orcl/system01.dbf/u01/app/oracle/oradata/orcl/sysaux01.dbf/u01/app/oracle/oradata/orcl/undotbs01.dbf/u01/app/oracle/oradata/orcl/temp01.dbf/u01/app/oracle/oradata/orcl/users01.dbf<� C)���K/u01/app/oracle/oradata/orcl/redo01.log/u01/app/oracle/oradata/orcl/redo02.log/u01/app/oracle/oradata/orcl/redo03.log/u01/app/oracle/oradata/orcl/system01.dbf/u01/app/oracle/oradata/orcl/sysaux01.dbf/u01/app/oracle/oradata/orcl/undotbs01.dbf/u01/app/oracle/oradata/orcl/temp01.dbf/u01/app/oracle/oradata/orcl/users01.dbfC)�!!��""��##��$$��%%��&&��''��((��))��**��++��,,��--��..��//��00��11��22��33��44��55��66��77��88��99��::��;;��<<��==��>>��??��@@��AA��BB��CC��DD��EE��FF��GG��HH��II��JJ��KK��LL��MM��NN��OO��PP��QQ��RR��SS��TT��UU��VV��WW��XX��YY��ZZ��[[��\\��]]��^^��__��``��aa��bb��cc��dd��ee��ff��gg��hh��ii��jj��kk��ll��mm��nn��oo��pp��qq��rr��ss��tt��uu��vv��ww��xx��yy��zz��{{��||��}}��~~�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������*��
                   JSYSTEMSYSAUUNDOTBS1TEMPUSERS*��)��JSYSTEMSYSAUUNDOTBS1TEMPUSERS)����������&��$
$�l�<��?P&��%��
��l�<��?P%����������������������������������Z)����'m�<�l�<���xm�<���'m�<����m�<���xm�a��n�a��m�<�v��p�<�v��n�<C���r�<C���p�<��s�<���r�<���)s����s�<���s�<       ��)s�<e���t�<
e���s�<��       v�<

���t�<P���w�<

             P��        v�<���z�<
�z�<A�<�^]�?
��<�?A
�^]�?�
�n��?�
��<�?Xk
       ����?Xk
              �n��?/
                    ���?/
                         ����?(�
                                ���@(�
                                      ���?�T�h
@�T���@�����@���h
M@�����T@����M@���ekU@�����T@�a�:�U@�a�ekU@���@���:�U@ٚ��V@ ٚ�@�W��V@ !�W��V@��AW@!"����V@N��ŖW@"#N�AW@���X@#$�ŖW@���@$%���X@�@�a
                                                                                                                               �@%&�@���@}V�Z)��A)����'m�<�l�<���xm�<���'m�<����m�<���xm�a��n�a��m�<�v��p�<�v��n�<C���r�<C���p�<��s�<���r�<���)s����s�<���s�<     ��)s�<e���t�<
e���s�<��       v�<

���t�<P���w�<

             P��        v�<���z�<
�z�<A�<�^]�?
��<�?A
�^]�?�
�n��?�
��<�?Xk
       ����?Xk
              �n��?/
                    ���?/
                         ����?(�
                                ���@(�
                                      ���?�T�h
@�T���@�����@���h
M@�����T@����M@���ekU@�����T@�a�:�U@�a�ekU@���@���:�U@ٚ��V@ ٚ�@�W��V@ !�W��V@��AW@!"����V@N��ŖW@"#N�AW@���X@#$�ŖW@���@$%���X@�@�A)������������������g
��`]�?�l�<�z�<A
�^]�?��<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_07/o1_mf_1_14_j99n6g7k_.arc�<�?�l�<A
�^]�?�
��<�?D�<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_15_j9cd1w7q_.arcq��?�l�<�
��<�?Xk
       �n��?F<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_16_j9d36ys7_.arc���?�l�<Xk
                                                                                                                       �n��?/
                                                                                                                             ����?9C<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_17_j9dr20qj_.arc��?�l�</
                                                                          ����?(�
                                                                                 ���?K<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_09/o1_mf_1_18_j9h2s2lp_.arc��@�l�<(�
                             ���?�T���@�<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_02/o1_mf_1_19_jcgvjnt6_.arcj
@�l�<�T���@���h
@�`<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_02/o1_mf_1_20_jcgzgsbn_.arc��@�l�<���h
@����@~_<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_16/o1_mf_1_21_jdmxhr62_.arc��7@�l�<����@�G���7@xa<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_08/o1_mf_1_22_jgf8z6mo_.arc�c;@�l�<�G���7@�b��c;@�<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_11/o1_mf_1_23_jgo1g51h_.arcg
���
���`]�?�l�<�z�<A
�^]�?��<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_07/o1_mf_1_14_j99n6g7k_.arc�<�?�l�<A
�^]�?�
��<�?D�<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_15_j9cd1w7q_.arcq��?�l�<�
��<�?Xk
       �n��?F<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_16_j9d36ys7_.arc���?�l�<Xk
                                                                                                                       �n��?/
                                                                                                                             ����?9C<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_17_j9dr20qj_.arc��?�l�</
                                                                          ����?(�
                                                                                 ���?K<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_09/o1_mf_1_18_j9h2s2lp_.arc��@�l�<(�
                             ���?�T���@�<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_02/o1_mf_1_19_jcgvjnt6_.arcj
@�l�<�T���@���h
@�`<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_02/o1_mf_1_20_jcgzgsbn_.arc��@�l�<���h
@����@~_<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_16/o1_mf_1_21_jdmxhr62_.arc��7@�l�<����@�G���7@xa<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_08/o1_mf_1_22_jgf8z6mo_.arc�c;@�l�<�G���7@�b��c;@�<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_11/o1_mf_1_23_jgo1g51h_.arcUK@�l�<�b��c;@?�UK@�<'u\@/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_23/o1_mf_1_24_jhnxr02q_.arc�
���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������             ��

��

  ��

�������������������������������z)��^
                                    � �@��orcl� �'_�E'�XG6��(Hu\*sOA��x�`m��HN�HN����@���T@�k/<d�")�Sz8�����\�z)�{)��^
                                                                                                                      � �@��orcl� �'_�E'�XG6��(Hu\*sOA��x�`m��HN�HN����@���T@�k/<d�")�Sz8�����\�{)��� ���-�l�<�l�<�!!��""��##��$$��%%��&&��''��((��))��**��++��,,��--��..��//��00��11��22��33��44��55��66��7�
��]&�V
      �
�8g
�����U
g
�9|)���-|)�::)���-:)�;;��<<��==��>>��??��@@��AA��BB��C4���orcl���b�QE74p��b�p�����b����UNNAMED_INSTANCE_2UNNAMED_INSTANCE_3UNNAMED_INSTANCE_4UNNAMED_INSTANCE_5UNNAMED_INSTANCE_6UNNAMED_INSTANCE_7UNNAMED_INSTANCE_84�D;)����orclp����QE74����p��p�������UNNAMED_INSTANCE_2UNNAMED_INSTANCE_3UNNAMED_INSTANCE_4UNNAMED_INSTANCE_5UNNAMED_INSTANCE_6UNNAMED_INSTANCE_7UNNAMED_INSTANCE_8;)�Eh)��    "S�O�   �X,od/
����,h)�Fi)���S�O�      �X,od}(���\-i)�GG��HH��II��JJ��K:)���-:)�L3���-3�MM��NN��OO��PP��QQ��RR��SS��TT��UU��VV��WW��XX��YY��ZZ��[[��\\��]]��^^��__��``��aa��bb��cc��dd��ee��ff��gg��hh��ii��jj��kk��ll��mm��nn��oo��pp��qq��rr��ss��tt��uu��vv��ww��xx��yy��zz��{{��||��}}��~~����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������      ��

��

  ��

�������������������������������������  ��!!��""��#:)���[ACM unit testing operationLSB Database GuardSupplemental Log Data DDLLSB Role Change SupportRFS block and kill across RACRAC-wide SGAPDB Supplemental Log Data DDLDBMS_ROLLING managemenPL/SQL quiesce support    Stop logical across RAC:)�$3���[ACM unit testing operationLSB Database GuardSupplemental Log Data DDLLSB Role Change SupportRFS block and kill across RACRAC-wide SGAPDB Supplemental Log Data DDLDBMS_ROLLING managemenPL/SQL quiesce support      Stop logical across RAC3�%%��&&��''��((��))��**��++��,,��--��..��//��00��11��22��33��44��55��66��77��88��99��::��;;��<<��==��>>��??��@@��AA��BB��CC��DD��EE��FF��GG��HH��II��JJ��KK��LL��MM��NN��OO��PP��QQ��RR��SS��TT��UU��VV��WW��XX��YY��ZZ��[[��\\��]]��^^��__��``��aa��bb��cc��dd��ee��ff��gg��hh��ii��jj��kk��ll��mm��nn��oo��pp��qq��rr��ss��tt��uu��vv��ww��xx��yy��zz��{{��||��}}��~~���������:)��k.:)��3��h.3��:)��i.:)��3��n.3��:)��o.:)��3��l.3
[oracle@oracledev check_ctlfile]$ 

catでの確認結果

文字化けが多いが、データファイルのパスや生成されたアーカイブログが記録されているように見受けられる。 出力の最後の方に「unit testing operationLSB Database GuardSupplemental 」 等の記述があるが、よくわからない。

stringsコマンドで確認

[oracle@oracledev check_ctlfile]$ strings control01.ctl 
}|{z
t\ORCL
<ORCL
<'u\
<ORCL
<'u\
orcl
orcl
/u01/app/oracle/oradata/orcl/redo01.log
/u01/app/oracle/oradata/orcl/redo02.log
/u01/app/oracle/oradata/orcl/redo03.log
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/temp01.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
/u01/app/oracle/oradata/orcl/redo01.log
/u01/app/oracle/oradata/orcl/redo02.log
/u01/app/oracle/oradata/orcl/redo03.log
/u01/app/oracle/oradata/orcl/system01.dbf
/u01/app/oracle/oradata/orcl/sysaux01.dbf
/u01/app/oracle/oradata/orcl/undotbs01.dbf
/u01/app/oracle/oradata/orcl/temp01.dbf
/u01/app/oracle/oradata/orcl/users01.dbf
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
c;@?
UK@}
ekU@
ekU@
c;@?
UK@}
ekU@
ekU@
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_07/o1_mf_1_14_j99n6g7k_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_15_j9cd1w7q_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_16_j9d36ys7_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_17_j9dr20qj_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_09/o1_mf_1_18_j9h2s2lp_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_02/o1_mf_1_19_jcgvjnt6_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_02/o1_mf_1_20_jcgzgsbn_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_16/o1_mf_1_21_jdmxhr62_.arc
7@xa
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_08/o1_mf_1_22_jgf8z6mo_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_11/o1_mf_1_23_jgo1g51h_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_07/o1_mf_1_14_j99n6g7k_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_15_j9cd1w7q_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_16_j9d36ys7_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_17_j9dr20qj_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_09/o1_mf_1_18_j9h2s2lp_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_02/o1_mf_1_19_jcgvjnt6_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_02/o1_mf_1_20_jcgzgsbn_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_16/o1_mf_1_21_jdmxhr62_.arc
7@xa
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_08/o1_mf_1_22_jgf8z6mo_.arc
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_11/o1_mf_1_23_jgo1g51h_.arc
c;@?
<'u\@
/u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_23/o1_mf_1_24_jhnxr02q_.arc
orcl
(Hu\*sOA
k/<d
orcl
(Hu\*sOA
k/<d
orcl
QE74
UNNAMED_INSTANCE_2
UNNAMED_INSTANCE_3
UNNAMED_INSTANCE_4
UNNAMED_INSTANCE_5
UNNAMED_INSTANCE_6
UNNAMED_INSTANCE_7
UNNAMED_INSTANCE_8
orcl
QE74
UNNAMED_INSTANCE_2
UNNAMED_INSTANCE_3
UNNAMED_INSTANCE_4
UNNAMED_INSTANCE_5
UNNAMED_INSTANCE_6
UNNAMED_INSTANCE_7
UNNAMED_INSTANCE_8
ACM unit testing operation
LSB Database Guard
Supplemental Log Data DDL
LSB Role Change Support
RFS block and kill across RAC
RAC-wide SGA
PDB Supplemental Log Data DDL
DBMS_ROLLING management
PL/SQL quiesce support
Stop logical across RAC
ACM unit testing operation
LSB Database Guard
Supplemental Log Data DDL
LSB Role Change Support
RFS block and kill across RAC
RAC-wide SGA
PDB Supplemental Log Data DDL
DBMS_ROLLING management
PL/SQL quiesce support
Stop logical across RAC
[oracle@oracledev check_ctlfile]$ 

stringsコマンドの確認結果

catの確認結果と比較すると、読みやすい。
以下の内容が読み取れる。
・SID
REDOログのファイルパス
・各データファイルのファイルパス
・表領域名
・生成されたアーカイブログのファイルパス
・「UNNAMED_INSTANCE_n」という記述があるが、これが何なのかわからない。
・「ACM unit testing operation」等の記述が複数続いているが、これが何なのかわからない。
※「RAC」等の記述があるがシングルインスタンスで作成しているので当環境は非RAC

od --stringsコマンドで確認

[oracle@oracledev check_ctlfile]$ od --strings control01.ctl 
0040036 t\ORCL
1040037 <ORCL
1040464 <'u\
1100037 <ORCL
1100464 <'u\
1140344 orcl
1200344 orcl
1740036 /u01/app/oracle/oradata/orcl/redo01.log
1741052 /u01/app/oracle/oradata/orcl/redo02.log
1742066 /u01/app/oracle/oradata/orcl/redo03.log
1743102 /u01/app/oracle/oradata/orcl/system01.dbf
1744116 /u01/app/oracle/oradata/orcl/sysaux01.dbf
1745132 /u01/app/oracle/oradata/orcl/undotbs01.dbf
1746146 /u01/app/oracle/oradata/orcl/temp01.dbf
1747162 /u01/app/oracle/oradata/orcl/users01.dbf
2000036 /u01/app/oracle/oradata/orcl/redo01.log
2001052 /u01/app/oracle/oradata/orcl/redo02.log
2002066 /u01/app/oracle/oradata/orcl/redo03.log
2003102 /u01/app/oracle/oradata/orcl/system01.dbf
2004116 /u01/app/oracle/oradata/orcl/sysaux01.dbf
2005132 /u01/app/oracle/oradata/orcl/undotbs01.dbf
2006146 /u01/app/oracle/oradata/orcl/temp01.dbf
2007162 /u01/app/oracle/oradata/orcl/users01.dbf
13140032 SYSTEM
13140316 SYSAUX
13140602 UNDOTBS1
13141066 TEMP
13141352 USERS
13200032 SYSTEM
13200316 SYSAUX
13200602 UNDOTBS1
13201066 TEMP
13201352 USERS
14340120 <'u\@
14340130 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_07/o1_mf_1_14_j99n6g7k_.arc
14341230 <'u\@
14341240 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_15_j9cd1w7q_.arc
14342340 <'u\@
14342350 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_16_j9d36ys7_.arc
14343450 <'u\@
14343460 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_17_j9dr20qj_.arc
14344560 <'u\@
14344570 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_09/o1_mf_1_18_j9h2s2lp_.arc
14345670 <'u\@
14345700 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_02/o1_mf_1_19_jcgvjnt6_.arc
14347000 <'u\@
14347010 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_02/o1_mf_1_20_jcgzgsbn_.arc
14350110 <'u\@
14350120 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_16/o1_mf_1_21_jdmxhr62_.arc
14351220 <'u\@
14351230 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_08/o1_mf_1_22_jgf8z6mo_.arc
14352330 <'u\@
14352340 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_11/o1_mf_1_23_jgo1g51h_.arc
14400120 <'u\@
14400130 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_07/o1_mf_1_14_j99n6g7k_.arc
14401230 <'u\@
14401240 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_15_j9cd1w7q_.arc
14402340 <'u\@
14402350 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_16_j9d36ys7_.arc
14403450 <'u\@
14403460 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_08/o1_mf_1_17_j9dr20qj_.arc
14404560 <'u\@
14404570 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_05_09/o1_mf_1_18_j9h2s2lp_.arc
14405670 <'u\@
14405700 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_02/o1_mf_1_19_jcgvjnt6_.arc
14407000 <'u\@
14407010 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_02/o1_mf_1_20_jcgzgsbn_.arc
14410110 <'u\@
14410120 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_06_16/o1_mf_1_21_jdmxhr62_.arc
14411220 <'u\@
14411230 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_08/o1_mf_1_22_jgf8z6mo_.arc
14412330 <'u\@
14412340 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_11/o1_mf_1_23_jgo1g51h_.arc
14413440 <'u\@
14413450 /u01/app/oracle/fast_recovery_area/orcl/ORCL/archivelog/2021_07_23/o1_mf_1_24_jhnxr02q_.arc
21640310 orcl
21700310 orcl
24140024 orcl
24140075 QE74
24140144 UNNAMED_INSTANCE_2
24140264 UNNAMED_INSTANCE_3
24140404 UNNAMED_INSTANCE_4
24140524 UNNAMED_INSTANCE_5
24140644 UNNAMED_INSTANCE_6
24140764 UNNAMED_INSTANCE_7
24141104 UNNAMED_INSTANCE_8
24200024 orcl
24200075 QE74
24200144 UNNAMED_INSTANCE_2
24200264 UNNAMED_INSTANCE_3
24200404 UNNAMED_INSTANCE_4
24200524 UNNAMED_INSTANCE_5
24200644 UNNAMED_INSTANCE_6
24200764 UNNAMED_INSTANCE_7
24201104 UNNAMED_INSTANCE_8
42140030 ACM unit testing operation
42140200 LSB Database Guard
42140350 Supplemental Log Data DDL
42140520 LSB Role Change Support
42140670 RFS block and kill across RAC
42141040 RAC-wide SGA
42141210 PDB Supplemental Log Data DDL
42141360 DBMS_ROLLING management
42141530 PL/SQL quiesce support
42141700 Stop logical across RAC
42200030 ACM unit testing operation
42200200 LSB Database Guard
42200350 Supplemental Log Data DDL
42200520 LSB Role Change Support
42200670 RFS block and kill across RAC
42201040 RAC-wide SGA
42201210 PDB Supplemental Log Data DDL
42201360 DBMS_ROLLING management
42201530 PL/SQL quiesce support
42201700 Stop logical across RAC
[oracle@oracledev check_ctlfile]$ 

od --stringsコマンドでの確認結果

行の先頭は8進数の数値のように見受けられる。(意味はわからない)
それ以外はstringsコマンドの確認結果と同じに見える。

覗いてみて

OracleDatabase管理者ガイドでは、以下のように記載されている。

Oracle® Database データベース管理者ガイド 12c リリース2 (12.2)
制御ファイルの管理

制御ファイルはデータベースの物理構造を記録した小さなバイナリ・ファイルであり、すべてのOracle Databaseに含まれています。
制御ファイルには、次の情報が格納されています。
・データベース名
・対応するデータファイルとREDOログ・ファイルの名前と位置
・データベース作成のタイムスタンプ
・現行のログ順序番号
・チェックポイント情報

しかし、「データベース作成のタイムスタンプ」「現行のログ順序番号」「チェックポイント情報」らしき情報は確認できなかった。

VScodeで小文字、大文字に変換可能なショートカットを設定する

目的

VScodeで小文字、大文字を相互に変換できるようにする。

方法

キーボードショートカットを設定する。 「小文字に変換」「大文字に変換」という長いコマンドはあるが、ショートカットキーが設定されていないので、それを設定する。

手順

  1. Ctrl+K → Ctrl+S でキーボードショートカット設定画面へ遷移。
  2. 表示される検索窓で「editor.action.transformTo」と入力し検索。
  3. 「小文字に変換」「大文字に変換」のコマンドがあるが、ショートカットが設定されていない。
  4. 画面右上のアイコン「キーボードショートカットを開く(JSON)」を押下。
  5. 最初の[]内に以下をコピペする。
    {
        //A->a
        "key": "ctrl+l",
        "command": "editor.action.transformToLowercase",
        "when": "editorHasSelection && editorTextFocus"
      },
      {
        //a->A
        "key": "ctrl+u",
        "command": "editor.action.transformToUppercase",
        "when": "editorHasSelection && editorTextFocus"
      },

完了

参考

https://qiita.com/ka-san/items/6ae405d5ea969c1e2a40

sqlplusでログイン試行時にORA-01017発生

環境

OS: OracleLinux 6.9

DB: OracleDatabase 12.2.0.1 EE

発生状況

sqlplus でDBユーザーを指定してログインしようとしたら、ORA-01017 が発生した。

[oracle@oracledev ~]$ sqlplus oracle/oracle

SQL*Plus: Release 12.2.0.1.0 Production on 水 6月 16 21:25:00 2021

Copyright (c) 1982, 2016, Oracle.  All rights reserved.

ERROR:
ORA-01017: ユーザー名/パスワードが無効です。ログオンは拒否されました。

ユーザー名を入力してください:

ユーザー名、またはパスワードが無効らしい。

とりあえず sys でログインしてユーザー一覧を確認してみたところ

そんなユーザーいなかった。

[oracle@oracledev ~]$ sql / as sysdba

SQLcl: 水 6 16 21:37:29 2021のリリース12.2.0.1.0 RC

Copyright (c) 1982, 2021, Oracle.  All rights reserved.

接続先:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

SQL> select username from dba_users order by 1;

USERNAME                                                                                                                    
----------------------------------------------------------------------------------------------------------------------------ANONYMOUS                                                                                                                   
APEX_050000                                                                                                                 
APEX_PUBLIC_USER                                                                                                            
APPQOSSYS                                                                                                                   
AUDSYS                                                                                                                      
DBSFWUSER                                                                                                                   
DBSNMP                                                                                                                      
DIP                                                                                                                         
FLOWS_FILES                                                                                                                 
GGSYS                                                                                                                       
GSMADMIN_INTERNAL                                                                                                           
GSMCATUSER                                                                                                                  
GSMUSER                                                                                                                     
OJVMSYS                                                                                                                     
OLAPSYS                                                                                                                     
ORACLE_OCM                                                                                                                  
OUTLN                                                                                                                       
REMOTE_SCHEDULER_AGENT                                                                                                      
SCOTT                                                                                                                       
SYS                                                                                                                         
SYS$UMF                                                                                                                     
SYSBACKUP                                                                                                                   
SYSDG                                                                                                                       
SYSKM                                                                                                                       
SYSRAC                                                                                                                      
SYSTEM                                                                                                                      
WMSYS                                                                                                                       
XDB                                                                                                                         
XS$NULL                                                                                                                     

29行が選択されました。

というわけで、「存在しないユーザー」を「存在するユーザー」と勘違いしていただけでした。
しょうもない原因ですが記録として残します。

ACID特性について

ACIDとは

トランザクションが持つべき以下4つの特性

  • 不可分性(atomicity)
  • 一貫性(consistency)
  • 独立性(isolation)
  • 永続性(durability)

不可分性(atomicity)

トランザクションに含まれるタスクがすべて実行されるか、あるいは全く実行されないかを保証する性質のこと。

アトミック性、原子性ともいう。

0か1かしか存在しない、というイメージ。

「すべて完了した状態」 or 「いっさい実行されていない状態」しか存在しないことを示す。

一貫性(Consistency)

一貫性、整合性ともいう。

データベース内のデータに常に矛盾が発生しないこと。

実行結果が矛盾した状態にならないこと。

たとえば預金残高に1万円しかないのに、5万円を送金する事はできない、など。

独立性(isolation)

トランザクション中に行われる操作が、他のトランザクションに影響を与えない、また与えられない性質のこと。

永続性(Durability)

トランザクションの処理結果が永続的であることを保証する性質のこと。

永続的=システム障害等で失われない、ということ。

参考情報

ACID特性についての解説 - Qiita

ACID (コンピュータ科学) - Wikipedia)

CDB,PDBにインストールされているコンポーネント一覧を表示

以下コマンドでCDB,PDBにインストールされているコンポーネント一覧を表示する

set lines 140 pages 1000
col con$name  format a15  
col comp_name format a45
col comp_id   format a20
col status    format a15

select
  con$name,
  comp_name,
  comp_id,
  status
from cdb_registry
order by 1,2;

CDBから実行した結果は以下

  • CDB, PDB の結果ともに表示される
SQL> -- CDB に接続
alter session set container = cdb$root;SQL> 

セッションが変更されました。

SQL> -- 現在接続しているコンテナ名を表示
show con_name;SQL> 

CON_NAME
------------------------------
CDB$ROOT
SQL> -- コンポーネント一覧表示
set lines 140 pages 1000
col con$name  format a15  
col comp_name format a45
col comp_id   format a20
col status    format a15

select
  con$name,
  comp_name,
  comp_id,
  status
from cdb_registry
order by 1,2;SQL> SQL> SQL> SQL> SQL> SQL> SQL>   2    3    4    5    6    7  

CON$NAME        COMP_NAME                                     COMP_ID              STATUS
--------------- --------------------------------------------- -------------------- ---------------
CDB$ROOT        JServer JAVA Virtual Machine                  JAVAVM               VALID
CDB$ROOT        OLAP Analytic Workspace                       APS                  VALID
CDB$ROOT        Oracle Application Express                    APEX                 VALID
CDB$ROOT        Oracle Database Catalog Views                 CATALOG              VALID
CDB$ROOT        Oracle Database Java Packages                 CATJAVA              VALID
CDB$ROOT        Oracle Database Packages and Types            CATPROC              VALID
CDB$ROOT        Oracle Multimedia                             ORDIM                VALID
CDB$ROOT        Oracle OLAP API                               XOQ                  VALID
CDB$ROOT        Oracle Real Application Clusters              RAC                  OPTION OFF
CDB$ROOT        Oracle Text                                   CONTEXT              VALID
CDB$ROOT        Oracle Workspace Manager                      OWM                  VALID
CDB$ROOT        Oracle XDK                                    XML                  VALID
CDB$ROOT        Oracle XML Database                           XDB                  VALID
CDB$ROOT        Spatial                                       SDO                  VALID
ORA12201PDB     Oracle Database Catalog Views                 CATALOG              VALID
ORA12201PDB     Oracle Database Packages and Types            CATPROC              VALID
ORA12201PDB     Oracle Real Application Clusters              RAC                  OPTION OFF
ORA12201PDB     Oracle Workspace Manager                      OWM                  VALID
ORA12201PDB     Oracle XML Database                           XDB                  VALID

19行が選択されました。

PDBから実行した結果は以下

  • PDBの結果のみ表示される
SQL> -- PDB に接続
alter session set container = ora12201pdb;SQL> 

セッションが変更されました。

SQL> -- 現在接続しているコンテナ名を表示
show con_name;SQL> 

CON_NAME
------------------------------
ORA12201PDB
SQL> -- コンポーネント一覧表示
set lines 140 pages 1000
col con$name  format a15  
col comp_name format a45
col comp_id   format a20
col status    format a15

select
  con$name,
  comp_name,
  comp_id,
  status
from cdb_registry
order by 1,2;SQL> SQL> SQL> SQL> SQL> SQL> SQL>   2    3    4    5    6    7  

CON$NAME        COMP_NAME                                     COMP_ID              STATUS
--------------- --------------------------------------------- -------------------- ---------------
ORA12201PDB     Oracle Database Catalog Views                 CATALOG              VALID
ORA12201PDB     Oracle Database Packages and Types            CATPROC              VALID
ORA12201PDB     Oracle Real Application Clusters              RAC                  OPTION OFF
ORA12201PDB     Oracle Workspace Manager                      OWM                  VALID
ORA12201PDB     Oracle XML Database                           XDB                  VALID

SQL>