LoginSignup
21
27

More than 5 years have passed since last update.

Oracle プラガブルデータベースのsqlplusでの切替方法

Last updated at Posted at 2017-06-19

はじめに

Oracle 12c 以降ではマルチテナント・アーキテクチャが追加となっています。参考
11g以前とはsqlplusによる接続の仕方が異なり、少し困ったのでその方法を書いていきます。

ちなみに、具体的に困った事としては、スキーマ作成しようとしたら、
「ORA-65096: 共通ユーザーまたはロール名が無効です」
が発生してしまいました。
sqlplusでのデフォルト接続先がCDB(コンテナデータベース)だったからです。
PDB(プラガブルデータベース)へ切り替えなければいけませんでした。

結論

sqlplus ユーザ/パスワード as sysdba
SQL> alter session set container = orclpdb;

手順

前置き

※ 今回のsqlplus上での作業は基本的にsysdba権限が必要ですので、以下のように接続している事を前提とします。

sqlplus ユーザ/パスワード as sysdba

以降、先頭行が「SQL> 」となっている箇所はsqlplusに接続している事を示します。

0. PDBの名前確認

作成したPDBの名前が分かっている場合は飛ばしていいです。
名前を忘れた場合(←私がそうでした)や、そもそもPDBを作成したのか不明な場合についてです。
(Oracleインストール時のデフォルト名は「orclpdb」の模様です)

PDB名前確認
SQL> select name, open_mode from v$pdbs;

2017-06-19_14h40_53.png
このように、「$SEED」ではないほうのNAMEがPDBの名前です。複数ある場合は適宜選んでください。

1. PDBの起動

PDBを起動します。仮に起動済みであっても「ORA-6511: プラガブル・データベースPDB名はすでにオープンしています」が発生するだけなので特に問題はありません。
また、0. PDBの名前確認でOPEN_MODEが「READ WRITE」となっていた場合はPDBが起動されていますので飛ばしてよいです。

PDBオープン
SQL> alter pluggable database PDB名 open;

(参考:起動済みの場合)
2017-06-19_14h53_21.png

2. PDBへ切り替え

PDBへ切り替えます。これで目的は達成です。

PDB切替
alter session set container = PDB名;

3. 接続確認

「show con_name」でPDB名が表示されれば成功です。
2017-06-19_16h14_38.png

また、sqlplusでPDBにワンライナーで接続するには、以下のように「@ホスト名:ポート名/(PDBの)サービス名」を指定します。

接続例
sqlplus system/password@localhost:1521/orclpdb
21
27
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
21
27