OCI Database(DBaaS) の PDB に sqlplus で接続してみる。(Oracle Cloud Infrastructure)
表題の通り、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)接続編に続く予定……彡(゚)(゚)