Oracle 12c RAC,其中一个节点数据库实例起不来,怎么办
发布网友
发布时间:2022-04-23 18:02
我来回答
共1个回答
热心网友
时间:2022-04-09 16:05
两个节点,第一个节点能正常启动,但第二个节点报错。
无论是在集群还是在实例,都无法启动数据库实例。
[grid@m2 ~]$ srvctl start instance -d mdb -i mdb2
PRCR-1013 : 无法启动资源 ora.mdb.db
PRCR-1064 : 无法在节点 m2 上启动资源 ora.mdb.db
ORA-00203: ??????????
ORA-00202: ????: ''+DATA/mdb/controlfile/current.268.821031437''
CRS-2674: 未能启动 'ora.mdb.db' (在 'm2' 上)
[grid@m2 ~]$ pwd
/home/grid
[grid@m2 ~]$ ll
总计 4
drwxrwxr-x 3 grid oinstall 4096 07-15 15:35 oradiag_grid
[grid@m2 ~]$ pwd
/home/grid
[grid@m2 ~]$ srvctl status asm -n m1
ASM 正在 m1 上运行
[grid@m2 ~]$ srvctl status asm -n m2
ASM 正在 m2 上运行
ORA-03113: end-of-file on communication channel
使用相同的pfile启动。
SQL> startup pfile='/opt/app/oracle/proct/11.2.0/dbs/initmdb1.ora';
ORACLE instance started.
Total System Global Area 1607008256 bytes
Fixed Size 1336820 bytes
Variable Size 469764620 bytes
Database Buffers 1124073472 bytes
Redo Buffers 11833344 bytes
ORA-00203: using the wrong control files
ORA-00202: control file: '+DATA/mdb/controlfile/current.268.821031437'
NODE M2:
SQL> show parameter control
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
control_file_record_keep_time integer
7
control_files string
+DATA/mdb/controlfile/current.
268.821031437, +RECOVERY/mdb/c
ontrolfile/current.269.8210314
39
control_management_pack_access string
DIAGNOSTIC+TUNING
SQL>
NODE M1:
SQL> show parameter control
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
control_file_record_keep_time integer
7
control_files string
+DATA/mdb/controlfile/current.
268.821031437, +RECOVERY/mdb/c
ontrolfile/current.269.8210314
39
control_management_pack_access string
DIAGNOSTIC+TUNING
SQL>
怀疑是虚拟机中的磁盘设置问题,修改虚拟机文件
把 scsi0:1.type="disk"
修改为:
scsi0:1.shared="TRUE"
其它两项不变
scsi0:1.virtualDev = "lsilogic"
scsi0:1.SharedBus="Virtual"
所有共享磁盘修改后为:
scsi0:1.virtualDev = "lsilogic"
scsi0:1.sharedBus = "VIRTUAL"
scsi0:1.shared="TRUE"
disk.locking="FALSE"
========================================================
修改后,再启动实例,还是无法启动,报控制文件出错:
Connected to an idle instance.
SQL> startup;
ORACLE instance started.
Total System Global Area 1607008256 bytes
Fixed Size 1336820 bytes
Variable Size 520096268 bytes
Database Buffers 1073741824 bytes
Redo Buffers 11833344 bytes
ORA-00214: control file '+RECOVERY/mdb/controlfile/current.269.821031439'
version 1199 inconsistent with file
'+DATA/mdb/controlfile/current.283.821115539' version 522
SQL> show parameter spfile;
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
spfile string
+DATA/mdb/spfilemdb.ora
SQL> select instance_name from v$instance;
INSTANCE_NAME
------------------------------------------------
mdb1
SQL> show parameter spfile;
NAME TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
spfile string
+DATA/mdb/spfilemdb.ora
SQL> select instance_name from v$instance;
INSTANCE_NAME
------------------------------------------------
mdb1
SQL> create pfile from spfile;
File created.
SQL> shutdown abort;
ORACLE instance shut down.
SQL> exit
[oracle@m1 dbs]$ vi initmdb1.ora
[oracle@m1 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Proction on Thu Jul 18 15:24:51 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup pfile='/opt/app/oracle/proct/11.2.0/dbs/initmdb1.ora';
ORACLE instance started.
Total System Global Area 1607008256 bytes
Fixed Size 1336820 bytes
Variable Size 520096268 bytes
Database Buffers 1073741824 bytes
Redo Buffers 11833344 bytes
Database mounted.
Database opened.
SQL>
[oracle@m1 dbs]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Proction on Thu Jul 18 15:29:09 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database (not started)
RMAN> startup nomount;
Oracle instance started
Total System Global Area 1607008256 bytes
Fixed Size 1336820 bytes
Variable Size 520096268 bytes
Database Buffers 1073741824 bytes
Redo Buffers 11833344 bytes
RMAN> restore controlfile to '+DATA' from '+RECOVERY/mdb/controlfile/current.269.821031439';
Starting restore at 2013-07-18 15:30:28
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=143 instance=mdb1 device type=DISK
channel ORA_DISK_1: copied control file copy
Finished restore at 2013-07-18 15:30:36
RMAN> restore controlfile to '+DATA' from '+RECOVERY/mdb/controlfile/current.269.821031439';
Starting restore at 2013-07-18 15:38:57
using channel ORA_DISK_1
channel ORA_DISK_1: copied control file copy
Finished restore at 2013-07-18 15:39:05
RMAN> exit
恢复控制文件的同时,可以在其它窗口看到增加的控制文件名称:
ASMCMD> ls
Current.256.820944177
Current.268.821031437
current.282.821115029
ASMCMD> ls
Current.256.820944177
Current.268.821031437
current.282.821115029
current.283.821115539
ASMCMD>
后面两个文件是这次恢复的。
修改pfile,添加进去:
*.control_files='+DATA/mdb/controlfile/current.282.821115029','+DATA/mdb/controlfile/current.283.821115539','+RECOVERY/mdb/controlfile/current.269.821031439'
再次使用pfile启动数据库后,建立spfile 文件。
SQL> startup pfile='/opt/app/oracle/proct/11.2.0/dbs/initmdb1.ora';
ORACLE instance started.
Total System Global Area 1607008256 bytes
Fixed Size 1336820 bytes
Variable Size 520096268 bytes
Database Buffers 1073741824 bytes
Redo Buffers 11833344 bytes
Database mounted.
Database opened.
SQL>
create spfile='+DATA/mdb/spfilemdb.ora' from pfile='/opt/app/oracle/proct/11.2.0/dbs/initmdb1.ora';
修改pfile文件指定到新生成的共享磁盘中的spfile
[oracle@m1 dbs]$ cat initmdb1.ora
SPFILE='+DATA/mdb/spfilemdb.ora'
[oracle@m1 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Proction on Thu Jul 18 15:53:56 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup;
ORACLE instance started.
Total System Global Area 1607008256 bytes
Fixed Size 1336820 bytes
Variable Size 520096268 bytes
Database Buffers 1073741824 bytes
Redo Buffers 11833344 bytes
Database mounted.
Database opened.
SQL>
完成后,再另一个节点启动数据库实例:
[oracle@m2 dbs]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Proction on Thu Jul 18 15:58:55 2013
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup;
ORACLE instance started.
Total System Global Area 1607008256 bytes
Fixed Size 1336820 bytes
Variable Size 469764620 bytes
Database Buffers 1124073472 bytes
Redo Buffers 11833344 bytes
Database mounted.
Database opened.
SQL> create table tst_tbs(id number(10),prod_name varchar2(50));
Table created.
SQL> insert into tst_tbs values(1,'test name');
1 row created.
SQL> commit;
Commit complete.
在另一个实例中可以看到刚才插入的数据。
SQL> select id,prod_name from tst_tbs;
ID
----------
PROD_NAME
--------------------------------------------------------------------------------
1
test name
SQL> select instance_name from v$instance;
INSTANCE_NAME
------------------------------------------------
mdb1
SQL>
在RAC中,看到数据库没启动起来,再次使用RAC的命令启动一下数据库,完成。
[grid@m1 ~]$ crs_stat -t
Name Type Target State Host