姿姿霸霸~~!
贵在坚持!
posts - 106,  comments - 50,  trackbacks - 0
     摘要: 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 阅读(9721) | 评论 (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 阅读(662) | 评论 (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 阅读(1292) | 评论 (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 阅读(261) | 评论 (0)编辑 收藏
第一种情况:损坏的控制文件的磁盘位置仍能使用
1.将好的控制文件copy过去
2.startup

第二种情况:损坏的控制文件的磁盘位置不可用
1.在新的位置将好的控制文件copy过去
2.修改spfile,使得里面的控制文件的路径指向正确
3.startup
posted @ 2011-05-04 23:36 xrzp 阅读(266) | 评论 (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 阅读(666) | 评论 (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 阅读(350) | 评论 (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 阅读(409) | 评论 (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 阅读(666) | 评论 (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 阅读(762) | 评论 (0)编辑 收藏
仅列出标题
共11页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last 

<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(4)

随笔分类

随笔档案

好友的blog

搜索

  •  

积分与排名

  • 积分 - 115112
  • 排名 - 505

最新评论

阅读排行榜

评论排行榜