きさま!見ているなッ!!

【Oracle】マルチテナント・コンテナ・データベース(CDB)を作成する

  • 2019-08-31
  • 2019-09-05
  • Oracle

Oracle Database 12c 以降では、マルチテナント・アーキテクチャが推奨されています。マルチテナント・アーキテクチャを使用すると、マルチテナント・コンテナ・データベース(CDB)に複数のプラガブル・データベース(PDB)を含めることができます。

単一インスタンスで複数の PDB を一元管理できるようになるので、リソースの効率的な使用や管理コストの削減に繋がります。

マルチテナント・アーキテクチャで作成されるコンポーネントは、下記の通りです。

コンポーネント名タイプ説明
CDB$ROOTルートOracleのメタデータおよび共通ユーザーが格納されている。CDBに1つのみ存在する。
PDB$SEEDCDBシードPDBの作成時に使用できるテンプレート。CDBに1つのみ存在する。
PDBPDBユーザーが作成するデータベース。プラガブル・データベース。複数作成可能。

今回は、共通部分の CDB をコマンドラインで作成してみましょう。

環境

環境情報です。

OSRDBMS
CentOS 7.6Oracle Database 12c R2 Enterprise Edition

今回作成するデータベースの情報です。

データベースタイプ単一インスタンス
アーキテクチャマルチテナント
データベース記憶域ローカル・ストレージ
高速リカバリ領域ローカル・ストレージ

今回作成する CDB コンポーネントの情報です。

コンポーネント名タイプ説明
CDB$ROOTルートOracleのメタデータおよび共通ユーザーが格納されている。CDBに1つのみ存在する。
PDB$SEEDCDBシードPDBの作成時に使用できるテンプレート。CDBに1つのみ存在する。

Oracle の環境がない方は、こちらの記事をどうぞ。

Oracle Net Servicesの構成

環境変数の設定

$ export ORACLE_BASE=/u01/app/oracle
$ export ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
$ export ORACLE_HOSTNAME=testdb.oracle12c.jp
$ export ORACLE_SID=cdb

必要な環境変数を設定します。

環境変数設定値説明
ORACLE_BASE/u01/app/oracleOracleディレクトリ・ツリーのルート
ORACLE_HOME/u01/app/oracle/product/12.2.0/dbhome_1Oracleソフトウェアのインストール先
ORACLE_HOSTNAMEtestdb.oracle12c.jpPCのホスト名
ORACLE_SIDcdbインスタンス識別子(SID)

listener.ora

LISTENER=
  (DESCRIPTION=
    (ADDRESS_LIST=
      (ADDRESS=(PROTOCOL=tcp)(HOST=testdb.oracle12c.jp)(PORT=1521))
    )
  )

Oracle Net Listener 構成ファイルを作成します。デフォルトリスナー(LISTENER)を構成し、クライアント接続要求をサポートします。

格納先ディレクトリファイル名内容
$ORACLE_HOME/network/adminlistener.ora上記参照
項目設定値説明
リスナー名LISTENERデフォルトのリスナー名
ホストtestdb.oracle12c.jpPCのホスト名 or IPアドレス
プロトコルtcpTCP/IP
ポート1521デフォルトのポート番号
$ lsnrctl start

リスナーを起動しておきます。

tnsnames.ora

cdb=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=tcp)(HOST=testdb.oracle12c.jp)(PORT=1521)
    )
    (CONNECT_DATA=
      (SERVICE_NAME=cdb.oracle12c.jp)
    )
  )

listener_cdb=
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=testdb.oracle12c.jp)(PORT=1521))
  )

ネット・サービス名で OracleDB に接続できるように、ローカル・ネーミング・メソッドを構成します。

格納先ディレクトリファイル名内容
$ORACLE_HOME/network/admintnsnames.ora上記参照
項目設定値説明
ネット・サービス名cdbOracleDBに接続する際の接続識別子
ホストtestdb.oracle12c.jpLISTENERの設定値
プロトコルtcpLISTENERの設定値
ポート1521LISTENERの設定値
サービス名cdb.oracle12c.jpOracleDBのSERVICE_NAMES

OracleDB がローカル・リスナーを識別するように、動的サービス登録を構成します。

項目設定値説明
ローカル・リスナーの別名listener_cdbOracleDBの初期化パラメータ・ファイルのLOCAL_LISTENERに設定する
ホストtestdb.oracle12c.jpLISTENERの設定値
プロトコルtcpLISTENERの設定値
ポート1521LISTENERの設定値

データベース作成

パスワード・ファイル作成

$ orapwd FILE=$ORACLE_HOME/dbs/orapwcdb

Enter password for SYS: 
$ 

データベース管理者の認証方式でパスワード・ファイル認証が使用できるように、パスワード・ファイルを作成します。

格納先ディレクトリファイル名
$ORACLE_HOME/dbsorapwcdb

初期化パラメータ・ファイル作成

db_name='cdb'
sga_target=3G
pga_aggregate_target=1G
processes=150
db_block_size=8192
db_domain='oracle12c.jp'
db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'
db_recovery_file_dest_size=10G
diagnostic_dest='/u01/app/oracle'
dispatchers='(PROTOCOL=TCP)'
open_cursors=300
remote_login_passwordfile='EXCLUSIVE'
undo_tablespace='UNDOTBS1'
control_files=(/u01/app/oracle/oradata/cdb/control01.ctl
, /u01/app/oracle/oradata/cdb/control02.ctl
)
compatible='12.0.0'
local_listener='listener_cdb'
enable_pluggable_database=true

Oracle インスタンス起動時に読み込まれる「初期化パラメータ・ファイル」を作成します。 CDB を作成する際には、「enable_pluggable_database」を「true」に設定する必要があります。他のパラメータ・設定値は、環境に合わせて追加・修正してください。

格納先ディレクトリファイル名内容
$ORACLE_HOME/dbsinitcdb.ora上記参照
パラメータ設定値説明
db_namecdbデータベース識別子(必須):最大8文字
sga_target3GSGAのサイズ:自動共有メモリー管理
pga_aggregate_target1GPGAのサイズ:自動共有メモリー管理
processes150同時接続プロセスの最大数
db_block_size8192ブロック・サイズ(バイト)
db_domainoracle12c.jp分散システムの場合に設定
db_recovery_file_dest/u01/app/oracle/flash_recovery_area高速リカバリ領域の場所
db_recovery_file_dest_size10G高速リカバリ領域のサイズ
diagnostic_dest/u01/app/oracle自動診断リポジトリ(ADR)の場所
dispatchers(PROTOCOL=TCP)共有サーバー・アーキテクチャの構成
open_cursors3001つのセッションで同時オープンできるカーソルの最大数
remote_login_passwordfileEXCLUSIVEOracleがパスワード・ファイルを確認するかどうかの設定
undo_tablespaceUNDOTBS1インスタンス起動時に使用するUNDO表領域
control_files/u01/app/oracle/oradata/cdb/control01.ctl, /u01/app/oracle/oradata/cdb/control02.ctl制御ファイル名
compatible12.0.0Oracleのバージョン番号
local_listenerlistener_cdbローカル・リスナーのネットワーク名
enable_pluggable_databasetrueCDB作成する際は、trueに設定(デフォルトは、false)

ディレクトリ作成

$ mkdir -p /u01/app/oracle/oradata/cdb
$ mkdir -p /u01/app/oracle/oradata/pdbseed
$ mkdir -p /u01/app/oracle/flash_recovery_area

初期化パラメータ・ファイルに設定したディレクトリと CDB シード用のディレクトリを作成しておきます。

サーバー・パラメータ・ファイル作成

$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on 金 8月 30 04:05:23 2019

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

アイドル・インスタンスに接続しました。

SQL> CREATE SPFILE FROM PFILE;

File created.

SQL> 

SYSDBA 管理権限でインスタンスに接続します。

OracleDB からの初期化パラメータ変更を永続的に反映させるように、サーバー・パラメータ・ファイルを作成します。

データベース(CDB)作成

SQL> STARTUP NOMOUNT
ORACLE instance started.

Total System Global Area 3221225472 bytes
Fixed Size		    8797928 bytes
Variable Size		  738197784 bytes
Database Buffers	 2466250752 bytes
Redo Buffers		    7979008 bytes
SQL> 

インスタンスをマウントせずに起動します。この時点で初期化パラメータ・ファイルが読み込まれます。

SQL> CREATE DATABASE cdb
   USER SYS IDENTIFIED BY oracle
   USER SYSTEM IDENTIFIED BY oracle
   LOGFILE GROUP 1 ('/u01/app/oracle/oradata/cdb/redo01.log') SIZE 100M BLOCKSIZE 512,
           GROUP 2 ('/u01/app/oracle/oradata/cdb/redo02.log') SIZE 100M BLOCKSIZE 512,
           GROUP 3 ('/u01/app/oracle/oradata/cdb/redo03.log') SIZE 100M BLOCKSIZE 512
   MAXLOGHISTORY 1
   MAXLOGFILES 16
   MAXLOGMEMBERS 3
   MAXDATAFILES 1024
   CHARACTER SET AL32UTF8
   NATIONAL CHARACTER SET AL16UTF16
   EXTENT MANAGEMENT LOCAL
   DATAFILE '/u01/app/oracle/oradata/cdb/system01.dbf'
     SIZE 500M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
   SYSAUX DATAFILE '/u01/app/oracle/oradata/cdb/sysaux01.dbf'
     SIZE 300M REUSE AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
   DEFAULT TABLESPACE USERS
      DATAFILE '/u01/app/oracle/oradata/cdb/users01.dbf'
      SIZE 500M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
   DEFAULT TEMPORARY TABLESPACE TEMPTS1
      TEMPFILE '/u01/app/oracle/oradata/cdb/temp01.dbf'
      SIZE 50M REUSE AUTOEXTEND ON NEXT 640K MAXSIZE UNLIMITED
   UNDO TABLESPACE UNDOTBS1
      DATAFILE '/u01/app/oracle/oradata/cdb/undotbs01.dbf'
      SIZE 300M REUSE AUTOEXTEND ON NEXT 5120K MAXSIZE UNLIMITED
  ENABLE PLUGGABLE DATABASE
    SEED
    FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/cdb/',
                         '/u01/app/oracle/oradata/pdbseed/')
    SYSTEM DATAFILES SIZE 200M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED
    SYSAUX DATAFILES SIZE 100M
    LOCAL UNDO ON
   USER_DATA TABLESPACE USERTBS
      DATAFILE '/u01/app/oracle/oradata/pdbseed/usertbs01.dbf'
      SIZE 300M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED
   ;

CREATE DATABASE 文を発行し、データベース「cdb」を作成します。 ENABLE PLUGGABLE DATABASE 句を設定することで、ルートおよび CDB シードを含む CDB が作成されます。各項目の設定値は、環境に合わせて変更してください。

データ・ディクショナリ・ビュー作成

SQL> @?/rdbms/admin/catcdb.sql

SYSDBA 管理権限で上記スクリプトを実行し、必要なデータ・ディクショナリ・ビューや PL/SQL パッケージなどを作成します。

※エラーが発生する場合は、「補足」を参照してください。

SQL> host perl -I &&rdbms_admin &&rdbms_admin_catcdb --logDirectory &&1 --logFilename &&2
1に値を入力してください: /home/oracle/tmp/create_cdb_20190830
2に値を入力してください: create_cdb.log

途中で入力を求められるので、下記の情報を入力します。

1に値を入力してくださいログ・ファイル・ディレクトリ
2に値を入力してくださいログ・ファイル名
Enter new password for SYS: oracle
Enter new password for SYSTEM: oracle
Enter temporary tablespace name: TEMPTS1

パスワードと一時表領域名の入力も求められるので、それぞれ入力します。

データベース確認

V$DATABASE

SQL> set lin 1000
SQL> col open_mode for a15
SQL> SELECT name, open_mode, cdb FROM v$database;

NAME       OPEN_MODE       CDB
---------- --------------- ---------
CDB        READ WRITE      YES

SQL> 

「CDB」が「YES」なので、作成したデータベースが CDB であることが確認できます。

V$CONTAINERS

SQL> set lin 1000
SQL> col name for a10
SQL> SELECT name, con_id FROM v$containers ORDER BY con_id;

NAME       CON_ID
---------- ----------
CDB$ROOT        1
PDB$SEED        2

SQL> 

ルートと CDB シードのコンポーネントが作成されていることが確認できます。

V$DATAFILE

SQL> set lin 1000
SQL> col enabled for a10
SQL> col name for a50
SQL> SELECT file#, status, enabled, bytes, name, con_id
  2  FROM v$datafile
  3  ORDER BY con_id, file#
  4  ;

     FILE# STATUS     ENABLED    BYTES      NAME                                               CON_ID
---------- ---------- ---------- ---------- -------------------------------------------------- ----------
         1 SYSTEM     READ WRITE  524288000 /u01/app/oracle/oradata/cdb/system01.dbf           1
         3 ONLINE     READ WRITE  314572800 /u01/app/oracle/oradata/cdb/sysaux01.dbf           1
         5 ONLINE     READ WRITE  325058560 /u01/app/oracle/oradata/cdb/undotbs01.dbf          1
         7 ONLINE     READ WRITE  524288000 /u01/app/oracle/oradata/cdb/users01.dbf            1
         2 SYSTEM     READ WRITE  209715200 /u01/app/oracle/oradata/pdbseed/system01.dbf       2
         4 ONLINE     READ WRITE  157286400 /u01/app/oracle/oradata/pdbseed/sysaux01.dbf       2
         6 ONLINE     READ WRITE  230686720 /u01/app/oracle/oradata/pdbseed/undotbs01.dbf      2
         8 ONLINE     READ WRITE  524288000 /u01/app/oracle/oradata/pdbseed/users01.dbf        2
         9 ONLINE     READ WRITE  314572800 /u01/app/oracle/oradata/pdbseed/usertbs01.dbf      2

9行が選択されました。

SQL> 

各コンポーネントのデータ・ファイル情報が確認できます。

CDB_TABLESPACES

SQL> set lin 1000
SQL> set null @
SQL> col tablespace_name for a20
SQL> col status for a10
SQL> col contents for a10
SQL> SELECT tablespace_name, block_size, initial_extent, next_extent, min_extents, max_extents, max_size, status, contents
  2  FROM cdb_tablespaces
  3  ORDER BY tablespace_name
  4  ;

TABLESPACE_NAME      BLOCK_SIZE INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS MAX_SIZE   STATUS     CONTENTS
-------------------- ---------- -------------- ----------- ----------- ----------- ---------- ---------- ----------
SYSAUX                     8192          65536 @                     1  2147483645 2147483645 ONLINE     PERMANENT
SYSTEM                     8192          65536 @                     1  2147483645 2147483645 ONLINE     PERMANENT
TEMPTS1                    8192        1048576     1048576           1 @           2147483645 ONLINE     TEMPORARY
UNDOTBS1                   8192          65536 @                     1  2147483645 2147483645 ONLINE     UNDO
USERS                      8192          65536 @                     1  2147483645 2147483645 ONLINE     PERMANENT

SQL> 

ルートの表領域情報が確認できます。

CDB_TEMP_FILES

SQL> set lin 1000
SQL> col con_id for 999
SQL> col file_id for 9999
SQL> col tablespace_name for a15
SQL> col file_name for a45
SQL> col maxbytes for 999999999999
SQL> SELECT con_id, file_id, tablespace_name, file_name, bytes, status, maxbytes, user_bytes
  2  FROM cdb_temp_files
  3  ORDER BY con_id
  4  ;

CON_ID FILE_ID TABLESPACE_NAME FILE_NAME                                     BYTES      STATUS     MAXBYTES      USER_BYTES
------ ------- --------------- --------------------------------------------- ---------- ---------- ------------- ----------
     1       1 TEMPTS1         /u01/app/oracle/oradata/cdb/temp01.dbf          52428800 ONLINE       34359721984   51380224

SQL> 

ルートの一時ファイル情報が確認できます。

補足

catcdb.sqlのエラー対応

SQL> @?/rdbms/admin/catcdb.sql

上記のスクリプトを実行し、 CDB 用のデータ・ディクショナリ・ビューなどを作成する際に、エラーが発生する場合があります。

SQL> host perl -I &&rdbms_admin &&rdbms_admin_catcdb --logDirectory &&1 --logFilename &&2
1に値を入力してください: /home/oracle/tmp/create_cdb_20190830
2に値を入力してください: create_cdb.log
Can't locate util.pm in @INC (@INC contains: /u01/app/oracle/product/12.2.0/dbhome_1/rdbms/admin /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) 
at /u01/app/oracle/product/12.2.0/dbhome_1/rdbms/admin/catcdb.pl line 35.
BEGIN failed--compilation aborted at /u01/app/oracle/product/12.2.0/dbhome_1/rdbms/admin/catcdb.pl line 35.
SQL>

上記のエラーが発生した場合は、下記の対応で解決する可能性があります。

  • catcdb.pl の修正
  • catcdb.sql を実行する際のディレクトリ変更

catcdb.plの修正

$ vi /u01/app/oracle/product/12.2.0/dbhome_1/rdbms/admin/catcdb.pl

catcdb.pl の 35 行目を下記の通り修正します。

use util qw(trim, splitToArray);

use Util qw(trim, splitToArray);

catcdb.sqlを実行する際のディレクトリ変更

$ find /u01/app/oracle/product/12.2.0/dbhome_1 -iname util.pm
/u01/app/oracle/product/12.2.0/dbhome_1/perl/lib/5.22.0/x86_64-linux-thread-multi/Hash/Util.pm
/u01/app/oracle/product/12.2.0/dbhome_1/perl/lib/5.22.0/x86_64-linux-thread-multi/List/Util.pm
/u01/app/oracle/product/12.2.0/dbhome_1/perl/lib/5.22.0/x86_64-linux-thread-multi/Scalar/Util.pm
/u01/app/oracle/product/12.2.0/dbhome_1/perl/lib/5.22.0/x86_64-linux-thread-multi/Sub/Util.pm
/u01/app/oracle/product/12.2.0/dbhome_1/perl/lib/site_perl/5.22.0/HTTP/Headers/Util.pm
$ 

$ORACLE_HOME 配下で Util.pm が格納されているディレクトリを検索します。

$ cd /u01/app/oracle/product/12.2.0/dbhome_1/perl/lib/5.22.0/x86_64-linux-thread-multi/Scalar

本環境では、上記に移動して catcdb.sql を実行することで解決しました。他のエラーが発生する場合もあるようですので、その場合は、別途対応が必要です。

$ sqlplus / as sysdba

SQL*Plus: Release 12.2.0.1.0 Production on 金 8月 30 04:11:15 2019

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



Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
に接続されました。
SQL> 
SQL> @?/rdbms/admin/catcdb.sql
SQL> 
SQL> Rem The script relies on the caller to have connected to the DB
SQL> 
SQL> Rem This script invokes catcdb.pl that does all the work, so we just need to
SQL> Rem construct strings for $ORACLE_HOME/rdbms/admin and
SQL> Rem $ORACLE_HOME/rdbms/admin/catcdb.pl
SQL> 
SQL> Rem $ORACLE_HOME
SQL> column oracle_home new_value oracle_home noprint
SQL> select sys_context('userenv', 'oracle_home') as oracle_home from dual;




SQL> 
SQL> Rem OS-dependent slash
SQL> column slash new_value slash noprint
SQL> select sys_context('userenv', 'platform_slash') as slash from dual;




SQL> 
SQL> Rem $ORACLE_HOME/rdbms/admin
SQL> column rdbms_admin new_value rdbms_admin noprint
SQL> select '&&oracle_home'||'&&slash'||'rdbms'||'&&slash'||'admin' as rdbms_admin from dual;
旧   1: select '&&oracle_home'||'&&slash'||'rdbms'||'&&slash'||'admin' as rdbms_admin from dual
新   1: select '/u01/app/oracle/product/12.2.0/dbhome_1'||'/'||'rdbms'||'/'||'admin' as rdbms_admin from dual




SQL> 
SQL> Rem $ORACLE_HOME/rdbms/admin/catcdb.pl
SQL> column rdbms_admin_catcdb new_value rdbms_admin_catcdb noprint
SQL> select '&&rdbms_admin'||'&&slash'||'catcdb.pl' as rdbms_admin_catcdb from dual;
旧   1: select '&&rdbms_admin'||'&&slash'||'catcdb.pl' as rdbms_admin_catcdb from dual
新   1: select '/u01/app/oracle/product/12.2.0/dbhome_1/rdbms/admin'||'/'||'catcdb.pl' as rdbms_admin_catcdb from dual




SQL> 
SQL> host perl -I &&rdbms_admin &&rdbms_admin_catcdb --logDirectory &&1 --logFilename &&2
1に値を入力してください: /home/oracle/tmp/create_cdb_20190830
2に値を入力してください: create_cdb.log
Enter new password for SYS: oracle
Enter new password for SYSTEM: oracle
Enter temporary tablespace name: TEMPTS1
No options to container mapping specified, no options will be installed in any containers
catcon: ALL catcon-related output will be written to [/home/oracle/tmp/create_cdb_20190830/catalog_catcon_4726.lst]
catcon: See [/home/oracle/tmp/create_cdb_20190830/catalog*.log] files for output generated by scripts
catcon: See [/home/oracle/tmp/create_cdb_20190830/catalog_*.lst] files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to [/home/oracle/tmp/create_cdb_20190830/catproc_catcon_5018.lst]
catcon: See [/home/oracle/tmp/create_cdb_20190830/catproc*.log] files for output generated by scripts
catcon: See [/home/oracle/tmp/create_cdb_20190830/catproc_*.lst] files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to [/home/oracle/tmp/create_cdb_20190830/catoctk_catcon_7230.lst]
catcon: See [/home/oracle/tmp/create_cdb_20190830/catoctk*.log] files for output generated by scripts
catcon: See [/home/oracle/tmp/create_cdb_20190830/catoctk_*.lst] files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to [/home/oracle/tmp/create_cdb_20190830/owminst_catcon_7321.lst]
catcon: See [/home/oracle/tmp/create_cdb_20190830/owminst*.log] files for output generated by scripts
catcon: See [/home/oracle/tmp/create_cdb_20190830/owminst_*.lst] files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to [/home/oracle/tmp/create_cdb_20190830/pupbld_catcon_7769.lst]
catcon: See [/home/oracle/tmp/create_cdb_20190830/pupbld*.log] files for output generated by scripts
catcon: See [/home/oracle/tmp/create_cdb_20190830/pupbld_*.lst] files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to [/home/oracle/tmp/create_cdb_20190830/pupbld_catcon_7856.lst]
catcon: See [/home/oracle/tmp/create_cdb_20190830/pupbld*.log] files for output generated by scripts
catcon: See [/home/oracle/tmp/create_cdb_20190830/pupbld_*.lst] files for spool files, if any
validate_script_path: sqlplus script /u01/app/oracle/product/12.2.0/dbhome_1/sqlplus/admin/help/hlpbld does not exist or is unreadable
catconExec: empty Path returned by validate_script_path for 
    SrcDir = /u01/app/oracle/product/12.2.0/dbhome_1/sqlplus/admin/help, FileName = hlpbld
catcon.pl: Unexpected error encountered in catconExec; exiting
exec_DB_script: /home/oracle/tmp/create_cdb_20190830/pupbld_catcon_7856_exec_DB_script.done did not need to be deleted before running a script
exec_DB_script: opened Reader and Writer
exec_DB_script: connected
exec_DB_script: executed set echo on

exec_DB_script: executed @@/home/oracle/tmp/create_cdb_20190830/pupbld_catcon_kill_sess_7856_ALL.sql

exec_DB_script: sent 
host sqlplus -v > /home/oracle/tmp/create_cdb_20190830/pupbld_catcon_7856_exec_DB_script.done to Writer
exec_DB_script: sent -exit- to Writer
exec_DB_script: closed Writer
exec_DB_script: marker was undefined; read and ignore output, if any
exec_DB_script: finished reading and ignoring output
exec_DB_script: waiting for child process to exit
exec_DB_script: child process exited
sureunlink: unlink(/home/oracle/tmp/create_cdb_20190830/pupbld_catcon_7856_exec_DB_script.done) succeeded after 1 attempt(s)
sureunlink: verify that the file really no longer exists
sureunlink: confirmed that /home/oracle/tmp/create_cdb_20190830/pupbld_catcon_7856_exec_DB_script.done no longer exists after 1 attempts
exec_DB_script: deleted /home/oracle/tmp/create_cdb_20190830/pupbld_catcon_7856_exec_DB_script.done after running a script
exec_DB_script: closed Reader
exec_DB_script: waitpid returned
kill_sqlplus_sessions: output produced in exec_DB_script [
    
    SQL*Plus: Release 12.2.0.1.0 Production on 金 8月 30 04:39:31 2019
    
    Copyright (c) 1982, 2016, Oracle.  All rights reserved.
    
    SQL> 接続されました。
    SQL> SQL> SQL> 
    SQL> ALTER SYSTEM KILL SESSION '201,30892' force timeout 0 -- process 7893
      2  /
    
    システムが変更されました。
    
    SQL> 
    SQL> SQL> 
    SQL> Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Productionとの接続が切断されました。
  ] end of output produced in exec_DB_script
catcon: ALL catcon-related output will be written to [/home/oracle/tmp/create_cdb_20190830/catclust_catcon_7908.lst]
catcon: See [/home/oracle/tmp/create_cdb_20190830/catclust*.log] files for output generated by scripts
catcon: See [/home/oracle/tmp/create_cdb_20190830/catclust_*.lst] files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to [/home/oracle/tmp/create_cdb_20190830/catfinal_catcon_8301.lst]
catcon: See [/home/oracle/tmp/create_cdb_20190830/catfinal*.log] files for output generated by scripts
catcon: See [/home/oracle/tmp/create_cdb_20190830/catfinal_*.lst] files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to [/home/oracle/tmp/create_cdb_20190830/catbundleapply_catcon_8389.lst]
catcon: See [/home/oracle/tmp/create_cdb_20190830/catbundleapply*.log] files for output generated by scripts
catcon: See [/home/oracle/tmp/create_cdb_20190830/catbundleapply_*.lst] files for spool files, if any
catcon.pl: completed successfully
catcon: ALL catcon-related output will be written to [/home/oracle/tmp/create_cdb_20190830/utlrp_catcon_8477.lst]
catcon: See [/home/oracle/tmp/create_cdb_20190830/utlrp*.log] files for output generated by scripts
catcon: See [/home/oracle/tmp/create_cdb_20190830/utlrp_*.lst] files for spool files, if any
catcon.pl: completed successfully

SQL> 

参考までに catcdb.sql の実行結果です。

まとめ

今回は、マルチテナント・アーキテクチャの共通部分であるマルチテナント・コンテナ・データベース(CDB)を作成しました。いくつか CDB 用の設定項目がありましたが、手順は、非 CDB 作成時とほぼほぼ同じですので、難なく作成できたのではないでしょうか。

CDB には、複数のプラガブル・データベース(PDB)を含めることができ、一元管理できるので、リソースの効率的な使用や管理コストの削減などが期待できます。

【Oracle】データベース(CDB)を作成する
最新情報をチェックしよう!