データベース

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

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

皆さん、こんにちは!

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

 

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

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

こんな疑問に答えます。

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

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”など

※補足
show con_nameで「非統合」と表示される場合はマルチテナント構成でないデータベースです。
(バージョンにより表示内容が少し異なるかもしれません。でも類似した文言が表示されるかと)
ちなみに、
Oracle21cからマルチテナント構成のデータベースしか作成できません。

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

SQL*Plusで「show con_name」コマンドを実行し、コマンドの実行結果によりCDBかPDBか判断します。

DB接続先の確認(例)

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

上記では、

CON_NAMEの値が「CDB$ROOT」なのでコンテナ・データベース(CDB)に接続してます。

CON_NAMEの値が「ORCLPDB」の場合は、プラガブル・データベース(PDB)に接続してます。

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

次に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

    CON_NAMEの値が「ORCLPDB」なのでプラガブル・データベース(PDB)に接続してます。

    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を確認

SEおっさん
SEおっさん
ここまで読んでくれてありがとう!

「記事を読んでもわからないトコがある」「内容が変だよ」
という時は、お気軽にコメントください♪

「もっとSEおっさんに詳しく聞きたい。何かお願いしたい!」
という時は、ココナラまで。メッセージもお気軽に♪

LINEでのお問合わせも受付中!
LINE公式アカウント

メッセージをお待ちしています!

取得資格
  • 応用情報技術者
  • Oracle Master Gold
  • Java Silver SE
  • Java EE Webコンポーネントディベロッパ
  • Python エンジニア認定データ分析
  • 簿記2級


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

コメントを残す

*