Oracle12cへの接続方法(PDB)

少しはまったので記事にします。

Oracle12cをインストールしたのですが、
本の通りに、コマンドプロンプトで
sqlplus system/oracle

でDBに接続して

CREATE USER ora01 IDENTIFIED BY oracle;

としても

ORA-65096: 共通ユーザーまたはロール名が無効です

と出てユーザー作成ができませんでした。

Oracle 12cでは「マルチテナントコンテナデータベース」(CDB)と呼ばれる親DBが存在し、
その下に「プラガブルデータベース」(PDB)と呼ばれる子DBが存在する作りになっているようです。

接続先DBの確認

SQL> show con_name

CON_NAME
——————————
CDB$ROOT
SQL>

どうやらCDBの方に接続しているようです。

では、PDBにはどうやって接続するのか調べてみました。

Oracle付属のlsnrctlコマンドで確認します。

c:\temp\WORK>lsnrctl status

LSNRCTL for 64-bit Windows: Version 12.1.0.2.0 – Production on 23-2月 -2016 05:46:29

Copyright (c) 1991, 2014, Oracle. All rights reserved.

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))に接続中
リスナーのステータス
————————
別名 LISTENER
バージョン TNSLSNR for 64-bit Windows: Version 12.1.0.2.0 – Production
開始日 23-2月 -2016 04:54:37
稼働時間 0 日 0 時間 51 分 56 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
パラメータ・ファイル C:\app\oracle\product\12.1.0\dbhome_1\network\admin\listener.ora
ログ・ファイル C:\app\oracle\diag\tnslsnr\TOWER1\listener\alert\log.xml
リスニング・エンドポイントのサマリー…
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=HOGEHOGE)(PORT=5500))(Security=(my_wallet_directory=C:\APP\ORACLE\admin\orcl\xdb_wallet))(Presentation=HTTP)(Session=RAW))
サービスのサマリー…
サービス”CLRExtProc”には、1件のインスタンスがあります。
インスタンス”CLRExtProc”、状態UNKNOWNには、このサービスに対する1件のハンドラがあります…
サービス”orcl”には、1件のインスタンスがあります。
インスタンス”orcl”、状態READYには、このサービスに対する1件のハンドラがあります…
サービス”orclXDB”には、1件のインスタンスがあります。
インスタンス”orcl”、状態READYには、このサービスに対する1件のハンドラがあります…
サービス”pdborcl”には、1件のインスタンスがあります。
インスタンス”orcl”、状態READYには、このサービスに対する1件のハンドラがあります…
コマンドは正常に終了しました。

c:\temp\WORK>

上記結果から待ち受けポート番号は1521、PDB名はpdborclである事がわかります。

接続コマンドは下記になります。

sqlplus system/oracle@localhost:1521/pdborcl

SQL>CREATE USER ora01 IDENTIFIED BY oracle;

無事に接続でき、ユーザー作成ができました。

一般ユーザでの接続は

sqlplus ora01/oracle@localhost:1521/pdborcl

で接続できます。


Comments are closed.