之前也寫過一篇類似的,雖然恢複不成問題,但總感覺有不對的地方,後面才了解到,以前自己有存在誤區的地方,重新用此文方法簡便得多。
環境:CentOS release 5.6 (Final)
[root@OATest oabak]# tar -jxvf testoa_20140702.tar.bz2
2、還原檔案
[root@OATest temp]# su - oracle
[oracle@OATest /]$ export ORACLE_SID=testoa
[oracle@OATest /]$ sqlplus "/as sysdba";
OPEN_MODE
--------------------
READ WRITE
3、關閉資料庫
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
--顯示控制檔案
select name from v$controlfile;
--顯示資料檔案
select name from v$datafile;
--顯示延續性的初始化參數檔案(延續性:對初始化參數的線上修改可以直接作用到參數檔案中)
show parameter spfile;
--顯示日志檔案
select member from v$logfile;
--orapw$ORACLE_SID密碼檔案:password file路徑 在$ORACLE_HOME/dbs/orapw$ORACLE_SID //跟備份關系不大,可以随時生成。
[oracle@OATest temp]$ sqlplus "/as sysdba";
host cp /usr/oabak/temp/control01.ctl /app/oracle/oradata/testoa/control01.ctl
host cp /usr/oabak/temp/control02.ctl /app/oracle/flash_recovery_area/testoa/control02.ctl
host cp /usr/oabak/temp/system01.dbf /app/oracle/oradata/testoa/system01.dbf
host cp /usr/oabak/temp/sysaux01.dbf /app/oracle/oradata/testoa/sysaux01.dbf
host cp /usr/oabak/temp/undotbs01.dbf /app/oracle/oradata/testoa/undotbs01.dbf
host cp /usr/oabak/temp/users01.dbf /app/oracle/oradata/testoa/users01.dbf
host cp /usr/oabak/temp/redo03.log /app/oracle/oradata/testoa/redo03.log
host cp /usr/oabak/temp/redo02.log /app/oracle/oradata/testoa/redo02.log
host cp /usr/oabak/temp/redo01.log /app/oracle/oradata/testoa/redo01.log
host cp /usr/oabak/temp/spfile${ORACLE_SID}.ora $ORACLE_HOME/dbs/
host cp /usr/oabak/temp/orapw${ORACLE_SID} $ORACLE_HOME/dbs/
--要删除臨時檔案, 重新開機的時候會自動建立temp01.dbf
若不删除臨時檔案,會出現下面的報錯:
ORA-01187: cannot read from file because it failed verification tests
ORA-01110: data file 201: '/app/oracle/oradata/testoa/temp01.dbf'
恢複檔案時候沒有删除,舊的臨時表空間資料檔案(300MB),無法建立新的臨時表空間檔案(500MB) ..是以一直報錯
5、啟動資料庫
SQL> startup
ORACLE instance started.
Total System Global Area 4275781632 bytes
Fixed Size 2220200 bytes
Variable Size 2113933144 bytes
Database Buffers 2147483648 bytes
Redo Buffers 12144640 bytes
Database mounted.
Database opened.
SQL> exit
6、修改使用者密碼
SQL> alter user oaadmin identified by oaadmin;
User altered.
7、解鎖帳戶
SQL> alter user oaadmin account unlock;
上面第4步也可以利用一條指令直接處理:
select 'host cp /u03/backup/'||substr(name,(instr(name,'/',-1)+1))||
' '||name from v$controlfile
union all
select 'host cp /u03/backup/'||substr(member,(instr(member,'/',-1)+1))
||' '||member from v$logfile
select 'host cp /u03/backup/spfile${ORACLE_SID}.ora $ORACLE_HOME/dbs/'
from dual
select 'host cp /u03/backup/orapw${ORACLE_SID} $ORACLE_HOME/dbs/'
from dual;
最新内容請見作者的GitHub頁:http://qaseven.github.io/