ITPub博客

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

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

原创 Linux操作系统 作者:yangtingkun 时间:2009-05-01 23:00:11 0 删除 编辑

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

 

 

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

根据上面的检查可以发现,数据库已经安装RAC选项,但是当前数据库是单实例数据库。下面通过手工的方式将当前的数据库变为RAC环境:

SQL> show parameter spfile

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
spfile                               string      +DATA/test/spfiletest.ora
SQL> ALTER SYSTEM SET CLUSTER_DATABASE = TRUE SCOPE = SPFILE;

系统已更改。

SQL> ALTER SYSTEM SET CLUSTER_DATABASE_INSTANCES = 2 SCOPE = SPFILE;

系统已更改。

SQL> ALTER SYSTEM SET INSTANCE_NUMBER = 1 SCOPE = SPFILE SID = 'TEST1';

系统已更改。

SQL> ALTER SYSTEM SET INSTANCE_NUMBER = 2 SCOPE = SPFILE SID = 'TEST2';

系统已更改。

SQL> ALTER SYSTEM SET THREAD = 1 SCOPE = SPFILE SID = 'TEST1';

系统已更改。

SQL> ALTER SYSTEM SET THREAD = 2 SCOPE = SPFILE SID = 'TEST2';

系统已更改。

SQL> ALTER SYSTEM SET UNDO_TABLESPACE = 'UNDOTBS1' SCOPE = SPFILE SID = 'TEST1';

系统已更改。

SQL> ALTER SYSTEM SET UNDO_TABLESPACE = 'UNDOTBS2' SCOPE = SPFILE SID = 'TEST2';

系统已更改。

SQL> ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS=(PROTOCOL=TCP)(HOST=172.0.2.62)(PORT=1521))' SCOPE = SPFILE SID = 'TEST1';

系统已更改。

SQL> ALTER SYSTEM SET LOCAL_LISTENER = '(ADDRESS=(PROTOCOL=TCP)(HOST=172.0.2.63)(PORT=1521))' SCOPE = SPFILE SID = 'TEST2';

系统已更改。

修改完RAC环境的初始化参数,可以创建UNDOTBS2表空间和THREAD2使用的REDO.log文件:

SQL> SELECT FILE_NAME FROM DBA_DATA_FILES
  2  WHERE TABLESPACE_NAME = 'UNDOTBS1';

FILE_NAME
--------------------------------------------------------------------------------
+DATA/test/datafile/undotbs1.535.668281229

SQL> SELECT MEMBER FROM V$LOGFILE;

MEMBER
--------------------------------------------------------------------------------
+DATA/test/onlinelog/group_1.530.668281219
+DATA/test/onlinelog/group_2.531.668281219
+DATA/test/onlinelog/group_3.532.668281219

SQL> SELECT GROUP#, THREAD#, SEQUENCE#, BYTES/1024/1024
  2  FROM V$LOG;

    GROUP#    THREAD#  SEQUENCE# BYTES/1024/1024
---------- ---------- ---------- ---------------
         1          1        391              50
         2          1        389              50
         3          1        390              50

SQL> CREATE UNDO TABLESPACE UNDOTBS2
  2  DATAFILE '+DATA/test/datafile/undotbs2.dbf' SIZE 4G;

表空间已创建。

SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 4
  2  '+DATA/test/onlinelog/redo4.log' SIZE 50M;

数据库已更改。

SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 5
  2  '+DATA/test/onlinelog/redo5.log' SIZE 50M;

数据库已更改。

SQL> ALTER DATABASE ADD LOGFILE THREAD 2 GROUP 6
  2  '+DATA/test/onlinelog/redo6.log' SIZE 50M;

数据库已更改。

SQL> ALTER DATABASE ENABLE THREAD 2;

数据库已更改。

关闭数据库,设置SIDTEST1,并设置初始化参数inittest1.ora

SQL> SHUTDOWN IMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE
例程已经关闭。
SQL> EXIT
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
断开

bash-3.00$ echo "SPFILE='+DATA/test/spfiletest.ora'" > $ORACLE_HOME/dbs/initTEST1.ora
bash-3.00$ more $ORACLE_HOME/dbs/initTEST1.ora
SPFILE='+DATA/test/spfiletest.ora'
bash-3.00$ export ORACLE_SID=TEST1

尝试启动数据库:

bash-3.00$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on 星期四 4 9 11:25:02 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

已连接到空闲例程。

SQL> STARTUP
ORACLE
例程已经启动。

Total System Global Area  806133760 bytes
Fixed Size                  2099064 bytes
Variable Size             195623048 bytes
Database Buffers          603979776 bytes
Redo Buffers                4431872 bytes
数据库装载完毕。
数据库已经打开。

检查数据库状态:

SQL> show parameter cluster_database

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cluster_database                     boolean     TRUE
cluster_database_instances           integer     2
SQL> select instance_number, instance_name from v$instance;

INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
              1 TEST1

下面到节点上设置初始化参数文件和SID

bash-3.00$ export ORACLE_SID=TEST2
bash-3.00$ echo "SPFILE='+DATA/test/spfiletest.ora'" > $ORACLE_HOME/dbs/initTEST2.ora
bash-3.00$ more $ORACLE_HOME/dbs/initTEST2.ora                      
SPFILE='+DATA/test/spfiletest.ora'
bash-3.00$ mkdir -p /data/oracle/admin/test/adump
bash-3.00$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on 星期四 4 9 13:25:12 2009

Copyright (c) 1982, 2007, Oracle.  All rights reserved.

已连接到空闲例程。

SQL> STARTUP
ORACLE
例程已经启动。

Total System Global Area  806133760 bytes
Fixed Size                  2099064 bytes
Variable Size             191428744 bytes
Database Buffers          608174080 bytes
Redo Buffers                4431872 bytes
数据库装载完毕。
数据库已经打开。

检查数据库的状态:

SQL> SELECT NAME FROM V$DATABASE;

NAME
---------
TEST

SQL> SELECT INSTANCE_NUMBER, INSTANCE_NAME FROM V$INSTANCE;

INSTANCE_NUMBER INSTANCE_NAME
--------------- ----------------
              2 TEST2

SQL> SELECT INST_ID, INSTANCE_NUMBER, INSTANCE_NAME 
  2  FROM GV$INSTANCE;

   INST_ID INSTANCE_NUMBER INSTANCE_NAME
---------- --------------- ----------------
         2               2 TEST2
         1               1 TEST1

数据库已经变为RAC环境,大部分工具已经基本完成。

在节点2上配置listener.ora以及tnsnames.ora文件,其中listener.ora配置类似如下:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = rac11g2)
      (ORACLE_HOME = /data/oracle/product/11.1/database)
    )
    (SID_DESC =
      (SID_NAME = TEST2)
      (ORACLE_HOME = /data/oracle/product/11.1/database)
    )
  )


LISTENER_SER2 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = ser2-vip)(PORT = 1521)(IP = FIRST))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = 172.0.2.63)(PORT = 1521)(IP = FIRST))
      )
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      )
    )
  )

RAC数据库添加到SRVCTL工具配置中:

bash-3.00$ srvctl add database -d test -o /data/oracle/product/11.1/database -p +DATA/test/spfiletest.ora -n test
bash-3.00$ srvctl add instance -d test -i TEST1 -n ser1
bash-3.00$ srvctl add instance -d test -i TEST2 -n ser2

密码文件还保存在文件系统中,可以在两个实例上分别保存密码文件,也可以将密码文件放到ASM中。这里就不再描述了,可以参考:http://yangtingkun.itpub.net/post/468/293477

 

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-592453/,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2007-12-29

  • 博文量
    1955
  • 访问量
    10488467