背景・目的
前回、EC2にOracle Standard Editionをインストールし、その後Statspackも設定しました。
今回は、EC2停止後から、EC2を起動しOracleを立ち上げるまでを試します。
まとめ
下記に特徴をまとめます
| 特徴 | 説明 |
|---|---|
| リスナー | リモートからOracleに接続するための「玄関」の役割 Oracle Net Listener は、クライアントからのデータベース接続要求を受け付けるプロセス 下記の役割を担う ・クライアント(SQLPlusや他のアプリケーション)からの接続要求を待ち受け ・接続要求を受けると、Oracleデータベースインスタンスに転送 ・デフォルトでTCPポート 1521 で待機 |
| oratab | /etc/oratab は、システム上のOracleデータベースインスタンスを登録する設定ファイル |
概要
リスナー
- Oracle Net Listener は、クライアントからのデータベース接続要求を受け付けるプロセス
- 下記の役割を担う
- クライアント(SQLPlusや他のアプリケーション)からの接続要求を待ち受け
- 接続要求を受けると、Oracleデータベースインスタンスに転送
- デフォルトでTCPポート 1521 で待機
- 下記のようなイメージで接続する
- クライアント → リスナー(1521) → Oracleインスタンス
- リスナーがないと場合、ローカルからの sqlplus / as sysdba は可能 (OSユーザー認証)
- しかし、ネットワーク経由の接続は不可
- リモートからOracleに接続するための「玄関」の役割
oratab
-
/etc/oratab は、システム上のOracleデータベースインスタンスを登録する設定ファイル
-
フォーマットは下記の通り
- SID:ORACLE_HOME:自動起動フラグ
- 例: ORCL:/u01/app/oracle/product/11.2.0/dbhome_1:Y
- SID - データベースインスタンス名 (ORCL)
- ORACLE_HOME - Oracleソフトウェアのインストールパス
- 自動起動フラグ - Y (起動する) / N (起動しない)
-
下記の用途で利用される
- システム上の全Oracleインスタンスを一覧管理
- 起動/停止スクリプト(dbstart/dbshut)が参照
- 複数のOracleインスタンスがある場合の識別
実践
手動起動
-
EC2を起動します
-
セッションマネージャーで接続します
$ whoami ssm-user $ -
プロセスを確認します
$ ps -ef | grep -E "pmon|tnslsnr" | grep -v grep $ -
Oracleユーザに切り替えます
$ sudo su - oracle Last login: Wed Jan 14 12:42:24 UTC 2026 on pts/1 $ $ whoami oracle $ -
Oracleの環境変数を設定します
$ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 $ export ORACLE_SID=ORCL $ export PATH=$ORACLE_HOME/bin:$PATH
リスナーの起動
- Oracleリスナーを起動します
$ lsnrctl start LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 21-JAN-2026 13:10:51 Copyright (c) 1991, 2009, Oracle. All rights reserved. Starting /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 11.2.0.1.0 - Production Log messages written to /u01/app/oracle/product/11.2.0/dbhome_1/log/diag/tnslsnr/XXXXXXX/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XXXXXXX)(PORT=1521))) Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production Start Date 21-JAN-2026 13:10:51 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Log File /u01/app/oracle/product/11.2.0/dbhome_1/log/diag/tnslsnr/XXXXXXXXX/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XXXXXXX)(PORT=1521))) The listener supports no services The command completed successfully $ - リスナーを確認します
$ ps -ef | grep -E "ora_|tnslsnr" | grep -v grep oracle 4675 1 0 13:10 ? 00:00:00 /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER -inherit $
データベースの起動
-
SQLPlusで接続します
$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Wed Jan 21 13:14:52 2026 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to an idle instance. SQL> -
ステータスを確認します。まだこの状態ではデータベースは起動されていません
SQL> SELECT status FROM v$instance; SELECT status FROM v$instance * ERROR at line 1: ORA-01034: ORACLE not available Process ID: 0 Session ID: 0 Serial number: 0 SQL> -
データベースを起動します。(STARTUP; は一気に OPEN 状態まで起動します。)
- 下記がわかります
- インスタンスの起動 (メモリ構造の初期化)
- データベースのマウント (制御ファイルの読み込み)
- データベースのオープン (データファイルとREDOログのオープン)
SQL> STARTUP; ORACLE instance started. Total System Global Area 2137886720 bytes Fixed Size 2215064 bytes Variable Size 1224737640 bytes Database Buffers 905969664 bytes Redo Buffers 4964352 bytes Database mounted. Database opened. SQL> - 下記がわかります
-
ステータスがOpenになりました
SQL> SELECT status FROM v$instance; STATUS ------------ OPEN SQL> l -
他の情報も確認します
SQL> l 1* SELECT * FROM v$instance SQL> / INSTANCE_NUMBER INSTANCE_NAME HOST_NAME VERSION STARTUP_T STATUS PAR THREAD# ARCHIVE LOG_SWITCH_WAIT LOGINS SHU DATABASE_STATUS INSTANCE_ROLE ACTIVE_ST BLO --------------- ---------------- ---------------------------------------------------------------- ----------------- --------- ------------ --- ---------- ------- --------------- ---------- --- ----------------- ------------------ --------- --- 1 ORCL XXXXXXXXX 11.2.0.1.0 21-JAN-26 OPEN NO 1 STOPPED ALLOWED NO ACTIVE PRIMARY_INSTANCE NORMAL NO SQL>
プロセスの確認
-
sqlplusを抜けます
SQL> exit Disconnected from Oracle Database 11g Release 11.2.0.1.0 - 64bit Production $ -
あらためて、プロセスを確認します
$ ps -ef | grep -E "ora_|tnslsnr" | grep -v grep oracle 4675 1 0 13:10 ? 00:00:00 /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER -inherit oracle 5130 1 0 13:18 ? 00:00:00 ora_pmon_ORCL oracle 5132 1 0 13:18 ? 00:00:01 ora_vktm_ORCL oracle 5136 1 0 13:18 ? 00:00:00 ora_gen0_ORCL oracle 5138 1 0 13:18 ? 00:00:00 ora_diag_ORCL oracle 5140 1 0 13:18 ? 00:00:00 ora_dbrm_ORCL oracle 5142 1 0 13:18 ? 00:00:00 ora_psp0_ORCL oracle 5144 1 0 13:18 ? 00:00:00 ora_dia0_ORCL oracle 5146 1 0 13:18 ? 00:00:00 ora_mman_ORCL oracle 5148 1 0 13:18 ? 00:00:00 ora_dbw0_ORCL oracle 5150 1 0 13:18 ? 00:00:00 ora_lgwr_ORCL oracle 5152 1 0 13:18 ? 00:00:00 ora_ckpt_ORCL oracle 5154 1 0 13:18 ? 00:00:00 ora_smon_ORCL oracle 5156 1 0 13:18 ? 00:00:00 ora_reco_ORCL oracle 5158 1 0 13:18 ? 00:00:00 ora_mmon_ORCL oracle 5160 1 0 13:18 ? 00:00:00 ora_mmnl_ORCL oracle 5162 1 0 13:18 ? 00:00:00 ora_d000_ORCL oracle 5164 1 0 13:18 ? 00:00:00 ora_s000_ORCL oracle 5226 1 0 13:18 ? 00:00:00 ora_qmnc_ORCL oracle 5241 1 0 13:18 ? 00:00:00 ora_cjq0_ORCL oracle 5264 1 0 13:18 ? 00:00:00 ora_q000_ORCL oracle 5266 1 0 13:18 ? 00:00:00 ora_q001_ORCL oracle 5516 1 0 13:23 ? 00:00:00 ora_smco_ORCL oracle 5520 1 0 13:23 ? 00:00:00 ora_w000_ORCL oracle 5825 1 0 13:28 ? 00:00:00 ora_j000_ORCL oracle 5827 1 0 13:28 ? 00:00:00 ora_j001_ORCL $- 上記から、下記のプロセスが立ち上がっていることはわかります
- tnslsnr - リスナー
- ora_pmon_ORCL - プロセス監視
- ora_smon_ORCL - システム監視
- ora_dbw0_ORCL - データベースライター
- ora_lgwr_ORCL - ログライター
- ora_ckpt_ORCL - チェックポイント
- ora_mmon_ORCL - メモリ監視
- その他バックグラウンドプロセス
- 上記から、下記のプロセスが立ち上がっていることはわかります
自動起動の設定
上記では、EC2再起動後、手動でデータベースを起動しましたが、EC2起動とともにOracleを起動するように設定します。
インスタンスを停止
-
oracleユーザにスイッチします
$ sudo su - oracle Last login: Wed Jan 21 13:08:44 UTC 2026 on pts/0 $ -
sqlplusで接続します
$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Wed Jan 21 13:46:14 2026 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Release 11.2.0.1.0 - 64bit Production SQL> -
シャットダウンします
SQL> SHUTDOWN IMMEDIATE; Database closed. Database dismounted. ORACLE instance shut down. SQL> -
sqlplus を抜けます
SQL> exit Disconnected from Oracle Database 11g Release 11.2.0.1.0 - 64bit Production $
リスナーを停止
- リスナーを停止します
$ lsnrctl stop LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 21-JAN-2026 13:48:43 Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) The command completed successfully $ - プロセスは停止されました
$ ps -ef | grep -E "ora_|tnslsnr" | grep -v grep $
サービスを有効化
-
rootユーザになります
$ sudo su - Last login: Wed Jan 14 09:28:48 UTC 2026 on pts/1 # whoami root # -
systemdサービスファイルを作成します
# cat > /etc/systemd/system/oracle.service <<'EOF' > [Unit] > Description=Oracle Database > After=network.target > > [Service] > Type=forking > User=oracle > Environment=ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1 > Environment=ORACLE_SID=ORCL > ExecStart=/bin/bash -c 'source /home/oracle/.bash_profile && lsnrctl start && echo "STARTUP;" | sqlplus -s / as sysdba' > ExecStop=/bin/bash -c 'source /home/oracle/.bash_profile && echo "SHUTDOWN IMMEDIATE;" | sqlplus -s / as sysdba && lsnrctl stop' > RemainAfterExit=yes > > [Install] > WantedBy=multi-user.target > EOF # -
サービスを有効化します
# systemctl daemon-reload # systemctl enable oracle.service # systemctl start oracle.service -
確認します
# systemctl status oracle.service ● oracle.service - Oracle Database Loaded: loaded (/etc/systemd/system/oracle.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2026-01-21 13:53:29 UTC; 3min 17s ago Process: 7413 ExecStart=/bin/bash -c source /home/oracle/.bash_profile && lsnrctl start && echo "STARTUP;" | sqlplus -s / as sysdba (code=exited, status=0/SUCCESS) CGroup: /system.slice/oracle.service ├─7422 /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER -inherit ├─7457 ora_pmon_ORCL ├─7459 ora_vktm_ORCL ├─7463 ora_gen0_ORCL ├─7465 ora_diag_ORCL ├─7467 ora_dbrm_ORCL ├─7469 ora_psp0_ORCL ├─7471 ora_dia0_ORCL ├─7473 ora_mman_ORCL ├─7475 ora_dbw0_ORCL ├─7477 ora_lgwr_ORCL ├─7479 ora_ckpt_ORCL ├─7481 ora_smon_ORCL ├─7483 ora_reco_ORCL ├─7485 ora_mmon_ORCL ├─7487 ora_mmnl_ORCL ├─7489 ora_d000_ORCL ├─7491 ora_s000_ORCL ├─7553 ora_qmnc_ORCL ├─7567 ora_cjq0_ORCL ├─7582 ora_q000_ORCL └─7584 ora_q001_ORCL Jan 21 13:53:24 XXXXXXX bash[7413]: The command completed successfully Jan 21 13:53:24 XXXXXXX bash[7413]: ORACLE instance started. Jan 21 13:53:24 XXXXXXX bash[7413]: Total System Global Area 2137886720 bytes Jan 21 13:53:24 XXXXXXX bash[7413]: Fixed Size 2215064 bytes Jan 21 13:53:24 XXXXXXX bash[7413]: Variable Size 1224737640 bytes Jan 21 13:53:24 XXXXXXX bash[7413]: Database Buffers 905969664 bytes Jan 21 13:53:24 XXXXXXX bash[7413]: Redo Buffers 4964352 bytes Jan 21 13:53:29 XXXXXXX bash[7413]: Database mounted. Jan 21 13:53:29 XXXXXXX bash[7413]: Database opened. Jan 21 13:53:29 XXXXXXX systemd[1]: Started Oracle Database. # -
プロセスを確認します
# ps -ef | grep -E "ora_|tnslsnr" | grep -v grep oracle 7422 1 0 13:53 ? 00:00:00 /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER -inherit oracle 7457 1 0 13:53 ? 00:00:00 ora_pmon_ORCL oracle 7459 1 0 13:53 ? 00:00:00 ora_vktm_ORCL oracle 7463 1 0 13:53 ? 00:00:00 ora_gen0_ORCL oracle 7465 1 0 13:53 ? 00:00:00 ora_diag_ORCL oracle 7467 1 0 13:53 ? 00:00:00 ora_dbrm_ORCL oracle 7469 1 0 13:53 ? 00:00:00 ora_psp0_ORCL oracle 7471 1 0 13:53 ? 00:00:00 ora_dia0_ORCL oracle 7473 1 0 13:53 ? 00:00:00 ora_mman_ORCL oracle 7475 1 0 13:53 ? 00:00:00 ora_dbw0_ORCL oracle 7477 1 0 13:53 ? 00:00:00 ora_lgwr_ORCL oracle 7479 1 0 13:53 ? 00:00:00 ora_ckpt_ORCL oracle 7481 1 0 13:53 ? 00:00:00 ora_smon_ORCL oracle 7483 1 0 13:53 ? 00:00:00 ora_reco_ORCL oracle 7485 1 0 13:53 ? 00:00:00 ora_mmon_ORCL oracle 7487 1 0 13:53 ? 00:00:00 ora_mmnl_ORCL oracle 7489 1 0 13:53 ? 00:00:00 ora_d000_ORCL oracle 7491 1 0 13:53 ? 00:00:00 ora_s000_ORCL oracle 7553 1 0 13:53 ? 00:00:00 ora_qmnc_ORCL oracle 7567 1 0 13:53 ? 00:00:00 ora_cjq0_ORCL oracle 7582 1 0 13:53 ? 00:00:00 ora_q000_ORCL oracle 7584 1 0 13:53 ? 00:00:00 ora_q001_ORCL oracle 7875 1 0 13:58 ? 00:00:00 ora_smco_ORCL oracle 7879 1 0 13:58 ? 00:00:00 ora_w000_ORCL # -
sqlplusで接続テストをします。ステータスがOpenになりました
# su - oracle -c "echo 'SELECT status FROM v\$instance;' | sqlplus -s / as sysdba" STATUS ------------ OPEN #
再起動後の自動的な確認
-
再起動します
# sudo reboot Session terminated, killing shell... ...killed. Terminated $ -
あらためて、セッションマネージャーで接続します
-
起動の時間を確認します。確かに再起動されました
$ uptime -s 2026-01-21 14:02:08 $ uptime -p up 2 minutes $ $ who -b system boot 2026-01-21 14:02 $ -
プロセスは起動されています
$ ps -ef | grep -E "ora_|tnslsnr" | grep -v grep oracle 2187 1 0 14:02 ? 00:00:00 /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER -inherit oracle 2390 1 0 14:02 ? 00:00:00 ora_pmon_ORCL oracle 2392 1 0 14:02 ? 00:00:00 ora_vktm_ORCL oracle 2396 1 0 14:02 ? 00:00:00 ora_gen0_ORCL oracle 2400 1 0 14:02 ? 00:00:00 ora_diag_ORCL oracle 2402 1 0 14:02 ? 00:00:00 ora_dbrm_ORCL oracle 2408 1 0 14:02 ? 00:00:00 ora_psp0_ORCL oracle 2410 1 0 14:02 ? 00:00:00 ora_dia0_ORCL oracle 2413 1 0 14:02 ? 00:00:00 ora_mman_ORCL oracle 2415 1 0 14:02 ? 00:00:00 ora_dbw0_ORCL oracle 2417 1 0 14:02 ? 00:00:00 ora_lgwr_ORCL oracle 2419 1 0 14:02 ? 00:00:00 ora_ckpt_ORCL oracle 2421 1 0 14:02 ? 00:00:00 ora_smon_ORCL oracle 2424 1 0 14:02 ? 00:00:00 ora_reco_ORCL oracle 2427 1 0 14:02 ? 00:00:00 ora_mmon_ORCL oracle 2430 1 0 14:02 ? 00:00:00 ora_mmnl_ORCL oracle 2432 1 0 14:02 ? 00:00:00 ora_d000_ORCL oracle 2434 1 0 14:02 ? 00:00:00 ora_s000_ORCL oracle 2525 1 0 14:02 ? 00:00:00 ora_qmnc_ORCL oracle 2539 1 0 14:02 ? 00:00:00 ora_cjq0_ORCL oracle 2555 1 0 14:02 ? 00:00:00 ora_q000_ORCL oracle 2557 1 0 14:02 ? 00:00:00 ora_q001_ORCL $ -
データベースの状態を確認します
$ sudo su - oracle -c "echo 'SELECT status FROM v\$instance;' | sqlplus -s / as sysdba" STATUS ------------ OPEN $
考察
今回、OSをシャットダウン&再起動後に、Oracleを起動する手順と自動で起動する方法を学びました。
参考