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

如何克隆 Oracle Home

原创 哇哈哈 2022-12-23
758

克隆数据库home

通过clone.pl将 Oracle 数据库 home 克隆到另一个地方可能比您想象的要复杂,尤其是在 RAC 环境中。

尽管它在 19c 中仍然有效,但clone.pl已被弃用,将来可能会被删除。Oracle 建议我们改为对新主目录执行纯软件安装。

在这篇文章中,我们介绍了在单实例数据库和 RAC 数据库中将数据库 home 克隆到另一个地方的正式方法。

  1. 单实例数据库
  2. RAC数据库

请注意,在这种情况下我们没有克隆或移动 ORACLE_BASE。

单实例数据库

我们采取以下步骤将 Oracle 主目录克隆到另一个目录。

  1. 关闭数据库
  2. 复制主页文件
  3. 更新 ORACLE_HOME
  4. 运行克隆.pl
  5. 运行 root.sh
  6. 更新 /etc/oratab
  7. 启动数据库
  8. 测试连接

以下是步骤:

1.关闭数据库

在将任何内容复制到新位置之前,我们必须确保所有 Oracle 服务都已停止。这里我们通过dbshut关闭数据库

[oracle@test ~]$ dbshut $ORACLE_HOME
Processing Database instance "ORCLCDB": log file /u01/app/oracle/product/19.3.0/db_1/rdbms/log/shutdown.log

2.复制home文件

在这种情况下,我们将原始 Oracle 主目录复制到新主目录 /oracle/product/19.3.0/db_1。

[root@test ~]# mkdir -p /oracle/product/19.3.0/db_1
[root@test ~]# chown -R oracle:oinstall /oracle
[root@test ~]# cp -rp /u01/app/oracle/product/19.3.0/db_1 /oracle/product/19.3.0/
[root@test ~]# echo $?
0

3.更新ORACLE_HOME

由于我们已经复制了新家,我们应该更新环境变量ORACLE_HOME。

[oracle@test ~]$ vi ~/.bash_profile
...
ORACLE_HOME=/oracle/product/19.3.0/db_1
[oracle@test ~]$ . ~/.bash_profile
[oracle@test ~]$ echo $ORACLE_HOME
/oracle/product/19.3.0/db_1

4.运行clone.pl

接下来,我们执行一个 perl 可执行文件clone.pl来自动为我们自己配置新的home。在命令中,ORACLE_HOME指向新路径,而ORACLE_BASE保持不变。

[oracle@test ~]$ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/clone/bin/clone.pl ORACLE_HOME_NAME="OraDB19Home2" ORACLE_BASE="/u01/app/oracle" ORACLE_HOME="/oracle/product/19.3.0/db_1"


[INFO] [INS-32183] Use of clone.pl is deprecated in this release. Clone operation is equivalent to performing a Software Only installation from the image.
You must use /oracle/product/19.3.0/db_1/runInstaller script available to perform the Software Only install. For more details on image based installation, refer to help documentation.

Starting Oracle Universal Installer...

You can find the log of this install session at:
 /u01/app/oraInventory/logs/cloneActions2022-11-11_10-24-13PM.log
..................................................   5% Done.
..................................................   10% Done.
..................................................   15% Done.
..................................................   20% Done.
..................................................   25% Done.
..................................................   30% Done.
..................................................   35% Done.
..................................................   40% Done.
..................................................   45% Done.
..................................................   50% Done.
..................................................   55% Done.
..................................................   60% Done.
..................................................   65% Done.
..................................................   70% Done.
..................................................   75% Done.
..................................................   80% Done.
..................................................   85% Done.
..........
Copy files in progress.

Copy files successful.

Link binaries in progress.
..........
Link binaries successful.

Setup files in progress.
..........
Setup files successful.

Setup Inventory in progress.

Setup Inventory successful.
..........
Finish Setup successful.
The cloning of OraDB19Home2 was successful.
Please check '/u01/app/oraInventory/logs/cloneActions2022-11-11_10-24-13PM.log' for more details.

Setup Oracle Base in progress.

Setup Oracle Base successful.
..................................................   95% Done.

As a root user, execute the following script(s):
        1. /oracle/product/19.3.0/db_1/root.sh



..................................................   100% Done.

在命令中,ORACLE_HOME_NAME是可选的。如果你不在意新home的名字,你可以忽略它。

5.运行root.sh

我们按照说明运行root.sh。

[root@test ~]# /oracle/product/19.3.0/db_1/root.sh
Check /oracle/product/19.3.0/db_1/install/root_ora19c1.example.com_2022-11-11_23-05-22-968505112.log for the output of root script

让我们看看inventory中有什么。

[oracle@ora19c1 ~]$ cat /u01/app/oraInventory/ContentsXML/inventory.xml
...
<HOME NAME="OraDB19Home1" LOC="/u01/app/oracle/product/19.3.0/db_1" TYPE="O" IDX="1"/>
<HOME NAME="OraDB19Home2" LOC="/oracle/product/19.3.0/db_1" TYPE="O" IDX="2"/>

现在我们有了另一个数据库home。

6.更新/etc/oratab

由于我们已将 ORACLE_HOME 切换到新位置,因此我们开始使用更新/etc/oratab的新主目录。

[oracle@test ~]$ vi /etc/oratab
ORCLCDB:/oracle/product/19.3.0/dbhome_1:Y

7.启动数据库

接下来,我们通过dbstart启动数据库

[oracle@test ~]$ dbstart $ORACLE_HOME
Processing Database instance "ORCLCDB": log file /oracle/product/19.3.0/db_1/rdbms/log/startup.log

8.测试连接

我们通过 sqlplus 测试连接

C:\Users\edchen>sqlplus system/password@orclcdb
...
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

SQL>

完成

RAC数据库

我们采取以下步骤将 Oracle 主目录克隆到 RAC 数据库的另一个目录。

  1. 关闭数据库
  2. 复制主页文件
  3. 更新 ORACLE_HOME
  4. 运行克隆.pl
  5. 运行 root.sh
  6. srvctl 修改数据库
  7. 启动数据库
  8. 测试连接

以下是步骤:

1.关闭数据库


在将任何内容复制到新位置之前,我们必须确保数据库服务已停止。这里我们通过srvctl关闭数据库

[oracle@primary01 ~]$ srvctl stop database -d orclcdb
[oracle@primary01 ~]$ srvctl status database -d orclcdb
Instance ORCLCDB1 is not running on node primary01
Instance ORCLCDB2 is not running on node primary02

2.复制home文件

我们应该通过root将原始数据库home复制到集群所有节点上的新位置。

节点 1

[root@primary01 ~]# mkdir -p /oracle/product/19.3.0/db_1
[root@primary01 ~]# chown -R oracle:oinstall /oracle
[root@primary01 ~]# cp -rp /u01/app/oracle/product/19.3.0/db_1 /oracle/product/19.3.0/

节点 2

[root@primary02 ~]# mkdir -p /oracle/product/19.3.0/db_1
[root@primary02 ~]# chown -R oracle:oinstall /oracle
[root@primary02 ~]# cp -rp /u01/app/oracle/product/19.3.0/db_1 /oracle/product/19.3.0/

3.更新ORACLE_HOME

我们使用所有节点上的新位置更新环境变量ORACLE_HOME 。

节点 1

[oracle@primary01 ~]$ vi ~/.bash_profile
...
ORACLE_HOME=/oracle/product/19.3.0/db_1
[oracle@primary01 ~]$ . ~/.bash_profile
[oracle@primary01 ~]$ echo $ORACLE_HOME

节点 2

[oracle@primary02 ~]$ vi ~/.bash_profile
...
ORACLE_HOME=/oracle/product/19.3.0/db_1
[oracle@primary02 ~]$ . ~/.bash_profile
[oracle@primary02 ~]$ echo $ORACLE_HOME

4.运行clone.pl

接下来,我们执行clone.pl来为我们自己自动配置新home。在命令中,ORACLE_HOME指向新路径,而ORACLE_BASE保持不变。

节点 1

[oracle@primary01 ~]$ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/clone/bin/clone.pl ORACLE_HOME_NAME="OraDB19Home2" ORACLE_BASE="/u01/app/oracle" ORACLE_HOME="/oracle/product/19.3.0/db_1" CLUSTER_NODES="{primary01,primary02}" LOCAL_NODE=primary01


[INFO] [INS-32183] Use of clone.pl is deprecated in this release. Clone operation is equivalent to performing a Software Only installation from the image.
You must use /oracle/product/19.3.0/db_1/runInstaller script available to perform the Software Only install. For more details on image based installation, refer to help documentation.

Starting Oracle Universal Installer...

You can find the log of this install session at:
 /u01/app/oraInventory/logs/cloneActions2022-11-14_01-36-08AM.log
..................................................   5% Done.
..................................................   10% Done.
..................................................   15% Done.
..................................................   20% Done.
..................................................   25% Done.
..................................................   30% Done.
..................................................   35% Done.
..................................................   40% Done.
..................................................   45% Done.
..................................................   50% Done.
..................................................   55% Done.
..................................................   60% Done.
..................................................   65% Done.
..................................................   70% Done.
..................................................   75% Done.
..................................................   80% Done.
..................................................   85% Done.
..........
Copy files in progress.

Copy files successful.

Link binaries in progress.
..........
Link binaries successful.

Setup files in progress.
..........
Setup files successful.

Setup Inventory in progress.

Setup Inventory successful.
..........
Finish Setup successful.
The cloning of OraDB19Home2 was successful.
Please check '/u01/app/oraInventory/logs/cloneActions2022-11-14_01-36-08AM.log' for more details.

Setup Oracle Base in progress.

Setup Oracle Base successful.
..................................................   95% Done.

As a root user, execute the following script(s):
        1. /oracle/product/19.3.0/db_1/root.sh

Execute /oracle/product/19.3.0/db_1/root.sh on the following nodes:
[primary01]


..................................................   100% Done.

在命令中,ORACLE_HOME_NAME是可选的。如果你不在意新home的名字,你可以忽略它。

节点 2

[oracle@primary02 ~]$ $ORACLE_HOME/perl/bin/perl $ORACLE_HOME/clone/bin/clone.pl ORACLE_HOME_NAME="OraDB19Home2" ORACLE_BASE="/u01/app/oracle" ORACLE_HOME="/oracle/product/19.3.0/db_1" CLUSTER_NODES="{primary01,primary02}" LOCAL_NODE=primary02


[INFO] [INS-32183] Use of clone.pl is deprecated in this release. Clone operation is equivalent to performing a Software Only installation from the image.
You must use /oracle/product/19.3.0/db_1/runInstaller script available to perform the Software Only install. For more details on image based installation, refer to help documentation.

Starting Oracle Universal Installer...

You can find the log of this install session at:
 /u01/app/oraInventory/logs/cloneActions2022-11-14_01-45-38AM.log
..................................................   5% Done.
..................................................   10% Done.
..................................................   15% Done.
..................................................   20% Done.
..................................................   25% Done.
..................................................   30% Done.
..................................................   35% Done.
..................................................   40% Done.
..................................................   45% Done.
..................................................   50% Done.
..................................................   55% Done.
..................................................   60% Done.
..................................................   65% Done.
..................................................   70% Done.
..................................................   75% Done.
..................................................   80% Done.
..................................................   85% Done.
..........
Copy files in progress.

Copy files successful.

Link binaries in progress.
..........
Link binaries successful.

Setup files in progress.
..........
Setup files successful.

Setup Inventory in progress.

Setup Inventory successful.
..........
Finish Setup successful.
The cloning of OraDB19Home2 was successful.
Please check '/u01/app/oraInventory/logs/cloneActions2022-11-14_01-45-38AM.log' for more details.

Setup Oracle Base in progress.

Setup Oracle Base successful.
..................................................   95% Done.

As a root user, execute the following script(s):
        1. /oracle/product/19.3.0/db_1/root.sh

Execute /oracle/product/19.3.0/db_1/root.sh on the following nodes:
[primary02]


..................................................   100% Done.

5.运行root.sh

我们按照说明在所有节点上运行root.sh。

节点 1

[root@primary01 ~]# /oracle/product/19.3.0/db_1/root.sh
Check /oracle/product/19.3.0/db_1/install/root_primary01.example.com_2022-11-14_01-43-54-491162614.log for the output of root script

然后我们检查这个节点上的inventory。

[oracle@primary01 ~]$ cat /u01/app/oraInventory/ContentsXML/inventory.xml
...
<HOME_LIST>
<HOME NAME="OraGI19Home1" LOC="/u01/app/19.0.0/grid" TYPE="O" IDX="1" CRS="true"/>
<HOME NAME="OraDB19Home1" LOC="/u01/app/oracle/product/19.0.0/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraDB19Home2" LOC="/oracle/product/19.3.0/db_1" TYPE="O" IDX="3"/>
</HOME_LIST>

节点 2

[root@primary02 ~]# /oracle/product/19.3.0/db_1/root.sh
Check /oracle/product/19.3.0/db_1/install/root_primary02.example.com_2022-11-14_01-52-02-329293496.log for the output of root script

然后我们检查这个节点上的inventory。

[oracle@primary02 ~]$ cat /u01/app/oraInventory/ContentsXML/inventory.xml
...
<HOME_LIST>
<HOME NAME="OraGI19Home1" LOC="/u01/app/19.0.0/grid" TYPE="O" IDX="1" CRS="true"/>
<HOME NAME="OraDB19Home1" LOC="/u01/app/oracle/product/19.0.0/db_1" TYPE="O" IDX="2"/>
<HOME NAME="OraDB19Home2" LOC="/oracle/product/19.3.0/db_1" TYPE="O" IDX="3"/>
</HOME_LIST>

6.srvctl修改数据库

我们应该通过srvctl更新集群的新home。

[oracle@primary01 ~]$ srvctl modify database -d orclcdb -o "/oracle/product/19.3.0/db_1"
[oracle@primary01 ~]$ srvctl config database -d orclcdb
...
Oracle home: /oracle/product/19.3.0/db_1

7.启动数据库

启动 RAC 数据库,我们使用实用程序srvctl。

[oracle@primary01 ~]$ srvctl start database -d orclcdb
[oracle@primary01 ~]$ srvctl status database -d orclcdb
Instance ORCLCDB1 is running on node primary01
Instance ORCLCDB2 is running on node primary02

8.测试连接

我们通过 sqlplus 测试连接

C:\Users\edchen>sqlplus system/password@orclcdb
...
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

SQL>

我们已将数据库移至新位置。



来源

How to Clone Oracle Home - Ed Chen Logic
https://logic.edchen.org/how-to-clone-oracle-home/

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

评论