文档详情

第6章-数据库的事务处理数据恢复.ppt

发布:2018-02-27约1.11万字共84页下载文档
文本预览下载声明
6.1.4 ORACLE中的事务 6.2.5 ORACLE的并发控制机制 数据锁模式 行级排它锁(RX锁) LOCK TABLE 表名 IN ROW EXCLUSIVE MODE 当一事务在一表持有RX锁时,允许其他事务并行查询、插入、修改、删除同一表中的行或对该表执行RS、RX封锁。 当事务执行INSERT、UPDATE、DELETE语句时,该事务自动获得RX锁。 6.2.5 ORACLE的并发控制机制 数据锁模式 共享行级排它锁(SRX锁) LOCK TABLE 表名 IN SHARE ROW EXCLUSIVE MODE 只允许其他事务做查询或用SELECT …FOR UPDATE封锁指定行,但不允许修改表。 禁止S、X、RX、SRX锁。 6.2.5 ORACLE的并发控制机制 6.2.5 ORACLE的并发控制机制 6.2.5 ORACLE的并发控制机制 字段名称 类型 说明 SID NUMBER 会话(SESSION)标识; TYPE VARCHAR(2) 区分该锁保护对象的类型; ID1 NUMBER 锁标识1; ID2 NUMBER 锁标识2; LMODE NUMBER 锁模式:0(None),1(null),2(row share), 3(row exclusive),4 (share),5(share row exclusive),6(exclusive) REQUEST NUMBER 申请的锁模式:具体值同上面的LMODE CTIME NUMBER 已持有或等待锁的时间; BLOCK NUMBER 是否阻塞其它锁申请; v$lock视图列出当前系统持有的或正在申请的所有锁的情况,其主要字段说明如下: 6.2.5 ORACLE的并发控制机制 6.2.5 ORACLE的并发控制机制 字段名称 类型 说明 XIDUSN NUMBER 回滚段号; XIDSLOT NUMBER 槽号; XIDSQN NUMBER 序列号; OBJECT_ID NUMBER 被锁对象标识; SESSION_ID NUMBER 持有锁的会话(SESSION)标识; ORACLE_USERNAME VARCHAR2(30) 持有该锁的用户的Oracle用户名; OS_USER_NAME VARCHAR2(15) 持有该锁的用户的操作系统用户名; PROCESS VARCHAR2(9) 操作系统的进程号; LOCKED_MODE NUMBER 锁模式,取值同表三中的LMODE; v$locked_object视图列出当前系统中哪些对象正被锁定 6.3 数据库恢复 6.3.1 数据库系统的故障 6.3.2 数据库恢复策略 6.3.3 数据库备份技术 6.3.4 回闪技术 6.3.1 数据库系统的故障 1.事务故障 指由于事务内部的逻辑错误(如运算溢出、记录找不到等)或系统错误所引起的故障,导致事务未运行至正常终止点就夭折了。 2.系统故障 由于各种软硬件故障、突然停电等造成系统运行停止,致使正在运行的事务非正常终止,导致数据丢失。 3.介质故障 存储数据库的磁盘受到物理损坏导致数据无法读出。 日志文件 用来记录事务对数据库的更新操作的文件。 日志文件一般记录以下内容: 事务开始标记;事务标识;操作类型;操作对象;更新前数据旧值;更新后数据新值;事务结束标记。 Oracle查看日志文件 select * from v$logfile; Oracle查看日志 select * from v$sql (查看最近所作的操作) 6.3.1 数据库系统的故障 Oracle的重做日志组 日志文件是一个频繁操作的文件,计算机操作的文件越大系统的效率越低,因此,日志文件应该尽可能地小。但是,小文件可能很快就被写满,因此,Oracle使用了多组重做日志。 任意时刻,只能写一组重做日志,此重做日志组成为当前(current)重做日志组。 当一组重做日志被写满后,就会开始写下一组重做日志。如此循环。Oracle归档写进程会在重做日志文件中的信息被覆盖之前将其复制到归档日志文件中。 6.3.1 数据库系统的故障 重做日志组的状态含义 Current:这组重做日志组是当前组,且是活动的。 Active:这组重做日志组是活动的,但不是当前组,实例恢复时需要这组重做日志组。 Inactive:这组重做日志组是非活动的,实例恢复时不需要这组重做日志组。 Unused:Oracle服务器重来没写过该重做日志组(刚被添加到数据库中)。 6.3.1 数据库系统的故障 6.3.2 数据库恢复策略 1.事务故障的恢复 事务故障可以利用日志文件撤销事务对数据库的修改,使得事务像根本没有启动过一样。 (1)反向扫描文件
显示全部
相似文档