2010-01-07
ユーザ管理の完全リカバリ
Oracle Database でユーザ管理、つまり rman を使わないでデータファイル障害から完全リカバリする手順のまとめ。
リカバリ方法の種類
1. クローズデータベースのリカバリ
2.1. オープンデータベースのリカバリ(障害発覚時にインスタンスは起動)
2.2. オープンデータベースのリカバリ(障害発覚時にインスタンスは停止)
リカバリ手順
0. リカバリが必要なデータファイルを確認する
$ sqlplus / as sysdba SQL> startup mount SQL> set linesize 200 col df# format 999 col df_name format a50 col tbsp_name format a7 col status format a7 col error format a20 col change# format 99999999 select r.file# as df#, d.name as df_name, t.name as tbsp_name, d.status, r.error, r.change#, r.time from v$recover_file r, v$datafile d, v$tablespace t where t.ts# = d.ts# and d.file# = r.file#; DF# DF_NAME TBSP_NA STATUS ERROR CHANGE# TIME ---- -------------------------------------------------- ------- ------- -------------------- --------- ---------- 1 /u01/app/oracle/oradata/orcl/system01.dbf SYSTEM SYSTEM FILE NOT FOUND 0 2 /u01/app/oracle/oradata/orcl/undotbs01.dbf UNDOTBS ONLINE FILE NOT FOUND 0
1. クローズデータベースのリカバリ
- 起動している場合はインスタンスを停止する。
SQL> shutdown immediate
$ cp /u01/app/oracle/oradata/orcl.org/system01.dbf /u01/app/oracle/oradata/orcl/ $ cp /u01/app/oracle/oradata/orcl.org/undotbs01.dbf /u01/app/oracle/oradata/orcl/
- データベースをマウントする。
$ sqlplus / as sysdba
SQL> startup mount
$ sqlplus -s / as sysdba <<EOF set pagesize 0 set head off set feed off spool onlineall.sql select 'alter database datafile '''||name||''' online;' from v\$datafile; spool off EOF $ sqlplus / as sysdba SQL> @onlineall
SQL> set autorecovery on SQL> recover database
- データベースをオープンする。
SQL> alter database open;
2.1. オープンデータベースのリカバリ(障害発覚時にインスタンスは起動)
- 破損したデータファイルをオフラインにする。
$ sqlplus / as sysdba SQL> alter database datafile '/u01/app/oracle/oradata/orcl/user01.dbf' offline;
- データファイルがオフラインになっていることを確認する。
SQL> set linesize 200 SQL> col name for a60 SQL> select name,status from v$datafile; NAME STATUS ------------------------------------------------------------ ------- /u01/app/oracle/oradata/orcl/system01.dbf SYSTEM /u01/app/oracle/oradata/orcl/undotbs01.dbf ONLINE /u01/app/oracle/oradata/orcl/sysaux01.dbf ONLINE /u01/app/oracle/oradata/orcl/user01.dbf RECOVER
$ cp /u01/app/oracle/oradata/orcl.org/user01.dbf /u01/app/oracle/oradata/orcl/
$ sqlplus / as sysdba SQL> set autorecovery on SQL> recover datafile '/u01/app/oracle/oradata/orcl/user01.dbf';
- データファイルをオンラインに戻す。
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/user01.dbf' online;
- データファイルがオンラインになっていることを確認する。
SQL> set linesize 200 SQL> col name for a60 SQL> select name,status from v$datafile; NAME STATUS ------------------------------------------------------------ ------- /u01/app/oracle/oradata/orcl/system01.dbf SYSTEM /u01/app/oracle/oradata/orcl/undotbs01.dbf ONLINE /u01/app/oracle/oradata/orcl/sysaux01.dbf ONLINE /u01/app/oracle/oradata/orcl/user01.dbf ONLINE
2.2. オープンデータベースのリカバリ(障害発覚時にインスタンスは停止)
- データベースをマウントする。
$ sqlplus / as sysdba
SQL> startup mount
- 破損したデータファイルををオフラインにする。
$ sqlplus / as sysdba SQL> alter database datafile '/u01/app/oracle/oradata/orcl/user01.dbf' offline;
- データファイルがオフラインになっていることを確認する。
SQL> set linesize 200 SQL> col name for a60 SQL> select name,status from v$datafile; NAME STATUS ------------------------------------------------------------ ------- /u01/app/oracle/oradata/orcl/system01.dbf SYSTEM /u01/app/oracle/oradata/orcl/undotbs01.dbf ONLINE /u01/app/oracle/oradata/orcl/sysaux01.dbf ONLINE /u01/app/oracle/oradata/orcl/user01.dbf RECOVER
- データベースをオープンする。
SQL> alter database open;
$ cp /u01/app/oracle/oradata/orcl.org/user01.dbf /u01/app/oracle/oradata/orcl/
$ sqlplus / as sysdba SQL> set autorecovery on SQL> recover datafile '/u01/app/oracle/oradata/orcl/user01.dbf';
「Specify log: {<RET>=suggested | filename | AUTO | CANCEL}」と言ってきたら、「AUTO<Enter>」と入力する。
- データファイルをオンラインに戻す。
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/user01.dbf' online;
- データファイルがオンラインになっていることを確認する。
SQL> set linesize 200 SQL> col name for a60 SQL> select name,status from v$datafile; NAME STATUS ------------------------------------------------------------ ------- /u01/app/oracle/oradata/orcl/system01.dbf SYSTEM /u01/app/oracle/oradata/orcl/undotbs01.dbf ONLINE /u01/app/oracle/oradata/orcl/sysaux01.dbf ONLINE /u01/app/oracle/oradata/orcl/user01.dbf ONLINE
参考
トラックバック - http://d.hatena.ne.jp/yohei-a/20100107/1262822878
リンク元
- 39 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=I6g&q=bash+引数+$&btnG=検索&lr=lang_ja&aq=f&oq=
- 39 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GGLL_jaJP350JP350&q=oracle+latche
- 12 http://www.google.co.jp/search?sourceid=navclient&aq=t&hl=ja&ie=UTF-8&rlz=1T4GGIH_jaJP241JP242&q=linux+32bit+最大メモリ
- 10 http://www.google.co.jp/search?hl=ja&client=firefox-a&channel=s&rls=org.mozilla:ja:official&q=sql+ダブルクォート&btnG=検索&lr=&aq=f&oq=
- 6 http://www.google.co.jp/search?client=firefox-a&rls=org.mozilla:ja:official&channel=s&hl=ja&source=hp&q=awr 出力&lr=&btnG=Google+検索
- 6 http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox-a&rls=org.mozilla:ja:official&hs=ZQ2&ei=rjlFS6TaFcugkQX2mZXvAg&sa=X&oi=spell&resnum=0&ct=result&cd=1&ved=0CAYQBSgA&q=emacs+oracle+Database&spell=1
- 5 http://d.hatena.ne.jp/notify-NotifyUser_POST_NG_CATEGORY?aHR0cDovL2QuaGF0ZW5hLm5lLmpwL3lvaGVpLWEvMjAwOTA4MjQvMTI1MTExNDE3Mw==
- 5 http://s.luna.tv/search.aspx?client=lunascape&s=0&gl=jp&hl=ja&q=ORU-10027
- 5 http://www.google.co.jp/search?hl=ja&safe=off&client=firefox-a&rlz=1R1GGGL_ja___JP358&q=win32+アプリケーション コマンドライン引??%B
- 5 http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=Solaris+vmware&num=50