シングル構成とCDB構成で使えるDB+リスナー起動・停止スクリプト

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

~PDBもリスナーもまとめて安全操作!~

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

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


■ はじめに

Oracleの起動停止作業では、データベース本体の起動/停止だけでなく、リスナー(Listener)の操作も必要になります。特に以下のような環境では、スクリプトによる一括制御が作業のミス防止につながります。

  • シングル構成の非CDB
  • CDB構成(CDB$ROOT + 複数のPDB)

本記事では、それぞれの構成において、データベース本体とリスナーをまとめて起動・停止できるスクリプトを紹介します。


■ 想定構成

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

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

リスナー名:LISTENER

■ シングル構成用:起動スクリプト(DB+リスナー)

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

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

# リスナー起動
lsnrctl start

# データベース起動
sqlplus / as sysdba <<EOF
STARTUP;
EXIT;
EOF
chmod +x start_single.sh
./start_single.sh
[oracle@v19single ~]$ vi start_single.sh  ★スクリプト作成
[oracle@v19single ~]$ cat start_single.sh
#!/bin/bash

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

# リスナー起動
lsnrctl start

# データベース起動
sqlplus / as sysdba <<EOF
STARTUP;
EXIT;
EOF
[oracle@v19single ~]$ chmod +x start_single.sh ★実行権限付与
[oracle@v19single ~]$ ./start_single.sh

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 07-6月 -2025 10:53:25

Copyright (c) 1991, 2023, Oracle. All rights reserved.

/u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnrを起動しています。お待ちください...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
ログ・メッセージを/u01/app/oracle/diag/tnslsnr/v19single/listener/alert/log.xmlに書き込みました。
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=v19single)(PORT=1521)))

(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for Linux: Version 19.0.0.0.0 - Production
開始日 07-6月 -2025 10:53:25
稼働時間 0 日 0 時間 0 分 0 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
ログ・ファイル /u01/app/oracle/diag/tnslsnr/v19single/listener/alert/log.xml
リスニング・エンドポイントのサマリー...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=v19single)(PORT=1521)))
リスナーはサービスをサポートしていません。
コマンドは正常に終了しました。

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

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

アイドル・インスタンスに接続しました。

SQL> ORACLEインスタンスが起動しました。

Total System Global Area 1543500120 bytes
Fixed Size 8925528 bytes
Variable Size 922746880 bytes
Database Buffers 603979776 bytes
Redo Buffers 7847936 bytes
データベースがマウントされました。
データベースがオープンされました。 ★起動した
SQL> Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0との接続が切断されました。
[oracle@v19single ~]$

■ シングル構成用:停止スクリプト(DB+リスナー)

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

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 <<EOF
SHUTDOWN IMMEDIATE;
EXIT;
EOF

# リスナー停止
lsnrctl stop
chmod +x stop_single.sh
./stop_single.sh
[oracle@v19single ~]$ vi stop_single.sh  ★スクリプト作成
[oracle@v19single ~]$ cat stop_single.sh
#!/bin/bash

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 <<EOF
SHUTDOWN IMMEDIATE;
EXIT;
EOF

# リスナー停止
lsnrctl stop
[oracle@v19single ~]$ chmod +x stop_single.sh ★実行権限付与
[oracle@v19single ~]$ ./stop_single.sh

SQL*Plus: Release 19.0.0.0.0 - Production on 土 6月 7 10:58:46 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> データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0との接続が切断されました。

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 07-6月 -2025 10:59:03

Copyright (c) 1991, 2023, Oracle. All rights reserved.

(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))に接続中
コマンドは正常に終了しました。 ★停止した
[oracle@v19single ~]$

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

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


■ CDB構成用:起動スクリプト(CDB+PDB+リスナー)

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

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

# リスナー起動
lsnrctl start

# CDB+PDB起動+PDB状態確認
sqlplus / as sysdba <<EOF
STARTUP;
ALTER PLUGGABLE DATABASE ALL OPEN;
SHOW PDBS;
EXIT;
EOF
chmod +x start_cdb.sh
./start_cdb.sh
[oracle@v19single ~]$ vi start_cdb.sh  ★スクリプト作成
[oracle@v19single ~]$ cat start_cdb.sh
#!/bin/bash

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

# リスナー起動
lsnrctl start

# CDB+PDB起動+PDB状態確認
sqlplus / as sysdba <<EOF
STARTUP;
ALTER PLUGGABLE DATABASE ALL OPEN;
SHOW PDBS;
EXIT;
EOF
[oracle@v19single ~]$ chmod +x start_cdb.sh ★実行権限付与
[oracle@v19single ~]$ ./start_cdb.sh

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 07-6月 -2025 11:05:32

Copyright (c) 1991, 2023, Oracle. All rights reserved.

/u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnrを起動しています。お待ちください...

TNSLSNR for Linux: Version 19.0.0.0.0 - Production
ログ・メッセージを/u01/app/oracle/diag/tnslsnr/v19single/listener/alert/log.xmlに書き込みました。
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=v19single)(PORT=1521)))

(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))に接続中
リスナーのステータス
------------------------
別名 LISTENER
バージョン TNSLSNR for Linux: Version 19.0.0.0.0 - Production
開始日 07-6月 -2025 11:05:32
稼働時間 0 日 0 時間 0 分 0 秒
トレース・レベル off
セキュリティ ON: Local OS Authentication
SNMP OFF
ログ・ファイル /u01/app/oracle/diag/tnslsnr/v19single/listener/alert/log.xml
リスニング・エンドポイントのサマリー...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=v19single)(PORT=1521)))
リスナーはサービスをサポートしていません。
コマンドは正常に終了しました。

SQL*Plus: Release 19.0.0.0.0 - Production on 土 6月 7 11:05:33 2025
Version 19.21.0.0.0

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

アイドル・インスタンスに接続しました。

SQL> ORACLEインスタンスが起動しました。

Total System Global Area 1610609864 bytes
Fixed Size 9163976 bytes
Variable Size 419430400 bytes
Database Buffers 1174405120 bytes
Redo Buffers 7610368 bytes
データベースがマウントされました。
データベースがオープンされました。
SQL>
プラガブル・データベースが変更されました。

SQL>
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 PDB01 READ WRITE NO
4 PDB02 READ WRITE NO
5 PDB03 READ WRITE NO ★起動した
SQL> Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0との接続が切断されました。
[oracle@v19single ~]$

■ CDB構成用:停止スクリプト(CDB+PDB+リスナー)

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

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

# CDB+PDB停止
sqlplus / as sysdba <<EOF
ALTER PLUGGABLE DATABASE ALL CLOSE IMMEDIATE;
SHUTDOWN IMMEDIATE;
EXIT;
EOF

# リスナー停止
lsnrctl stop
chmod +x stop_cdb.sh
./stop_cdb.sh
[oracle@v19single ~]$ vi stop_cdb.sh  ★スクリプト作成
[oracle@v19single ~]$ cat stop_cdb.sh
#!/bin/bash

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

# CDB+PDB停止
sqlplus / as sysdba <<EOF
ALTER PLUGGABLE DATABASE ALL CLOSE IMMEDIATE;
SHUTDOWN IMMEDIATE;
EXIT;
EOF

# リスナー停止
lsnrctl stop
[oracle@v19single ~]$ chmod +x stop_cdb.sh ★実行権限付与
[oracle@v19single ~]$ ./stop_cdb.sh

SQL*Plus: Release 19.0.0.0.0 - Production on 土 6月 7 11:09:52 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>
プラガブル・データベースが変更されました。

SQL> データベースがクローズされました。
データベースがディスマウントされました。
ORACLEインスタンスがシャットダウンされました。
SQL> Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0との接続が切断されました。

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 07-6月 -2025 11:10:21

Copyright (c) 1991, 2023, Oracle. All rights reserved.

(ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))に接続中
コマンドは正常に終了しました。 ★停止した
[oracle@v19single ~]$

■ ポイント解説

操作シングル構成CDB構成(CDB+PDB)
起動lsnrctl startSTARTUPlsnrctl startSTARTUPALTER PLUGGABLE DATABASE ALL OPEN
停止SHUTDOWN IMMEDIATElsnrctl stopALTER PLUGGABLE DATABASE ALL CLOSESHUTDOWN IMMEDIATElsnrctl stop
  • リスナーの起動はDBより先に、停止はDBの後に行うのが基本
  • CDB構成では PDBのOPEN/CLOSEが必須

■ まとめ

構成起動スクリプト停止スクリプト
非CDB(v19)start_single.shstop_single.sh
CDB+PDB(V19M)start_cdb.shstop_cdb.sh

これらのスクリプトを用いることで、リスナー含めた起動・停止をミスなく効率的に実施することが可能です。

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

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

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

コメント

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