RAC中使用dbca在创建集群数据库时,由于未在主节点[主机号小的节点]上启动图形界面创建数据库,导致最终创建好的集群数据库实例号与主机名号之间关系不对应,例如这里的实验环境如下:
instance_name etltest1对应主机名k1rac4
instance_name etltest2对应主机名k1rac2
下面用实验演示,如何将数据库实例号与主机号的对应关系改为如下:
instance_name etltest1对应主机名k1rac2
instance_name etltest2对应主机名k1rac4
---查看当前集群数据库实例与主机对应关系 [oracle@k1rac2 ~]$ crs_stat.sh Name Target State Host ----------------------------------- ---------- --------- ------- ora.etltest.db ONLINE ONLINE k1rac4 ora.etltest.etltest1.inst ONLINE ONLINE k1rac4 ora.etltest.etltest2.inst ONLINE ONLINE k1rac2 ora.etltest.etltests.cs ONLINE ONLINE k1rac2 ora.etltest.etltests.etltest2.srv ONLINE ONLINE k1rac2 ora.k1rac2.LISTENER_K1RAC2.lsnr ONLINE ONLINE k1rac2 ora.k1rac2.gsd ONLINE ONLINE k1rac2 ora.k1rac2.ons ONLINE ONLINE k1rac2 ora.k1rac2.vip ONLINE ONLINE k1rac2 ora.k1rac4.LISTENER_K1RAC4.lsnr ONLINE ONLINE k1rac4 ora.k1rac4.gsd ONLINE ONLINE k1rac4 ora.k1rac4.ons ONLINE ONLINE k1rac4 ora.k1rac4.vip ONLINE ONLINE k1rac4 ---查看集群数据库实例spfile文件位置 SQL> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ---------------------------------- spfile string /home/db/oracle/oradata/etl_spfile ---创建集群数据库实例pfile文件 SQL> create pfile='/tmp/pfileetl.ora' from spfile; File created. ---将以下两行添加到新创建的集群数据库实例pfile文件中 etltest1.instance_name=etltest1 etltest2.instance_name=etltest2 ---将主机k1rac2上数据库库实例etltest2密码文件改为实例etltest1所有 [oracle@k1rac2 dbs]$ mv orapwetltest2 orapwetltest1 ---将主机k1rac2上数据库库实例etltest2 pfile文件改为实例etltest1所有 [oracle@k1rac2 dbs]$ more initetltest2.ora SPFILE='/home/db/oracle/oradata/etl_spfile' [oracle@k1rac2 dbs]$ mv initetltest2.ora initetltest2.ora ---将主机k1rac4上数据库库实例etltest1密码文件改为实例etltest2所有 [oracle@k1rac4 dbs]$ mv orapwetltest1 orapwetltest2 ---将主机k1rac4上数据库库实例etltest1 pfile文件改为实例etltest2所有 [oracle@k1rac4 dbs]$ more initetltest1.ora SPFILE='/home/db/oracle/oradata/etl_spfile' [oracle@k1rac4 dbs]$ mv initetltest1.ora initetltest2.ora ---停止集群数据库实例 [oracle@k1rac2 dbs]$ srvctl stop database -d etltest [oracle@k1rac2 dbs]$ crs_stat.sh Name Target State Host ----------------------------------- ---------- --------- ------- ora.etltest.db OFFLINE OFFLINE ora.etltest.etltest1.inst OFFLINE OFFLINE ora.etltest.etltest2.inst OFFLINE OFFLINE ora.etltest.etltests.cs OFFLINE OFFLINE ora.etltest.etltests.etltest2.srv OFFLINE OFFLINE ora.k1rac2.LISTENER_K1RAC2.lsnr ONLINE ONLINE k1rac2 ora.k1rac2.gsd ONLINE ONLINE k1rac2 ora.k1rac2.ons ONLINE ONLINE k1rac2 ora.k1rac2.vip ONLINE ONLINE k1rac2 ora.k1rac4.LISTENER_K1RAC4.lsnr ONLINE ONLINE k1rac4 ora.k1rac4.gsd ONLINE ONLINE k1rac4 ora.k1rac4.ons ONLINE ONLINE k1rac4 ora.k1rac4.vip ONLINE ONLINE k1rac4 ---更新集群数据库spfile文件 SQL> create SPFILE='/home/db/oracle/oradata/etl_spfile' from pfile='/tmp/pfileetl.ora'; File created. ---将数据库及实例从集群中移除 [oracle@k1rac2 dbs]$ srvctl remove database -d etltest Remove the database etltest? (y/[n]) y [oracle@k1rac2 dbs]$ crs_stat.sh Name Target State Host ----------------------------------- ---------- --------- ------- ora.k1rac2.LISTENER_K1RAC2.lsnr ONLINE ONLINE k1rac2 ora.k1rac2.gsd ONLINE ONLINE k1rac2 ora.k1rac2.ons ONLINE ONLINE k1rac2 ora.k1rac2.vip ONLINE ONLINE k1rac2 ora.k1rac4.LISTENER_K1RAC4.lsnr ONLINE ONLINE k1rac4 ora.k1rac4.gsd ONLINE ONLINE k1rac4 ora.k1rac4.ons ONLINE ONLINE k1rac4 ora.k1rac4.vip ONLINE ONLINE k1rac4 ---重新将数据库及实例添加到集群 [oracle@k1rac2 dbs]$ srvctl add database -d etltest -o $ORACLE_HOME [oracle@k1rac2 dbs]$ crs_stat.sh Name Target State Host ----------------------------------- ---------- --------- ------- ora.etltest.db OFFLINE OFFLINE ora.k1rac2.LISTENER_K1RAC2.lsnr ONLINE ONLINE k1rac2 ora.k1rac2.gsd ONLINE ONLINE k1rac2 ora.k1rac2.ons ONLINE ONLINE k1rac2 ora.k1rac2.vip ONLINE ONLINE k1rac2 ora.k1rac4.LISTENER_K1RAC4.lsnr ONLINE ONLINE k1rac4 ora.k1rac4.gsd ONLINE ONLINE k1rac4 ora.k1rac4.ons ONLINE ONLINE k1rac4 ora.k1rac4.vip ONLINE ONLINE k1rac4 [oracle@k1rac2 dbs]$ srvctl add instance -d etltest -i etltest1 -n k1rac2 [oracle@k1rac2 dbs]$ srvctl add instance -d etltest -i etltest2 -n k1rac4 ---查看集群中数据库及实例状态 [oracle@k1rac2 dbs]$ crs_stat.sh Name Target State Host ----------------------------------- ---------- --------- ------- ora.etltest.db OFFLINE OFFLINE ora.etltest.etltest1.inst OFFLINE OFFLINE ora.etltest.etltest2.inst OFFLINE OFFLINE ora.k1rac2.LISTENER_K1RAC2.lsnr ONLINE ONLINE k1rac2 ora.k1rac2.gsd ONLINE ONLINE k1rac2 ora.k1rac2.ons ONLINE ONLINE k1rac2 ora.k1rac2.vip ONLINE ONLINE k1rac2 ora.k1rac4.LISTENER_K1RAC4.lsnr ONLINE ONLINE k1rac4 ora.k1rac4.gsd ONLINE ONLINE k1rac4 ora.k1rac4.ons ONLINE ONLINE k1rac4 ora.k1rac4.vip ONLINE ONLINE k1rac4 ---启动集群数据库 [oracle@k1rac2 dbs]$ srvctl start database -d etltest [oracle@k1rac2 dbs]$ crs_stat.sh Name Target State Host ----------------------------------- ---------- --------- ------- ora.etltest.db ONLINE ONLINE k1rac2 ora.etltest.etltest1.inst ONLINE ONLINE k1rac2 ora.etltest.etltest2.inst ONLINE ONLINE k1rac4 ora.k1rac2.LISTENER_K1RAC2.lsnr ONLINE ONLINE k1rac2 ora.k1rac2.gsd ONLINE ONLINE k1rac2 ora.k1rac2.ons ONLINE ONLINE k1rac2 ora.k1rac2.vip ONLINE ONLINE k1rac2 ora.k1rac4.LISTENER_K1RAC4.lsnr ONLINE ONLINE k1rac4 ora.k1rac4.gsd ONLINE ONLINE k1rac4 ora.k1rac4.ons ONLINE ONLINE k1rac4 ora.k1rac4.vip ONLINE ONLINE k1rac4 ---添加相应的Service服务 [oracle@k1rac2 dbs]$ srvctl add service -d etltest -s etltests -r etltest1 -a etltest2 -P BASIC [oracle@k1rac2 dbs]$ crs_stat.sh Name Target State Host ----------------------------------- ---------- --------- ------- ora.etltest.db ONLINE ONLINE k1rac2 ora.etltest.etltest1.inst ONLINE ONLINE k1rac2 ora.etltest.etltest2.inst ONLINE ONLINE k1rac4 ora.etltest.etltests.cs OFFLINE OFFLINE ora.etltest.etltests.etltest1.srv OFFLINE OFFLINE ora.k1rac2.LISTENER_K1RAC2.lsnr ONLINE ONLINE k1rac2 ora.k1rac2.gsd ONLINE ONLINE k1rac2 ora.k1rac2.ons ONLINE ONLINE k1rac2 ora.k1rac2.vip ONLINE ONLINE k1rac2 ora.k1rac4.LISTENER_K1RAC4.lsnr ONLINE ONLINE k1rac4 ora.k1rac4.gsd ONLINE ONLINE k1rac4 ora.k1rac4.ons ONLINE ONLINE k1rac4 ora.k1rac4.vip ONLINE ONLINE k1rac4 ---启动新添加的服务并查看集群状态 [oracle@k1rac2 dbs]$ srvctl start service -d etltest [oracle@k1rac2 dbs]$ crs_stat.sh Name Target State Host ----------------------------------- ---------- --------- ------- ora.etltest.db ONLINE ONLINE k1rac2 ora.etltest.etltest1.inst ONLINE ONLINE k1rac2 ora.etltest.etltest2.inst ONLINE ONLINE k1rac4 ora.etltest.etltests.cs ONLINE ONLINE k1rac2 ora.etltest.etltests.etltest1.srv ONLINE ONLINE k1rac2 ora.k1rac2.LISTENER_K1RAC2.lsnr ONLINE ONLINE k1rac2 ora.k1rac2.gsd ONLINE ONLINE k1rac2 ora.k1rac2.ons ONLINE ONLINE k1rac2 ora.k1rac2.vip ONLINE ONLINE k1rac2 ora.k1rac4.LISTENER_K1RAC4.lsnr ONLINE ONLINE k1rac4 ora.k1rac4.gsd ONLINE ONLINE k1rac4 ora.k1rac4.ons ONLINE ONLINE k1rac4 ora.k1rac4.vip ONLINE ONLINE k1rac4 --- 更新集群节点listener和tns文件