データベース

Oracle接続先確認とCDB→PDBの切り替え・自動起動の方法

  • このエントリーをはてなブックマークに追加
  • LINEで送る

皆さん、こんにちは!

Oracle12cよりマルチテナント構成(CDB・PDB)が導入されました。

 

『DBの接続先が、CDBかPDBか知る方法ないかなぁ…』

『CDBで接続してるけど、PDBに接続先変更したいなぁ…』

このような疑問に答えます。


SEおっさん
SEおっさん
SE歴20年のオッサンが詳しく解説するぞい!

※保有資格:OracleMasterGold/JavaWebコンポーネントディベロッパ/応用情報技術者/簿記2級

Oracle接続先がCDBかPDBか確認する方法

CDB接続からPDB接続に切り換える前に、現在接続しているデータベースが「CDBかPDB」を確認する必要があります。

SQL*Plus上で「show con_name」コマンドを実行すると、現在接続中のデータベースを確認できます。

CDBかPDBを確認する方法

SQL*Plusで「show con_name」コマンドを実行する

コマンドの実行結果によりCDBかPDBか判断します。

  • “CDB$ROOT”と表示される場合

    CDB接続です。

  • “CDB$ROOT”以外が表示される場合

    PDB接続です。
    例)”ORCLPDB”など

Oracle接続先がCDBかPDBか確認する例

DB接続先の確認(例)

show con_name>
CON_NAME>
——————————>
CDB$ROOT

上記の例では、CON_NAMEの値が「CDB$ROOT」と表示されいるのでコンテナ・データベース(CDB)に接続してます。

次にCDB接続からPDB接続に切り換える方法をお伝えします。

Oracleの接続先をCDBからPDBへ切り替える方法

Oracleの接続先をCDBからPDBへ切り替える手順です。

  1. PDBの名前と現在のOPEN_MODEを確認
    select name, open_mode from v$pdbs;
    NAME          OPEN_MODE 
    ------------- ----------
    PDB$SEED      READ ONLY 
    ORCLPDB       MOUNTED
    

    PDB$SEEDとはPDBが作成される際の初期テンプレートです。

    添付レートを使用するわけにはいきませんから、対象PDBはORCLPDBとなります。

    ORCLPDBのOPEN_MODEはMOUNTEDは、制御ファイルを読み込んだだけの状態です。

    OPENしてデータファイルも読み込み、DBとして使用可能な状態にします。

  2. プラガブル・データベース(PDB)をOPEN
    alter pluggable database ORCLPDB open;

    PDBがマウント状態からOPEN状態に変更されます。

    OPEN状態になるとREAD WRITEと表示されます

    ↓変更されてるか確認

    select name, open_mode from v$pdbs;
    NAME          OPEN_MODE 
    ------------- ----------
    PDB$SEED      READ ONLY 
    ORCLPDB       READ WRITE
  3. プラガブル・データベース(PDB)に接続を切替え
    alter session set container = ORCLPDB;

    接続先がPDBに変更されました。

    SQL*Plus上で、show con_name を実行

    show con_name
    CON_NAME
    ——————————
    ORCLPDB

    PDBに接続されているので、通常ユーザの作成が可能となります。

 



スポンサーリンク

OracleのPDBを自動起動する方法

CDBからPDBへ切替作業はわかったけど…
毎回するのは面倒くさい
たろちゃん
たろちゃん
SEおっさん
SEおっさん
次回起動時も今のPDB状態を保持する設定があるぞい。
↓PDB状態を保持する設定

下記のPDB状態を保持するコマンドで、次回起動時もPDBがOPEN状態となります。

ALTER PLUGGABLE DATABASE ORCLPDB SAVE STATE;
そりゃ、いいね
たろちゃん
たろちゃん

OracleのPDBへTNS接続する方法

PDBを自動起動させたなら、直接PDBへ接続したいですよね。

プラガブル・データベース(PDB)は、TNS接続しか受け付けません。

TNS接続とはtnsnames.oraで定義したネットサービス名(接続文字列)で接続するコトです。

そして、ネットサービス名はサービス名とIPアドレス・PORT番号を定義します。

PDBにもサービス名が存在するので、このサービス名でtnsnames.oraに定義しなければなりません。

間違ってCDBのサービス名でTNS接続すると「ORA-01017」エラーになります。

 

PDBのサービス名はリスナーの状態確認コマンド「lsnrctl status」を使用して確認できます。

詳細を下記にまとめました。

OracleのPDB接続エラー!サービス名とtnsnamesを確認
OracleのPDB接続エラー!サービス名とtnsnamesを確認
皆さん、こんにちは! Oracle12cよりマルチテナント構成(CDB・PDB)が導入されました。 11g以前のようにDB接続しようすると… ORA-01017.....

 



スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • LINEで送る

コメントを残す

*