ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle10203RAC环境添加新节点(六)

Oracle10203RAC环境添加新节点(六)

原创 Linux操作系统 作者:yangtingkun 时间:2009-11-20 23:59:22 0 删除 编辑

简单描述一下,在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/ ,如需转载,请注明出处,否则将追究法律责任。

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

注册时间:2007-12-29

  • 博文量
    1964
  • 访问量
    11076238