暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

使用 OUI 克隆一个已经存在的 Oracle12c 版本1(12.1.0.x)数据库软件

40

适用于:

Oracle Database - Standard Edition - 版本 12.1.0.1 和更高版本
Oracle Universal Installer - 版本 12.1.0.1 和更高版本
Oracle Database - Enterprise Edition - 版本 12.1.0.1 和更高版本
Oracle Database Cloud Schema Service - 版本 N/A 和更高版本
Gen 1 Exadata Cloud at Customer (Oracle Exadata Database Cloud Machine) - 版本 N/A 和更高版本
Generic UNIX

用途

本文档解释了如何使用 OUI 克隆一个已经存在的 Oracle12c 版本1(12.1.0.x)数据库软件。

适用范围

本文档是为需要在服务器上安装 Oracle 数据库软件或者克隆一个已经存在的 Oracle 数据库的 DBA 而写的。

请注意在克隆 Oracle12c 版本1数据库软件前需确认系统中已安装了 Perl 5.6 或更高版本。

注意:在克隆数据库软件到一个新的服务器之前,需确保新的服务器已经满足所有安装数据库软件的前提条件,因为 perl clone.pl(第三步)并不会检查这些前提条件。参照 <Note:169706.1> 或者在线安装文档来得到这些前提条件。

注意:本文档本来是为需要克隆一个单实例(非 RAC)的数据库 HOME 的客户而写,但是如果在克隆时使用 -invPtrLoc 选项,那么它也适用于克隆一个 CRS/RAC 环境 (CRS/RAC 环境不支持 -invPtrLoc 选项)。 关于克隆 CRS/RAC 环境的更多信息,请参照 11.2 RAC Admin and Deployment Guide 的第8章和第9章。

详细信息

第一步

在源端安装要克隆的Oracle数据库软件。

对 Oracle12c 版本1,安装软件本身(12.1.0.x),之后安装示例光盘中所有需要的产品,之后再安装需要的补丁集及补丁。

第二步

对已存在的源端数据库软件做一个拷贝。如果要克隆到同一台服务器的另一个目录,可以使用 “cp -Rp”命令。

注意:此时不需要停止源端 Oracle 数据库软件之上运行的数据库/监听/agent, 因为这些运行的 process 不会阻塞拷贝的动作。

如:

cp -Rp /u01/app/oracle/product/12.1.0 /u01/app/oracle/product/12.1.0_clone


注意
:这条命令可以使用 root 用户来运行也可以使用 $ORACLE_HOME 的属主来运行(如:oracle)。这里需要确保文件的属主不变。因为 $ORACLE_HOME/bin 下的某些文件是属于 root 所有并且设置了 SUID / SGID:

-rws--x---   1 root     oinstall   20872 Apr 24 12:00 nmb
-rws--x---   1 root     oinstall   28720 Apr 24 11:59 nmo
-rwsr-x---   1 root     oinstall 1340408 Sep 25  2011 oradism

所以如果是使用的非 root 用户做的拷贝,那么会碰到下面的错误:

cp: cannot open `$ORACLE_HOME/bin/nmb' for reading: Permission denied
cp: cannot open `$ORACLE_HOME/bin/nmo' for reading: Permission denied
cp: cannot open `$ORACLE_HOME/bin/oradism' for reading: Permission denied

但是在本文档的剩下步骤做完之后(使用 -clone 的参数运行 OUI 并执行 root.sh)。这些文件会被重建,所以上面的错误可以忽略。

也可以使用 tar 命令来把源端的 $ORACLE_HOME 打包:

cd /u01/app/oracle/product/12.1.0
tar -cvf /tmp/source.tar .

之后把它移动到目标端(同一台服务器或者另外的服务器)之后解包:

cd /u01/app/oracle/product/12.1.0_clone
tar -xvf /tmp/source.tar


注意:就像之前提到的那样,这个命令可以使用 root 用户执行或者 $ORACLE_HOME 的属主用户(如: oracle)。


重要的提示

在进行第三步之前,花一些时间来检查目标端的文件/目录的权限和源端一致是很重要的。
请同时检查链接文件的正确性,确保它们指向的是目标端的文件/目录,而不是源端的文件/目录。如果链接文件的指向不对,重建它们。

同时需要确保 oraInst.loc 存在,否则 clone.pl 会失败:

SEVERE:OUI-10036:Could not create the inventory location. You may not have permission to write to this location.
SEVERE:OUI-10180:Invalid Operating System group name specified.

如果是在 AIX 上做克隆,确保 rootpre.sh 已经在目标端执行过了。可以在 Oracle12c 版本1数据库软件的安装介质里找到 rootpre.sh 文件。

第三步

执行下面的命令来使用 OUI 克隆 Oracle 数据库软件:

cd $ORACLE_HOME/clone/bin
perl clone.pl ORACLE_HOME="<target_home>" ORACLE_HOME_NAME="<unique_home_name>" ORACLE_BASE="<path_for_ORACLE_BASE>" OSDBA_GROUP=<OSDBA_privileged_group> OSOPER_GROUP=<OSOPER_privileged_group>


注意:如果不指定 OSDBA_GROUP 和 OSOPER_GROUP 参数,那么在使用 sqlplus 连接数据库时会碰到 ORA-1031 错误(详细信息请参照文档 Note:1061788.1)。

如果服务器上不存在 /etc/oraInst.loc(AIX,Linux)或者 /var/opt/oracle/oraInst.loc(Solaris,HP-UX)文件,那么手工创建一个。这个文件需要包含如下面的一行:

inventory_loc=<path_to_oraInventory>


如:

inventory_loc=/u01/app/oracle/oraInventory


如果 oraInst.loc 已经存在,但是是在另外的目录里,那么编辑

$ORACLE_HOME/clone/config/cs.properties

文件,并在 clone 的命令行里加上"-invPtrLoc <path>/oraInst.loc"这个参数。

如果需要的话,也可以在这个文件中加入"-ignoreSysPrereqs"参数。

另一个 clone 的方法是使用如下的命令:

./runInstaller -clone -silent -ignorePreReq ORACLE_HOME="<target_home>" ORACLE_HOME_NAME="<unique_home_name>" ORACLE_BASE="<path_for_ORACLE_BASE>" oracle_install_OSDBA=OSDBA_privileged_group oracle_install_OSOPER=OSOPER_privileged_group


如果需要的话,在命令行中加入"-invPtrLoc <path>/oraInst.loc"和"-ignoreSysPrereqs"参数。

如果服务器中安装了多个版本的 Perl,那么需要指定 PERL5LIB 环境变量,这样来保证 Perl 的 module 和使用的 perl 版本一致。

注意:需要提供目标端 $ORACLE_HOME 绝对路径(如 /u01/app/oracle/product/12.1.0_clone)。

也要注意:ORACLE_HOME_NAME 必须是唯一的(就是说指定的 ORACLE_HOME_NAME 名字不能已经存在<path>/oraInventory/ContentsXML/inventory.xml文件中)。

注意:如果是把数据库克隆到一个已经存在了 central inventory,并且目标目录之前已经在 <path>/oraInventory/ContentsXML/inventory.xml 文件中存在的服务器,那么你需要在运行 clone 命令前运行下面的命令来把这个目录从 central inventory 中剥离:

./runInstaller -detachHome ORACLE_HOME=<target_home>


如果要克 隆Oracle 12c 版本1客户端软件,那么直接执行 OUI 如下:

./runInstaller -clone -silent -noconfig ORACLE_HOME="<target_home>" ORACLE_HOME_NAME="<unique_home_name>" ORACLE_BASE="<path_for_ORACLE_BASE>" OSDBA_GROUP=OSDBA_privileged_group OSOPER_GROUP=OSOPER_privileged_group

 

第四步

在 Linux/Unix 上,你需要在目标端执行 root.sh(使用 root 用户)

注意:在执行 root.sh 时,它会直接覆盖 /usr/bin/(oraenv,coraenv,dbhome)文件。并不会提示我们是否可以覆盖并给出选择。如果您需要这些文件,请备份它们。

注意:

* 对于 Windows,使用 setup.exe(而不是 runInstaller)来启动 OUI。
* 日志文件会创建在 central inventory(<path>/oraInventory/logs)和目标端($ORACLE_HOME/clone/logs)中。

已知的问题:

在克隆一个数据库之后,dba_libraries视图包含对老home的参照信息。关于详细,请参照MOS note 2145739.1

参考

NOTE:1061788.1 - Connect as SYSDBA on 11.2 Cloned Home Gives "ORA-1031: Insufficient Privileges" Error
NOTE:169706.1 - Oracle Database (RDBMS) on Unix AIX,HP-UX,Linux,Mac OS X,Solaris,Tru64 Unix Operating Systems Installation and Configuration Requirements Quick Reference (8.0.5 to 11.2)
NOTE:1351051.1 - Information Center: Install and Configure Database Server/Client Installations
NOTE:300062.1 - How to Clone an Existing RDBMS / Client Installation Using OUI
NOTE:1520299.1 - Primary Note For Oracle Database 12c Release 1 (12.1) Database/Client Installation/Upgrade/Migration Standalone Environment (Non-RAC)

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论