Oracle 11をすばやく起動/シャットダウンする方法


9

Oracle DBデーモン(テストマシンにインストールされたOracle 11.2)を適切に起動/シャットダウンする最も速い方法は何でしょうか。

OCI / Pro * C APIを使用するC / C ++プログラムに必要です。

PostgreSQLの起動速度に慣れており、デーモンがテストケースでのみ(オンデマンドで)起動される仮想マシンで実行されるため、これが必要です。

現在私はそれをこのようにスクリプト化しています-スタートアップ:

sqlplus /nolog <<EOF
connect / as sysdba
startup
quit
EOF
lsnrctl start
emctl start dbconsole

そしてシャットダウン:

emctl stop dbconsole
lsnrctl stop
sqlplus /nolog <<EOF
connect / as sysdba
shutdown
quit
EOF

これは機能します-プログラムは期待どおりに機能しますが、この手順は非常に低速です。

Oracle DBはCentOS 6.3で動作し、無料(ビールのまま)の「標準バージョン」です。

回答:


8

Oracleのインストールに付属しているdbstart/ dbshutスクリプトを使用できます。これらはで入手できます$ORACLE_HOME/bin

新規インストール後、/etc/oratabファイルを編集する必要があります:

# cat /etc/oratab
# format: $ORACLE_SID:$ORACLE_HOME:N|Y
my_sid:/home/juser/app/juser/product/11.2.0/dbhome_1:N
# sed -i 's/:N$/:Y/' /etc/oratab
# grep my_sid /etc/oratab
my_sid:/home/juser/app/juser/product/11.2.0/dbhome_1:Y

その後、次のようなスクリプトを使用できます。

$ whoami
juser
$ dbstart $ORACLE_HOME
$ # execute DB jobs ...
$ dbshut $ORACLE_HOME

dbstart Pro * C / OCIプログラムに必要なすべてを起動します。

dbstart/の使用dbshutは、質問で述べたカスタムメソッドよりも優れています。

method                time    called tools
―――――――――――――――――――――――――――――――――――――――――――――――――――――
dbstart              5.7 s    lsnrctl, sqlplus
dbshut               5.7 s    lsnrctl, sqlplus
custom startup      27.9 s    lsnrctl, sqlplus, emctl
custom shutdown     31.0 s    lsnrctl, sqlplus, emctl

(Core i7 / 2.8GHzシステムでの時間、ハードディスクの回転が遅い。)

dbstart / dbshutの仕組み

dbstart $ORACLE_HOME$コールは、基本的に同等です。

$ lsnrctl start
$ echo -e 'connect / as sysdba\nstartup\nquit'| sqlplus /nolog

そしてa dbshut $ORACLE_HOME$は基本的に以下と同等です:

$ lsnrctl stop
$ echo -e 'connect / as sysdba\nshutdown\nquit'| sqlplus /nolog

(を介してすべてがシャットダウンされているかどうかを確認できますps aux | grep 'tnsl\|ora'

コマンドの順序が重要であることに注意してください。つまりlsnrctl start、sqlplus-startupコマンドの後にが実行された場合、Pro * C / OCIプログラムは、使用できないTNSリスナーについてまだ文句を言います。

そして、これは問題のコマンドシーケンスの問題ですemctl start。TNSリスナーのセットアップ部分が修正されているため、間違った順序で回避するだけです。

また、Pro * C / OCIプログラムを実行する場合、EMCTLサービスは必要ありません。


1

なぜそれが必要なのですか?理由は何ですか?シャットダウンの場合、3つのオプションがあります。

  • プレーンshutdown-セッション終了を待つ
  • shutdown immediate -ロールバックおよびセッションの終了(ロールバックの終了を待機)
  • shutdown abort -すべてを殺します-通常、データベースは起動時に回復を実行する必要があります。

PS:テスト専用のデータベースが必要な場合は、Enterprise Managerを実行する必要はないでしょう。Oracle dbstart/ dbshutスクリプトを使用します。EMが本当に必要な場合は、バックグラウンドで起動してください。


0

ヤシル-arsanukaev:あなたは自分のVMがディスクにその状態を保存(一時停止)一時停止することはできますか?

colin-t-hart:これがテストマシンの場合は、スナップショットを作成します。マシンを起動し、を使用してOracleを起動しますdbstart。完了したらマシンを強制的にオフにして、スナップショットにロールバックします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.