[Oracle Cloud] PDBにユーザーを作成して接続する手順まとめ

# はじめに

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
```