[Q]丢失一个数据文件,没有备份但是有该数据文件创建以来的归档怎么恢复 [A]保证如下条件 a. 不能是系统数据文件 b. 不能丢失控制文件 如果满足以上条件,则 SQL>startup mount SQL>Alter database create datafile 'file name' as 'file name' size ... reuse; SQL>recover datafile n; -文件号 或者 SQL>recover datafile 'file name'; 或者 SQL>recover database; SQL>Alter database open;
[Q]联机日志损坏如何恢复 [A]1、如果是非当前日志而且归档,可以使用 Alter database clear logfile group n来创建一个新的日志文件 如果该日志还没有归档,则需要用 Alter database clear unarchived logfile group n 2、如果是当前日志损坏,一般不能clear,则可能意味着丢失数据 如果有备份,可以采用备份进行不完全恢复 如果没有备份,可能只能用_allow_resetlogs_corruption=true来进行强制恢复了,但是,这样的方法是不建议的,最好在有Oracle support的指导下进行。
[Q]怎么样创建RMAN恢复目录 [A]首先,创建一个数据库用户,一般都是RMAN,并给予recovery_catalog_owner角色权限 sqlplus sys SQL> create user rman identified by rman; SQL> alter user rman default tablespace tools temporary tablespace temp; SQL> alter user rman quota unlimited on tools; SQL> grant connect, resource, recovery_catalog_owner to rman; SQL> exit; 然后,用这个用户登录,创建恢复目录 rman catalog rman/rman RMAN> create catalog tablespace tools; RMAN> exit; 最后,你可以在恢复目录注册目标数据库了 rman catalog rman/rman target backdba/backdba RMAN> register database;
[Q]怎么样在恢复的时候移动数据文件,恢复到别的地点 [A]给一个RMAN的例子 run { set until time 'Jul 01 1999 00:05:00'; allocate channel d1 type disk; set newname for datafile '/u04/oracle/prod/sys1prod.dbf' to '/u02/oracle/prod/sys1prod.dbf'; set newname for datafile '/u04/oracle/prod/usr1prod.dbf' to '/u02/oracle/prod/usr1prod.dbf'; set newname for datafile '/u04/oracle/prod/tmp1prod.dbf' to '/u02/oracle/prod/tmp1prod.dbf'; restore controlfile to '/u02/oracle/prod/ctl1prod.ora'; replicate controlfile from '/u02/oracle/prod/ctl1prod.ora'; restore database; sql "alter database mount"; switch datafile all; recover database; sql "alter database open resetlogs"; release channel d1; }