之前搭建了RAC的测试环境后,检查节点状态发现节点2的实例没有启动:
[oracle@node1 ~]$ srvctl status database -d GZYT
Instance GZYT1 is running on node node1
Instance GZYT2 is not running on node node2
尝试在节点2启动数据库,提示实例的数字参数没有指定:
[oracle@node2 ~]$ export ORACLE_SID=GZYT2
[oracle@node2~]$ sqlplus /as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Wed Jan 24 21:07:21 2018Copyright (c)1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
SQL>startup
ORA-29760: instance_number parameter not specified
查看节点的其他资源都是正常:
[grid@node1 ~]$ crsctl stat res -t--------------------------------------------------------------------------------NAME TARGET STATE SERVER STATE_DETAILS--------------------------------------------------------------------------------Local Resources--------------------------------------------------------------------------------ora.DATA.dg
ONLINE ONLINE node1
ONLINE ONLINE node2
ora.FRA.dg
ONLINE ONLINE node1
ONLINE ONLINE node2
ora.LISTENER.lsnr
ONLINE ONLINE node1
ONLINE ONLINE node2
ora.OCRVOTE.dg
ONLINE ONLINE node1
ONLINE ONLINE node2
ora.asm
ONLINE ONLINE node1 Started
ONLINE ONLINE node2 Started
ora.gsd
OFFLINE OFFLINE node1
OFFLINE OFFLINE node2
ora.net1.network
ONLINE ONLINE node1
ONLINE ONLINE node2
ora.ons
ONLINE ONLINE node1
ONLINE ONLINE node2
ora.registry.acfs
ONLINE ONLINE node1
ONLINE ONLINE node2
通过已正常启动的节点1查看RAC的参数文件是否缺少实例2的SID:
[oracle@node1 ~]$ export ORACLE_SID=GZYT1
[oracle@node1 ~]$ sqlplus /as sysdba
SQL*Plus: Release 11.2.0.3.0 Production on Wed Jan 24 21:07:21 2018Copyright (c) 1982, 2011, Oracle. All rights reserved.
Connected to an idle instance.
SQL> create pfile='/tmp/gzyt.ora' from spfile='+DATA/GZYT/spfileGZYT.ora';
File created.
SQL> !cat /tmp/gzyt.ora
GZYT1.__db_cache_size=251658240GZYT1.__java_pool_size=4194304GZYT1.__large_pool_size=4194304GZYT1.__pga_aggregate_target=327155712GZYT1.__sga_target=482344960GZYT1.__shared_io_pool_size=0GZYT1.__shared_pool_size=213909504GZYT1.__streams_pool_size=0
*.audit_file_dest='/u01/app/oracle/admin/GZYT/adump'
*.audit_trail='db'
*.cluster_database=true
*.compatible='11.2.0.0.0'
*.control_files='+DATA/gzyt/controlfile/current.260.966128175','+FRA/gzyt/controlfile/current.256.966128177'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_name='GZYT'
*.db_recovery_file_dest='+FRA'
*.db_recovery_file_dest_size=4322230272
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=GZYTXDB)'GZYT1.instance_number=1
*.log_archive_format='%t_%s_%r.dbf'
*.memory_target=808452096
*.open_cursors=300
*.processes=150
*.remote_listener='scanip:1521'
*.remote_login_passwordfile='exclusive'GZYT1.thread=1GZYT1.undo_tablespace='UNDOTBS1'
由上面输入可知确实少了实例2的一些信息,编辑刚刚创建的pfile,增加以下内容:
GZYT2.instance_number=2GZYT2.thread=2GZYT2.undo_tablespace='UNDOTBS2'
确保创建了实例2的undo表空间和日志文件:
#结果发现没有实例2所需要的undo表空间和日志文件
SQL> select file#,name from v$datafile;
FILE# NAME---------- --------------------------------------------------
1 +DATA/gzyt/datafile/system.256.966128053
2 +DATA/gzyt/datafile/sysaux.257.966128053
3 +DATA/gzyt/datafile/undotbs1.258.966128055
4 +DATA/gzyt/datafile/users.259.966128055
5 +DATA/gzyt/datafile/example.265.966128233SQL> selectgroup#,thread#,members,status from v$log;
GROUP# THREAD# MEMBERS STATUS---------- ---------- ---------- ----------------
1 1 2INACTIVE2 1 2ACTIVE3 1 2 CURRENT
在节点1数据库增加节点2实例的日志文件和undo表空间,并启动实例2的日志线程:
SQL> create undo tablespace datafile '+DATA'size 115m
Tablespace created.
SQL> alter database add logfile thread 2 group 4 ('+DATA','+DATA') size 50m;
Database altered.
SQL> alter database add logfile thread 2 group 5 ('+DATA','+DATA') size 50m;
Database altered.
SQL> alter database add logfile thread 2 group 6 ('+DATA','+DATA') size 50m;
Database altered.
SQL> alter database enable thread 2;
Database altered.
#保存修改后的spfile
SQL> create spfile='+DATA/GZYT/spfileGZYT.ora' from pfile='/tmp/gzyt.ora';
File created.
重新尝试在节点2启动数据库:
#成功启动数据库
SQL>startup
ORACLE instance started.
Total System Global Area807682048bytes
Fixed Size1347964bytes
Variable Size541068932bytes
Database Buffers260046848bytes
Redo Buffers5218304bytes
Database mounted.
Database opened.
SQL>
重新查看节点数据库状态:
[oracle@node1 ~]$ srvctl status database -d GZYT
Instance GZYT1 is running on node node1
Instance GZYT2 is running on node node2
两个节点的实例都已成功启动。