シングル構成・CDB$ROOT・PDBに簡単接続!

CDB/PDB(マルチテナント)

~Oracle接続スクリプトを用途別に使い分ける~

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


■ はじめに

Oracle環境が複雑になると、以下のような複数の構成が同居することが多くなります。

  • シングル構成のデータベース(非CDB)
  • CDB構成でのCDB$ROOT操作
  • PDBごとの接続/管理

これらを効率よく扱うには、それぞれに応じた専用の接続スクリプトを用意しておくと便利です。本記事では、接続方法別に3つのスクリプトを紹介し、作業効率を大幅に高める方法をご提案します。


■ 想定構成

① シングル構成DB(非CDB)
└─ ORACLE_SID=v19

② マルチテナント構成(CDB)
└─ ORACLE_SID=V19M(CDB$ROOT)
├── PDB01
├── PDB02
└── PDB03

■ スクリプト①:シングル構成DB(非CDB)用

#!/bin/bash
# ファイル名:connect_single.sh

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=v19

sqlplus / as sysdba

✅ 使用例

$ chmod +x connect_single.sh
$ ./connect_single.sh
[oracle@v19single ~]$ vi connect_single.sh  ★スクリプト作成
[oracle@v19single ~]$ cat connect_single.sh
#!/bin/bash
# ファイル名:connect_single.sh

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=v19

sqlplus / as sysdba
[oracle@v19single ~]$ chmod +x connect_single.sh ★実行権限付与
[oracle@v19single ~]$ ./connect_single.sh

SQL*Plus: Release 19.0.0.0.0 - Production on 土 6月 7 10:29:49 2025
Version 19.21.0.0.0

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



Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0
に接続されました。
SQL> select instance_name from v$instance;

INSTANCE_NAME
------------------------------------------------
v19 ★接続されている

■ スクリプト②:CDB$ROOT に接続する用

#!/bin/bash
# ファイル名:connect_cdbroot.sh

export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=V19M

sqlplus / as sysdba

✅ 使用例

$ chmod +x connect_cdbroot.sh
$ ./connect_cdbroot.sh

これで CDB$ROOT に直接接続され、ALTER SESSION SET CONTAINER を使って任意のPDBへ切り替えることも可能です。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


■ スクリプト③:PDB に TNS 経由で接続する用

#!/bin/bash
# ファイル名:connect_pdb.sh

PDB=$1

if [ -z "$PDB" ]; then
echo "使用法: $0 <PDB名>"
echo "例: $0 pdb01"
exit 1
fi

sqlplus sys/oracle@$PDB as sysdba

※ TNS構成(tnsnames.ora)に PDB 名が登録されていることが前提です。

✅ 使用例

$ chmod +x connect_pdb.sh
$ ./connect_pdb.sh pdb01
$ ./connect_pdb.sh pdb02
$ ./connect_pdb.sh pdb03

■ tnsnames.ora の設定例(PDB接続用)

pdb01 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = pdb01)
)
)

pdb02 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = pdb02)
)
)

pdb03 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = pdb03)
)
)

SERVICE_NAME は PDB 側で show parameter service_names などで確認可能です。

[oracle@v19single ~]$ vi $ORACLE_HOME/network/admin/tnsnames.ora
[oracle@v19single ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora
pdb01 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = pdb01)
)
)

pdb02 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = pdb02)
)
)

pdb03 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = pdb03)
)
)
[oracle@v19single ~]$ vi connect_pdb.sh ★スクリプト作成
[oracle@v19single ~]$ cat connect_pdb.sh
#!/bin/bash

PDB=$1

if [ -z "$PDB" ]; then
echo "使用法: $0 <PDB名>"
echo "例: $0 pdb01"
exit 1
fi

sqlplus sys/oracle@$PDB as sysdba
[oracle@v19single ~]$ chmod +x connect_pdb.sh ★実行権限付与
[oracle@v19single ~]$ ./connect_pdb.sh
使用法: ./connect_pdb.sh <PDB名>
例: ./connect_pdb.sh pdb01
[oracle@v19single ~]$ ./connect_pdb.sh pdb02 ★PDB02 を指定して実行

SQL*Plus: Release 19.0.0.0.0 - Production on 土 6月 7 10:13:06 2025
Version 19.21.0.0.0

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



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

CON_NAME
------------------------------
PDB02 ★接続された
SQL> exit
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0との接続が切断されました。
[oracle@v19single ~]$ ./connect_pdb.sh pdb03 ★PDB03 を指定して実行

SQL*Plus: Release 19.0.0.0.0 - Production on 土 6月 7 10:13:22 2025
Version 19.21.0.0.0

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



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

CON_NAME
------------------------------
PDB03 ★接続された

■ まとめ

用途スクリプト接続方式
非CDB構成connect_single.shORACLE_SID による接続
CDB$ROOT接続connect_cdbroot.shORACLE_SID による接続
PDB接続connect_pdb.sh pdb01
connect_pdb.sh pdb02
connect_pdb.sh pdb03
TNS名でPDBに直接接続

それぞれの構成に合わせてスクリプトを分けておくことで、誤接続を防ぎつつ、操作対象を即座に切り替えて作業することができます。

[参考]
4 CDBの作成および構成

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました