ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 单实例数据库工具转化多实例数据库

单实例数据库工具转化多实例数据库

原创 Linux操作系统 作者:yangtingkun 时间:2009-05-02 23:45:33 0 删除 编辑

需要说明一下,这篇文章不是介绍将一个单实例的数据库环境升级为RAC环境,而是介绍如何将一个RAC环境下的单实例数据库,转变为多实例数据库。

这篇介绍利用Oracle的工具进行转化。

单实例数据库手工转化多实例数据库:http://yangtingkun.itpub.net/post/468/483713

 

 

OracleCLUSTER软件已经在两个节点上建立成功,OracleASM实例已经启动。事实上,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选项,但是当前数据库是单实例数据库。下面通过DBUADBCA配合的方式将当前的数据库变为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,然后输入本地实例名称:testDBUA会报错,认为是一个不可重复运行的错误。登陆数据库,发现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添加test1test2的配置:

    (SID_DESC =
      (SID_NAME = test1)
      (ORACLE_HOME = /data/oracle/product/11.1/database)
    )

然后重启监听。

还需要将databaseinstance的信息添加到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,就可以进行节点的添加了。

10gDBCA中,如果是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博客 ” ,链接:http://blog.itpub.net/4227/viewspace-592454/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
暂无介绍

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10441935