ORACLE 受限RESTRICT模式,只读READ ONLY模式,静默QUIESCE模式,延迟SUSPEND模式解释

简介: 一、受限RESTRICT模式 关于ORACLE RESTRICT模式,以及START OPEN RECOVER  说明如下: Restricting Access to an Instance at Startup You can start an in...
一、受限RESTRICT模式
关于ORACLE RESTRICT模式,以及START OPEN RECOVER 




说明如下:
Restricting Access to an Instance at Startup
You can start an instance, and optionally mount and open a database, in restricted 
mode so that the instance is available onlyto administrative personnel (not general 
database users). Use this mode of instance startup when you must accomplish one of 
the following tasks:
■ Perform an export or import of data
■ Perform a data load (with SQL*Loader)
■ Temporarily prevent typical users from using data
■ Perform certain migration or upgrade operations
Typically, all users with the CREATE SESSIONsystem privilege can connect to an open 
database. Opening a database in restricted mode allows database access only to users 
with both the CREATE SESSIONand RESTRICTED SESSIONsystem privilege. Only 
database administrators should have the RESTRICTED SESSIONsystem privilege. 




关于如上文档,说明受限模式可以再你想做一些维护的时候,而不想其他非restrict权限用户登录的时候使用。
可以和STARTUP进行搭配启动实例
startup [nomount|mount|open} restrict;
而ORACLE RESTART也可以使用
srvctl start database -d db_unique_name-o restrict




同时在正常数据库使用期间也可以使用
SQL> ALTER SYSTEM DISABLE RESTRICTED SESSION;
 
System altered
 
SQL> ALTER SYSTEM enable RESTRICTED SESSION;
 
System altered




来启用和禁用。但是注意经过测试,这个操作知识影响随后的会话。已经连接的会话不受影响,通过查看V$INSTANCE的
LOGINS字段可以查看其状态




二、只读READ ONLY模式


如下描述:
Opening a database in read-only mode enables you to query an open database while 
eliminating any potential for online data content changes. While opening a database in 
read-only mode guarantees that data file and redo log files are not written to, it does 
not restrict database recovery or operations that change the state of the database 
without generating redo. For example, you can take data files offline or bring them 
online since these operations do not affect data content.
可以看到实际上READ ONLY打开数据库后并不是限制所有的操作,而是关于修改数据和写入日志
文件的操作时不允许,相反的是允许的。V$DATABASE的OPEN_MODE字段显示其状态。
做测试如下:
1、增加表空间
SQL> create tablespace jjj datafile size 10m ;
create tablespace jjj datafile size 10m
*
ERROR at line 1:
ORA-00604: error occurred at recursive SQL level 1
ORA-16000: database open for read-only access




2、增加日志文件
SQL> alter database add logfile group 11;


Database altered.




3、OFFLINE数据文件


SQL> alter database datafile 8 offline;


Database altered.


SQL> alter database  datafile 8 online;


Database altered.


而关于使用READ ONLY 模式。文档只给出了
在MOUNT阶段下。使用如下命令打开数据库


alter database open read only;
alter database open read write;
意思是如果想改变模式,需要SHUTDOWN IMMEDIATE然后
startup mount 下修改


三、静默QUIESCE模式
如下描述:
   Occasionally you might want to put a database in a state that allows only DBA 
transactions, queries, fetches, or PL/SQL statements. Such a state is referred to as a 
quiesced state, in the sense that no ongoing non-DBA transactions, queries, fetches, or 
PL/SQL statements are running in the system. 
  In this discussion of quiesce database, a DBA is defined as user SYS or SYSTEM. 
Other users, including those with the DBA role, are not allowed to issue the 
ALTER SYSTEM QUIESCE DATABASE statement or proceed after the database is quiesced. 
  If a user issues a SQL query in an attempt to force an inactive session to
become active, the query will appear to be hung. When the database is later unquiesced,
the session is resumed, and the blocked action is processed.
  Once all non-DBA sessions become inactive, the ALTER SYSTEM QUIESCE RESTRICTED
statement completes, and the database is ina quiesced state. In an Oracle Real 
Application Clusters environment, this statement affects all instances, not just the one 
that issues the statement.
  The ALTER SYSTEM QUIESCE RESTRICTED statement may wait a long time for active 
sessions to become inactive. You can determine the sessions that are blocking the 
quiesce operation by querying the V$BLOCKING_QUIESCE view.
  select bl.sid, user, osuser, type, program
   from v$blocking_quiesce bl, v$session se
   where bl.sid = se.sid;
  当你需要做一些维护的时候,可能需要只有SYS或者SYSTEM用户登录,你可以使用这种模式.其他即使
拥有DBA角色的用户也是受到限制的。它不仅会让新的非SYS和SYSTEM用户登录HANGH住,而且登录的会话
如果再想执行语句也会被HANG住。注意改变为静默模式需要等待当前所有的ACTIVE会话完成其操作,可能
需要较长的时间,次期间虽然静默模式并未完成,其效果已经产生新的登录和ACTIVE已有的会话是会HANG住的。
可以通过V$BLOCKING_QUIESCE来查看哪些会话堵塞了改变静默模式。同时RAC环境中他影响全部节点,而非本实例。
当然本操作也会由于事物而被堵塞,在一个事物未COMMIT或者ROLLBACK的时候其会话状态任然为NOACTIVE,
但是也会堵塞本操作。 V$INSTANCE ACTIVE_STATE可以查看其状态
  更改方法 
  ALTER SYSTEM QUIESCE RESTRICTED;
  ALTER SYSTEM UNQUIESCE;
  
可以简单的测试如下:
开启一个非SYSTEM,SYSDBA用户事物
SQL> delete test10;
 
93 rows deleted
而不提交,另外开启SYSDBA权限会话改变为静默模式
SQL> ALTER SYSTEM QUIESCE RESTRICTED;
....一直HANG主
等待事件为wait for possible quiesce finish


提交这个事物
commit;
改变模式成功,如果再想查询数据,则开始等待
select * from test
一直HANG
其等待事件为resmgr:become active 


四、延迟SUSPEND模式
描述如下:
  The ALTER SYSTEM SUSPEND statement halts all input and output (I/O) to data files (file 
header and file data) and control files. The suspended state lets you back up a 
database without I/O interference. When the database is suspended all preexisting 
I/O operations are allowed to complete and any new database accesses are placed in a 
queued state. 
   The suspend/resume feature is not a suitable substitute for normal shutdown 
operations, because copies of a suspended database can contain uncommitted updates.
SUSPEND模式会阻挡所有的I/O,所有的读写都会处于HANG的状态,而这种模式在移动文件的时候比较
有用,而他不能代替传统的SHUTDOWN操作或者备份操作,因为他包含UNCOMMIT的事物。RAC下影响全节点,
V$INSTANCE的DATABASE_STATUS可以查看其状态
其改变方式如下:


ALTER SYSTEM SUSPEND;
ALTER SYSTEM RESUME;


做一个测试
ALTER SYSTEM SUSPEND;

select * from test;
drop table test;
alter system switch logfile;
操作均被堵塞,其等待事件为:
 writes stopped by instance recovery or database suspension

在做一个测试在LINUX 使用这种方法移动数据文件。
先发起
SQL> ALTER SYSTEM SUSPEND;
然后建立一个目录
mkdir TESTXUEXI 
然后拷贝我的数据文件目录到这个目录
cp -R xuexi TESTXUEXI/
然后MV 以前的目录
mv xuexi xuexitest
然后建立一个连接
ln -s TESTXUEXI/xuexi/ xuexi
 xuexi -> TESTXUEXI/xuexi/
这样我们算完成了。可以恢复
ALTER SYSTEM RESUME;
这样我们继续查询我们的数据,但是实际底层的文件已经是用的复制的那一份。这种方法
可以再空间不够的时候使用,但是这和SHUTDOWN DATABASE再移动也没什么区别。

相关文章
|
7月前
|
Oracle 安全 关系型数据库
【Oracle】玩转Oracle数据库(六):模式对象管理与安全管理
【Oracle】玩转Oracle数据库(六):模式对象管理与安全管理
89 10
|
3月前
|
Ubuntu Oracle 关系型数据库
Oracle VM VirtualBox之Ubuntu 22.04LTS双网卡网络模式配置
这篇文章是关于如何在Oracle VM VirtualBox中配置Ubuntu 22.04LTS虚拟机双网卡网络模式的详细指南,包括VirtualBox网络概述、双网卡网络模式的配置步骤以及Ubuntu系统网络配置。
334 3
|
5月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在online模式下增量抓取Oracle数据时,在archive_log切换时,出现数据丢失的情况,是什么原因
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
6月前
|
运维 DataWorks Oracle
DataWorks产品使用合集之在标准模式下,当同步Oracle的表或视图时,是否需要在源端的测试和生产环境中都存在要同步的表或视图
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
49 3
|
7月前
mybatis-plus使用oceanbase-oracle模式
mybatis-plus使用oceanbase-oracle模式
528 2
|
7月前
|
Oracle 关系型数据库 数据库
Oracle示例模式Scott:数据库世界的“小导游”
【4月更文挑战第19天】Oracle的Scott模式是数据库学习的向导,提供操作性的环境,包含表(如EMP和DEPT)、视图和索引。通过它,学习者能掌握基本语法和操作,如创建表、插入数据和编写查询。它是通往Oracle数据库世界的起点,帮助新手奠定基础,开启数据库探索之旅。
|
7月前
|
存储 Oracle 关系型数据库
Oracle的模式与模式对象:数据库的“城市规划师”
【4月更文挑战第19天】在Oracle数据库中,模式是用户对象的集合,相当于数据库的城市规划,包含表、视图、索引等模式对象。模式对象是数据存储结构,如表用于存储数据,视图提供不同查看角度,索引加速数据定位。良好的模式与模式对象设计关乎数据效率、安全和稳定性。规划时需考虑业务需求、性能、安全和可扩展性,以构建高效数据库环境,支持企业业务发展。
|
Oracle 关系型数据库 数据库
Flink CDC中oracle dataguard模式下,有没有cdc备库的方案?
Flink CDC中oracle dataguard模式下,有没有cdc备库的方案?
193 1
|
Oracle Java 关系型数据库
JSP停车场车位管理系统myeclipse开发oracle数据库BS模式java编程网
JSP 停车场车位管理系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助servlet+bean+dao (mvc模式开发),系统具有完整的源代码和数据库,开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Oracle 10g,使用java语言开发系统主要采用B/S模式开发。
61 0
|
Oracle 关系型数据库 Java
分享一个 Oracle RAC 模式下客户端建立JDBC初始连接时因ONS造成应用启动时卡顿30秒问题的排查分析案例
分享一个 Oracle RAC 模式下客户端建立JDBC初始连接时因ONS造成应用启动时卡顿30秒问题的排查分析案例