之前搭建了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 2018 Copyright (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 2018
Copyright (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=251658240 GZYT1.__java_pool_size=4194304 GZYT1.__large_pool_size=4194304 GZYT1.__pga_aggregate_target=327155712 GZYT1.__sga_target=482344960 GZYT1.__shared_io_pool_size=0 GZYT1.__shared_pool_size=213909504 GZYT1.__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=1 GZYT1.undo_tablespace='UNDOTBS1'
由上面输入可知确实少了实例2的一些信息,编辑刚刚创建的pfile,增加以下内容:
GZYT2.instance_number=2 GZYT2.thread=2 GZYT2.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.966128233 SQL> select group#,thread#,members,status from v$log; GROUP# THREAD# MEMBERS STATUS ---------- ---------- ---------- ---------------- 1 1 2 INACTIVE 2 1 2 ACTIVE 3 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 Area 807682048 bytes Fixed Size 1347964 bytes Variable Size 541068932 bytes Database Buffers 260046848 bytes Redo Buffers 5218304 bytes 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
两个节点的实例都已成功启动。