sql15

[Q]丢失一个数据文件,但是没有备份,怎么样打开数据库 
[A]如果没有备份只能是删除这个数据文件了,会导致相应的数据丢失。 
SQL>startup mount 
--ARCHIVELOG模式命令 
SQL>Alter database datafile 'file name' offline; 
--NOARCHIVELOG模式命令 
SQL>Alter database datafile 'file name' offline drop; 
SQLl>Alter database open; 
注意:该数据文件不能是系统数据文件 
  
[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; 
} 

你可能感兴趣的:(oracle,sql)