首页 > Linux操作系统 > Linux操作系统 > 单实例数据库工具转化多实例数据库
需要说明一下,这篇文章不是介绍将一个单实例的数据库环境升级为RAC环境,而是介绍如何将一个RAC环境下的单实例数据库,转变为多实例数据库。
这篇介绍利用Oracle的工具进行转化。
单实例数据库手工转化多实例数据库:http://yangtingkun.itpub.net/post/468/483713
Oracle的CLUSTER软件已经在两个节点上建立成功,Oracle的ASM实例已经启动。事实上,RAC环境的数据库已经建立起来。
不过在这个RAC环境中,其中一个节点上建立了一个单实例的数据库,数据文件已经存储在ASM中,因此下面要做的只是将这个数据库变为多实例访问的RAC数据库。
bash-3.00$ cd $ORACLE_HOME/../crs/bin
bash-3.00$ crs_stat -t
名称 类型 目标 状态 主机
------------------------------------------------------------
ora.rac11g.db application OFFLINE OFFLINE
ora....g1.inst application ONLINE OFFLINE
ora....g2.inst application ONLINE OFFLINE
ora.ractest.db application OFFLINE OFFLINE
ora....t1.inst application OFFLINE OFFLINE
ora....t2.inst application OFFLINE OFFLINE
ora....SM1.asm application ONLINE ONLINE ser1
ora....R1.lsnr application ONLINE ONLINE ser1
ora.ser1.gsd application ONLINE ONLINE ser1
ora.ser1.ons application ONLINE ONLINE ser1
ora.ser1.vip application ONLINE ONLINE ser1
ora....SM2.asm application ONLINE ONLINE ser2
ora....R2.lsnr application ONLINE ONLINE ser2
ora.ser2.gsd application ONLINE ONLINE ser2
ora.ser2.ons application ONLINE ONLINE ser2
ora.ser2.vip application ONLINE ONLINE ser2
登陆数据库进行检查:
bash-3.00$ export ORACLE_SID=test
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on 星期三 4月 8 17:35:11 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
PL/SQL Release 11.1.0.6.0 - Production
CORE 11.1.0.6.0 Production
TNS for Solaris: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
SQL> col parameter format a40
SQL> col value format a30
SQL> select * from v$option
2 where parameter = 'Real Application Clusters';
PARAMETER VALUE
---------------------------------------- ------------------------------
Real Application Clusters TRUE
SQL> show parameter cluster
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cluster_database boolean FALSE
cluster_database_instances integer 1
cluster_interconnects string
SQL> select inst_id, instance_number, instance_name
2 from gv$instance;
INST_ID INSTANCE_NUMBER INSTANCE_NAME
---------- --------------- ----------------
1 1 test
创建一个PFILE,一会使用DBUA的时候需要用到。
SQL> create pfile='/export/home/oracle/inittest.ora' from spfile;
文件已创建。
根据上面的检查可以发现,数据库已经安装RAC选项,但是当前数据库是单实例数据库。下面通过DBUA和DBCA配合的方式将当前的数据库变为RAC环境:
首先运行DBUA,修改单实例的配置为RAC环境配置。选择需要修改的数据库test,单击确定。弹出对话框,内容如下:
The database “test” does not have the cluster configuration and also not listed in the registry of remote cluster nodes. Do you want the Database Upgrade Assistant to upgrade it as a single instance database?
Click Yes to upgrade it as a single instance database. Click No to upgrade it as a cluster database.
点击NO,然后输入本地实例名称:test。DBUA会报错,认为是一个不可重复运行的错误。登陆数据库,发现Oracle其实已经修改可部分初始化参数,比如CLUSTER_DATABASE已经设置为TRUE。不过利用DBUA将单实例变为RAC还是存在bug。
手工编辑刚才的初始化参数,添加下列内容:
cluster_database=true
cluster_database_instances=1
test1.instance_number=1
test1.thread=1
test1.local_listener='(ADDRESS=(PROTOCOL=TCP)(HOST=172.0.2.62)(PORT=1521))'
利用这个pfile启动数据库:
bash-3.00$ export ORACLE_SID=test1
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on 星期一 4月 13 14:56:14 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
已连接到空闲例程。
SQL> startup pfile=/export/home/oracle/inittest.ora
ORACLE 例程已经启动。
Total System Global Area 776896512 bytes
Fixed Size 2098776 bytes
Variable Size 199940520 bytes
Database Buffers 570425344 bytes
Redo Buffers 4431872 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter cluster_database
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
cluster_database boolean TRUE
cluster_database_instances integer 1
SQL> create spfile = '+DATA/test/spfiletest.ora' from pfile;
文件已创建。
利用这个pfile创建spfile文件。
编辑2个节点上的listener.ora添加test1和test2的配置:
(SID_DESC =
(SID_NAME = test1)
(ORACLE_HOME = /data/oracle/product/11.1/database)
)
然后重启监听。
还需要将database和instance的信息添加到srvctl中:
$ srvctl add database -d test -o /data/oracle/product/11.1/database -p +DATA/test/spfiletest.ora -n test
$ srvctl add instance -d test -i test1 -n ser1
如果监听没有启动,或者srvctl没有配置数据库和实例信息,在dbca中是看不到test数据库信息的。
利用orapwd创建密码文件:
bash-3.00$ orapwd file=orapwtest1 password=test
下面使用dbca来添加实例,注意dbca必须在添加实例的节点运行。
选择Oracle Real Application Clusters Database,选择Instance Management,选择Add an Instance。
选择test数据库,并确认test数据库状态为active。输入sys用户以及sys用户密码。
需要注意,如果test数据库不存在,说明Oracle没有认为TEST数据库是RAC环境数据库,需要将test用户添加到srvctl命令中。
如果test数据库状态不是active,那么可能是listener的配置问题,也可能是数据库的当前状态没有反应到srvctl中。正确的配置监听,利用srvctl重新启动监听、asm及数据库实例,就可以保证数据库的状态正确了。
随后DBCA显示当前运行的实例,点击确定后,选择要添加的新节点,以及对应的实例名称。这里选择ser2节点,并输入test2作为实例名。
由于使用了OMF,因此在存储设置的位置不用进行修改。如果需要,可以修改UNDOTBS2数据文件的大小。
最后确认后点击FINISH,就可以进行节点的添加了。
在10g的DBCA中,如果是ASM + OMF方式,存在bug,导致DBCA无法完成表空间和日志文件的添加,在11g中,这个问题已经被解决。
安装完成后,这个数据库已经变为RAC环境。
bash-3.00$ export ORACLE_SID=test2
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 11.1.0.6.0 - Production on 星期二 4月 14 14:22:37 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
SQL> select name from v$database;
NAME
---------
TEST
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
test2
SQL> select instance_number, instance_name from gv$instance;
INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
2 test2
1 test1
由于是DBCA工具创建的数据库,因此TNSNAMES.ORA中会自动配置数据库的服务名,test2实例的信息也会自动的添加到srvctl工具中。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-592454/ ,如需转载,请注明出处,否则将追究法律责任。