首页
网站首页
公司简介
资讯中心
推荐内容
返回顶部
时间格式的调整,ORACLE回滚段管理
发布时间:2019-12-25 16:27
浏览次数:

Oracle杀死死锁进程

回滚段管理一直是ORACLE数据库管理的一个难题,本文通过实例介绍ORACLE回滚段的概念,用法和规划及问题的解决。

select * from V$NLS_PARAMETERS; SQL alter session set NLS_DATE_LANGUAGE = 'SIMPLIFIED CHINESE'; Session altered SQL Select to_char(sysdate,'yyyy-Mon-day') from dual; TO_CHAR(SYSDATE,'YYYY-MON-DAY' ------------------------------ 2009-5月 -星期三 SQL alter session set NLS_DATE_LANGUAGE='AMERICAN'; Session altered SQL Select to_char(sysdate,'yyyy-Mon-day') from dual; TO_CHAR(SYSDATE,'YYYY-MON-DAY' ------------------------------ 2009-May-wednesday SQL

事务是Oracle 9i中进行数据库操作的基本单位,在PL/SQL程序中,可以使用3个事务处理控制命令。

先查看哪些表被锁住了:

回滚段概述

commit命令

select b.owner,b.object_name,a.session_id,a.locked_modefrom v$locked_object a,dba_objects bwhere b.object_id = a.object_id;OWNER OBJECT_NAME SESSION_ID LOCKED_MODE------------------------------ -----------------WSSB SBDA_PSHPFTDT 22 3WSSB_RTREPOS WB_RT_SERVICE_QUEUE_TAB 24 2WSSB_RTREPOS WB_RT_NOTIFY_QUEUE_TAB 29 2WSSB_RTREPOS WB_RT_NOTIFY_QUEUE_TAB 39 2WSSB SBDA_PSDBDT 47 3WSSB_RTREPOS WB_RT_AUDIT_DETAIL 47 3select b.username,b.sid,b.serial#,Logon_timefrom v$locked_object a,v$session bwhere a.session_id = b.sid order by b.Logon_time;USERNAME SID SERIAL# LogoN_TIME------------------------------ ---------- -------WSSB_RTACCESS 39 1178 2006-5-22 1WSSB_RTACCESS 29 5497 2006-5-22 1

回滚段用于存放数据修改之前的值。回滚段的头部包含正在使用的该回滚段事务的信息。一个事务只能使用一个回滚段来存放它的回滚信息,而一个回滚段可以存放多个事务的回滚信息。

commit是事务提交命令。在Oracle 9i数据库中,为了保证数据的一致性,在内存中将为每个客户机建立工作区,客户机对数据库进行操作处理的事务都在工作区内完成,只有在输入commit命令后,工作区内的修改内容才写入到数据库上,称为物理写入,这样可以保证在任意的客户机没有物理提交修改以前,别的客户机读取的后台数据库中的数据是完整的、一致的,如图9.26所示。

杀进程中的会话:

回滚段的作用

在中可以执行下列PL/SQL程序打开自动提交功能。这样每次执行PL/SQL程序都会自动进行事务提交。执行结果如图9.27所示。

alter system kill session sid,serial#;e.galter system kill session 29,5497;

事务回滚:当事务修改表中数据的时候,该数据修改前的值会存放在回滚段中,当用户回滚事务时,ORACLE将会利用回滚段中的数据前影像来将修改的数据恢复到原来的值。

set auto on;

如果有ora-00031错误,则在后面加immediate;alter system kill session 29,5497 immediate;

事务恢复:当事务正在处理的时候,例程失败,回滚段的信息保存在重做日志文件中,ORACLE将在下次打开数据库时利用回滚来恢复未提交的数据。

:第9章/setautocommiton.sql。

如何杀死oracle死锁进程

读一致性:当一个会话正在修改数据时,其他的会话将看不到该会话未提交的修改。而且,当一个语句正在执行时,该语句将看不到从该语句开始执行后的未提交的修改。当ORACLE执行SELECT语句时,ORACLE依照当前的系统改变号来保证任何前于当前SCN的未提交的改变不被该语句处理。可以想象:当一个长时间的查询正在执行时,若其他会话改变了该查询要查询的某个数据块,ORACLE将利用回滚段的数据前影像来构造一个读一致性视图。

相应的,取消自动提交功能的PL/SQL程序如下。

1.查哪个过程被锁:

事务级的读一致性

set auto off;

查V$DB_OBJECT_CACHE视图:

ORACLE一般提供SQL语句级的读一致性,可以用以下语句来实现事务级的读一致性。

:第9章/setautocommitoff.sql。

SELECT * FROM V$DB_OBJECT_CACHE WHERE OWNER=过程的所属用户 AND CLOCKS!=0;

SET TRANSACTION READ ONLY;

rollback命令

  1. 查是哪一个SID,通过SID可知道是哪个SESSION:

或:

ollback是事务回滚命令,在尚未提交commit命令之前,如果发现delete、insert和update等操作需要恢复的话,可以使用rollback命令回滚到上次commit时的状态。

友情链接: 网站地图
Copyright © 2015-2019 http://www.nflfreepicks.net. 新葡萄京娱乐场网址有限公司 版权所有