将 RAC 数据库转换为独立数据库

概述

将RAC实例转换为非RAC实例,这种情况有几种情况:

1、将RAC实例永久转换为非RAC实例,不保留Oracle Clusterware。
2. 将RAC 实例永久转换为非RAC 实例,但仍保留Oracle Clusterware。
3. 暂时将RAC 实例转换为非RAC 实例,以便在对RAC 问题进行故障排除的同时生产数据库可以继续运行。

解决方案

在所有情况下,集群件都应该在其他节点上关闭以避免操作冲突。

1、将RAC实例永久转换为非RAC实例,不保留Oracle Clusterware。

a.) 使用 root 用户关闭所有节点上的集群件。
b.) 使用 root 用户运行 rootdelete 和 rootdeinstall。
c.) 运行安装程序并使用 crs 用户删除 Clusterware 主目录。
d.) 使用 oracle 用户安装一个新的单实例主目录。如果愿意,还有一个单独的 ASM 主页。
e.) 作为 oracle 用户,使用 netca 从 OLD home 中删除监听器。使用 NEW home 中的 netca 创建一个新的本地监听器。听众将不再收听 VIP。更改服务器和/或客户端上的现有 tnsnames.ora 文件以使用主机 IP 而不是 VIP。
f.) 使用来自新主目录的 dbca 和 oracle 用户配置 ASM。按照 dbca 的说明使用 root 用户使用“localconfig add”创建非 RAC CSS。
g.) 使用 oracle 用户,将 pfile/spfile 从旧的 DB home 复制到新的 DB home,删除 pfile/spfile 中其他实例的所有参数。

— 删除 cluster_database 和 cluster_database_instances 参数。
— 删除其他实例的 undo_tablespace 参数。
— 删除 remote_listener 和 local_listener 参数(如果存在)。

h.) 使用 oracle 用户启动新的监听器和 ASM。确保已安装 ASM 磁盘组。
i.) 以oracle用户,mount阶段启动数据库,执行
alter database disable thread <thread of other instance>;
alter database open;;
j.) 打开数据库后,您可以删除用于其他实例的重做日志组和/或表空间。
k.) 使用 oracle 用户,修改 /etc/oratab 上的 ORACLE_HOME。并删除 pfile/spfile 中的 instance_number 和 thread 参数。
l.) 使用 oracle 用户,运行安装程序以删除旧的 ORACLE_HOME。

2. 将RAC 实例永久转换为非RAC 实例,但仍保留Oracle Clusterware。

在这种情况下,还建议只安装一个单实例主目录,然后从新主目录启动 ASM 和数据库实例。(如果愿意,可以安装单独的单实例 ASM 主目录。)因此,清单可以与更改同步,这可以防止将来出现相关问题。

a.) 保持 Oracle 集群件不变。
b.) 使用 oracle 用户安装新的 SI 主目录(runInstaller 为您提供安装启用 RAC 的主目录或 SI 主目录的选项)。如果愿意,还有一个单独的 ASM 主页。
c.) 使用 root 用户,在除当前节点之外的所有节点上停止 Clusterware。停止 DB/ASM 实例并使用 crs 用户从旧主目录中的 srvctl 删除 OCR 中的实例注册表。
$ srvctl remove instance -d <name> -i <inst_name>
$ srvctl remove database -d <name>
$ srvctl remove asm -n <node_name> [-i <asm_inst_name>]

d.) 对于 oracle 用户,使用 netca 从旧的 home 中删除监听器。
e.) 使用 oracle 用户,使用来自新家的 netca 创建一个新的监听器。如果侦听器不再侦听 VIP,请更改服务器和/或客户端上现有的 tnsnames.ora 文件以使用主机 IP 而不是 VIP。
f.) 使用 oracle 用户,使用来自新主目录的 dbca 配置单实例 ASM。
g.) 从新家转换并启动数据库实例。请参阅方案 #1 中的步骤 g 到 l。
h.) 如果愿意,将 DB 注册到 OCR。

3. 暂时将RAC 实例转换为非RAC 实例,以便在对RAC 问题进行故障排除的同时生产数据库可以继续运行。

** 请注意,在保持此过渡状态期间,请不要在未先转换回 RAC 的情况下应用任何 RDBMS 补丁。
a.) 在具有 oracle 用户的所有节点上关闭 RAC 环境中的所有实例,包括 ASM 和 DB 实例。
b.) 使用 oracle 用户关闭所有节点上的所有侦听器。
c.) 对于 oracle 用户,使用 rac_off 选项重新链接 Oracle 可执行文件。(对于 ASM 和 DB 主目录)
$ make -f ins_rdbms.mk rac_off
$ make -f ins_rdbms.mk ioracle

d.) 使用 oracle 用户,删除 pfile/spfile 中其他实例的所有参数。
— 删除 cluster_database 和 cluster_database_instances 参数。(对于 ASM 和 DB)
——删除其他实例的 undo_tablespace 参数。(仅适用于数据库)

e.) 使用 oracle 用户、启动侦听器和 ASM。确保已安装 ASM 磁盘组。
f.) 以oracle用户,mount阶段启动数据库,执行
alter database disable thread <thread of other instance>;
alter database open;;

g.) 打开数据库后,您可以删除用于其他实例的重做日志组和/或表空间。
h.) 禁用 ASM/DB/Clusterware 的自动启动。(修复 CRS/RAC 问题后重新启用它们)
$ srvctl modify database -d <DBNAME> -y manual
$ srvctl disable asm -n <node_name>
# crsctl disable crs

参考地址

https://onlyuvraj.wordpress.com/convert-rac-database-into-standalone-database/

posted @ 2023-01-03 14:47  雪竹子  阅读(78)  评论(0编辑  收藏  举报