久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

rman備份發生sysaux表空間丟失該怎么辦

144次閱讀
沒有評論

共計 7028 個字符,預計需要花費 18 分鐘才能閱讀完成。

這篇文章將為大家詳細講解有關 rman 備份發生 sysaux 表空間丟失該怎么辦,文章內容質量較高,因此丸趣 TV 小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

今天突發奇想,想玩一下 rman 這個命令,自己虛擬機好久都沒有備份了,所以就來個全備,果不其然給了我一個報錯。

RMAN  backup 
Starting backup at 20-OCT-16
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=134 device type=DISK
RMAN-06169: could not read file header for datafile 2 error reason 1
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of backup command at 10/20/2016 05:19:19
RMAN-06056: could not access datafile 2

然后進入數據庫開始查詢為什么不能備份

SQL  select file#,name from v$datafile;
 FILE#
----------
--------------------------------------------------------------------------------
 1
/u01/oracle/product/oradata/wrc/system01.dbf
 2
/u01/oracle/product/11.2.0/db_1/dbs/MISSING00002
 3
/u01/oracle/product/oradata/wrc/undotbs01.dbf

--------------------------------------------------------------------------------  4 /u01/oracle/product/oradata/wrc/users01.dbf  5 /u01/oracle/product/11.2.0/db_1/dbs/MISSING00005  6 /u01/oracle/product/11.2.0/db_1/dbs/MISSING00006
 6 EXAMPLE  7 RMAN

發現這兩個命令不能告訴我到底哪個表空間丟失了,后來上網查資料

SQL  select a.file#,a.name,b.name from v$datafile a,v$tablespace b where a.ts#=b.ts#
 2 ;
 FILE# NAME NAME
---------- ------------------------------ ------------------------------
 1 /u01/oracle/product/oradata/wr SYSTEM
 c/system01.dbf
 2 /u01/oracle/product/11.2.0/db_ SYSAUX
 1/dbs/MISSING00002
 3 /u01/oracle/product/oradata/wr UNDOTBS1
 c/undotbs01.dbf
 4 /u01/oracle/product/oradata/wr USERS
 c/users01.dbf
 FILE# NAME NAME
---------- ------------------------------ ------------------------------
 5 /u01/oracle/product/11.2.0/db_ EXAMPLE
 1/dbs/MISSING00005
 6 /u01/oracle/product/11.2.0/db_ RMAN
 1/dbs/MISSING00006

6 rows selected.

一查詢丟失三個文件,然后就開始想辦法解決

rman 這個表空間是最好刪的,但是不要忘記刪的時候要

 including contents and datafiles

然后后來開始刪除 example 這個表空間,這個顯示有 index 以及關系所以不能刪除,當時找了下確實有對象,刪除所有對象再刪除這個表空間應該也是可以的,最后到了 sysaux 這個表空間,sysaux 這個表空間雖然是系統表空間,system 表空間的輔助表空間,例如存放一些報告信息等,基本不會對性能有啥影像。

第一種方式

SQL  drop tablespace sysaux including contents and datafiles;
drop tablespace sysaux including contents and datafiles
ERROR at line 1:
ORA-13501: Cannot drop SYSAUX tablespace

第二種方式

SQL  alter database datafile 2 offline drop
 2 ;
Database altered.
SQL  select a.file#,a.name,b.name from v$datafile a,v$tablespace b where a.ts#=b.ts#;
 FILE#
----------
--------------------------------------------------------------------------------
------------------------------
 1
/u01/oracle/product/oradata/orcl/system01.dbf
SYSTEM
 2
/u01/oracle/product/oradata/orcl/sysaux01.dbf
SYSAUX
 FILE#
----------
--------------------------------------------------------------------------------
------------------------------
 3
/u01/oracle/product/oradata/orcl/undotbs01.dbf
UNDOTBS1
 4
/u01/oracle/product/oradata/orcl/users01.dbf
 FILE#
----------
--------------------------------------------------------------------------------
------------------------------
USERS
 5
/u01/oracle/product/oradata/orcl/example01.dbf
EXAMPLE

可以看出來明顯都是沒有刪掉的,這個時候開始思考這個 sysaux 是不是寫入控制文件,所以你不管怎么刪都是刪不掉,后來就開始想通過初始化控制文件,看能不能成功。

先創建腳本

SELECT d.VALUE
 ||  / 
 || LOWER (RTRIM (i.INSTANCE, CHR (0)))
 ||  _ora_ 
 || p.spid
 ||  .trc  trace_file_name
 FROM (SELECT p.spid
 FROM v$mystat m, v$session s, v$process p
 WHERE m.statistic# = 1 AND s.SID = m.SID AND p.addr = s.paddr) p,
 (SELECT t.INSTANCE
 FROM v$thread t, v$parameter v
 WHERE v.NAME =  thread 
 AND (v.VALUE = 0 OR t.thread# = TO_NUMBER (v.VALUE))) i,
 (SELECT VALUE
 FROM v$parameter
 WHERE NAME =  user_dump_dest ) d
/

在 Linux 下執行該腳本

SQL  @gettrcname
TRACE_FILE_NAME
---------------------------------------------------------------------------------------------------
/opt/oracle/admin/eygle/udump/eygle_ora_8415.trc
alter database backup controlfile to trace;

通過看這個 eygle_ora_8415.trc 文件,編輯重新創建控制文件

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE  ORCL  RESETLOGS noARCHIVELOG
 MAXLOGFILES 5
 MAXLOGMEMBERS 3
 MAXDATAFILES 100
 MAXINSTANCES 1
 MAXLOGHISTORY 1168
LOGFILE
 GROUP 1  /u01/oracle/product/oradata/wrc/redo01.log  SIZE 50M BLOCKSIZE 512,
 GROUP 2  /u01/oracle/product/oradata/wrc/redo02.log  SIZE 50M BLOCKSIZE 512,
 GROUP 3  /u01/oracle/product/oradata/wrc/redo03.log  SIZE 50M BLOCKSIZE 512,
 GROUP 4  /u01/oracle/product/oradata/wrc/redo04.rdo  SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  /u01/oracle/product/oradata/wrc/system01.dbf ,
  /u01/oracle/product/11.2.0/db_1/dbs/sysaux02.dbf ,
  /u01/oracle/product/oradata/wrc/undotbs01.dbf ,
  /u01/oracle/product/oradata/wrc/users01.dbf ,
  /u01/oracle/product/11.2.0/db_1/dbs/sysaux03.dbf ,
  /u01/oracle/product/11.2.0/db_1/dbs/sysaux04.dbf 
CHARACTER SET ZHS16GBK
;

進入 sqlplus 跑這個腳本,然后開始進行數據庫的恢復,突然發現又來個錯誤

SQL  RECOVER DATABASE
ORA-00283: recovery session canceled due to errors
ORA-01610: recovery using the BACKUP CONTROLFILE option must be done

Database altered.

1. recover database using backup controlfile

如果丟失當前控制文件,用冷備份的控制文件恢復的時候,用來告訴 oracle,不要以 controlfile 中的 scn 作為恢復的終點;

2. recover database until cancel

如果丟失 current/active redo 的時候,手動指定終點。

3. recover database using backup controlfile until cancel;

如果丟失當前 controlfile 并且 current/active redo 都丟失,會先去自動應用歸檔日志, 可以實現最大的恢復;

4. recover database until cancel using backup controlfile;

結果如下:

如果控制文件丟失,restore 備份的控制文件后,則必須使用 using backup controlfile 選項。而 until cancel 則是不完全恢復,即 current/active redo 丟失,或者從 restore 數據庫后某個歸檔文件缺失,則終止。

結論:

1、適用于 restore 舊的控制文件,且歸檔日志和 cuurrent/active redo 都沒有丟失情況。如果一切歸檔日志和在線日志完好,可以不丟失數據。類似于 recover database

2、當前控制文件未丟失(不需要 restore 舊的控制文件),此時有歸檔日志或者 current/active log 有丟失情況下,則終止。最大可能恢復數據

3、4: 我在 oracle 10.2.0.4 環境下測試效果是相同的,即適用于 restore 舊的控制文件,在恢復到控制文件備份那刻后,系統會提示應用控制文件備份后的歸檔日志,如果沒有則停止。也是最大可能的恢復數據。

SQL  alter database archivelog;
Database altered.
SQL  recover database using backup controlfile until cancel;
ORA-00279: change 1995899 generated at 10/20/2016 07:46:55 needed for thread 1
ORA-00289: suggestion :
/u01/oracle/product/flash_recovery_area/ORCL/archivelog/2016_10_20/o1_mf_1_47_%u
_.arc
ORA-00280: change 1995899 for thread 1 is in sequence #47

Specify log: {RET =suggested | filename | AUTO | CANCEL} /u01/oracle/product/oradata/wrc/redo04.rdo ORA-00310: archived log contains sequence 45; sequence 47 required ORA-00334: archived log:  /u01/oracle/product/oradata/wrc/redo04.rdo
SQL  /u01/oracle/product/oradata/wrc/redo04.rdo SP2-0734: unknown command beginning  /u01/oracl...  - rest of line ignored. SQL  recover database using backup controlfile until cancel; ORA-00279: change 1995899 generated at 10/20/2016 07:46:55 needed for thread 1 ORA-00289: suggestion : /u01/oracle/product/flash_recovery_area/ORCL/archivelog/2016_10_20/o1_mf_1_47_%u _.arc ORA-00280: change 1995899 for thread 1 is in sequence #47
Specify log: {RET =suggested | filename | AUTO | CANCEL} /u01/oracle/product/oradata/wrc/redo03.log Log applied. Media recovery complete.

發現 control file 里面找不到 sequence#47,然后只能一個一個 redo 日志的位置來試,最后成功了

SQL  alter database open;
alter database open
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open

Database altered.

最后開啟數據庫,需要制定是 resetlogs 還是 noresetlogs 模式下,但是發現還是不行,sysaux 還是依舊存在,說明 sysaux 丟失是不能挽救的,需要重新創庫。

關于 rman 備份發生 sysaux 表空間丟失該怎么辦就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-20發表,共計7028字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 安溪县| 晋中市| 公安县| 曲水县| 武城县| 宜丰县| 利川市| 兴海县| 太仓市| 乌拉特中旗| 望奎县| 石景山区| 闸北区| 山西省| 兴仁县| 永泰县| 航空| 禹城市| 阳山县| 湟源县| 汉源县| 张家口市| 宿迁市| 比如县| 基隆市| 厦门市| 旌德县| 六盘水市| 将乐县| 集安市| 德州市| 拜泉县| 牙克石市| 宁乡县| 南陵县| 永清县| 吴堡县| 保山市| 张家港市| 隆德县| 洞口县|