由于对oracle em grid control的不理解,开始在一组rac系统的其中一个节点上安装oem grid control 10.2.0.3,经过实际操作,慢慢理解这个东西的功能,及部署方式。安装之前出于安全考虑,讲库做了rman全备份,对db1节点的oracle软件做了冷备份,在oem安装完之后出现了几个问题,打算删除oem,还原db1节点。但是在还原之后(将oracle软件目录全部冷备份拷贝回来),启动数据库时候出现了如下错误:
SQL> startup
ORACLE instance started.
Total System Global Area 1.2969E+10 bytes
Fixed Size 2118384 bytes
Variable Size 9479130384 bytes
Database Buffers 3472883712 bytes
Redo Buffers 14655488 bytes
Database mounted.
ORA-25503: cannot open database because the database is being quiesced
登录到第二节点上查询:
SQL> select instance_name, status, active_state from gv$instance;
INSTANCE_NAME STATUS ACTIVE_ST
---------------- ------------ ---------
racdb1 MOUNTED NORMAL
racdb2 OPEN QUIESCED
SQL>
可以看到,此时第二节点上挂载的数据库已经处于静默状态,而数据库的静默状态对于rac来讲是全局性的,因此第一节点无法启动open。
解决方法只需将第二节点状态更改一下即可:
登录节点二:
SQL> ALTER SYSTEM UNQUIESCE;
System altered.
SQL>
SQL>
SQL> select instance_name, status, active_state from gv$instance;
INSTANCE_NAME STATUS ACTIVE_ST
---------------- ------------ ---------
racdb2 OPEN NORMAL
racdb1 MOUNTED NORMAL
之后在登录节点一启动实例:
SQL> startup
ORACLE instance started.
Total System Global Area 1.2969E+10 bytes
Fixed Size 2118384 bytes
Variable Size 9479130384 bytes
Database Buffers 3472883712 bytes
Redo Buffers 14655488 bytes
Database mounted.
Database opened.
SQL>
但是为什么会出现这种问题呢?
回首整个过程,自己在节点1上做完rman和oracle软件的备份之后过了两天,由于测试那边需要,为他们创建了一个表空间,添加了一个用户,导了一些数据进去,然后在第一节点上做了oem10.2.0.3的安装操作。但找不到是哪里导致了这个问题的产生。
以下是搜索到的一片文章:
有关的基础知识请参考官方文档“Quiescing a Database”()
本文介绍静默状态对环境的。
1.启用静默状态和取消静默状态是全局生效操作
“ALTER SYSTEM ;”语句和“ALTER SYSTEM UNQUIESCE;”语句会对RAC环境中的所有实例产生影响,不局限在执行命令的节点。
验证之.
1)创建具有dba权限的普通用户
sys@RACDB1> create user secooler identified by secooler ;
User created.
sys@RACDB1> grant dba to secooler;
Grant succeeded.
2)在第一个节点上置实例为静默状态
(1)操作前确认RAC环境下各节点实例状态
sys@RACDB1> select instance_name, status, active_state from gv$instance;
INSTANCE_NAME STATUS ACTIVE_ST
---------------- ------------ ---------
RACDB1 OPEN NORMAL
RACDB2 OPEN NORMAL
(2)在节点1上调整为静默状态
sys@RACDB1> alter system quiesce restricted;
System altered.
注意,此时如果有为完成的事务,此操作将会等待,直到所有事务完成之后才能完成。
(3)查看调整后RAC环境中各节点的状态
sys@RACDB1> select instance_name, status, active_state from gv$instance;
INSTANCE_NAME STATUS ACTIVE_ST
---------------- ------------ ---------
RACDB1 OPEN QUIESCED
RACDB2 OPEN QUIESCED
可见,此时RAC环境下的所有实例均处于静默状态。因此印证了静默操作时全局有效的。
3)在第二节点上尝试发起新的连接
RACDB2@rac2 /home/oracle$ sqlplus secooler/secooler
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Nov 24 19:05:25 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
此时,连接会一直处于等待Hang住的状态,无法连接到secooler用户,在静默状态下即便是具有dba权限的用户依然没有特权。
此等待会在取消静默后自动完成。
4)取消静默
sys@RACDB1> alter system unquiesce;
System altered.
sys@RACDB1> select instance_name, status, active_state from gv$instance;
INSTANCE_NAME STATUS ACTIVE_ST
---------------- ------------ ---------
RACDB2 OPEN NORMAL
RACDB1 OPEN NORMAL
5)回到第二个节点的操作窗口,可见secooler用户已经连接成功
RACDB2@rac2 /home/oracle$ sqlplus secooler/secooler
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Nov 24 19:05:25 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, Real Application Clusters, OLAP, Mining
and Real Application Testing options
secooler@RACDB2>
依次验证了静默和取消静默操作是全局生效的。
2.在静默状态下其他实例无法打开数据库
系统在静默操作进行中和静默状态下,RAC环境下的其他节点是无法打开数据库的。
验证之:
1)手工停掉第二节点上的实例
RACDB2@rac2 /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Nov 24 19:08:28 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production
With the Partitioning, Real Application Clusters, OLAP, Data Mining
and Real Application Testing options
sys@RACDB2> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
2)在第一节点上调整数据库为静默状态
sys@RACDB1> alter system quiesce restricted;
System altered.
sys@RACDB1> select instance_name, status, active_state from gv$instance;
INSTANCE_NAME STATUS ACTIVE_ST
---------------- ------------ ---------
RACDB1 OPEN QUIESCED
3)在第二节点上手工启动数据库
RACDB2@rac2 /home/oracle$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.4.0 - Production on Wed Nov 24 19:09:19 2010
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
Connected to an idle instance.
NotConnected@RACDB2> startup;
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1266368 bytes
Variable Size 121638208 bytes
Database Buffers 37748736 bytes
Redo Buffers 7118848 bytes
Database mounted.
ORA-25503: cannot open database because the database is being quiesced
在启动的过程中抛出ORA-25503错误,原因是“the database is being quiesced”。显然,数据库处于静默状态下其他实例是无法启动的。
4)在第一节点上取消静默
sys@RACDB1> alter system unquiesce;
System altered.
sys@RACDB1> select instance_name, status, active_state from gv$instance;
INSTANCE_NAME STATUS ACTIVE_ST
---------------- ------------ ---------
RACDB2 MOUNTED NORMAL
RACDB1 OPEN NORMAL
5)此时第二节点便可以正常OPEN
NotConnected@RACDB2> alter database open;
Database altered.
sys@RACDB2> select instance_name, status, active_state from gv$instance;
INSTANCE_NAME STATUS ACTIVE_ST
---------------- ------------ ---------
RACDB2 OPEN NORMAL
RACDB1 OPEN NORMAL
3.在静默状态下无法获取冷
由于数据库处于停顿状态,Oracle后台进程仍然可能出于内部目的而执行更新,因此在静默状态下无法获取有效的冷备份,注意,静默状态与关闭状态有本质上的区别。
4.小结
总结以上结论,在RAC环境下静默状态主要影响如下:
①启用静默状态和取消静默状态是全局生效操作;
②在静默状态下其他实例无法打开数据库;
③在静默状态下无法获取冷备份。
在真正理解静默状态对RAC环境的影响的基础上使用,这样可以大大的降低使用风险。
阅读(1544) | 评论(0) | 转发(0) |