GAGA LIFE.

インフラエンジニアブログ

スポンサーリンク

Oracle 19c環境(コンテナデータベース)でOS認証によりPDBに接続する方法

概要

19cより前のバージョンでは、SQL*Plusを使ってPluggable Database (PDB)に接続する際には以下の方法がありました

  1. tnsname.oraを設定し、リスナー経由で接続
  2. CDB$ROOTからALTER SESSION SET CONTAINER文を実行し、接続

今回は、19cからPDBへのOS認証がサポートされるようになったため、この点について動作確認します。
具体的には、環境変数ORACLE_PDB_SIDにPDB名を指定して接続します。
※詳細バージョンは19.7から使用可能です。

その前に、これまでのPDBへの接続方法を確認します。

(1)リスナー経由の接続

$ cat $ORACLE_HOME/network/admin/tnsnames.ora 
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/19.3.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
pdb1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rac1.oracle19c.jp)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = pdb1.oracle19c.jp)
    )
  )
$ sqlplus scott@pdb1

SQL*Plus: Release 19.0.0.0.0 - Production on 土 327 10:55:01 2021
Version 19.8.0.0.0

Copyright (c) 1982, 2020, Oracle.  All rights reserved.

パスワードを入力してください: 
最終正常ログイン時間: 木 325 2021 20:02:32 +09:00


Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.8.0.0.0
に接続されました。
SQL> show con_name

CON_NAME
------------------------------
PDB1

(2)ALTER SESSION SET CONTAINER文での接続

$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on 土 327 10:57:03 2021
Version 19.8.0.0.0

Copyright (c) 1982, 2020, Oracle.  All rights reserved.



Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.8.0.0.0
に接続されました。
SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT
SQL> alter session set container=pdb1;

セッションが変更されました。

SQL> show con_name

CON_NAME
------------------------------
PDB1

【新】PDBにOS認証で接続(ORACLE_PDB_SID指定)

以降で新しい接続方法(PDBへのOS認証)を確認します。

$ export ORACLE_PDB_SID=pdb1
$ sqlplus /nolog

SQL*Plus: Release 19.0.0.0.0 - Production on 土 327 11:02:08 2021
Version 19.8.0.0.0

Copyright (c) 1982, 2020, Oracle.  All rights reserved.

SQL> conn /as sysdba
接続されました。
SQL> show con_name

CON_NAME
------------------------------
PDB1

留意事項(ORACLE_PDB_SID)

  • "AS SYSDBA"を指定しないユーザーを使ったPDB接続はできない。※通常ユーザーでの接続はできない
  • 事前に、接続先CDBを選択するため、環境変数ORACLE_SIDが必要
  • 環境変数ORACLE_PDB_SIDに存在しないPDB名を指定した場合は、CDB$ROOTに接続される
  • PDBがマウント状態でも接続可能

スポンサーリンク