Chinaunix首页 | 论坛 | 博客
  • 博客访问: 403550
  • 博文数量: 65
  • 博客积分: 2711
  • 博客等级: 少校
  • 技术积分: 745
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-02 10:02
文章分类

全部博文(65)

文章存档

2013年(4)

2012年(3)

2011年(24)

2010年(21)

2009年(11)

2008年(2)

分类: Oracle

2011-02-28 15:49:16

由于对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环境的影响的基础上使用,这样可以大大的降低使用风险
阅读(1481) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~