天天看點

Oracle資料庫實體檔案備份/恢複

之前也寫過一篇類似的,雖然恢複不成問題,但總感覺有不對的地方,後面才了解到,以前自己有存在誤區的地方,重新用此文方法簡便得多。

  環境: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/