本記事は、前回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の作成方法について学びました。
次回からはアプリケーション側からの接続に際しての設定について学んでいきます。