- Oracle Cloud
- Exadata
- Oracle Database
ExaDB-DとExaDB-XSで実現!クロスサービスData Guardでコスト最適化
2025年8月度のOracle Cloud Infrastructureサービスアップデートにて、ExaDB-DとExaDB-XS間でData Guard構成を構築できるようになりました。本記事では実際にこのクロスサービスData Guard構成の検証と検証結果を通してわかったメリットをご紹介します。
|
|
SHUTDOWN IMMEDIATEコマンドでのデータベースのシャットダウンが、「終わらない」、「データベースが停止しない」、「タイムアウトエラー(ORA-01013等)が発生し失敗する」というお問い合わせをいただくことがあります。
SHUTDOWN IMMEDIATEは、「IMMEDIATE(即時の)」の名の通り、即時に停止されそうに思えますが、処理実行中のアクティブなセッションが存在した場合は、処理の完了を待機するのです。この待機が1時間を超えるとSHUTDOWN IMMEDIATEはタイムアウトしてしまい、「ORA-01013: ユーザーによって現行の操作の取消しがリクエストされました」が記録されます。
そこで、SHUTDOWN IMMEDIATEの実行前には、予めセッション情報を確認することをおすすめしています。今回はその点について詳しくご紹介します。
管理者ガイド では、SHUTDOWN IMMEDIATEについて次のように説明されています。
SHUTDOWN IMMEDIATEは既存の接続を全て切断しますが、SQL実行中やロールバック中などのアクティブなセッションが存在すると、その完了を待機します。
待機時間が1時間を超えると、SHUTDOWN IMMEDIATEはタイムアウトして失敗します。セッションが残っていることが原因でシャットダウンがタイムアウトした場合、プロンプトにはORA-01013が返り、アラートログには以下のようにメッセージが出力されます。
Wed Mar 22 04:19:12 2017
Shutting down instance (immediate)
Stopping background process SMCO
Shutting down instance: further logons disabled
Wed Mar 22 04:19:13 2017
Stopping background process CJQ0
Stopping background process QMNC
Stopping background process MMNL
Stopping background process MMON
License high water mark = 3
Wed Mar 22 04:24:15 2017
Active process 7628 user 'SYSTEM' program 'ORACLE.EXE (SHAD)' ★
SHUTDOWN: waiting for logins to complete.
このログ出力で示されたセッションが実行している処理を確認することは、新規セッションが既に接続できない状態であるため困難です。
そのため、SHUTDOWNコマンドを実行する前に、セッションの残留や処理実行中のセッションが存在しないか、予め確認しておくことをおすすめします。
シャットダウンを正常に完了させるために、事前にアクティブなセッションが存在しないか確認しましょう。存在していた場合は処理内容を確認した上で、対応を検討します。下記のSQLで、現在データベースに存在しているセッションや実行中のSQLを確認できます。
SQL> SELECT
2 sid,
3 serial#,
4 username,
5 status,
6 machine,
7 program,
8 sql_id
9 FROM v$session
10 WHERE username IS NOT NULL
11 and sid != USERENV('SID');
SID SERIAL# USERNAME STATUS MACHINE PROGRAM SQL_ID
---------- ---------- ----------- -------- -------------------- ------------- -------------
131 15 SCOTT INACTIVE ACE\B1401-02-25-W sqlplus.exe
197 5 SCOTT ACTIVE ACE\B1401-02-25-W sqlplus.exe 44ff5y395s8na
この状態で、SHUTDOWN IMMEDIATEを実行した場合、SID:131は「STATUS = INACTIVE」であり、強制的に切断されるため対処は不要です。しかし、SID:197は「STATUS = ACTIVE」であり、SQL_ID:44ff5y395s8naのSQLを実行しているため、この処理の完了を待つか手動で停止する必要があります。
SQL_ID:44ff5y395s8naの処理内容を確認するには次のSQLを実行します。
SQL> SELECT
2 sql_text
3 FROM v$sqltext
4 WHERE sql_id='44ff5y395s8na';
SQL_TEXT
----------------------------------------------------------------
update test set col = '2' where col='1'
SQL文を確認の上で処理の終了を待つ、または停止しても問題ない処理であれば「ALTER SYSTEM KILL SESSION」で停止し、Activeなセッションが存在しない状態でSHUTDOWN IMMEDIATEを実行しましょう。
※「ALTER SYSTEM KILL SESSION」のIMMEDIATE句はORACLE 10g以降のオプションです。
SQL> ALTER SYSTEM KILL SESSION '&SID,&SERIAL#' IMMEDIATE;
上記SQL実行後も該当のセッションがKILLされない場合は、SPIDを確認してOSコマンドでプロセスをKILLすることも検討しましょう。
SQL> SELECT
2 s.sid,
3 s.serial#,
4 p.spid,
5 s.username,
6 s.status,
7 s.machine,
8 s.program,
9 s.sql_id
10 FROM v$process p, v$session s
11 WHERE p.addr=s.paddr
12 and s.username IS NOT NULL
13 and s.sid != USERENV('SID');
SID SERIAL# SPID USERNAME STATUS MACHINE PROGRAM SQL_ID
---------- ---------- ------- ---------- -------- ----------------- -------------- -------------
197 36743 9352 SCOTT INACTIVE ACE\B1702-53-01 sqlplus.exe 44ff5y395s8na
SHUTDOWN IMMEDIATEに時間がかかる、データベースが停止しないというお問い合わせをいただくことは少なくありませんが、タイムアウト後にお問い合わせをいただいても、原因となったセッションや処理内容を特定できない場合があります。
今回ご紹介した方法により、SHUTDOWN IMMEDIATE実行前に予めセッション情報をご確認いただくことで予防ができます。データベース停止の際にはぜひご確認をお願いします。
|
|---|
アシスト北海道
2014年、設立されて間もないアシスト北海道に入社し、以来サポートセンターの立ち上げに従事。現在は夜間休日のOracle製品担当サポートリーダーとして重篤障害と格闘する毎日。アシスト北海道の2017年度従業員代表としても活動中。
■本記事の内容について
本記事に記載されている製品およびサービス、定義及び条件は、特段の記載のない限り本記事執筆時点のものであり、予告なく変更になる可能性があります。あらかじめご了承ください。
■商標に関して
・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
2025年8月度のOracle Cloud Infrastructureサービスアップデートにて、ExaDB-DとExaDB-XS間でData Guard構成を構築できるようになりました。本記事では実際にこのクロスサービスData Guard構成の検証と検証結果を通してわかったメリットをご紹介します。
Oracle Database 23aiでTCPS通信を刷新!より安全なTLS 1.3をサポートし、クライアントウォレット不要の一方向TLSも実装。大規模システムでのセキュア通信導入・運用コストを劇的に削減する方法を解説します。
「Oracle Exadata ExascaleをOracle Cloud Infrastructure以外のクラウドサービスで使えないだろうか?」と考える方もいらっしゃるかと思います。本記事では他のクラウドサービスプロバイダーでのExascaleの使い方について検証結果をとおしてご紹介します。