简单描述一下,在Oracle 10203 for Solaris sparc的RAC双节点环境中,新增一个节点的过程。共享存储已经在第三个节点上配置完成,这里主要介绍操作系统上和Oracle上的配置。
这一篇添加一个新节点上的数据库实例。
首先确保数据库处于启动状态,如果数据库没有启动:
bash-2.03$ srvctl start inst -d testrac -i testrac1
bash-2.03$ srvctl start inst -d testrac -i testrac2
确保监听处于启动状态,如果没有启动,使用lsnrctl start启动监听:
bash-2.03$ lsnrctl start
LSNRCTL for Solaris: Version 10.2.0.3.0 - Production on 01-2月-2009 00:22:24
Copyright (c) 1991, 2006, Oracle. All rights reserved.
启动/data/oracle/product/10.2/database/bin/tnslsnr:请稍候...
TNSLSNR for Solaris: Version 10.2.0.3.0 - Production
系统参数文件为/data/oracle/product/10.2/database/network/admin/listener.ora
写入/data/oracle/product/10.2/database/network/log/listener.log的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.225)(PORT=1521)))
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
正在连接到(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.25.198.225)(PORT=1521)))
LISTENER的STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for Solaris: Version 10.2.0.3.0 - Production
启动日期 01-2月-2009 00:22:26
正常运行时间 0天0小时0分0秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 /data/oracle/product/10.2/database/network/admin/listener.ora
监听程序日志文件 /data/oracle/product/10.2/database/network/log/listener.log
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.225)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
服务摘要..
服务"PLSExtProc"包含1个例程。
例程"PLSExtProc",状态UNKNOWN,包含此服务的1个处理程序...
服务"testrac"包含1个例程。
例程"testrac2",状态UNKNOWN,包含此服务的1个处理程序...
命令执行成功
对于新节点而言,可以首先通过NETCA来配置监听程序:
$ netca
Oracle Net Services Configuration:
首先选择Cluster Configuration,然后选择全表3个节点,选择Listener Configuration,选择ADD,输入监听名称。
在图形界面环境下运行DBCA添加实例报错,由于DBCA对于ASM的支持存在问题,只能选择手工添加实例:
首先建立UNDOTBS3表空间,以及THREAD3对应的REDO.LOG的方法:
SQL> select group#, thread#, sequence#, bytes/1024/1024
2 from v$log;
GROUP# THREAD# SEQUENCE# BYTES/1024/1024
---------- ---------- ---------- ---------------
1 1 1716 512
2 1 1717 512
3 2 839 512
4 2 840 512
SQL> select member from v$logfile;
MEMBER
---------------------------------------------------
+DISK/testrac/onlinelog/group_1.258.633485433
+DISK/testrac/onlinelog/group_2.260.633485441
+DISK/testrac/onlinelog/group_3.268.633485447
+DISK/testrac/onlinelog/group_4.270.633485455
下面手工添加THREAD 3对应的REDO.LOG:
SQL> alter database add logfile thread 3 group 5 '+DISK/testrac/onlinelog/redo5.log' size512m;
数据库已更改。
SQL> alter database add logfile thread 3 group 6 '+DISK/testrac/onlinelog/redo6.log' size512m;
数据库已更改。
SQL> select group#, thread#, sequence#, bytes/1024/1024
2 from v$log;
GROUP# THREAD# SEQUENCE# BYTES/1024/1024
---------- ---------- ---------- ---------------
1 1 1716 512
2 1 1717 512
3 2 839 512
4 2 840 512
5 3 0 512
6 3 0 512
已选择6行。
SQL> select member from v$logfile;
MEMBER
----------------------------------------------------------------
+DISK/testrac/onlinelog/group_1.258.633485433
+DISK/testrac/onlinelog/group_2.260.633485441
+DISK/testrac/onlinelog/group_3.268.633485447
+DISK/testrac/onlinelog/group_4.270.633485455
+DISK/testrac/onlinelog/redo5.log
+DISK/testrac/onlinelog/redo6.log
已选择6行。
接着添加UNDOTBS3表空间:
SQL> select file_name from dba_data_files
2 where tablespace_name like 'UNDOTBS_';
FILE_NAME
----------------------------------------------------------------------
+DISK/testrac/datafile/undotbs1.263.618591197
+DISK/testrac/datafile/undotbs2.266.618591249
SQL> create undo tablespace undotbs3
2 datafile '+DISK/testrac/datafile/undotbs3.dbf' size4096m;
表空间已创建。
检查数据库的SPFILE配置:
SQL> show parameter spfile
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
spfile string +DISK/testrac/spfiletestrac.ora
由于系统使用的是SPFILE,下面直接修改必要的初始化参数值:
SQL> alter system set cluster_database_instances = 3 scope = spfile;
系统已更改。
SQL> alter system set instance_number = 3 scope = spfile sid = 'testrac3';
系统已更改。
SQL> alter system set local_listener =
2 '(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.198.227)(PORT = 1521))'
3 scope = spfile sid = 'testrac3';
系统已更改。
SQL> alter system set thread = 3 scope = spfile sid = 'testrac3';
系统已更改。
SQL> alter system set undo_tablespace = 'UNDOTBS3' scope = spfile sid = 'testrac3';
系统已更改。
下面重启数据库的实例,使得数据库加载新的SPFILE:
bash-2.03$ srvctl stop db -d testrac
bash-2.03$ srvctl start inst -d testrac -i testrac1
bash-2.03$ srvctl start inst -d testrac -i testrac2
登陆实例1的节点,ENABLE THREAD 3:
SQL> alter database enable thread 3;
数据库已更改。
在新增节点上编辑PFILE文件,指向SPFILE文件:
bash-3.00$ cd $ORACLE_HOME
bash-3.00$ cd dbs
bash-3.00$ vi inittestrac3.ora
spfile='+DISK/testrac/spfiletestrac.ora'
生成密码文件:
bash-3.00$ orapwd file=orapwtestrac3 password=password
建立adump、bdump、udump和cdump目录:
bash-3.00$ cd $ORACLE_BASE/admin
bash-3.00$ ls -l
total 2
drwxr-xr-x 7 oracle oinstall 512 Jul 1 17:37 +ASM
bash-3.00$ mkdir testrac
bash-3.00$ cd testrac
bash-3.00$ mkdir bdump cdump adump udump
下面就可以登陆sqlplus并启动新实例了:
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on星期五4月3 15:06:35 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
已连接到空闲例程。
SQL> startup
ORACLE例程已经启动。
Total System Global Area 2147483648 bytes
Fixed Size 2031480 bytes
Variable Size 503316616 bytes
Database Buffers 1627389952 bytes
Redo Buffers 14745600 bytes
数据库装载完毕。
数据库已经打开。
SQL> select inst_id, instance_number, instance_name
2 from gv$instance;
INST_ID INSTANCE_NUMBER INSTANCE_NAME
---------- --------------- ----------------
3 3 testrac3
2 2 testrac2
1 1 testrac1
SQL> select instance_name, status from v$instance;
INSTANCE_NAME STATUS
---------------- ------------
testrac3 OPEN
随后还需要将手工添加的实例信息加到srvctl工具中:
$ srvctl add instance -d testrac -i testrac3 -n racnode3
$ srvctl modify instance -d testrac -i testrac3 -s +ASM3
至此,新增实例的操作完成。
还需要修改三个节点上的tnsnames.ora文件,确保通过TESTRAC的访问在3个实例上根据负载均衡的机制进行连接。
TESTRAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = racnode1-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = racnode2-vip)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = racnode3-vip)(PORT = 1521))
(LOAD_BALANCE = yes)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = testrac)
(FAILOVER_MODE =
(TYPE = SELECT)
(METHOD = BASIC)
(RETRIES = 180)
(DELAY = 5)
)
)
)
比如配置TESTRAC服务名如上所示,下面连接数据库:
SQL> conn test/test@testrac
已连接。
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
testrac3
SQL> host
$ sqlplus test/test@testrac
SQL*Plus: Release 10.2.0.3.0 - Production on星期四4月9 14:56:34 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
连接到:
Oracle Database10gEnterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
testrac1
SQL> host
$ sqlplus test/test@testrac
SQL*Plus: Release 10.2.0.3.0 - Production on星期四4月9 14:56:46 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
连接到:
Oracle Database10gEnterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
testrac2
oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html