Oracle11g学习笔记_20170511_停顿Oracle数据库
2017-04-20 10:49
411 查看
1、背景:
有时数据库DBA需要在不关闭数据库((很多数据库应用系统要求7*24小时处于工作状态))的情况下对数据库进行一些排除其他用户活动的操作,主要有以下两种情况:
(1)当多个用户并发访问同一相同对象时将会出现异常操作,例如:向表中添加一个字段时,若是有其他用户在使用该表,则可能会导致操作失败
(2)有些操作执行的中间结果不应该让其他用户看到,例如:要通过多步操作来重组一个表,首先要导出表中的数据,然后将表删除,最后再导入表中数据。此时若是有其他用户在删除表之后、未导入数据之前访问该表,则会得到错误的结果
2、停顿数据库的优势
(1)停顿数据库代价比关闭数据库低
(2)停顿数据库不会打断用户操作,也不会中断数据库的运行
(3)数据库停顿状态时,Database Resource Manager将阻止非DBA会话变成激活状态,任何试图修改当前资源的计划都将阻塞在队列中,直至系统转为非停顿状态
说明:以上所提到的DBA仅包括SYS和SYSTEM两个用户,其他用户需要被授予DBA角色,但是只要没有Alter System Quiesce Database语句的权限,就不能在停顿数据库状态下执行数据库操作
3、停顿数据库命令:Alter System Quiesce Restricted
说明:在数据停顿状态下,不能对其进行冷备份,但是在线数据文件可以访问,也可以执行数据库在线备份
4、查看被停顿阻塞的会话信息
查询语句:select a.sid,user,osuser,type,program from v$blocking_quiesce a,v$session b where a.sid=b.sid;
说明:
活动会话指正处于事务、查询或PL/SQL语句中的会话,或者正持有任何共享资源的会话
5、从数据库停顿状态恢复到正常状态
(1)命令:Alter System Unquiesce
(2)完整执行过程:
首先执行如下命令将数据库由正常状态切换到停顿状态:Alter System Quiesce Restricted
其次执行如下命令查询数据库实例当前状态:select active_state from v$instance
再次执行如下命令将数据库由停顿状态切换到正常状态:Alter System Unquiesce
最后执行如下命令查询数据库实例活动状态:select active_state from v$instance
说明:在数据库正常操作状态时允许执行所有非DBA活动,视图v$instance中的active_state字段表示实例当前状态,取值信息如下,
(1)Normal:表示正常的非停顿状态
(2)Quiescing:正在切换到停顿状态,但是一些非DBA会话仍然处于活动状态
(3)Quiesced:停顿状态,没有活动的DBA会话
有时数据库DBA需要在不关闭数据库((很多数据库应用系统要求7*24小时处于工作状态))的情况下对数据库进行一些排除其他用户活动的操作,主要有以下两种情况:
(1)当多个用户并发访问同一相同对象时将会出现异常操作,例如:向表中添加一个字段时,若是有其他用户在使用该表,则可能会导致操作失败
(2)有些操作执行的中间结果不应该让其他用户看到,例如:要通过多步操作来重组一个表,首先要导出表中的数据,然后将表删除,最后再导入表中数据。此时若是有其他用户在删除表之后、未导入数据之前访问该表,则会得到错误的结果
2、停顿数据库的优势
(1)停顿数据库代价比关闭数据库低
(2)停顿数据库不会打断用户操作,也不会中断数据库的运行
(3)数据库停顿状态时,Database Resource Manager将阻止非DBA会话变成激活状态,任何试图修改当前资源的计划都将阻塞在队列中,直至系统转为非停顿状态
说明:以上所提到的DBA仅包括SYS和SYSTEM两个用户,其他用户需要被授予DBA角色,但是只要没有Alter System Quiesce Database语句的权限,就不能在停顿数据库状态下执行数据库操作
3、停顿数据库命令:Alter System Quiesce Restricted
说明:在数据停顿状态下,不能对其进行冷备份,但是在线数据文件可以访问,也可以执行数据库在线备份
4、查看被停顿阻塞的会话信息
查询语句:select a.sid,user,osuser,type,program from v$blocking_quiesce a,v$session b where a.sid=b.sid;
说明:
活动会话指正处于事务、查询或PL/SQL语句中的会话,或者正持有任何共享资源的会话
5、从数据库停顿状态恢复到正常状态
(1)命令:Alter System Unquiesce
(2)完整执行过程:
首先执行如下命令将数据库由正常状态切换到停顿状态:Alter System Quiesce Restricted
其次执行如下命令查询数据库实例当前状态:select active_state from v$instance
再次执行如下命令将数据库由停顿状态切换到正常状态:Alter System Unquiesce
最后执行如下命令查询数据库实例活动状态:select active_state from v$instance
说明:在数据库正常操作状态时允许执行所有非DBA活动,视图v$instance中的active_state字段表示实例当前状态,取值信息如下,
(1)Normal:表示正常的非停顿状态
(2)Quiescing:正在切换到停顿状态,但是一些非DBA会话仍然处于活动状态
(3)Quiesced:停顿状态,没有活动的DBA会话
相关文章推荐
- Oracle11g学习笔记_20170511_挂起Oracle数据库
- Oracle11g学习笔记_20170508_Oracle数据库的完全卸载
- Oracle11g学习笔记_20170510_Oracle数据库实例的状态
- Oracle数据库学习笔记
- oracle11g ocp学习笔记(一)
- Oracle数据库程序设计学习笔记(2)
- Oracle Database :Oracle11g SQL开发指南学习笔记之(3):结构化查询语言
- ORACLE数据库安全相关命令学习笔记
- Oracle数据库新手学习笔记之错误解决ORA-12560:TNS协议适配器错误
- Oracle Database :Oracle11g SQL开发指南学习笔记之(4):关系数据库
- 学习Oracle数据库整理笔记(word文档图片不显示)
- Oracle数据库个人学习笔记
- Oracle_学习笔记_查看ORACLE11G中 db_cache_size shared_pool_size等参数
- Oracle11g学习笔记_20170508_Oracle安装后经常出现的nmefwmi.exe已停止工作的问题
- 「Oracle数据库」第二课:OEM与SQL*Plus 学习笔记
- Oracle数据库学习笔记
- Java学习笔记(十三)——通过Netbeans开发环境生成oracle数据库中表的对应hibernate映射文件
- R学习笔记之<访问远程Oracle数据库>
- 数据库使用学习笔记:Oracle数据库连接中Provider=OraOleDb.Oracle.1与Provider=MSDAORA什么区别
- Oracle数据库(传智)学习笔记-01