克隆OS、ORACLE軟體並duplicate的實戰

lusklusklusk發表於2016-10-09

源端環境介紹

CentOS release 6.2

IP192.168.130.151

ORACLE_BASE= /wfdb/db

ORACLE_HOME=/wfdb/db/product/11.2.0/dbhome_1

ORACLE_SID=WF

/wfdb是掛載的目錄,ORACLE軟體安裝在上面

 

克隆一個目標端的OS來自源端OS,不克隆/wfdb,目標端相當於一個乾淨的作業系統,但是已經有所有關於oracle的作業系統配置,如/etc/sysctl.config/etc/security/limit.config中的配置,所有的rpm包,oracle使用者、dba組、oinstall組及/etc下面的一些oracle檔案

 

 

克隆ORACLE軟體至目標端

1.       源端打包ORACLE_HOME目錄(必須使用root使用者,使用oracle使用者的話nmb、nmo、nmhs三個特殊許可權檔案無法打包)

# zip -r dbhome_1.zip /wfdb/db/product/11.2.0/dbhome_1

2.       目標端建立和源端一樣的目錄並授權oracle使用者,把包傳到目標端

mkdir –p /wfdb/db/product/11.2.0/

3.       目標端使用oracle使用者解壓檔案,再使用root使用者授權三個特殊許可權檔案

unzip dbhome_1.zip
chown root.oinstall nmhs
chown root.oinstall nmo
chown root.oinstall nmb
chmod 4710 nmhs
chmod 4710 nmo
chmod 4710 nmb

4.       目標端把$ORACLE_HOME/network/admin下面的.ora檔案改名加上_YYYYMMDD,再建立和源端一樣的dumpcontrolfiledatafileonlineredo目錄

5.       目標端再在Xmanager Enterprise工具下使用oracle使用者執行如下

ORACLE_BASEORACLE_HOME都是是目標端實際存在的

cd /wfdb/db/product/11.2.0/dbhome_1/clone/bin/

/wfdb/db/product/11.2.0/dbhome_1/perl/bin/perl clone.pl ORACLE_BASE="/wfdb/db" ORACLE_HOME="/wfdb/db/product/11.2.0/dbhome_1" OSDBA_GROUP=dba OSOPER_GROUP=dba -defaultHomeName
執行完畢後,要按提示使用root執行/wfdb/db/product/11.2.0/dbhome_1/root.sh

6.       目標端再cp listener.ora_YYYYMMDD listener.ora,修改host為備庫的並新增一段靜態監聽,如紅色標記

LISTENER =

  (DESCRIPTION_LIST =

    (DESCRIPTION =

      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.30.166)(PORT = 1521))

    )

  )

SID_LIST_LISTENER =

  (SID_LIST =

    (SID_DESC =

      (ORACLE_HOME= /wfdb/db/product/11.2.0/dbhome_1)

      (SID_NAME = WF)

    )

  )

ADR_BASE_LISTENER = /wfdb/db

7.       目標端啟動監聽

8.       目標端動到nomount狀態

可以正常啟動,因為克隆oracle軟體後目標端有和主庫一樣的密碼檔案和spfilepfile檔案

 

 

 

 

 

 

Duplicate至目標端

1.       源端增加目標端的tns

如目標端的為WF_166,因為沒有其他變動,其實只是tns中的名稱不一樣,t其他service_name都是一樣的

2.       目標端的tns內容和源端一樣

3.       源端執行rman target sys/lf0320tcsge@WF auxiliary sys/lf0320tcsge@WF_166

4.       源端繼續執行duplicate target database to WF from active database nofilenamecheck;

 

 

以上只是保持目標端的DB_NAMEINSTANCE_NAME都和源端一樣,如果需要不一樣,其實很簡單,只需要修改目標端的.bash_profleSID,並刪除spfile,把pfile名稱修改下,再執行duplicate命令如下

duplicate target database to wftst from active database db_file_name_convert=('/wfdb/db/oradata/WF','/wfdb/db/oradata/WFTST') nofilenamecheck;



ORACLE_HOME的位置變了就要做克隆的操作

如果不小心把oracle的目錄改名或改路徑了,只要資料檔案(redo、undo、datafile、archivelog、tempfile)和控制檔案不在ORACLE_HOME裡,做軟體克隆就可以了(從別的地方複製一個ORACLE_HOME目錄過來就可以做克隆了


EBS克隆時如果還要保持原來的pfile則一定要備份(如果hostname、路徑與源端的不一樣則不必了,一樣的話會覆蓋),因為克隆會重做pfile的(perl adcfgclone.pl dbTier或perl adcfgclone.pl dbTechStack)
cd /db/DEV/db/tech_st/11.2.0/appsutil/clone/bin
perl adcfgclone.pl dbTier

perl adcfgclone.pl dbTechStack


單機克隆時源庫的密碼檔案和spfile、pfile檔案不會丟失(perl clone.pl)
cd /wfdb/db/product/11.2.0/dbhome_1/clone/bin/
wfdb/db/product/11.2.0/dbhome_1/perl/bin/perl clone.pl ORACLE_BASE="/wfdb/db" ORACLE_HOME="/wfdb/db/product/11.2.0/dbhome_1" OSDBA_GROUP=dba OSOPER_GROUP=dba –defaultHomeName

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2126011/,如需轉載,請註明出處,否則將追究法律責任。

相關文章