はじめに
Oracle Cloud で提供されている Database Cloud Service では、PDB(Pluggable Database) が利用可能です。Default で作成される PDB にユーザーを作成して、接続する手順を備忘録で残しておきます。
PDB に ユーザーの作成
アプリケーションから接続するために、PDB にユーザを作成します。
DBCS へ SSH ログインしたのちに、oracle ユーザーへスイッチします。
[opc@oradb19ee ~]$ sudo su - oracle
Last login: Tue Aug 4 21:54:39 UTC 2020
[oracle@oradb19ee ~]$
SQL PLUS を起動して、CDB(Container Database) へ接続します
sqlplus / as sysdba
接続先が CDB か確認します
SQL> show con_name;
CON_NAME
------------------------------
CDB$ROOT
PDB の一覧を確認します
SQL> show pdbs;
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 READ WRITE NO
SQL>
PDB (PDB01) へ接続します
alter session set container=PDB01;
PDB に接続されているか確認します
SQL> show con_name;
CON_NAME
------------------------------
PDB01
SQL>
以下コマンドを実行して、PDB 上で、ユーザーの作成・権限の付与・表領域の上限解除を行います
また、プロファイルを変更してパスワードの有効期限を無制限にします。
CREATE USER sugi IDENTIFIED BY Sug1_Passw0rd_dayo;
GRANT CONNECT, RESOURCE TO sugi;
ALTER USER sugi quota unlimited on USERS;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
SQL*PLUS を終了します。
exit
PDB の Service Name 確認
lsnrctl status で、DBCS に Default で作成されているサービス名を表示します
[oracle@oradb19ee ~]$ lsnrctl status
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 04-AUG-2020 22:16:06
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 04-AUG-2020 08:57:59
Uptime 0 days 13 hr. 18 min. 6 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/19.0.0.0/grid/network/admin/listener.ora
Listener Log File /u01/app/grid/diag/tnslsnr/oradb19ee/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.0.0.71)(PORT=1521)))
Services Summary...
Service "+APX" has 1 instance(s).
Instance "+APX1", status READY, has 1 handler(s) for this service...
Service "+ASM" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_DATA" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "+ASM_RECO" has 1 instance(s).
Instance "+ASM1", status READY, has 1 handler(s) for this service...
Service "a32a6f1b654541a5e053c105f40a57f6.pubsubnet01.vcn.oraclevcn.com" has 1 instance(s).
Instance "oradb19", status READY, has 2 handler(s) for this service...
Service "ac0abef76ce358cee0534700000a887a.pubsubnet01.vcn.oraclevcn.com" has 1 instance(s).
Instance "oradb19", status READY, has 2 handler(s) for this service...
Service "oradb19XDB.pubsubnet01.vcn.oraclevcn.com" has 1 instance(s).
Instance "oradb19", status READY, has 1 handler(s) for this service...
Service "oradb19_nrt1r2.pubsubnet01.vcn.oraclevcn.com" has 1 instance(s).
Instance "oradb19", status READY, has 2 handler(s) for this service...
Service "pdb01.pubsubnet01.vcn.oraclevcn.com" has 1 instance(s).
Instance "oradb19", status READY, has 2 handler(s) for this service...
The command completed successfully
[oracle@oradb19ee ~]$
表示結果の中で一番下に pdb01.pubsubnet01.vcn.oraclevcn.com
と表示されております。自分は、DBCS を作成する際に pdb の名前を odb01
と指定しており、pdb名でサービスが作成されています。
接続
Oracle Client 側から、Oracle Database の PDB で作成した sugi
ユーザーに接続をしていきます。まずは、Client 側で tnsnames.ora を作成します。
vim $ORACLE_HOME/network/admin/tnsnames.ora
編集例
pdb01=
(DESCRIPTION=
(LOAD_BALANCE=off)
(ADDRESS=
(PROTOCOL=tcp)
(HOST=<oracle db ip address>)
(PORT=1521)
)
(CONNECT_DATA=
(SERVICE_NAME=pdb01.pubsubnet01.vcn.oraclevcn.com)
(FAILOVER_MODE=
(TYPE=select)
(METHOD=basic)
)
)
)
tnsping で正常に接続できるか確認できます。一番下に OK と表示されていれば大丈夫です。
[oracle@oradb19ee ~]$ tnsping pdb01
TNS Ping Utility for Linux: Version 19.0.0.0.0 - Production on 04-AUG-2020 22:29:46
Copyright (c) 1997, 2019, Oracle. All rights reserved.
Used parameter files:
/u01/app/oracle/product/19.0.0.0/dbhome_1/network/admin/sqlnet.ora
Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION= (LOAD_BALANCE=off) (ADDRESS= (PROTOCOL=tcp) (HOST=<oracle db ip address>) (PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=pdb01.pubsubnet01.vcn.oraclevcn.com) (FAILOVER_MODE= (TYPE=select) (METHOD=basic))))
OK (0 msec)
[oracle@oradb19ee ~]$
接続するときは次の形式です。ユーザー名/パスワード@tnsname を指定します。
sqlplus sugi/Sug1_Passw0rd_dayo@pdb01