摘要: 1.錯誤描述:在做一次恢復后,數據庫能正常打開,數據表也能正常查詢,但過不了多久數據庫會自動down掉
2.查看alert日志,發現如下信息
Thu May 05 13:30:26 2011
Flush retried for xcb 0x333acd74, pmd 0x33bdaa68
D...
閱讀全文
posted @
2011-05-05 14:53 xrzp 閱讀(9789) |
評論 (2) |
編輯 收藏
1.將備份的控制文件(這里的備份指的是2進制的備份文件,非trace那個)copy到原來的位置
2.啟動到mount狀態
3.recover database using backup controlfile until cancel
4.再找重做聯機日志恢復數據
5.alter database open resetlogs
代碼如下:
SQL> alter database backup controlfile to 'c:\CONTROL01.CTL';

數據庫已更改。

SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> host del D:\oracle\product\10.2.0\oradata\suredd\CONTROL*.CTL;

SQL> host copy c:\CONTROL01.CTL D:\oracle\product\10.2.0\oradata\suredd\

SQL> startup mount
ORACLE 例程已經啟動。

Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 213912452 bytes
Database Buffers 390070272 bytes
Redo Buffers 7135232 bytes
ORA-00205: ?????????, ??????, ???????


SQL> shutdown immediate
ORA-01507: ??????


ORACLE 例程已經關閉。

============在此應該將備份的控制文件按照初始化文件里面設置的那樣copy N份到指定的位置===================

SQL> startup mount
ORACLE 例程已經啟動。

Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 213912452 bytes
Database Buffers 390070272 bytes
Redo Buffers 7135232 bytes
數據庫裝載完畢。
SQL> alter database open;
alter database open
*
第 1 行出現錯誤:
ORA-01589: 要打開數據庫則必須使用 RESETLOGS 或 NORESETLOGS 選項


SQL> recover database using backup controlfile ;
ORA-00279: 更改 761661 (在 05/05/2011 09:18:58 生成) 對于線程 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00011_0750250093.001
ORA-00280: 更改 761661 (用于線程 1) 在序列 #11 中


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: 無法打開歸檔日志
'D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00011_0750250093.001'
ORA-27041: 無法打開文件
OSD-04002: 無法打開文件
O/S-Error: (OS 2) 系統找不到指定的文件。


ORA-00308: 無法打開歸檔日志
'D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00011_0750250093.001'
ORA-27041: 無法打開文件
OSD-04002: 無法打開文件
O/S-Error: (OS 2) 系統找不到指定的文件。
=======以上失敗的原因是:當前controlfile丟失,使用備份的controlfile打開數據庫時,為不完全恢復,所以要使用until============

SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 761661 (在 05/05/2011 09:18:58 生成) 對于線程 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00011_0750250093.001
ORA-00280: 更改 761661 (用于線程 1) 在序列 #11 中


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: 無法打開歸檔日志
'D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00011_0750250093.001'
ORA-27041: 無法打開文件
OSD-04002: 無法打開文件
O/S-Error: (OS 2) 系統找不到指定的文件。


ORA-00308: 無法打開歸檔日志
'D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00011_0750250093.001'
ORA-27041: 無法打開文件
OSD-04002: 無法打開文件
O/S-Error: (OS 2) 系統找不到指定的文件。


ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 將出現如下錯誤
ORA-01152: 文件 1 沒有從過舊的備份中恢復
ORA-01110: 數據文件 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\SYSTEM01.DBF'


/**由于使用了備份的控制文件,備份之后的歸檔日志信息丟失,
因此,這時需要手工輸入需要恢復的聯機重做日志文件*/

SQL> SELECT GROUP#, SEQUENCE#, STATUS FROM V$LOG;

GROUP# SEQUENCE# STATUS
---------- ---------- ----------------
1 11 CURRENT
3 10 INACTIVE
2 9 INACTIVE

SQL> recover database using backup controlfile until cancel
ORA-00279: 更改 761661 (在 05/05/2011 09:18:58 生成) 對于線程 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00011_0750250093.001
ORA-00280: 更改 761661 (用于線程 1) 在序列 #11 中


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
D:\oracle\product\10.2.0\oradata\suredd\REDO03.LOG
ORA-00328: 歸檔日志在更改 759772 結束, 需要稍后的更改 761661
ORA-00334: 歸檔日志: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\REDO03.LOG'


ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 將出現如下錯誤
ORA-01152: 文件 1 沒有從過舊的備份中恢復
ORA-01110: 數據文件 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\SYSTEM01.DBF'


SQL> recover database using backup controlfile until cancel
ORA-00279: 更改 761661 (在 05/05/2011 09:18:58 生成) 對于線程 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00011_0750250093.001
ORA-00280: 更改 761661 (用于線程 1) 在序列 #11 中


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
D:\oracle\product\10.2.0\oradata\suredd\REDO01.LOG
已應用的日志。
完成介質恢復。
SQL> alter database open resetlogs;

數據庫已更改。

SQL> select * from dd.t1;

ID NAME
---------- ----------
1 test1
2 test2

SQL>
posted @
2011-05-05 10:57 xrzp 閱讀(683) |
評論 (0) |
編輯 收藏
1.歸檔日志已經備份并被刪除掉原來的
2.在執行一些恢復操作時,可能會使用到以前的歸檔日志,但這個時候∵已經在原來的位置將歸檔日志刪除,所以恢復時如果使用到歸檔日志的話會報錯說找不著文件
3.解決方法:將歸檔日志copy回原來的位置,恢復時指定新的位置,或者使用SET LOGSOURCE,指向新的歸檔位置
代碼如下:
SQL> recover tablespace ddtest;
ORA-00279: 更改 589779 (在 05/04/2011 14:46:43 生成) 對于線程 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00004_0750250093.001
ORA-00280: 更改 589779 (用于線程 1) 在序列 #4 中


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00308: 無法打開歸檔日志
'D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00004_0750250093.001'
ORA-27041: 無法打開文件
OSD-04002: 無法打開文件
O/S-Error: (OS 2) 系統找不到指定的文件。


ORA-00308: 無法打開歸檔日志
'D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00004_0750250093.001'
ORA-27041: 無法打開文件
OSD-04002: 無法打開文件
O/S-Error: (OS 2) 系統找不到指定的文件。


SQL> recover tablespace ddtest;
ORA-00279: 更改 589779 (在 05/04/2011 14:46:43 生成) 對于線程 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00004_0750250093.001
ORA-00280: 更改 589779 (用于線程 1) 在序列 #4 中


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: 更改 609885 (在 05/04/2011 15:13:08 生成) 對于線程 1 是必需的
ORA-00289: 建議:
D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00005_0750250093.001
ORA-00280: 更改 609885 (用于線程 1) 在序列 #5 中
ORA-00278: 此恢復不再需要日志文件
'D:\ORACLE\PRODUCT\10.2.0\ARCHIVELOGS\SUREDD\ARC00004_0750250093.001'


已應用的日志。
完成介質恢復。
SQL> alter tablespace ddtest online;

表空間已更改。

SQL> select * from dd.t1;

ID NAME
---------- ----------
1 test1
2 test2

SQL>

注:
(1)或者將歸檔日志放到其他的地方,然后在指定日志時不用auto,而寫新的路徑
(2)SET LOGSOURCE '歸檔日志的放的位置',再recover ,然后使用auto
posted @
2011-05-05 00:29 xrzp 閱讀(1329) |
評論 (0) |
編輯 收藏
1.還是用UE破壞所有的控制文件,并做checkpoint
2.連接數據庫,將數據庫啟動到nomount狀態
3.創建controlfile為noresetlog
4.recover數據庫
5.歸檔所有日志
6.open數據庫
7.添加temp表空間的數據文件
過程如下:
SQL> show parameter control

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string D:\ORACLE\PRODUCT\10.2.0\ORADA
TA\SUREDD\CONTROL01.CTL, D:\OR
ACLE\PRODUCT\10.2.0\ORADATA\SU
REDD\CONTROL02.CTL, D:\ORACLE\
PRODUCT\10.2.0\ORADATA\SUREDD\
CONTROL03.CTL
======================此時破壞所有控制文件======================
SQL> alter system checkpoint;
alter system checkpoint
*
第 1 行出現錯誤:
ORA-00227: 控制文件中檢測到損壞的塊: (塊 , # 塊 )


SQL> select status from v$instance;
ERROR:
ORA-03114: 未連接到 ORALCE


SQL> conn / as sysdba
已連接到空閑例程。
SQL> startup nomount
ORACLE 例程已經啟動。

Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 201329540 bytes
Database Buffers 402653184 bytes
Redo Buffers 7135232 bytes
SQL> edit
已寫入 file afiedt.buf

1 CREATE CONTROLFILE REUSE DATABASE "SUREDD" NORESETLOGS ARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\REDO01.LOG' SIZE 50M,
9 GROUP 2 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\REDO02.LOG' SIZE 50M,
10 GROUP 3 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\REDO03.LOG' SIZE 50M
11 DATAFILE
12 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\SYSTEM01.DBF',
13 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\UNDOTBS01.DBF',
14 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\SYSAUX01.DBF',
15 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\USERS01.DBF',
16 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\EXAMPLE01.DBF',
17 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS02.DBF'
18* CHARACTER SET ZHS16GBK
SQL> /

控制文件已創建。

SQL> RECOVER DATABASE;
完成介質恢復。
SQL> ALTER SYSTEM ARCHIVE LOG ALL;

系統已更改。

SQL> ALTER DATABASE OPEN;

數據庫已更改。

SQL> edit
已寫入 file afiedt.buf

1 ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\TEMP01.DBF'
2* SIZE 20971520 REUSE AUTOEXTEND ON NEXT 655360 MAXSIZE 32767M
SQL> /

表空間已更改。

SQL> select * from dd.t1;

ID NAME
---------- ----------
1 test1
2 test2

SQL>
posted @
2011-05-05 00:01 xrzp 閱讀(280) |
評論 (0) |
編輯 收藏
第一種情況:損壞的控制文件的磁盤位置仍能使用
1.將好的控制文件copy過去
2.startup
第二種情況:損壞的控制文件的磁盤位置不可用
1.在新的位置將好的控制文件copy過去
2.修改spfile,使得里面的控制文件的路徑指向正確
3.startup
posted @
2011-05-04 23:36 xrzp 閱讀(286) |
評論 (0) |
編輯 收藏
1.將數據庫abort掉,然后破壞對應的數據文件
2.startup數據庫,因為此時被破壞了,所以數據庫只能到mount狀態
3.當前情況是沒有數據文件的備份,但是有完好的歸檔
4.∴可以利用create datafile來進行恢復
具體參看代碼:
SQL> shutdown abort
ORACLE 例程已經關閉。
==============在這兒破壞數據文件==================
SQL> startup
ORACLE 例程已經啟動。

Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 180358020 bytes
Database Buffers 423624704 bytes
Redo Buffers 7135232 bytes
數據庫裝載完畢。
ORA-01157: 無法標識/鎖定數據文件 6 - 請參閱 DBWR 跟蹤文件
ORA-01110: 數據文件 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS01.DBF'


SQL> select status from v$instance;

STATUS
------------
MOUNTED

SQL> select * from v$recover_file;

FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- -------------------------------------------
6 ONLINE ONLINE FILE NOT FOUND 0

SQL> select * from v$backup;

FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- --------------
1 NOT ACTIVE 0
2 NOT ACTIVE 0
3 NOT ACTIVE 0
4 NOT ACTIVE 0
5 NOT ACTIVE 0
6 FILE NOT FOUND 0

已選擇6行。

SQL> edit
已寫入 file afiedt.buf

1 SELECT D.NAME, T.NAME AS TABLESPACE_NAME
2 FROM V$DATAFILE D, V$TABLESPACE T
3 WHERE T.TS# = D.TS#
4* AND D.FILE# = 6
SQL> /

NAME
----------------------------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS01.DBF
DDTEST


SQL> alter database create datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS02.DBF'
2 as 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS01.DBF';

數據庫已更改。

SQL> recover datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS01.DBF';
完成介質恢復。
SQL> select * from dd.t1;
select * from dd.t1
*
第 1 行出現錯誤:
ORA-01219: 數據庫未打開: 僅允許在固定表/視圖中查詢


SQL> alter tablespace ddtest online;
alter tablespace ddtest online
*
第 1 行出現錯誤:
ORA-01109: 數據庫未打開


SQL> alter database open;

數據庫已更改。

SQL> select * from dd.t1;

ID NAME
---------- ----------
1 test1
2 test2

SQL>
注意:在這個地方要求:需要表空間創建后所有的歸檔日志,且控制文件中必須包含受損文件名
如果不是這樣子的話,則會出現下面的情況:
SQL> select status from v$instance;

STATUS
------------
OPEN

SQL> SELECT * FROM V$RECOVER_FILE;

FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- -------
6 OFFLINE OFFLINE FILE NOT FOUND 0


SQL> alter database create datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS02.DBF'
2 as 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS01.DBF';
alter database create datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS02.DBF'
*
第 1 行出現錯誤:
ORA-01178: 文件 6 在最后一個 CREATE CONTROLFILE 之前創建, 無法重新創建
ORA-01110: 數據文件 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS02.DBF'
查詢聯機文檔:
ORA-01178: file string created before last CREATE CONTROLFILE, cannot recreate
Cause: Attempted to use ALTER DATABASE CREATE DATAFILE to recreate a datafile that existed at the last CREATE CONTROLFILE command. The information needed to recreate the file was lost with the control file that existed when the file was added to the database.
Action: Find a backup of the file, and recover it. Do incomplete recovery to time before file was originally created.
那只有用備份的數據文件進行恢復了.
SQL> alter database create datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS02.DBF'
2 as 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS01.DBF';
alter database create datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS02.DBF'
*
第 1 行出現錯誤:
ORA-01178: 文件 6 在最后一個 CREATE CONTROLFILE 之前創建, 無法重新創建
ORA-01110: 數據文件 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS02.DBF'


SQL> host copy E:\oracletest\backup\suredd\DDTESTTBS02.DBF D:\oracle\product\10.2.0\oradata\suredd\

SQL> recover datafile 'D:\oracle\product\10.2.0\oradata\suredd\DDTESTTBS02.DBF';
完成介質恢復。
SQL> select status from v$instance;

STATUS
------------
OPEN

SQL> alter tablespace ddtest online;

表空間已更改。

SQL> select * from dd.t1;

ID NAME
---------- ----------
1 test1
2 test2

SQL>
由此可見,有備份是多么的重要啊!!!
posted @
2011-05-04 23:32 xrzp 閱讀(683) |
評論 (0) |
編輯 收藏
1.先備份數據文件
SQL> select file_name,tablespace_name from dba_data_files;

FILE_NAME TABLESPACE_NAME
------------------------------------------------------------ -----------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS02.DBF DDTEST
D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\EXAMPLE01.DBF EXAMPLE
D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\USERS01.DBF USERS
D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\SYSAUX01.DBF SYSAUX
D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\UNDOTBS01.DBF UNDOTBS1
D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\SYSTEM01.DBF SYSTEM

SQL> alter tablespace ddtest begin backup;

表空間已更改。

SQL> alter tablespace ddtest end backup;

表空間已更改。
2.用UE將ddtest對應的數據文件破壞
3.直接shutdown abort,再startup

SQL> shutdown abort;
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。

Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 197135236 bytes
Database Buffers 406847488 bytes
Redo Buffers 7135232 bytes
數據庫裝載完畢。
ORA-01157: 無法標識/鎖定數據文件 6 - 請參閱 DBWR 跟蹤文件
ORA-01110: 數據文件 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS02.DBF'


SQL>
4.查找需要恢復的數據文件
SQL> select status from v$instance;

STATUS
------------
MOUNTED

SQL> select * from v$recover_file;

FILE# ONLINE ONLINE_ ERROR CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- -------
6 ONLINE ONLINE FILE NOT FOUND 0

SQL> select * from v$backup;

FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- --------------
1 NOT ACTIVE 0
2 NOT ACTIVE 0
3 NOT ACTIVE 0
4 NOT ACTIVE 0
5 NOT ACTIVE 0
6 FILE NOT FOUND 0

已選擇6行。

SQL> edit
已寫入 file afiedt.buf

1 SELECT D.NAME, T.NAME AS TABLESPACE_NAME
2 FROM V$DATAFILE D, V$TABLESPACE T
3 WHERE T.TS# = D.TS#
4* AND D.FILE# = 6
SQL> /

NAME
----------------------------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS02.DBF
DDTEST


SQL>
5.將備份的數據文件直接copy到原位置(因為此時為mount狀態,所以可以直接copy,不用offline),再recover,再打開數據庫。如果是打開的,(此時做了alter system checkpoint 也能使得表空間不可用),那就將對應的表空間先offline,再執行recover,執行完recover后,再將表空間online。

SQL> recover datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\SUREDD\DDTESTTBS02.DBF';
完成介質恢復。
SQL> alter database open;

數據庫已更改。

SQL> select * from dd.t1;

ID NAME
---------- ----------
1 test1
2 test2

SQL>
注:dd.t1這個表在ddtest這個表空間上
至此恢復完成.
posted @
2011-05-04 22:56 xrzp 閱讀(367) |
評論 (0) |
編輯 收藏
1.進行聯機表空間備份的步驟
(1)ALTER TABLESPACE users BEGIN BACKUP;
(2)!cp /…/users01.dbf /BACKUP/users01.dbf
(3)ALTER TABLESPACE users END BACKUP;
(4)ALTER SYSTEM ARCHIVE LOG CURRENT;
ALTER TABLESPACE BEGIN BACKUP 和ALTER TABLESPACE END
BACKUP 命令之間的間隔時間應盡量縮短,因為修改后的塊寫入重做日志文件
將導致生成更多的重做信息。因此建議每次執行一個表空間的聯機備份。
2.備份狀態信息,查詢的視圖:
(1)V$BACKUP:以確定哪些文件處于備份模式。發出ALTER TABLESPACE BEGIN BACKUP 命令后,狀態將更改為ACTIVE。備份文件后,“狀態” (STATUS) 列的值將更改為NOT ACTIVE。
(2)V$DATAFILE_HEADER:表空間的數據文件的FUZZY 列中的值將更改為YES,表明相應的文件處于備份模式。
ALTER TABLESPACE END BACKUP 命令后,FUZZY 列的值將更改為NULL
SELECT name, status, fuzzy FROM v$datafile_header;
3.聯機表空間備份過程中出現故障
查詢V$BACKUP 以檢查備份狀態
ALTER DATABASE DATAFILE ‘<file#>’ END BACKUP;
4.只讀表空間備份
ALTER TABLESPACE query_data READ ONLY;
(1)發出ALTER TABLESPACE 命令后,會對所有與表空間相關聯的數據文件執行檢查點。然后使用當前SCN 凍結文件頭。
(2)使表空間成為只讀狀態之后,必須備份該表空間的所有數據文件。
DBW0 進程只寫入其表空間處于讀寫模式的數據文件,正常的檢查點也只對這些文件執行。
5.只讀表空間備份問題
(1)在將表空間更改為只讀后,只需要一個備份。
(2)在使表空間成為讀寫狀態之后,應恢復按照正常備份日程對該表空間進行備份。
(3)控制文件必須能正確標識處在只讀模式下的表空間;否則,必須恢復該表空間。
6.手動備份控制文件
(1)創建二進制映像
ALTER DATABASE BACKUP CONTROLFILE TO ‘control1.bkp`;
(2)創建文本跟蹤文件
ALTER DATABASE BACKUP CONTROLFILE TO TRACE as
;
(3)以下命令更改數據庫配置并導致控制文件更改:
ALTER DATABASE [ADD | DROP] LOGFILE
ALTER DATABASE [ADD | DROP] LOGFILE MEMBER
ALTER DATABASE [ADD | DROP ] LOGFILE GROUP
ALTER DATABASE [ NOARCHIVELOG | ARCHIVELOG ]
ALTER DATABASE RENAME FILE
CREATE TABLESPACE
ALTER TABLESPACE [ADD | RENAME ] DATAFILE
ALTER TABLESPACE [READ WRITE | READ ONLY ]
DROP TABLESPACE
7.使用DBVERIFY 實用程序驗證備份
(1)用于確保備份數據庫或數據文件在還原之前是有效的
(2)遇到數據損壞問題時可作為有用的診斷輔助工具
(3)使用:%dbv file=/ORADATA/u03/users01.dbf logfile=dbv.log
posted @
2011-05-02 19:05 xrzp 閱讀(430) |
評論 (0) |
編輯 收藏
V$ARCHIVED_LOG:顯示控制文件中的歸檔日志信息
V$ARCHIVE_DEST:對于當前例程,說明所有歸檔日志目標、當前值、模式和狀態。
INACTIVE 狀態表示該目標未定義。VALID 狀態表示該目標已啟用且沒有錯誤。
要檢查每個目標的錯誤和發生錯誤的日志序列號,可使用以下查詢:
SELECT destination,fail_sequence,error
FROM v$archive_dest
WHERE status='ERROR';
V$LOG_HISTORY:包含控制文件中的日志文件信息
V$DATABASE:歸檔的當前狀態
V$ARCHIVE_PROCESSES:提供有關例程的各種ARCH 進程的狀態的信息
ACTIVE 狀態表明進程已啟動并正在運行。當前正在歸檔的進程的狀態為BUSY。正忙的進程的LOG_SEQUENCE 列顯示該進程正在歸檔的當前日志序列號
posted @
2011-05-02 14:25 xrzp 閱讀(689) |
評論 (0) |
編輯 收藏
1.LOG_ARCHIVE_DEST_n最多可指定十個歸檔目標
可以是本地歸檔:log_archive_dest_1 = "LOCATION=/archive1"
指定的位置必須是有效的,并且不能是一個NFS 裝載的目錄
也可以是遠程歸檔:log_archive_dest_2 = "SERVICE=standby_db1"
指定的服務名通過使用本地的tnsnames.ora 文件進行解析
2.LOG_ARCHIVE_DEST_n 選項
(1)將歸檔位置設置為MANDATORY 或OPTIONAL。
MANDATORY:表示必須成功完成歸檔到該目標的操作才可以覆蓋聯機重做日志文件。
OPTIONAL:表示即使聯機重做日志文件尚未成功地歸檔到該目標,也可以重新使用。這是缺省設置
(2)在出現故障之后、重試之前定義時間
REOPEN:REOPEN 屬性定義發生故障時是否必須重新嘗試歸檔到目標。如果為關鍵字REOPEN指定了值,如REOPEN=600,則若發生故障,在經過指定時間(以秒計)后,歸檔程序將嘗試寫入該目標。缺省值為300 秒。歸檔到目標的嘗試次數沒有限制。歸檔中的所有錯誤將在主站點的警報文件中報告。
如果未指定REOPEN,則可選目標上的錯誤將被記錄并忽略。不再將重做日志發送到這些目標。在歸檔成功之前,強制目標上的錯誤將導致無法重新使用聯機重做日志。只要歸檔不成功,歸檔目標的狀態就設置為ERROR。
log_archive_dest_1="LOCATION=/archive/ MANDATORY REOPEN"
log_archive_dest_2="SERVICE=standby_db1 MANDATORY REOPEN=600"
log_archive_dest_3="LOCATION=/archive2/ OPTIONAL"

posted @
2011-05-02 14:16 xrzp 閱讀(791) |
評論 (0) |
編輯 收藏