快播日本黄色片下载
聯系方式 Contact

聊城科達信息技術有限公司

地址:山東省聊城市東昌府區威尼斯購物公園南首6路

電話:0635-8185888

傳真:0635-8314011

郵箱:[email protected]

網址:www.opxsul.tw

搜索 Search
你的位置:首頁 > 知識庫 > 技術手冊

ORACLE 常見故障恢復

2019/12/11 8:10:10點擊:

.非歸檔模式的數據庫,丟失數據文件



故障現象

丟失某個數據庫文件,造成了數據庫無法啟動,同時數據庫處于非歸檔模式,也沒有冷備份,啟動時的錯誤信息如下:

ORA-01157: cannot identify/lock data file 3 - see DBWR trace file

ORA-01110: data file 3: 'D:\ORACLE\ORADATA\TEST\USERS01.DBF'

解決方法

將數據庫啟動到mount狀態下:

sqlplus / as sysdba

startup mount

從數據庫中刪除該數據文件

alter database datafile xx offline drop;

打開數據庫

alter database open;

備注:

該方法可正常打開數據庫,但該datafile中的數據將丟失

如果誤刪除了system表空間的datafile,則該方法不奏效

如果該表空間還包含其它數據文件,用EXP把數據備份出來,然后刪除表空間,重建表空間,將數據導入。如果不包含其它數據文件,則直接刪除表空間就可以了。

 

.歸檔模式數據庫丟失某數據文件,無備份,但有該數據文件創建以來的歸檔日志



故障現象

歸檔模式的數據庫,丟失了某個數據庫文件,造成了數據庫無法啟動,同時沒有數據庫的全備份,但有該數據文件創建以來的歸檔日志,數據庫無法啟動:

ORA-01157: cannot identify/lock data file 3 - see DBWR trace file

ORA-01110: data file 3: 'D:\ORACLE\ORADATA\TEST\USERS01.DBF

解決方法

啟動數據庫到mount狀態

startup mount

手工創建丟失的數據文件

alter database create datafile oldfname as  newfnamesize xxx reuse;

利用歸檔日志對數據文件進行恢復

recover datafile newfname;或者

recover datafile  n;

打開數據庫

alter database open;

備注:

該方法可正常打開數據庫,而且不會丟失數據

該方法有兩個前提

丟失的數據文件不能是系統文件

不能丟失或損壞控制文件

 

.currentactiveredo log損壞



故障現象

誤刪除了redo log,或者redo log被損壞,數據庫能mount,不能open:

ORA-00313: open failed for members of log group 3 of thread 1

ORA-00312: online log 3 thread 1: '/oracle11g/oradata/ora11g/redo03.log'

解決方法

查詢v$log視圖,確認損壞的redo log group是非currentactive

SQL>select group#,thread#,sequence#, archived,status from v$log;

GROUP#  THREAD#  SEQUENCE#  ARCHIVED STATUS 

------       -------          ----------            --------           --------

1                1                103                  YES      INACTIVE

2                1                104                  NO       CURRENT

3                1                102                  YES      INACTIVE

如果該日志已經歸檔,用下面的命令清除日志內容

Alter database clear logfile group 3;

如果該日志沒有歸檔,用下面的命令清除日志內容

Alter database clear unarchived logfile group 3;

打開數據庫

Alter database open;

盡快做一個數據庫全備份

 

.currentactiveredo log損壞



故障現象

誤刪除了redo log,或者redo log被損壞,數據庫不能打開:

ORA-00313: open failed for members of log group 2 of thread 1

ORA-00312: online log 2 thread 1: '/oracle11g/oradata/ora11g/redo02.log'

解決方法

查詢v$log視圖,確認損壞的redo log groupcurrentactive

SQL>select group#,thread#,sequence#, archived,status from v$log;

GROUP#  THREAD#  SEQUENCE#  ARCHIVED STATUS 

------       -------          ----------            --------           --------

1                1                    2                      YES      INACTIVE

2                1                    4                      NO       CURRENT

3                1                    3                      YES      INACTIVE

情況1:當前日志文件還存在,只是邏輯損壞,并且當前日志沒有未決事務需要實例恢復

alter database clear unarchived logfile group 2;  --不會報錯

recover database until cancel;

alter database open resetlogs;

一般情況下,該方法不奏效,如果clear報錯,則用其它方法.

情況2:當前日志完全損壞,且有未決事務,數據庫有備份

alter database clear unarchived logfile group 2;  --會報錯

ERROR at line 1:

ORA-01624: log 1 needed for crash recovery of thread 1

restore database;

recover database until cancel; --選擇auto

recover database until cancel;

alter datbase open resetlogs;

盡快做一個數據庫全備份

情況3:當前日志完全損壞,且有未決事務,數據庫無備份

shutdown immediate;

_allow_resetlogs_corruption=true;

startup mount pfile=xxx;

recover database until cancel;

alter datbase open resetlogs;

shutdown immediate

_allow_resetlogs_corruption=true;

Startup

盡快做一個數據庫全備份

 

.臨時表空間的數據文件損壞



故障現象

臨時表空間的數據文件發生損壞,系統出現故障,如何恢復

解決方法

10g及以上版本數據庫,啟動數據庫時,如果發現臨時數據文件損壞,會自動創建,如果在數據庫運行過程中,可以手工重建:

create temporary tablespace temp1 tempfile xx size xx;

alter database default temporary tablespace temp1;--系統默認臨時表空間的重建需要執行這一步,否則不需要

drop tablespace temp;

alter tablespace temp1 rename to temp;

10g以前版本數據庫,可以在數據庫打開后或運行過程中,手工重建就可以了

alter database datafile xxx offline drop;--如果數據庫打不開,就執行這個步驟

create temporary tablespace temp1 tempfile xx size xx;

alter database default temporary tablespace temp1;--系統默認臨時表空間的重建需要執行這一步 ,否則不需要,9i以前版本也不需要。

drop tablespace temp;

alter tablespace temp1 rename to temp;



.UNDO數據文件損壞,數據庫無法啟動



故障現象

Undo數據文件發生了丟失或損壞,數據庫啟動報錯:

ORA-01157: cannot identify/lock data file 2 - see DBWR trace file

ORA-01110: data file 2: '/oracle11g/oradata/ora11g/undotbs01.dbf'

解決方法

如果數據庫有備份,則利用備份進行恢復

如果數據庫沒有備份,則利用重建undo表空間的方式進行恢復

startup mount

alter database datafile n offline drop;(刪除損壞的undo文件)

alter database open;

create undo tablespace xxx ; (創建一個新的undo表空間)

alter system set undo_tablespace=xxx;(指向新的undo表空間)

drop tablespace yyy including contents;(刪除原來的undo表空間)



.控制文件損壞



故障現象

控制文件發生了損壞,數據庫已經無法啟動,報錯信息如下:

ORA-00202: controlfile: 'D:\Oracle\oradata\chen\control01.ctl'

ORA-27041: unable to open file

OSD-04002: unable to open file

解決方法

情況一:控制文件有鏡像,且鏡像控制文件沒有被損壞

關閉數據庫

將沒有損壞的控制文件覆蓋掉損壞的控制文件,或者修改參數文件的control_files參數,去掉損壞的控制文件

重新啟動數據庫



情況二:控制文件無鏡像,或者鏡像的所有控制文件都損壞了

恢復控制文件

如果控制文件有備份,從備份中恢復控制文件

restore controlfile from <your controlfile backupset>

如果控制文件有snapshot,snapshot控制文件替換掉原損壞控制文件

如果做過alter database backup controlfile to trace的控制文件腳本備份,可以用trace文件中的重建腳本來創建控制文件,

如果沒有備份,也沒有trace備份,只能手工編寫腳本創建控制文件,前提是你對數據庫文件結構非常清楚

恢復和打開數據庫

如果是用create controlfile noresetlogs 方式重建的控制文件

recover database;

alter database open;

alter tablespace temp add tempfile xx size xx reuse ; --對所有臨時表空間做此操作

如果是用create controlfile resetlogs方式重建的控制文件,或者通過備份或快照恢復的控制文件

recover database using backup controlfile;

alter database open resetlogs;

alter tablespace temp add tempfile xx size xx reuse ; --對所有臨時表空間做此操作

 

快播日本黄色片下载 七星彩开奖300期结果 三级片大全百度影音 奥运排球比分规则 广东快乐10分 山东11选五走势图 股票行情软件下载 北京十一选五最新开 日本av女优佐山爱h罩杯的 宁夏11选5 江苏江苏十一选五走 成人黄色片电影图片 内蒙麻将打法 黑龙江十一选五开奖 05年湖人vs小牛比赛录像 股票配资平台哪个好 重庆幸运农场快乐十