0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracleデータベースの起動を試してみた

Last updated at Posted at 2026-01-21

背景・目的

前回、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 (起動しない)
  • 下記の用途で利用される

    1. システム上の全Oracleインスタンスを一覧管理
    2. 起動/停止スクリプト(dbstart/dbshut)が参照
    3. 複数のOracleインスタンスがある場合の識別

実践

手動起動

  1. EC2を起動します

  2. セッションマネージャーで接続します

    $ whoami
    ssm-user
    $
    
  3. プロセスを確認します

    $ ps -ef | grep -E "pmon|tnslsnr" | grep -v grep
    $
    
  4. Oracleユーザに切り替えます

    $ sudo su - oracle
    Last login: Wed Jan 14 12:42:24 UTC 2026 on pts/1
    $
    $ whoami
    oracle
    $
    
  5. Oracleの環境変数を設定します

    $ export ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
    $ export ORACLE_SID=ORCL
    $ export PATH=$ORACLE_HOME/bin:$PATH
    

リスナーの起動

  1. 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
    $
    
  2. リスナーを確認します
    $ 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
    $
    

データベースの起動

  1. 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>
    
  2. ステータスを確認します。まだこの状態ではデータベースは起動されていません

    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>
    
  3. データベースを起動します。(STARTUP; は一気に OPEN 状態まで起動します。)

    • 下記がわかります
      1. インスタンスの起動 (メモリ構造の初期化)
      2. データベースのマウント (制御ファイルの読み込み)
      3. データベースのオープン (データファイルと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>
    
  4. ステータスがOpenになりました

    SQL> SELECT status FROM v$instance;
    
    STATUS
    ------------
    OPEN
    
    SQL> l
    
  5. 他の情報も確認します

    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>
    

プロセスの確認

  1. sqlplusを抜けます

    SQL> exit
    Disconnected from Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
    $
    
  2. あらためて、プロセスを確認します

    $ 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を起動するように設定します。

インスタンスを停止

  1. oracleユーザにスイッチします

    $ sudo su - oracle
    Last login: Wed Jan 21 13:08:44 UTC 2026 on pts/0
    $
    
  2. 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>
    
  3. シャットダウンします

    SQL> SHUTDOWN IMMEDIATE;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL>
    
  4. sqlplus を抜けます

    SQL> exit
    Disconnected from Oracle Database 11g Release 11.2.0.1.0 - 64bit Production
    $
    

リスナーを停止

  1. リスナーを停止します
    $ 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
    $
    
  2. プロセスは停止されました
    $  ps -ef | grep -E "ora_|tnslsnr" | grep -v grep
    $
    

サービスを有効化

  1. rootユーザになります

    $ sudo su -
    Last login: Wed Jan 14 09:28:48 UTC 2026 on pts/1
    # whoami
    root
    #
    
  2. 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
    #
    
  3. サービスを有効化します

    # systemctl daemon-reload
    # systemctl enable oracle.service
    # systemctl start oracle.service
    
  4. 確認します

    # 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.
    #
    
  5. プロセスを確認します

    # 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
    #
    
  6. sqlplusで接続テストをします。ステータスがOpenになりました

    # su - oracle -c "echo 'SELECT status FROM v\$instance;' | sqlplus -s / as sysdba"
    
    STATUS
    ------------
    OPEN
    
    #
    

再起動後の自動的な確認

  1. 再起動します

    # sudo reboot
    
    Session terminated, killing shell... ...killed.
    Terminated
    $
    
  2. あらためて、セッションマネージャーで接続します

  3. 起動の時間を確認します。確かに再起動されました

    $ uptime -s
    2026-01-21 14:02:08
    $ uptime -p
    up 2 minutes
    $
    $ who -b
    system boot  2026-01-21 14:02
    $
    
  4. プロセスは起動されています

    $ 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
    $
    
  5. データベースの状態を確認します

    $ sudo su - oracle -c "echo 'SELECT status FROM v\$instance;' | sqlplus -s / as sysdba"
    
    STATUS
    ------------
    OPEN
    
    $
    

考察

今回、OSをシャットダウン&再起動後に、Oracleを起動する手順と自動で起動する方法を学びました。

参考

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?