Oracle RAC数据库启动故障排除指南 (oracle rac 数据库启动)

Oracle RAC数据库是互联网上更流行的数据库之一,它提供了高可用性和高性能。然而,当我们尝试启动Oracle RAC数据库时,可能会遇到各种问题。在本文中,我们将介绍一些常见的Oracle RAC数据库启动故障,并提供解决方案。

1. CRS无法启动

如果CRS无法启动,则必须打开CRS日志文件来查找问题。这些日志文件位于$ORACLE_HOME/log/[nodename]/crs目录中。您还可以使用命令$CRSHOME/bin/crsctl start res [resource_name]来单独启动一个资源。如果您发现资源无法启动,则可能是由于资源配置不正确或资源与其他资源之间的依赖关系不正确。在这种情况下,您需要检查所有相关资源,并确保它们都正确配置。

2. A无法启动

如果A无法启动,则必须打开A日志文件来查找问题。这些日志文件位于$ORACLE_HOME/log/[nodename]/a目录中。您还可以使用命令$ORACLE_HOME/bin/acmd来测试A。如果ACmd无法连接到A实例,则说明A实例没有正确启动。在这种情况下,您需要检查A实例的日志文件,并确保所有相关数据文件和控制文件均可访问。

3. Listener无法启动

如果监听器无法启动,则可以使用命令$ORACLE_HOME/bin/lsnrctl status来查看监听器的状态。如果监听器无法启动,则必须打开监听器日志文件来查找问题。这些日志文件位于$ORACLE_HOME/network/log目录中。在查找问题时,您还应该检查防火墙和端口限制。如果您使用的是Linux操作系统,则可以使用命令iptables –L或firewall-cmd –list来查看防火墙规则。

4. Oracle RAC数据库无法启动

如果Oracle RAC数据库无法启动,则必须打开数据库日志文件来查找问题。这些日志文件位于$ORACLE_BASE/diag/rdbms/[ORACLE_SID]/[ORACLE_SID]/trace目录中。在查找问题时,您应检查数据库是否正确配置。您可以使用命令$ORACLE_HOME/bin/dbua来验证数据库配置。如果数据库配置无误,则问题可能是由于网络问题或磁盘空间问题引起的。在这种情况下,您需要检查网络配置和磁盘空间,并确保它们可用。

5. Oracle Grid Infrastructure无法启动

如果Oracle Grid Infrastructure无法启动,则必须打开Grid日志文件来查找问题。这些日志文件位于$ORACLE_BASE/diag/crs/[nodename]/crs/log目录中。在查找问题时,您应检查确保所有相关实例均正确配置,验证网络配置是否正确,并确保磁盘空间可用。此外,还应检查您是否有足够的权限来运行Oracle Grid Infrastructure。

在启动Oracle RAC数据库时,可能会遇到各种故障。在这种情况下,更好的方法是检查相关日志文件并查找问题。此外,您还需要确保所有相关实例和资源都正确配置,并且网络配置和磁盘空间都可用。如果您遇到无法解决的问题,请联系Oracle技术支持团队寻求帮助。

相关问题拓展阅读:

Oracle 12c RAC,其中一个节点数据库实例起不来,怎么办

两个节点,之一个节点能正常启动,但第二个节点报错。

无论是在集群还是在实例,都无法启动数据库实例。

$ 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.”

CRS-2674: 未能启动 ‘ora.mdb.db’ (在 ‘m2’ 上)

$ pwd

/home/grid

$ ll

总计 4

drwxrwxr-x 3 grid oinstall:35 oradiag_grid

$ pwd

/home/grid

$ srvctl status a -n m1

A 正在 m1 上运行

$ srvctl status a -n m2

A 正在 m2 上运行

ORA-03113: end-of-file on communication channel

使用相同的pfile启动粗慎。

SQL> startup pfile=’/opt/app/oracle/product/11.2.0/dbs/initmdb1.ora’;

ORACLE instance started.

Total System Global Areabytes

Fixed Size36820 bytes

Variable Size64620 bytes

Database Buffers2 bytes

Redo Buffers33344 bytes

ORA-00203: using the wrong control files

ORA-00202: control file: ‘+DATA/mdb/controlfile/current.268.’

NODE M2:

SQL> show parameter control

NAMETYPE

—-

VALUE

——

control_file_record_keep_timeinteger

7

control_files string

+DATA/mdb/controlfile/current.

., +RECOVERY/mdb/c

ontrolfile/current.269.

39

control_management_pack_accessstring

DIAGNOSTIC+TUNING

SQL>

NODE M1:

SQL> show parameter control

NAMETYPE

—-

VALUE

——

control_file_record_keep_timeinteger

7

control_files string

+DATA/mdb/controlfile/current.

., +RECOVERY/mdb/c

ontrolfile/current.269.

39

control_management_pack_accessstring

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 Areabytes

Fixed Size36820 bytes

Variable Size96268 bytes

Database Buffers4 bytes

Redo Buffers33344 bytes

ORA-00214: control file ‘+RECOVERY/mdb/controlfile/current.269.’

version 1199 inconsistent with file

‘+DATA/mdb/controlfile/current.283.’ version 522

SQL> show parameter spfile;

NAMETYPE

—-

VALUE

——

spfilestring

+DATA/mdb/spfilemdb.ora

SQL> select instance_name from v$instance;

INSTANCE_NAME

mdb1

SQL> show parameter spfile;

NAMETYPE

—-

VALUE

——

spfilestring

+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

$ vi initmdb1.ora

$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jul 18 15:24:

Copyright (c) 1982, 2023, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup pfile=’/opt/app/oracle/product/11.2.0/dbs/initmdb1.ora’;

ORACLE instance started.

Total System Global Areabytes

Fixed Size36820 bytes

Variable Size96268 bytes

Database Buffers4 bytes

Redo Buffers33344 bytes

Database mounted.

Database opened.

SQL>

$ rman target /

Recovery Manager: Release 11.2.0.1.0 – Production on Thu Jul 18 15:29:

Copyright (c) 1982, 2023, Oracle and/or its affiliates. All rights reserved.

connected to target database (not started)

RMAN> startup nomount;

Oracle instance started

Total System Global Area bytes

Fixed Size bytes

Variable Sizebytes

Database Bufferytes

Redo Bufferytes

RMAN> restore controlfile to ‘+DATA’ from ‘+RECOVERY/mdb/controlfile/current.269.’;

Starting restore at: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:30:36

RMAN> restore controlfile to ‘+DATA’ from ‘+RECOVERY/mdb/controlfile/current.269.’;

Starting restore at:38:57

using channel ORA_DISK_1

channel ORA_DISK_1: copied control file copy

Finished restore at:39:05

RMAN> exit

恢复控制文件的同时,可以在其它窗口看到增加的控制文件名称:

ACMD> ls

Current.256.

Current.268.

current.282.

ACMD> ls

Current.256.

Current.268.

current.282.

current.283.

ACMD>

后面两个文件是这次恢复的。

修改pfile,添加进去:

*.control_files=’+DATA/mdb/controlfile/current.282.’,’+DATA/mdb/controlfile/current.283.’,’+RECOVERY/mdb/controlfile/current.269.’

再次使用pfile启动数据库后,建立spfile 文件。

SQL> startup pfile=’/opt/app/oracle/product/11.2.0/dbs/initmdb1.ora’;

ORACLE instance started.

Total System Global Areabytes

Fixed Size36820 bytes

Variable Size96268 bytes

Database Buffers4 bytes

Redo Buffers33344 bytes

Database mounted.

Database opened.

SQL>

create spfile=’+DATA/mdb/spfilemdb.ora’ from pfile=’/opt/app/oracle/product/11.2.0/dbs/initmdb1.ora’;

修改pfile文件指定到新生成的共享磁盘中的spfile

$ cat initmdb1.ora

SPFILE=’+DATA/mdb/spfilemdb.ora’

$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jul 18 15:53:

Copyright (c) 1982, 2023, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup;

ORACLE instance started.

Total System Global Areabytes

Fixed Size36820 bytes

Variable Size96268 bytes

Database Buffers4 bytes

Redo Buffers33344 bytes

Database mounted.

Database opened.

SQL>

完成后,再另一个节点启动数据库实例:

$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Thu Jul 18 15:58:

Copyright (c) 1982, 2023, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup;

ORACLE instance started.

Total System Global Areabytes

Fixed Size36820 bytes

Variable Size64620 bytes

Database Buffers2 bytes

Redo Buffers33344 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的命令启动一下数据库,完成。

$ crs_stat -t

OracleRAC日常基本维护命令

所有实例和服务的状态

  $ srvctl status database d orcl

  Instance orcl is running on node linux

  Instance orcl is running on node linux

  单个实例的状态禅扒

  $ srvctl status instance d orcl i orcl

  Instance orcl is running on node linux

  在数据库全局命名服务的状态

  $ srvctl status service d orcl s orcltest

  Service orcltest is running on instance(s) orcl orcl

  特定节点上节点应用程序的状态

  $ srvctl status nodeapps n linux

  VIP is running on node: linux

  GSD is running on node: linux

 源蔽 Listener is running on node: linux

  ONS daemon is running on node: linux

  A 实例的状态

  $ srvctl status an linux

  A instance +A is running on node linux

  列出配置的所有数据库

  $ srvctl config database

  orcl

  显示 RAC 数据库的配置

  $ srvctl config database d orcl

  linux orcl /u /app/oracle/product/ /db_

  linux orcl /u /app/oracle/product/ /db_

  显示指定集群数据库的所有服务

  $ srvctl config service d orcl

  orcltest PREF: orcl orcl AVAIL:

  显示节点应用程序的配置 —(VIP GSD ONS 监听器)

  $ srvctl config nodeapps n linux a g s l

  VIP exists : /linux vip/ / /eth :eth

  GSD exists

  雹袭州ONS daemon exists

  Listener exists

  显示 A 实例的配置

  $ srvctl config an linux

  +A /u /app/oracle/product/ /db_

  集群中所有正在运行的实例

  SELECT

  inst_id

   instance_number inst_no

   instance_name inst_name

   parallel

   status

   database_status db_status

   active_state state

   host_name host

  FROM gv$instance

  ORDER BY inst_id;

  INST_ID INST_NO INST_NAME PAR STATUS DB_STATUS STATE HOST

  

   orcl YES OPEN ACTIVE NORMAL rac

   orcl YES OPEN ACTIVE NORMAL rac

  位于磁盘组中的所有数据文件

  select name from v$datafile

  union

  select member from v$logfile

  union

  select name from v$controlfile

  union

  select name from v$tempfile;

  NAME

  

  +FLASH_RECOVERY_AREA/orcl/controlfile/current

  +FLASH_RECOVERY_AREA/orcl/onlinelog/group_

  +FLASH_RECOVERY_AREA/orcl/onlinelog/group_

  +FLASH_RECOVERY_AREA/orcl/onlinelog/group_

  +FLASH_RECOVERY_AREA/orcl/onlinelog/group_

  +ORCL_DATA /orcl/controlfile/current

  +ORCL_DATA /orcl/datafile/example

  +ORCL_DATA /orcl/datafile/indx

  +ORCL_DATA /orcl/datafile/sysaux

  +ORCL_DATA /orcl/datafile/system

  +ORCL_DATA /orcl/datafile/undotbs

  +ORCL_DATA /orcl/datafile/undotbs

  +ORCL_DATA /orcl/datafile/undotbs

  +ORCL_DATA /orcl/datafile/undotbs

  +ORCL_DATA /orcl/datafile/users

  +ORCL_DATA /orcl/datafile/users

  +ORCL_DATA /orcl/onlinelog/group_

  +ORCL_DATA /orcl/onlinelog/group_

  +ORCL_DATA /orcl/onlinelog/group_

  +ORCL_DATA /orcl/onlinelog/group_

  +ORCL_DATA /orcl/tempfile/temp

   rows selected

  属于 ORCL_DATA 磁盘组的所有 A 磁盘

  SELECT path

  FROM v$a_disk

  WHERE group_number IN (select group_number

  from v$a_diskgroup

  where name = ORCL_DATA );

  PATH

  

  ORCL:VOL

  ORCL:VOL

  

启动/停止RAC集群

  确保是以 oracle UNIX 用户登录的 我们将从rac 节点运行所有命令

  # su – oracle

  $ hostname

  Rac

  停止 Oracle RAC g 环境

  之一步是停止 Oracle 实例 当此实例(和相关服务)关闭后 关闭 A 实例 最后 关闭节点应用程序(虚拟IP GSD TNS 监听器和 ONS)

  $ export ORACLE_SID=orcl

  $ emctl stop dbconsole

  $ srvctl stop instance d orcl i orcl

  $ srvctl stop an rac

  $ srvctl stop nodeapps –n rac

  启动 Oracle RAC g 环境

  之一步是启动节点应用程序(虚拟 IP GSD TNS 监听器和 ONS) 当成功启动节点应用程序后 启动 A 实例 最后 启动 Oracle 实例(和相关服务)以及企业管理器数据库控制台

  $ export ORACLE_SID=orcl

  $ srvctl start nodeapps n rac

  $ srvctl start an rac

  $ srvctl start instance d orcl i orcl

  $ emctl start dbconsole

  使用 SRVCTL 启动/停止所有实例

  启动/停止所有实例及其启用的服务 我只是觉得有意思就把此步骤作为关闭所有实例的一种方法加进来了!

  $ srvctl start database d orcl

lishixinzhi/Article/program/Oracle/202311/16967

关于oracle rac 数据库启动的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » Oracle RAC数据库启动故障排除指南 (oracle rac 数据库启动)