clone and preclone in R12/R11i

来源:互联网 发布:批量下载网页源码 编辑:程序博客网 时间:2024/04/28 05:56

文档最新修改时间为 2012/6/22,By Compard。

Clone是一个方法,除了ERP迁移/恢复会用到他以外,还可以用作Oracle其他产品的迁移和恢复,例如以下2个事例都可以用Clone的方法来完成:

    • 中间件(如discover, application server)迁移到其他服务器或者恢复。
    • 当普通数据库恢复其他服务器上时,在目标机器上可以不用安装数据库的ORACLE_HOME,使用Clone方法将源机器上的ORACLE_HOME迁移过来即可。

本文主要讲述ERP的Clone,Clone使用到的数据库为冷全备,Clone源服务器和目标服务器的操作系统版本,补丁Level等皆相同,不涉及数据库恢复,AP/DB跨平台,目标服务器环境配置等内容。

 

 

Clone准备:

1.      拷贝文件:建议使用tar指令来拷贝,如果用cp指令的话,经常会把一些快捷方式拷贝成文件了,官方建议用cp –RH,我也用过cp –rpf这些都有这个问题。当然了,用tar的时候也要小心,tar的时候选择相对路径,避免如果在同一台服务器解压时一不小心把source给覆盖了。另外,有些版本的tar不能拷贝超过2G得文件。

2.      在数据库control文件变化的时候,比如增减数据文件,增减Redo等等,一定要preclone一下。否则使用clone的时候建control文件会失败或者即使成功但是数据库中缺少部分数据文件。

3.      保险起见,preclone之后检查$ORACLE_HOME/appsutil/clone/data/stage/adcrdb.zip里面的adcrdbclone.sql,看看source中的数据库文件是否都已经包含进去了。

4.      拷贝完文件,检查一下权限是否正确,如果base目录是快捷方式,clone的时候要用绝对路径。

5.    拷贝文件前,关闭源库时不要用abort。

6.    Clone重使用的APPS的密码是源库的。

 

Sync DB Code Level With AP:

开启PROD DB,运行如下步骤来同步DB的Code Level,本动作只在DB/AP升级或打补丁时补丁中有要求时才需要做:

AP:

$ADMIN_SCRIPTS_HOME/adautocfg.sh

perl $AD_TOP/bin/admkappsutil.pl

记住appsutil.zip文件的位置。 

 

DB: 

如果$ORACLE_HOME下有appsutil.zip先做备份,然后把AP上产生的appsutil.zip文件拷贝到$ORACLE_HOME下来,继续执行如下步骤:

cd $ORACLE_HOME

unzip -o appsutil.zip

cd $ORACLE_HOME/appsutil/scripts/<content>/

./adautocfg.sh

 

Preclone: 

DB的Preclone需要在Control File有变化时或者DB/AP升级时做,AP的Preclone只需要打补丁时补丁中有要求时才需要做。

DB:

cd $ORACLE_HOME/appsutil/scripts/<content>/

perl adpreclone.pl dbTier

AP:

R12:

cd $ADMIN_SCRIPTS_HOME/

11i:

cd $COMMON_TOP/admin/scripts/

 

perl adpreclone.pl appsTier

 

拷贝文件到目标目录(步骤略) 

 

Clone:

DBAP

DB

cd <ORACLE HOME>/appsutil/clone/bin

Control file need not recreate:

perl adcfgclone.pl dbTier

 

Control file manual create,例如数据库需要恢复或者忘记做Preclone时,先将数据库恢复到满足目标环境需要的条件,且在一致状态,然后执行:

perl adcfgclone.pl dbTechStack 

打开数据库,继续执行剩下的步骤:

cd<ORACLE HOME>/appsutil/install/<CONTENT>

sqlplus "/ as sysdba" @adupdlib.sql <libext:"sl"--HP-UX,OtherUnix"so" ,none for windows>

cd $ORACLE_HOME/appsutil/clone/bin

perl adcfgclone.pl dbconfig <ORACLE HOME>/appsutil/<TARGET CONTENT>.xml

 

 

AP

<COMMON TOP>/clone/bin/

perl adcfgclone.pl appsTier

Clone完成后分别修改DB和AP用户的.profile文件,将执行env文件的语句放到该文件最后。

 

Clone的问题:

1. Clone 3%的时候要等很久,然后报错:

[APPLY PHASE]

 AutoConfig could not successfully execute the following scripts:

   Directory: /apps/uat/apps/tech_st/10.1.3/perl/bin/perl -I /apps/uat/apps/tec

h_st/10.1.3/perl/lib/5.8.3 -I /apps/uat/apps/tech_st/10.1.3/perl/lib/site_perl/5

.8.3 -I /apps/uat/apps/apps_st/appl/au/12.0.0/perl -I /apps/uat/apps/tech_st/10.

1.3/Apache/Apache/mod_perl/lib/site_perl/5.8.3/sun4-solaris-thread-multi /apps/u

at/apps/tech_st/10.1.2/appsutil/clone

     ouicli.pl              INSTE8_APPLY      -1

 

 

AutoConfig is exiting with status 1

 

RC-50013: Fatal: Instantiate driver did not complete successfully.

/apps/uat/apps/tech_st/10.1.2/appsutil/driver/regclone.drv

 metalink给的解法,感觉并没有说到点子上,不过用它还是比较有效的,kill的时机要把握好,这部分可以参考“http://write.blog.csdn.net/postedit/5877368”这篇文档,官方的处理方法如下:

To implement the solution, please execute the following steps:

 

1 - Initiate the "perl adcfgclone.pl appsTier" again

2 - When it appears to hang again Check if it is the 10.1.2 opmn processes are causing the hanging using:

     "ps -ef | grep opmn" If the "ps -ef | grep opmn" gives the following result it is causing this issue:

 

     <user> <PID> 28462 0 <Time> pts/ta  0:00 <10.1.2 ORACLE_HOME>/opmn/bin/opmn -a -q ping

     <user> <PID> 28459 0 <Time> pts/ta  0:00 <10.1.2 ORACLE_HOME>/opmn/bin/opmnctl stopall

 

3 - Kill the "opmn -a -q ping" and the "opmnctl stopall" using the PID's archived in step 2

 

The clone should continue now, in case it appears to hang again check if the opmn processes are started again and kill them until the clone continues.

2.AIX上如果做了autoconfig,必须注意Error: Couldn't find per display information问题是否还存在。

3.AIX上作了clone以后,要注意看看安装时候的问题是否存在。

4.当源AP文件拷贝到目标机器时,执行chown会报如下错误,一般情况下,这些捷径的问题在clone的过程中会自动修复,但像ldflags如果不提前修正,有时候Clone会出现异常。

chown: lbuilder: A file or directory in the path name does not exist.
chown: libhsnav.so: A file or directory in the path name does not exist.
chown: hsdb_syb.so: A file or directory in the path name does not exist.
chown: hsdb_odbc.so: A file or directory in the path name does not exist.
chown: hsdb_ora.so: A file or directory in the path name does not exist.
chown: libhsbase.so: A file or directory in the path name does not exist.
chown: ldflags: A file or directory in the path name does not exist.
chown: libocci.a.10.1: A file or directory in the path name does not exist.
chown: xmlparserv2.jar: A file or directory in the path name does not exist.
chown: libXML4CMessages.a: A file or directory in the path name does not exist.
chown: libXML4CMessages54.a: A file or directory in the path name does not exist
.
chown: libicudata26.a: A file or directory in the path name does not exist.
chown: libxml4c54.a: A file or directory in the path name does not exist.
chown: libicudata26.so: A file or directory in the path name does not exist.
chown: libicuuc26.a: A file or directory in the path name does not exist.
chown: libicuuc26.so: A file or directory in the path name does not exist.
chown: libxml4c.a: A file or directory in the path name does not exist.

5.Clone完后,关闭了DB和监听器,手工打开监听器有这个错误:

TNS-12532: TNS:invalid argument
TNS-12560: TNS:protocol adapter error
TNS-00502: Invalid argument
Linux Error: 515: Unknown error 515

解决方法:参考:http://www.svn8.com/sql/Oracle/2009110612375.html

修改sqlnet.ora里面,把不允许访问的IP什么的去掉即可

6.Clone完成后,有些copy file原本不是乱码的也变成了乱码,这个在AL32UTF8+Solaris平台碰到过,重启AP即可。

原创粉丝点击