表題の通り、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.pdfOracle 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コンソールの下記から簡易接続(ホスト名:ポート番号/サービス名)の接続文字列として確認可能です。
下記のホスト名/ポート番号/管理サービスに接続するものとします。
※これらのホスト名/管理サービス(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)接続編に続く予定……彡(゚)(゚)