LoginSignup
7
7

More than 5 years have passed since last update.

OCI Database(DBaaS) の PDB に sqlplus で接続してみる。(Oracle Cloud Infrastructure)

Last updated at Posted at 2019-02-19

表題の通り、OCI(Oracle Cloud Infrastructure) Database(DBaaS) の PDB に
sqlplus で接続してみます。下記の構成で試すやで彡(゚)(゚)

Compute(Oracle Client, sqlplus) ⇒ (Private Subnet) ⇒ DBaaS(PDB)

1. PDB, MTA(Multitenant Architecuture) とは?

PDB, MTA(multitenant architecture) は Oracle Database 12cR1以降の機能で、
一つの管理用DB(CDB)上に複数のコンテナ・データベース(PDB)を作成できる機能なんやで彡(゚)(゚)

詳細やメリットはマニュアルや公開資料を参照してね。

Oracle Database 12c マルチテナント・アーキテクチャとプラガブル・データベース
https://www.oracle.com/technetwork/jp/ondemand/branch/dosanko-3rd-mta-2844750-ja.pdf

Oracle Databaseデータベース概要, 18c
マルチテナント・アーキテクチャ
https://docs.oracle.com/cd/E96517_01/cncpt/introduction-to-oracle-database.html#GUID-ED16D715-761B-4F8B-8503-BC058E216D2F

2. OCI Database(DBaaS)の作成

ここはマニュアルや他の方のブログを見ませう彡(゚)(゚)

クラウドでOracle Databaseを使う - Oracle Cloud Infrastructureを使ってみよう(その7)
https://community.oracle.com/docs/DOC-1019568

データベース・デプロイメントの作成
https://docs.oracle.com/cd/E83857_01/paas/database-dbaas-cloud/csdbi/create-db-deployment-overview.html

3. DBaaSのIPアドレス/管理サービス(CDB)名の参照とポート開放

ここは下記ブログを参照やで彡(゚)(゚)

[Oracle Cloud] SQL DeveloperでDBaaSに接続してみた
http://itedge.stars.ne.jp/oracle-cloud-dbaas_sql-developer/

OCIコンソールの下記から簡易接続(ホスト名:ポート番号/サービス名)の接続文字列として確認可能です。
Admin_Service.jpg

下記のホスト名/ポート番号/管理サービスに接続するものとします。
※これらのホスト名/管理サービス(CDB)名は架空のものです。

ホスト名(Private) :dbname.subnetname.vcnname.oraclevcn.com
ポート番号     :1521
管理サービス(CDB)名:dbname_cdb32r.subnetname.vcnname.oraclevcn.com
管理サービス(CDB)への接続文字列(簡易接続):dbname.subnetname.vcnname.oraclevcn.com:1521/dbname_cdb32r.subnetname.vcnname.oraclevcn.com

4. 管理サービス(CDB)への接続確認とPDB名(PDBサービス名)確認

Compute への Oracle Client のインストールは下記記事を参照彡(゚)(゚)

Oracle Cloud(OCI)のIaaSからDbaaSへSQLPlusで接続してみた
https://qiita.com/feifo/items/d21b7050d0d4799f5d47

Compute にインストールした Oracle Client の sqlplus から管理サービス(CDB)にSYSで接続してみます。
なおこの後は特に断りが無い限り、接続文字列は簡易接続(ホスト名:ポート番号/サービス名)です。

8.1 簡易接続ネーミング・メソッドの理解
https://docs.oracle.com/cd/E96517_01/netag/configuring-naming-methods.html#GUID-B0437826-43C1-49EC-A94D-B650B6A4A6EE

export ORACLE_HOME=/home/opc/app/opc/product/18.0.0/client_1
export LD_LIBRARY_PATH=${ORACLE_HOME}/lib
export TNS_ADMIN=${ORACLE_HOME}/network/admin
export PATH=${ORACLE_HOME}/bin:${PATH}

sqlplus /nolog
CONNECT SYS/xxxxxxxxxxxxxxx@dbname.subnetname.vcnname.oraclevcn.com:1521/dbname_cdb32r.subnetname.vcnname.oraclevcn.com AS SYSDBA
SHOW CON_NAME
SHOW PDBS

結果は以下の通り。CDB(CDB$ROOT)に接続できてるやね彡(゚)(゚)

SQL> CONNECT SYS
Connected.

SQL> SHOW CON_NAME

CON_NAME
------------------------------
CDB$ROOT

SQL> SHOW PDBS

    CON_ID CON_NAME   OPEN MODE  RESTRICTED
---------- ---------- ---------- ----------
         2 PDB$SEED   READ ONLY  NO
         3 AYSPDB2    READ WRITE NO ★これに接続する。
SQL>

上記のPDB名と管理サービス(CDB)名より、PDBサービス名は下記の通りとなります。

■管理サービス(CDB)名
dbname_cdb32r.subnetname.vcnname.oraclevcn.com
^^^^^^^^^^^^^

■PDBサービス名
ayspdb2.subnetname.vcnname.oraclevcn.com

なお DBaaS の OS にログイン可能な場合は、DBaaS OS の opcユーザーで接続して、
gridユーザーにsu後に lsnrctl statusコマンドを実行すれば、より確実にPDBサービス名を確認できます。

# DBaaS の OS に opcユーザーで接続
sudo su - grid
lsnrctl status

LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 19-FEB-2019 11:20:38

Copyright (c) 1991, 2017, Oracle.  All rights reserved.
:
Services Summary...
:
Service "dbname_cdb32r.subnetname.vcnname.oraclevcn.com" has 1 instance(s).
  Instance "dbname", status READY, has 2 handler(s) for this service...
Service "ayspdb2.subnetname.vcnname.oraclevcn.com" has 1 instance(s). ★このPDBサービスに接続する。
  Instance "dbname", status READY, has 2 handler(s) for this service...
:
The command completed successfully

5. PDBにSYSで接続してユーザー作成&権限付与

上記で確認したPDBサービスにSYSで接続して、PDBに一般ユーザーを作成&権限付与します。

sqlplus /nolog
CONNECT SYS/xxxxxxxxxxxxxxx@dbname.subnetname.vcnname.oraclevcn.com:1521/ayspdb2.subnetname.vcnname.oraclevcn.com AS SYSDBA
                                                                         ^^^^^^^ここが違う
SHOW CON_NAME
CREATE USER AYSHIBAT IDENTIFIED BY xxxxxxxxxxxxxxx
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
GRANT DBA TO AYSHIBAT;

結果は下記の通りです。

$ sqlplus /nolog

SQL*Plus: Release 18.0.0.0.0 - Production on Tue Feb 19 11:43:26 2019
Version 18.5.0.0.0

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

SQL> CONNECT SYS/xxxxxxxxxxxxxxx@dbname.subnetname.vcnname.oraclevcn.com:1521/ayspdb2.subnetname.vcnname.oraclevcn.com AS SYSDBA
Connected.
SQL> SHOW CON_NAME

CON_NAME
------------------------------
AYSPDB2
SQL> CREATE USER AYSHIBAT IDENTIFIED BY xxxxxxxxxxxxxxx
  2  DEFAULT TABLESPACE USERS
  3  TEMPORARY TABLESPACE TEMP;

User created.

SQL> GRANT DBA TO AYSHIBAT;

Grant succeeded.

6. PDBに作成した一般ユーザーで接続

PDBに作成した一般ユーザーで接続してみます。

sqlplus /nolog
CONNECT AYSHIBAT/xxxxxxxxxxxxxxx@dbname.subnetname.vcnname.oraclevcn.com:1521/ayspdb2.subnetname.vcnname.oraclevcn.com
SHOW CON_NAME

結果は下記の通りです。

sqlplus /nolog

SQL*Plus: Release 18.0.0.0.0 - Production on Tue Feb 19 11:47:58 2019
Version 18.5.0.0.0

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

SQL> CONNECT AYSHIBAT/xxxxxxxxxxxxxxx@dbname.subnetname.vcnname.oraclevcn.com:1521/ayspdb2.subnetname.vcnname.oraclevcn.com
Connected.
SQL> SHOW CON_NAME

CON_NAME
------------------------------
AYSPDB2

DBaaS の PDB に一般ユーザーで接続できたやで!彡(^)(^)

7. まとめ

上記 4. の PDB名(PDBサービス名)確認がひと手間ですやね!彡(゚)(゚)

管理サービス(CDB)名への接続文字列はコンソール画面に表示できてるんやから、
PDBへの接続文字列も同様にコンソール画面に表示して欲しいもんです(゚ε゚`)

なおこの記事は 生Java(JDBC Thin) to DBaaS接続編、
生Java(JDBC Thin) to Autonomous(ADW/ATP)接続編に続く予定……彡(゚)(゚)

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7