Oracle中心にIT全般の技術情報を気が向くままに書いています。他にLinux、仮想化技術(VMWare)やトラブルに役立つ情報などがあります。

スポンサーサイトサーバ・パラメータ・ファイル障害を復旧する(RMAN編)


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
Oracle Recovery Manager(RMAN)の「サーバ・パラメータ・ファイル障害」時のリカバリを行いたいと思います。

サーバ・パラメータ・ファイルを手動でバックアップしている場合は、バックアップから所定の場所にコピーするだけでリカバリは完了です。

バックアップ自体を取得していなかった場合は、デフォルト値以外のパラメータ情報がアラートログに出力されるため、静的なパラメータファイルを手動で作成し、復旧するという方法もあります。

今回は、RMANバックアップを利用したリカバリ手順ですが、手順は少々面倒です。

利用するバックアップファイルについては、
記事「【RMAN】バックアップ取得(バックアップセット形式)
で取得したファイルです。


【環境】
・データベース:Oracle 12cR1
・グローバル・データベース名:orcl
・プラガブル・データベース名:pdborcl
・データベース・ログ・モード:アーカイブ・モード
・パラメータファイル:サーバ・パラメータ・ファイル(spfile)運用


【関連記事】





疑似障害を発生させる
ddコマンドでサーバ・パラメータ・ファイルを破損させます。
[oracle@dg01 dbs]$ dd if=/dev/zero of=$ORACLE_HOME/dbs/spfileorcl.ora bs=1024k count=10 10+0 records in 10+0 records out 10485760 bytes (10 MB) copied, 0.0107372 s, 977 MB/s

SQL*Plusでデータベースに接続します。
[oracle@dg01 oracle]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.1.0 Production on 月 3月 31 07:34:44 2014 Copyright (c) 1982, 2013, Oracle. All rights reserved. Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options に接続されました。

サーバ・パラメータファイルを利用するようなSQLを実行します。
SQL> alter system set memory_target=1500M scope=both; alter system set memory_target=1500M scope=both * 行1でエラーが発生しました。: ORA-03113: 通信チャネルでend-of-fileが検出されました プロセスID: 13096 セッションID: 259、シリアル番号: 131

この時点で、データベースがサーバ・パラメータ・ファイルの破損に気づき、データベースのプロセスを強制終了しました。

下記コマンドによりプロセスが全て終了していることが分かります。
[oracle@dg01 dbs]$ ps -ef|grep ora_ oracle 13100 9044 0 08:48 pts/1 00:00:00 grep ora_


データベースを復旧する
(1) 障害原因の診断
SQL*Plusで接続します。
[oracle@dg01 dbs]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.1.0 Production on 月 3月 31 08:48:59 2014 Copyright (c) 1982, 2013, Oracle. All rights reserved. アイドル・インスタンスに接続しました。

「nomount」指定でデータベースを起動してみます。
SQL> alter database nomount; alter database nomount * 行1でエラーが発生しました。: ORA-01034: ORACLE not available プロセスID: 0 セッションID: 0、シリアル番号: 0

上記のように「nomount」起動に失敗しました。
この時点でサーバ・パラメータ・ファイルの障害を疑います。


(2) 障害を復旧する
RMANのバックアップからサーバ・パラメータ・ファイルのリストアを行うためには、まず「DBID」を確認します。
「DBID」は、RMANバックアップファイル名からも確認できます。
[oracle@dg01 backup]$ ls -ltr 合計 3125584 -rw-r-----. 1 oracle oinstall 1533026304 3月 31 08:21 2014 bs_3vp4hqs5_1_1 -rw-r-----. 1 oracle oinstall 871571456 3月 31 08:22 2014 bs_40p4hqt8_1_1 -rw-r-----. 1 oracle oinstall 777142272 3月 31 08:22 2014 bs_41p4hqu1_1_1 -rw-r-----. 1 oracle oinstall 198656 3月 31 08:22 2014 bs_42p4hqug_1_1 -rw-r-----. 1 oracle oinstall 18644992 3月 31 08:22 2014 ctl_c-1371396053-20140331-17

上記の「ctl~」というファイル名でバックアップしています。ファイル名の一部に「DBID」を含むように設定しており、「DBID」が「1371396053」であることが分かります。

RMANで接続します。
[oracle@dg01 ~]$ rman target / Recovery Manager: Release 12.1.0.1.0 - Production on 月 3月 31 08:52:18 2014 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved. ターゲット・データベースに接続しました(起動していません)。

「set DBID」でDBIDを指定します。
RMAN> set DBID 1371396053 実行コマンド: SET DBID

「startup force nomount」を実行します。
※SQL*Plusでは本コマンドは実行できません。RMANで実行してください。
RMAN> startup force nomount; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: startupコマンドが03/31/2014 08:57:09で失敗しました RMAN-04014: 起動に失敗しました: ORA-01506: missing or illegal database name

通常は上記で起動できるのですが、今回はエラーが発生して起動できませんでした。
原因は、サーバ・パラメータ・ファイルが壊れて残っていることによります。(壊れ方によってエラーメッセージは変化すると思います。)

このようなエラーが発生した場合は、破損してしまっているサーバ・パラメータ・ファイルを削除してしまいます。
[oracle@dg01 backup]$ rm $ORACLE_HOME/dbs/spfileorcl.ora

RMANに接続します。
[oracle@dg01 ~]$ rman target / Recovery Manager: Release 12.1.0.1.0 - Production on 月 3月 31 09:00:15 2014 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved. ターゲット・データベースに接続しました(起動していません)。

「set DBID」でDBIDを指定します。
RMAN> set DBID=1371396053 実行コマンド: SET DBID

再び「startup force nomount」を実行します。
※SQL*Plusでは本コマンドは実行できません。RMANで実行してください。
RMAN> startup force nomount; 起動に失敗しました: ORA-01078: failure in processing system parameters LRM-00109: ??????????????????????????????'/u01/app/oracle/product/12.1.0/dbhome_1/dbs/initorcl.ora'????????????????????????????????? SPFILE取得用のパラメータ・ファイルのないOracleインスタンスを起動しています Oracleインスタンスが起動しました システム・グローバル領域の合計は、 1068937216バイトです。 Fixed Size 2296576バイト Variable Size 281019648バイト Database Buffers 780140544バイト Redo Buffers 5480448バイト

上記はエラーが発生していますが、Oracleインスタンスが起動できています。
これでOKです。

「restore spfile」コマンドで、制御ファイルのバックアップピースファイルを指定します。
今回はRMANの自動バックアップですので、制御ファイルと一緒にサーバ・パラメータ・ファイルについてもバックアップが取得されています。
RMAN> restore spfile from '/backup/ctl_c-1371396053-20140331-17'; restoreが開始されました(開始時間: 14-03-31) チャネル: ORA_DISK_1が割り当てられました チャネルORA_DISK_1: SID=11 デバイス・タイプ=DISK チャネルORA_DISK_1: 自動バックアップ/backup/ctl_c-1371396053-20140331-17からSPFILEをリストアしています チャネルORA_DISK_1: 自動バックアップからのSPFILEのリストアが完了しました restoreが完了しました(完了時間: 14-03-31)

リカバリが成功したため、データベースを起動します。

SQL*Plusで接続します。
[oracle@dg01 dbs]$ sqlplus / as sysdba SQL*Plus: Release 12.1.0.1.0 Production on 月 3月 31 09:07:20 2014 Copyright (c) 1982, 2013, Oracle. All rights reserved. Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options に接続されました。

データベース起動前に、一旦、停止します。
SQL> shutdown immediate ORA-01507: データベースがマウントされていません。 ORACLEインスタンスがシャットダウンされました。

データベースを起動します。
SQL> startup ORACLEインスタンスが起動しました。 Total System Global Area 1570009088 bytes Fixed Size 2288776 bytes Variable Size 973079416 bytes Database Buffers 587202560 bytes Redo Buffers 7438336 bytes データベースがマウントされました。 データベースがオープンされました。

データベースが正常に起動し、リカバリが成功しました。




以上です。




トラックバックURL

この記事にトラックバックする(FC2ブログユーザー)



前ページへ:データファイル障害を復旧する(RMAN編)
次ページへ:WindowsでAndroidを動かす(Andy編)

ページのトップへ

必ずお読みください

本ブログ記事をご利用になって生じたいかなる損害についても当方は一切責任を負いません。
ご利用は自己責任でお願いします。(^―^)

広 告





ブログランキング/その他


ビジネスブログ100選

ブログランキング・にほんブログ村へ
blogramで人気ブログを分析




最新トラックバック


RSSリンクの表示

QRコード

QR

アクセスカウンター

ユニーク:
トータル:


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。