(一)TEMPORARY TABLESPACE AND TEMPORARYFILE REBUILD
无论是手动还是RMAN备份均不会备份临时表空间,恢复数据文件、控制文件以及重建控制文件均不会恢复临时数据文件,RECOVER DATABASE不会对临时空间操作
如果临时数据文件未丢失则恢复后会继续使用;如果临时数据文件丢失,则需要OPEN下重建
因此恢复后一定要检查临时表空间是否可用,如果启动OPEN发现临时表空间不存在或临时表空间的数据文件不存在重建即可:
1. 重建临时数据文件:
select tablespace_name,FILE_NAME from dba_temp_files;
alter tablespace temp add tempfile '/u01/app/oracle/oradata/orcl/temp02.dbf' size 2g autoextend on;
alter tablespace temp drop tempfile '/u01/app/oracle/oradata/orcl/temp01.dbf';
2. 重建临时表空间:
select PROPERTY_NAME,PROPERTY_VALUE from database_properties where property_name like '%DEFAULT%';
create temporary tablespace temp2 tempfile '/u01/app/oracle/oradata/orcl/temp2_1.dbf' size 2g autoextend on;
alter database default temporary tablespace temp2;
(二)REDO LOG REBUILD
这里REDO LOG REBUILD非REDO LOG的恢复,而是把备份恢复到一个新数据库环境上进行重建
STARTUP MOUNT
SELECT A.GROUP#,a.STATUS,A.MEMBER,B.BYTES/1024/1024 MB FROM V$LOGFILE A, V$LOG B WHERE A.GROUP#=B.GROUP#;
使用CLEAR LOGFILE,此命令会在原位置重建日志文件
ALTER DATABASE CLEAR LOGFILE GROUP 1;
ORA-00350: log 1 of instance orcl (thread 1) needs to be archived
ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 1;
ALTER DATABASE CLEAR LOGFILE GROUP 2;
ALTER DATABASE CLEAR LOGFILE GROUP 3;
注:如果原来REDO LOG不存在下面操作无法执行,报错:ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/orcl/redo01.log'
ALTER DATABASE ADD LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redoNEW_01.log' TO GROUP 1;
ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo01.log';
ALTER DATABASE ADD LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redoNEW_02.log' TO GROUP 2;
ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo02.log';
ALTER DATABASE ADD LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redoNEW_03.log' TO GROUP 3;
ALTER DATABASE DROP LOGFILE MEMBER '/u01/app/oracle/oradata/orcl/redo03.log';
另外LOG GROUP操作:
ALTER DATABASE DROP LOGFILE GROUP 1;
ALTER DATABASE ADD LOGFILE GROUP1 ('/u01/app/oracle/oradata/orcl/redoNEW_0_1.log','/u01/app/oracle/oradata/orcl/redoNEW_1_1.log') SIZE 200M;