Engineering Note

プログラミングなどの技術的なメモ

Oracle Database 12c Release 2(12.2.0.1)のPDB作成 

oracle 12c

本記事は、前回CentOS7(もしくはRHEL7)にインストールしたOracle Database 12c Release 2(12.2.0.1.0)からPDBを作成するためのメモになります。

また前回同様にGUI環境が整っていない場合でも作成できるようにdbcaコマンドからレスポンスファイルを利用して作成をしていきます。

  

 

前回までの確認

前回ではLinux環境(CentOS7)にOracle Database 12c Release 2(12.2.0.1.0)をインストールしたところまでを行いました。

 

 

今回は続きとして、12cからの新機能であるPDB(プラガブルデータベース) を作成していきます。

それではサーバにログインをし、前回作成したoracleユーザに切り替えて作業を行います。

 

PDBの作成

レスポンスファイルの作成

サイレントモードで作成する際は、直接引数を指定することで作成は可能なのですが、今回のようなレスポンスファイルを作成した方が管理がしやすいのでこちらの方法を利用します。

レスポンスファイルの雛型は以下のディレクトリに存在するので、同ファイルをコピーして必要な個所を埋めていっても問題ありません。

それでは、レスポンスファイルを作成します。

 

 > cd /home/oracle
 > su oracle
 > source ~/.bash_profile
 > vi dbca.rsp
 ----------------------------------
 gdbName=orcl
 sid=orcl
 createAsContainerDatabase=true
 numberOfPDBs=1
 pdbName=pdb1
 templateName=General_Purpose.dbc
 characterSet=AL32UTF8
 sysPassword=pdb1
 systemPassword=pdb1
 pdbAdminPassword=pdb1
 emConfiguration=NONE
 databaseType=MULTIPURPOSE
 ----------------------------------

 

今回はCDBの中にPDBを1つ作成してみます。

 

PDBの作成

上記レスポンスファイルを作成したら、dbcaコマンドでPDBを作成します。

なお、メモリが少ない場合(1GBなど)は途中でエラーが発生する場合がありますので、2GB以上で割り当てたほうが良いです。

また、デフォルトではデータベース作成ディレクトリ(dataFileDestination)は$ORACLE_BASE/oradataになります。

 

 > dbca -silent -createDatabase -responseFile /home/oracle/dbca.rsp

 

少し時間がかかりますが、問題がなければ「100%完了」と表示され、無事データベースが作成されます。

 

データベースへ接続

データベースが作成されたら、sqlplusで作成したデータベースに接続してみます。

 

 > sqlplus sys/oracle as sysdba
 SQL> show con_name

 CON_NAME
 ------------------------------
 CDB$ROOT
 
 SQL> alter session set container=pdb1;

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

 SQL> show con_name

 CON_NAME
 ------------------------------
 PDB1

 SQL> show pdbs;

     CON_ID CON_NAME                       OPEN MODE  RESTRICTED
 ---------- ------------------------------ ---------- ----------
          3 PDB1                           READ WRITE NO

 

上記でPDBが作成されたことが確認できました。

 

ユーザの作成

上記のPDBに接続した状態で、ユーザを作成します。

 

 SQL> CREATE USER ora01
      IDENTIFIED BY oracle;
      GRANT CONNECT,RESOURCE,UNLIMITED TABLESPACE TO ora01;
      GRANT CREATE SYNONYM TO ora01;
      GRANT CREATE ROLE TO ora01;
      GRANT CREATE VIEW TO ora01;

 SQL> select username from all_users;

 USERNAME
 --------------------------------------------------------------------------------
 .
 .
 ORA01

ユーザが作成されたことが確認できました。

 

tnsnames.oraの作成

外部から接続するにはリスナーと呼ばれるものを起動させる必要があります。

また、クライアントが目的のデータベースに接続できるようにtnsnames.oraという設定ファイルに必要な情報を記述する必要があります。

 

 > vi $ORACLE_HOME/network/admin/tnsnames.ora
 ----------------------------------
 pdb1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb1)
    )
  )
 ----------------------------------

 

リスナーの起動

上記のtnsnames.oraを作成したらリスナーを起動させます。

 

 > lsnrctl start

 

またtcpの1521番ポートも解放します。

 

 > firewall-cmd --add-port=1521/tcp --zone=public --permanent
 > firewall-cmd --reload

 

リスナー経由で接続

それでは上記で作成したユーザで、リスナー経由でデータベースに接続し、テスト用のテーブルを作成してみます。

 

 > sqlplus ora01/oracle@localhost:1521/pdb1
 SQL> CREATE TABLE test (
      id NUMBER GENERATED ALWAYS AS IDENTITY,
	  name VARCHAR2(10));
 SQL> select table_name from user_tables;

 TABLE_NAME
 --------------------------------------------------------------------------------
 TEST
 SQL> INSERT INTO test(name) VALUES ('hoge');

 1行が作成されました。

 SQL> select * from test;

         ID NAME
 ---------- ----------
          1 hoge

 

問題なくテーブルの作成とレコードに追加ができました。

 

最後に

今回はOracle Database 12c Release 2のPDBの作成方法について学びました。

次回からはアプリケーション側からの接続に際しての設定について学んでいきます。