LoginSignup
3
0

More than 3 years have passed since last update.

Pluggable Database のローカル接続を試す (Oracle Database 19c)

Last updated at Posted at 2020-07-15

Pluggable Databaseへの接続方法

SQL*Plusを使ってPluggable Database (PDB)に接続するには以下の方法がありました。

  • リスナー経由
  • ALTER SESSION SET CONTAINER文の実行

PDBがOPEN状態であればリスナー経由で接続できます。tnsnames.ora ファイルに接続先サービスの情報を書き込んで接続するか、EZCONNECT記法を使って接続します。

$ sqlplus pdbadmin/{password}@localhost:1521/pdb1

SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 9 10:43:22 2020
Version 19.7.0.0.0

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

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.7.0.0.0

SQL> SHOW CON_NAME

CON_NAME
------------------------------
PDB1
SQL>

CDBへ接続した後、ALTER SESSION SET CONTAINER文でPDBに接続することもできます。

$ sqlplus / as sysdba
SQL> SHOW CON_NAME;

CON_NAME
------------------------------
CDB$ROOT
SQL> ALTER SESSION SET CONTAINER=pdb2;

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

SQL> SHOW CON_ID;

CON_ID
------------------------------
4
SQL> SHOW CON_NAME

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

新しい接続方法

Oracle Database 19c (19.7) から、PDBに対する「AS SYSDBA」を指定したオペレーティング・システム認証がサポートされるようになりました。環境変数ORACLE_PDB_SIDにPDB名を指定します。

$ export ORACLE_SID=O19B
$ export ORACLE_PDB_SID=pdb1
$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 9 10:50:03 2020
Version 19.7.0.0.0

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

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.7.0.0.0

SQL> SHOW CON_NAME

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

SQL> SELECT BANNER_FULL FROM V$VERSION;

BANNER_FULL
-----------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.7.0.0.0

SQL>

接続先CDBを選択するため、従来からCDB接続のために使用してきた環境変数ORACLE_SIDも必要です。

非CDB環境に接続

環境変数ORACLE_SIDに非CDBデータベースを指定した場合は、環境変数ORACLE_PDB_SIDは無視されます。下記の例では、非CDBデータベースO19Aを指定しています。

$ export ORACLE_SID=O19A
$ export ORACLE_PDB_SID=pdb1
$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 9 11:01:30 2020
Version 19.7.0.0.0

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

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.7.0.0.0

SQL> SHOW CON_NAME

CON_NAME
------------------------------
O19A

存在しないPDB

環境変数ORACLE_PDB_SIDに存在しないPDB名を指定すると、CDB$ROOTに接続されます。

$ export ORACLE_SID=O19B
$ export ORACLE_PDB_SID=pdb_not_exists
$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 9 11:04:19 2020
Version 19.7.0.0.0

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

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.7.0.0.0

SQL> SHOW CON_NAME

CON_NAME
------------------------------
CDB$ROOT
SQL>

MOUNT状態のPDB

PDBがマウント状態でも接続できます。

$ export ORACLE_SID=O19B
$ export ORACLE_PDB_SID=pdb1
$ sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 9 11:05:24 2020
Version 19.7.0.0.0

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

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.7.0.0.0

SQL> SHOW CON_NAME

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

SQL> SELECT OPEN_MODE FROM V$PDBS WHERE NAME='PDB1';

OPEN_MODE
----------
MOUNTED
SQL>

通常ユーザーによる接続

「AS SYSDBA」を指定しないユーザーを使ったPDB接続はできません。

$ export ORACLE_SID=O19B
$ export ORACLE_PDB_SID=pdb1
$ sqlplus pdbadmin/{password}

SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 9 11:11:25 2020
Version 19.7.0.0.0

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

ERROR:
ORA-01017: invalid username/password; logon denied


Enter user-name: ^C
$

マニュアル

この機能は上記のように使えますが、SQL*Plusのマニュアルにも、Oracle Databaseの19.7パッチのREADMEにも公式な情報がありません。今後、マニュアルのアップデートにより公式化されることを期待しています。

3
0
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
3
0