複製ORACLE_HOME目錄恢復數據庫

本來想對Oracle測試備份還原的,結果不小心把oracle的ORACLE_HOME目錄給刪了,還是rm -rf。。。

還好之前做了次冷備,數據文件、控制文件、聯機重做日誌文件、口令文件、初始化參數都還在。

重新安裝固然可以,但是能不能在其他oracle上拷貝一個ORACLE_HOME目錄,修改下使用那?

有了想法 咱就試試吧。

參照:http://www.cnblogs.com/killkill/archive/2011/01/21/1941215.html

 

在2臺虛擬機上進行該操作。

被刪的機器:hnhc

完好的機器:oral

由於2臺機器的Oracle都是按照同一個文檔安裝的。

[oracle@oral ~]$ id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba),504(beoper)

[oracle@hnhc lib]$ id oracle
uid=501(oracle) gid=501(oinstall) groups=501(oinstall),502(dba)

 

具體操作如下:

1、檢查兩臺機器的 ORACLE_HOME信息

[root@oral ~]# su - oracle
env [oracle@oral ~]$ env | grep ORA
ORACLE_SID=guo
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1

[oracle@hnhc ~]$ env | grep ORA
ORACLE_SID=hckj
ORACLE_BASE=/u01
ORACLE_HOME=/u01/oracle/

 

2、打包db_1文件

[root@oral db_1]#tar zcvfp db_1.tar.gz db_1 #要保留全來的權限。

3、複製到另一臺機器上,本來想用vsftp的,但是老是安裝不上,沒辦法,共享了一個windows文件夾。

[root@oral db_1]#mount.cifs //192.168.1.102/share /media -o user=administrator,pass=123456

[root@oral db_1]#cp db_1.tar.gz /media

4、在另一臺機器上也掛載該共享,解壓到/u01/oracle中。

[root@hnhc media]#tar –xvf db_1.tar.gz –C /u01/oracle

虛擬機就是慢啊……

5、設置權限

[root@hnhc u01]# chown -R oracle:oinstall ./oracle

6、修改 $ORACLE_HOME 中的 oraInst.loc 文件,其實就是填入正確 oraInventory 目錄,這個oraInventory 可以不建,但是父目錄必須存在,並且Oracle用戶可以寫入(建目錄)。

[oracle@hnhc oracle]$ cp oraInst.loc{,.bak}   #做個備份

[oracle@hnhc u01]$ ls
admin  arclog  flash_recovery_area  oracle  oradata  oraInventory  userbkp

可以發現,我之前的這個目錄在/u01下,修改之。
[oracle@hnhc oracle]$ vi oraInst.loc

inventory_loc=/u01/oraInventory
inst_group=oinstall


7、 修改$ORACLE_HOME/clone/config/cs.properties,在最後加上參數-invPtrLoc 指明oraInst.loc 所在的路徑。

[oracle@hnhc config]$ vi cs.properties

# Copyright (c) 2005, Oracle. All rights reserved. 

# clone command line
clone_command_line= -noConfig -invPtrLoc "/u01/oracle/oraInst.loc"

8、再去到$ORACLE_HOME/clone/bin 目錄執行clone.pl的perl腳本:

[oracle@hnhc bin]$ ./clone.pl \
> ORACLE_HOME = "/u01/oracle" \
> ORACLE_HOME_NAME = "OracleHome1" \
> ORACLE_BASE = "/u01" \
> OSDBA_GROUP="dba" \
> OSOPER_GROUP="dba" \
> OSASM_GROUP="dba" \

9、最後用root用戶執行那個$ORACLE_HOME 的root.sh 就OK了。

 

莫名奇妙的是最後兩步一直出錯,我直接重啓了服務器,在用sqlplus竟然直接連接上了,一切正常。。

[oracle@hnhc ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.1.0 - Production on Wed Jan 11 16:01:52 2012

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

SQL> connect /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              92276304 bytes
Database Buffers          188743680 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.

 

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/u01/oradata/hckj/control01.ctl
/u01/oradata/hckj/control02.ctl
/u01/oradata/hckj/control03.ctl

SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/u01/oradata/hckj/system01.dbf
/u01/oradata/hckj/undotbs01.dbf
/u01/oradata/hckj/sysaux01.dbf
/u01/oradata/hckj/users01.dbf
/u01/oradata/hckj/example01.dbf

 

最後兩步,我正在查找原因,等待後續更新吧~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章