?? 備份與恢復測試2.doc
字號:
################################
# [1.5] 有trace,活動在線日志損壞
################################
################################
# [1.5.1] 有trace,活動在線日志損壞,正常shutdown或是當前的數據文件
################################
SQL> create table arch (status varchar(2));
表已創建。
SQL> alter system switch logfile;
系統已更改。
SQL> insert into arch select 'ok' from dba_objects;
已創建6166行。
SQL> commit;
提交完成。
SQL> insert into arch select 'ok' from dba_objects;
已創建6166行。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系統已更改。
SQL> insert into arch select 'no' from dba_objects;
已創建6166行。
SQL> commit;
提交完成。
SQL> select GROUP#,SEQUENCE#,archived, STATUS from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 2 YES ACTIVE
2 1 YES ACTIVE
3 3 NO CURRENT
SQL> shutdown --正常關閉數據庫
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
此時模擬刪除當前在線日志組3
SQL>
SQL> startup nomount
ORACLE 例程已經啟動。
Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "testdb" RESETLOGS ARCHIVELOG
2 -- SET STANDBY TO MAXIMIZE PERFORMANCE
3 MAXLOGFILES 5
4 MAXLOGMEMBERS 3
5 MAXDATAFILES 100
6 MAXINSTANCES 1
7 MAXLOGHISTORY 226
8 LOGFILE
9 GROUP 1 'C:\ORACLE\ORADATA\testdb\REDO01.LOG' SIZE 100M,
10 GROUP 2 'C:\ORACLE\ORADATA\testdb\REDO02.LOG' SIZE 100M,
11 GROUP 3 'C:\ORACLE\ORADATA\testdb\REDO03.LOG' SIZE 100M
12 -- STANDBY LOGFILE
13 DATAFILE
14 'C:\ORACLE\ORADATA\testdb\SYSTEM01.DBF',
15 'C:\ORACLE\ORADATA\testdb\UNDOTBS01.DBF',
16 'C:\ORACLE\ORADATA\testdb\INDX01.DBF',
17 'C:\ORACLE\ORADATA\testdb\TOOLS01.DBF',
18 'C:\ORACLE\ORADATA\testdb\USERS01.DBF'
19 CHARACTER SET ZHS16GBK
20 ;
控制文件已創建
SQL> alter database open resetlogs;
數據庫已更改。
SQL> select count(*),status from arch group by status;
COUNT(*) ST
---------- --
6166 no
12332 ok
-->>沒有丟失任何數據,因為你的數據都已經寫到數據文件里了
#########################################
# [1.5.2] 有trace,活動在線日志損壞,shutdown abort 或是非當前的數據文件
,當前在線日志文件損壞
#########################################
####################################################
[測試1] shutdown abort,備份控制文件或者resetlog的trace,
沒有數據文件備份,采用強制打開數據庫的方法
####################################################
SQL> create table arch (status varchar(2));
表已創建。
SQL> alter system switch logfile;
系統已更改。
SQL> insert into arch select 'ok' from dba_objects;
已創建6166行。
SQL> commit;
提交完成。
SQL> insert into arch select 'ok' from dba_objects;
已創建6166行。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
SQL> insert into arch select 'no' from dba_objects;
已創建6166行。
SQL> commit;
提交完成。
SQL> select GROUP#,SEQUENCE#,archived, STATUS from v$log;
GROUP# SEQUENCE# ARC STATUS
---------- ---------- --- ----------------
1 2 YES ACTIVE
2 3 NO CURRENT
3 1 YES INACTIVE
SQL> insert into arch select 'no' from dba_objects;
已創建6166行。
SQL> shutdown abort
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。
Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-00313: 無法打開日志組 1 (線程 1) 的成員
ORA-00312: 聯機日志 1 線程 1: 'C:\ORACLE\ORADATA\TESTDB\REDO01.LOG'
ORA-27047: 無法讀取文件的標題塊
OSD-04006: ReadFile() 失敗, 無法讀取文件
O/S-Error: (OS 38) 到達文件結尾。
SQL> alter database clear logfile group 1;
alter database clear logfile group 1
*
ERROR 位于第 1 行:
ORA-01624: 線程1的緊急恢復需要日志1
ORA-00312: 聯機日志 1 線程 1: 'C:\ORACLE\ORADATA\TESTDB\REDO01.LOG'
SQL> startup nomount
ORACLE 例程已經啟動。
Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> CREATE CONTROLFILE REUSE DATABASE "testdb" RESETLOGS ARCHIVELOG
2 -- SET STANDBY TO MAXIMIZE PERFORMANCE
3 MAXLOGFILES 5
4 MAXLOGMEMBERS 3
5 MAXDATAFILES 100
6 MAXINSTANCES 1
7 MAXLOGHISTORY 226
8 LOGFILE
9 GROUP 1 'C:\ORACLE\ORADATA\testdb\REDO01.LOG' SIZE 100M,
10 GROUP 2 'C:\ORACLE\ORADATA\testdb\REDO02.LOG' SIZE 100M,
11 GROUP 3 'C:\ORACLE\ORADATA\testdb\REDO03.LOG' SIZE 100M
12 -- STANDBY LOGFILE
13 DATAFILE
14 'C:\ORACLE\ORADATA\testdb\SYSTEM01.DBF',
15 'C:\ORACLE\ORADATA\testdb\UNDOTBS01.DBF',
16 'C:\ORACLE\ORADATA\testdb\INDX01.DBF',
17 'C:\ORACLE\ORADATA\testdb\TOOLS01.DBF',
18 'C:\ORACLE\ORADATA\testdb\USERS01.DBF'
19 CHARACTER SET ZHS16GBK
20 ;
控制文件已創建
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-01194: ??1?????????????
ORA-01110: ???? 1: 'C:\ORACLE\ORADATA\TESTDB\SYSTEM01.DBF'
SQL> recover database using backup controlfile until cancel;
ORA-00279: ?? 70123 (? 02/28/2005 15:22:05 ??) ???? 1 ????
ORA-00289: ??: C:\ORACLE\ORADATA\TESTDB\ARCHIVE\1_3.DBF
ORA-00280: ?? 70123 ???? 1 ???? # 3 ???
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
ORA-01547: ??: RECOVER ??? OPEN RESETLOGS ???????
ORA-01194: ??1?????????????
ORA-01110: ???? 1: 'C:\ORACLE\ORADATA\TESTDB\SYSTEM01.DBF'
ORA-01112: ???????
我們看到如果是abort DOWN機的話,打開數據庫都需要應用在線活動日志
這時必須加隱含參數強制打開數據庫,并進行導出,重建數據庫,導入業務數據
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------
spfile string %ORACLE_HOME%\DATABASE\SPFILE
ORACLE_SID%.ORA
SQL> create pfile='pfiletest.ora' from spfile;
文件已創建。
SQL> create pfile='c:\pfiletest.ora' from spfile;
文件已創建。
編輯c:\pfiletest.ora
增加三個參數
_allow_resetlogs_corruption=true
_corrupted_rollback_segments=true
_offline_rollback_segments=true
SQL> shutdown immediate
ORA-01109: 數據庫未打開
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL>
SQL>
SQL>
SQL> startup pfile='c:\pfiletest.ora'
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
ORA-01589: 要打開數據庫則必須使用 RESETLOGS 或 NORESETLOGS 選項
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR 位于第 1 行:
ORA-01092: ORACLE 例程終止。強行斷開連接
SQL>
SQL>
SQL> exit
從Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.1.0 - Production中斷開
C:\>sqlplus "/as sysdba"
SQL*Plus: Release 9.2.0.1.0 - Production on 星期五 12月 31 14:03:09 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
已連接到空閑例程。
SQL> startup pfile='c:\pfiletest.ora'
ORACLE 例程已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL>
####################################################
# [測試2] shutdown abort,resetlog的trace,
# 有數據文件備份,當前在線日志損壞,控制文件損壞,有trace
####################################################
SQL> create table arch (status varchar(2)) tablespace users;
表已創建。
SQL> alter system switch logfile;
系統已更改。
SQL> insert into arch select 'ok' from dba_objects;
已創建6166行。
SQL> commit;
提交完成。
SQL> insert into arch select * from arch;
已創建6166行。
SQL> /
已創建12332行。
SQL> /
已創建24664行。
SQL> /
已創建49328行。
SQL> commit;
提交完成。
SQL> alter system switch logfile;
系統已更改。
SQL> insert into arch select 'no' from dba_objects;
已創建6166行。
SQL> commit;
提交完成。
SQL> select GROUP#,SEQUENCE#,archived, STATUS from v$log;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -