简单描述一下,在Oracle 10203 for Solaris sparc的RAC双节点环境中,新增一个节点的过程。共享存储已经在第三个节点上配置完成,这里主要介绍操作系统上和Oracle上的配置。
简单描述添加节点的数据库添加实例过程中碰到的问题。
Oracle10203RAC环境添加新节点(一):http://yangtingkun.itpub.net/post/468/493738
Oracle10203RAC环境添加新节点(二):http://yangtingkun.itpub.net/post/468/493764
Oracle10203RAC环境添加新节点(三):http://yangtingkun.itpub.net/post/468/493811
Oracle10203RAC环境添加新节点(四):http://yangtingkun.itpub.net/post/468/493848
Oracle10203RAC环境添加新节点(五):http://yangtingkun.itpub.net/post/468/493883
首先碰到一个错误,当新实例ASM实例启动后,在V$ASM_DISK中仅能查询到一个磁盘,而从DBCA的状况看,3个实例只有2个MOUNT到磁盘组。
这个问题以前碰到多,应该是缺少权限造成的:
# cd /dev/rdsk/
# chown oracle:oinstall c1t500601603022*
授权后:
bash-3.00$ export ORACLE_SID=+ASM3
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on 星期四 4月 2 15:07:23 2009
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, Real Application Clusters, OLAP and Data Mining options
SQL> select count(*) from v$asm_disk;
COUNT(*)
----------
45
在使用dbca添加实例的时候碰到几个问题,所有的问题都是在添加实例9个步骤中的第3个步骤:Select an active cluster database to add on instance。
首先需要确保数据库实例处于启动状态,否则dbca在添加实例的时候会报错。
其次应该保证所有节点的LISTENER处于启动状态,否则dbca添加实例的界面点击NEXT后不会有任何的反应。
即使LISTENER全部启动也是不够的,必须确保LISTENER检测每个节点的PUBLIC IP。对于以及运行的RAC环境而言,LISTENER一般监听的是每个节点的VIP,而如果没有添加PUBLIC IP,那么dbca就会报错,说明监听的对象racnode1:1521:testrac1不存在。
需要手工在所有的节点上添加对PUBLIC IP的监听设置,比如节点1的LISTENER.ORA设置如下:
bash-2.03$ more listener.ora
# listener.ora.racnode1 Network Configuration File: /data/oracle/product/10.2/database/network/admin/listener.ora.racnode1
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /data/oracle/product/10.2/database)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = testrac)
(ORACLE_HOME = /data/oracle/product/10.2/database)
(SID_NAME = testrac1)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.198.224)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.25.198.222)(PORT = 1521))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
随后重启监听:
bash-2.03$ lsnrctl stop
LSNRCTL for Solaris: Version 10.2.0.3.0 - Production on 01-2月 -2009 00:35:54
Copyright (c) 1991, 2006, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.25.198.224)(PORT=1521)))
命令执行成功
bash-2.03$ lsnrctl start
LSNRCTL for Solaris: Version 10.2.0.3.0 - Production on 01-2月 -2009 00:36:02
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.224)(PORT=1521)))
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.222)(PORT=1521)))
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.25.198.224)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for Solaris: Version 10.2.0.3.0 - Production
启动日期 01-2月 -2009 00:36:02
正常运行时间 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.224)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.222)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
服务 "testrac" 包含 1 个例程。
例程 "testrac1", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
命令执行成功
每个节点执行此操作后,再次点击next,终于可以到达下一个步骤。
最后一个问题在于DBCA对于ASM实例的处理还存在问题。由于使用了ASM,自然也就使用了OMF特性。于是新增的实例所需要添加的UNDOTBS3表空间,以及THREAD3对应的REDO.LOG文件,都采用了OMF方式。如果说DBCA采用了OMF而不运行用户提供存储位置,那么它能在正确的位置存储文件也可以,可惜DBCA存在问题,当最后运行的时候报错:Failed to create directory “” on “racnode3”, “PRKC-1055: Directory name passed was null”. PRKC-1055: Directory name passed was null。
所以只能采用提前建立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' size 512m;
数据库已更改。
SQL> alter database add logfile thread 3 group 6 '+DISK/testrac/onlinelog/redo6.log' size 512m;
数据库已更改。
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' size 4096m;
表空间已创建。
随后使用DBCA进行添加节点,不过在最后一步添加表空间和REDO的时候,需要手工将表空间和REDO.LOG删除。不过根据DBCA提供的汇总显示外,仍然存在问题,DBCA认为新节点对应的THREAD为1,而认为对应的UNDO表空间是UNDOTBS4。点击确定后,仍然报错。
看来只能通过手工的方法来新增实例了。具体方法在第四篇文章中已经描述过了,这里就不在重复了。
随后在启动新增实例的时候碰到了一个错误:
bash-3.00$ sqlplus "/ as sysdba"
SQL*Plus: Release 10.2.0.3.0 - Production on 星期五 4月 3 14:53:23 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
ORA-01618: ???? 3 ??? - ????
这时由于没有启用对应的THREAD。登陆实例1的节点,ENABLE THREAD 3:
SQL> alter database enable thread 3;
数据库已更改。
重启实例3问题消失。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4227/viewspace-620189/ ,如需转载,请注明出处,否则将追究法律责任。