Oracleシャットダウン方法


9

アップグレードまたはパッチを実行する前にデータベースをシャットダウンするには、いくつかの方法があります。

shutdown immediate;

または

shutdown abort;
startup restrict;
shutdown immediate;

または

shutdown abort;
startup restrict;
shutdown;

または

alter system checkpoint;
shutdown abort;
startup restrict;
shutdown immediate;

もちろん、他のオプションもあります。どちらを優先する必要がありますか?その理由は?

回答:


12

メンテナンス(またはコールドバックアップ)のためにシャットダウンするときの目的は、データベースを起動時にロールバック/リカバリする必要がない一貫した状態にしておくことです。

shutdown理論的にはこれを実現する3つのSQL * Plus コマンドがあり、これらはすべて、新しいセッションがインスタンスに接続するのを即座に防ぎます。

  1. shutdown normalまたは単にshutdown:すべてのセッションが切断されるのを待ちます。このモードは、接続を開いたままにしない正常に動作するクライアントに依存するため、実際にはほとんど使用されません。これは、shutdown実行中のトランザクションをキャンセルしない唯一のモードでした。
  2. shutdown transactional:現在実行中のトランザクションが完了するとセッションを切断し、新しいトランザクションが開始されないようにします。
  3. shutdown immediate:すべてのセッションをただちに切断し、シャットダウンする前に中断されたトランザクションをロールバックします。切断はすぐに行われますが、中断されたトランザクションがロールバックするのに時間がかかる場合があるため、シャットダウンは行わない場合があります

の4番目のモードはshutdownですshutdown abort。これは、電源コードを引っ張っようなものです-インスタンスが停止し、今クリーンアップを行いません。例のように、通常は後でデータベースを再起動し、その後すぐに完全にシャットダウンする必要があります。コンセプトガイドによると

このモードは、他の形式のシャットダウンが成功しない場合などの緊急事態を想定しています。

あなたが与えるすべての例では、チェックポイント実行の一部として、shutdown [normal]またはshutdown immediateすることが考えられるので、明示的なチェックポイントの回復に要する時間を短縮します

一般的なアドバイス:

  • 使用しないでくださいshutdown normal
  • キャンセルされたトランザクションを最小限にしたい場合shutdown transactional は、在席シャットダウンのみに使用ます(タイムアウトに違反した場合この種のシャットダウンはデータベースのシャットダウンを保証しないため、在席します)。
  • shutdown immediate無人シャットダウンの場合、または現在実行中のトランザクションを気にしない場合に使用します。
  • shutdown abort必要がある場合を除いて、(さらに起動/シャットダウン)は使用しないでください。これは、現在のOracleの多くの以前のバージョンでより一般的でした。他の状況(パッチやアップグレード以外)では、ダウンタイム最小限に抑える必要がある場合、このモードが適切な場合があります。

のデメリットについて具体的に教えてくださいshutdown abort。敵を演じて、電源が引かれたときにOracleが正しく回復することを信頼できる場合shutdown abort、特に高速で、すぐにa startup restrictとaを実行する場合は、中に信頼すべきではありませんshutdown immediate。つまり、オラクルの悲惨な警告に対する裏付けとなる事実はありますshutdown abortか?
リー・リフェル

@Leigh-私が知っている唯一の特定の危険はオンラインログの偶発的なバックアップにshutdown abort関連していますが、それはその後クリーンシャットダウンを実行しない場合にのみです。あなたは私が何を考えて、あなたがやっている知っている場合は完全に安全とみなすことができる-と、「悲惨な警告」などのOracleのポジション数が;-)場合、私はわからないshutdown abort
ジャックはtopanswers.xyz試し言う

3

データベースを停止する最速の方法であるシャットダウンアボートメソッドをお勧めします。シャットダウンの中止後に実行できない操作があります。

  • create controlfile resetlogs(データベースの名前を変更する、ログファイルの名前を変更してデータファイルの名前を変更する)を使用して、データベースの制御ファイルを再作成します。
  • dbms_backup_restoreのプロシージャを使用してdbidを変更します(これは8iでdbidを変更する唯一の方法でした)

どちらの場合も、データベースが破損しており、フルバックアップから復元する必要があります。

9i以降、データベースの名前変更またはdbidの変更は、dbnewidユーティリティで実行できます。私が知る限り、ユーティリティはデータベースが正しくシャットダウンされたかどうかをチェックします。もちろん、制御ファイルを再作成せずに適切なSQLステートメントを実行することで、データファイル、一時ファイル、ログファイルの名前を変更できます。

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