Oracle数据库中为什么会产生回滚与前退

Oracle数据库中为什么会产生回滚与前退,第1张

在一个transaction发生的过程中,online redo log首先记录transaction中修改的数据块相关信息,修改的数据块会被缓存在database buffer cache中。由于database buffer cache写满或者checkpoint等等条件触发dbwn进程,会导致这些缓存的数据块写入数据文件,但此时可能该transaction仍然还没有提交。所以在数据文件中,可能会有commited 和 uncommited 的数据块。而原有的数据块镜像会存放在undo segment。IXDBANET社区论坛然而,dbwn写脏数据时不管这个要写的transaction是否提交,也没有必要去管。这样就发生了所谓的已经提交的数据,但是还没有写入数据文件的现象。还有一种情况,数据没有提交,但是已经被写入数据文件,此时发生回退,撤销没有提交的数据。根本原因是commit后写redo buffer和触发lgwr写 redo buffer的区别。事务在执行完毕后,随即会被写入redo buffer和undo中,同时在redo buffer和undo中对该事务都有一个是否提交的标记。两者的默认状态都是active的,即没有提交时刻处于激活状态。commit *** 作执行时刻把此前的所有事务 *** 作全部写入redo log file,commit成功后,redo buffer信息全部写入redo file,同时修改两者中的事务提交标识为inactive,表示此前事务已经递交。oracle的前滚和回退根据就是依据事务是否提交而进行的。在触发lgwr进程后,oracle同样把此前的redo buffer信息写入redo file,但是与commit触发写日志不同的是,redo file本身对lgwr写日志 *** 作不记录任何信息标识,lgwr写到那里就是那里,就算此时掉电也无妨,redo file就记录到掉电时刻的信息。lgwr是一个Oracle后台执行的进程,具体的日志写 *** 作都有oracle去控制,这对于oracle来说是透明的,因此不用在redo file中写入任何标记信息,这也是正常的。于是,Oracle崩溃恢复步骤如下:首先rolling forward 前滚:由于oracle failure,sga中的内存信息丢失了,但是online redo log中还是存储了transaction信息,包括commited or uncommited data。可能这些修改信息并没有被oracle正确的来处理,包含两种情况:已经提交的还没有写入数据文件,或者没有提交的却被写入了数据文件。针对已经提交的还没有写入数据文件就要发生前滚,在前滚过程中,smon会根据online redo log中的记录来完成对datafile的修改。保证已经提交的数据已经写入数据文件。接下来,前滚结束后,数据库正常open,此时用户可以正常连接,可以访问已经recover的commited data,但是对于那些属于unrecoverable transaction的uncommited data,会被oracle 加锁,是不可以访问的。

131 数据库对象

Dba_xxx 数据库所有对象

All_xxx 用户可访问的所有对象

User_xxx 用户所拥有的所有对象

User_tables

User_objects

User_catalog;

132 注释数据字典

All_col_comments

User_col_comments

All_tab_comments

User_tab_comments

133 约束数据字典

User_constraint

User_cons_columns

134 序列数据字典

User_sequences

135 视图数据字典

User_views

136 索引数据字典

User_indexes

User_ind_columns

大庆油田设计院地理信息中心 单文冬

74

137 权限数据字典

Role_sys_privs 授予角色的系统权限

Role_tab_privs 授予角色的对象权限

User_role_privs 用户可以访问的角色

User_tab_privs_made 在用户的对象上授予的权限

User_tab_privs_recd 授予用户的对象权限

User_col_privs_made 在用户对象的列上授予的对象权限

User_col_privs_recd 授予用户的在指定列上的对象权限

138 触发器数据字典

User_triggers

Dba_triggers

All_triggers

139 体系结构数据字典

V$sga

V$sgainfo

V$sga_dynamic_components

V$sga_dynamic_free_memory

V$parameter

V$instance

1310 数据库视图

V$database

V$controlfile

V$datafile

V$logfile

V$bgprocess

V$parameter

V$sga

1311 控制文件视图

V$controlfile

V$controlfile_record_section

V$logfile

V$datafile

大庆油田设计院地理信息中心 单文冬

75

V$tempfile

V$tablespace

1312 分析日志的信息

V$logmnr_dictionary

V$logmnr_parameters

V$logmnr_contents

1313 查看检查点的信息

查看控制文件中的scn

V$datafile: checkpoint_change#, name

查看数据文件中的scn

V$datafile_header: checkpoint_change#, name

查看重做日志中的scn

V$log: group#, status, first_change#

1314 归档信息

V$database: name, log_mode

V$instance: archiver

1315 日志信息

日志组

V$thread: groups, current_group#, sequence#

日志组和成员

V$log: group#, members, status, sequence#, bytes

V$logfile: group#, status, member

1316 归档日志信息

Select name, sequence# from v$archived_log;

Select destination from v$archive_dest;

1317 表空间视图及数据文件视图

临时表空间

V$sort_segment

大庆油田设计院地理信息中心 单文冬

76

V$tempseg_usage

表空间组

Dba_tablespace_groups

表空间信息

Dba_tablespaces

V$tablespace

数据文件信息

Dba_data_files

V$datafile

临时文件信息

Dba_temp_files

V$tempfile

1318 用户信息及权限

Dba_users

V$pwfile_users

Dba_ts_quota

V$session

System_privilege_map 显示所有系统权限

Dba_sys_privs 显示用户所具有的系统权限

User_sys_privs 显示当前用户的系统

Session_privs 显示当前会话的系统权限

Dba_tab_privs 显示用户所具有的对象权限

Dba_col_privs 显示用户所具有的列权限

User_tab_privs 显示当前用户的对象权限

User_col_privs 显示当前用户的对象权限

1319 角色信息

显示角色所具有的系统权限 role_sys_privs

显示角色所具有的对象权限 role_tab_privs

显示用户的默认角色 dba_role_privs

显示当前用户的所有角色 user_rol_privs

显示当前会话激活的角色 session_roles

大庆油田设计院地理信息中心 单文冬

77

1320 Profile 信息

Dba_users 显示用户的profile

Dba_profiles 显示profile 的口令限制和资源限制

1321 审计信息

显示审计记录 dba_audit_trail

显示已经设置的审计 dba_stmt_audit_opts

显示权限审计 dba_priv_audit_opts

还有很多。不列举了。

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。

特点

1、完整的数据管理功能:[2]

1)数据的大量性

2)数据的保存的持久性

3)数据的共享性

4)数据的可靠性

2、完备关系的产品:

1)信息准则---关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显式地表示;

2)保证访问的准则

3)视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化

4)数据物理性和逻辑性独立准则

3、分布式处理功能:

ORACLE数据库自第5版起就提供了分布式处理能力,到第7版就有比较完善的分布式数据库功能了,一个ORACLE分布式数据库由oraclerdbms、sqlNet、SQLCONNECT和其他非ORACLE的关系型产品构成。

4、用ORACLE能轻松的实现数据仓库的 *** 作。

这是一个技术发展的趋势,不在这里讨论。

优点

■ 可用性强

■ 可扩展性强

■ 数据安全性强

■ 稳定性强

以上就是关于Oracle数据库中为什么会产生回滚与前退全部的内容,包括:Oracle数据库中为什么会产生回滚与前退、简单了解oracle数据库具有哪些数据字典和动态性能视图、数据库oracle简介等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9302543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存