精华内容
下载资源
问答
  • oracle检测锁,释放锁

    千次阅读 2010-04-21 17:16:00
    检测锁: SELECT A.OWNER,A.OBJECT_NAME,B.XIDUSN,B.XIDSLOT,B.XIDSQN,B.SESSION_ID,B.ORACLE_USERNAME, B.OS_USER_NAME,B.PROCESS, B.LOCKED_MODE, C.MACHINE,C.STATUS,C.SERVER,C.SID,C.SERIAL#,C.PROGRAMFROM A

    检测锁:

     

    SELECT A.OWNER,
    A.OBJECT_NAME,
    B.XIDUSN,
    B.XIDSLOT,
    B.XIDSQN,
    B.SESSION_ID,
    B.ORACLE_USERNAME,
    B.OS_USER_NAME,
    B.PROCESS,
    B.LOCKED_MODE,
    C.MACHINE,
    C.STATUS,
    C.SERVER,
    C.SID,
    C.SERIAL#,
    C.PROGRAM
    FROM ALL_OBJECTS A,
    V$LOCKED_OBJECT B,
    SYS.GV_$SESSION C
    WHERE ( A.OBJECT_ID = B.OBJECT_ID )
    AND (B.PROCESS = C.PROCESS )
    ORDER BY 1,2;

     

     

    杀死session释放锁:

     

    alter system kill session 'sid, serial#'

    展开全文
  • oracle检测锁,释放锁检测锁:SELECT A.OWNER,A.OBJECT_NAME,B.XIDUSN,B.XIDSLOT,B.XIDSQN,B.SESSION_ID,B.ORACLE_USERNAME,B.OS_USER_NAME,B.PROCESS,B.LOCKED_MODE,C.MACHINE,C.STATUS,C.SERVER,C.SID,C.SERIAL#,C...

    oracle检测锁,释放锁

    检测锁:

    SELECT A.OWNER,

    A.OBJECT_NAME,

    B.XIDUSN,

    B.XIDSLOT,

    B.XIDSQN,

    B.SESSION_ID,

    B.ORACLE_USERNAME,

    B.OS_USER_NAME,

    B.PROCESS,

    B.LOCKED_MODE,

    C.MACHINE,

    C.STATUS,

    C.SERVER,

    C.SID,

    C.SERIAL#,

    C.PROGRAM

    from ALL_OBJECTS A,

    V$LOCKED_OBJECT B,

    SYS.GV_$SESSION C

    WHERE ( A.OBJECT_ID = B.OBJECT_ID )

    AND (B.PROCESS = C.PROCESS )

    ORDER BY 1,2;

    杀死session释放锁:

    alter system kill session 'sid, serial#'

    相关文档:

    Oracle中的Hash Join祥解

    一、  hash join概念

    Hashjoin(HJ)是一种用于equi-join(而anti-join就是使用NOT IN时的join)的技术。

    在Oracle中,它是从7.3开始引入的,以代替sort-merge和nested-loop join方式,

    提高效率。在CBO(hash join只有在CBO才可能被使用到)模式下,优化器计算代 ......

    1.在ORACLE中实现SELECT TOP N

    由于ORACLE不支持SELECT TOP语句,所以在ORACLE中经常是用ORDER BY跟ROWNUM的组合来实现SELECT TOP N的查询。

    简单地说,实现方法如下所示:

    SELECT 列名1...列名n from

    (SELECT 列 ......

    Oracle中的decode用法

    Decode(条件,值1,显示值1,值2,显示值2,…… 值n,显示值n)

    应用举例:

    select t.res_id,

    t.res_size || '(kb)' as res_size,

    decode(t.res_type,1,'模板区','0','文档区') res_type,

    ......

    Oracle数据导入导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中。 利用这个功能可以构建两个相同的数据库,一个用来测试,一个用来正式使用。

    执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,

    ......

    何为LOB?

    lob为oracle数据库的一个大对象数据类型,可以存储超过4000bytes的字符串,二进制数据,OS文件等大对象信息.最大可存储的容量根oracle的版本和oracle 块大小有关.

    有那几种可供选择的LOB类型?

    目前ORACLE提供了CLOB,NCLOB,BLOB,BFILE共四种LOB类型,CLOB,NLOB为大字符串类型,NLOB为多语言集字符类型,类似于NV ......

    展开全文
  • oracle 查看锁表情况并处理锁表

    万次阅读 2014-09-16 14:51:21
    /*3、查询oracle用户名,机器名,锁表对象*/ SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, l.os_user_name, s.machine, s.terminal, o.object_name, s.logon_time ...
    /*
    *locked
    *query locked object and analyse reason,kill it
    *
    */
    
    select 'alter system kill session ''' || SID || ',' || SERIAL# || ''';'
      from (select distinct a.sid,
                            a.Serial#,
                            status,
                            machine,
                            LOCKWAIT,
                            logon_time
              from v$session a, v$locked_object b
             where (a.status = 'ACTIVE' or a.status = 'INACTIVE')
               and a.sid = b.session_id
               and b.ORACLE_USERNAME = 'XYHISTEST' --加上用户名可过滤用户资源
            )
           
    /*2、批量执行第一步生成的语句
    alter system kill session 'sid,serial#';
    alter system kill session '6976,33967';*/   
    
    /*3、查询oracle用户名,机器名,锁表对象*/
    SELECT l.session_id sid,
           s.serial#,
           l.locked_mode,
           l.oracle_username,
           l.os_user_name,
           s.machine,
           s.terminal,
           o.object_name,
           s.logon_time
      FROM v$locked_object l, all_objects o, v$session s
     WHERE l.object_id = o.object_id
       AND l.session_id = s.sid
     ORDER BY sid, s.serial#;
    
    /*3.或者*/
    select s.SID, s.OSUSER, p.spid as OSPID, s.MACHINE, s.TERMINAL, s.PROGRAM
      from v$session s, v$process p
     where s.sid = 6 --session_id
       and s.paddr = p.addr;
    
    /*4、查询是执行何sql语句导致锁表的*/
    select b.sql_text
      from v$session a, v$sql b
     where a.sid = 6 --session_id
       and a.SQL_ADDRESS = b.ADDRESS(+);
    
    /*5、查询是执行何sql语句导致锁表的*/
    SELECT l.session_id sid,
           s.serial#,
           l.locked_mode,
           l.oracle_username,
           s.user#,
           l.os_user_name,
           s.machine,
           s.terminal,
           a.sql_text,
           a.action
      FROM v$sqlarea a, v$session s, v$locked_object l
     WHERE l.session_id = s.sid
       AND s.prev_sql_addr = a.address
     ORDER BY sid, s.serial#;
    


     

    展开全文
  • Oracle锁分区

    2019-01-03 11:45:59
    一.的概念 1.是数据库用来控制共享资源的机制 2.用来保护正在被修改的数据 3.只有用户rollback或者commit后才能进行,其它用户才能进行操作 二.的分类 ...1.行级 ...当使用insert 、 update 、...2....

    一.锁的概念

    1.锁是数据库用来控制共享资源的机制

    2.锁用来保护正在被修改的数据

    3.只有用户rollback或者commit后才能进行,其它用户才能进行操作

    二.锁的分类

    1.行级锁

    当使用insert 、 update  、delete  、select  for update会触发行级锁

    select ...for update用法:允许用户一次锁定多条记录进行更新

    2.表级锁

    --表级锁

    --LOCK TABLE table_name IN mode MODE;

    注解:table_name指表的名字   mode指表级锁的类型

    --1行共享 (ROW SHARE ) – 禁止排他锁定表

    --2行排他(ROW EXCLUSIVE ) – 禁止使用排他锁和共享锁

    --3共享锁(SHARE )

    --3.1锁定表,仅允许其他用户查询表中的行

    --3.2禁止其他用户插入、更新和删除行

    --3.3多个用户可以同时在同一个表上应用此锁

    --4共享行排他(SHARE ROW EXCLUSIVE) – 比共享锁更多的限制,禁止使用共享锁及更高的锁

    --5排他(EXCLUSIVE ) – 限制最强的表锁,仅允许其他用户查询该表的行。禁止修改和锁定表

     

    3.死锁

    当两个事务相互等待对方释放资源时,就会形成死锁

    Oracle会自动检测死锁,并通过结束其中的一个事务来解决死锁

    二.表分区

    --范围分区

    create table customer(

     cust_id number primary key,

     cust_name varchar2(20),

     cust_statius char(2)

    )

    partition by range(cust_id)(

    partition cust_partl values less than(200),--cust_part1分区名字

    partition cust_part2 values less than(400),

    partition cust_part3 values less than(maxvalue)

    );

     

    insert into customer values(1,'a','12');

    insert into customer values(240,'a','12');

    insert into customer values(700,'a','12');

    insert into customer values(210,'a','12');

    commit;

     

    select*from customer partition(cust_partl);

     

    --列表分区partition by list

    create table stu(

    s_id number(20)primary key,

    s_name varchar2(20)not null,

    s_address varchar2(50)

    )

     

    partition by list(s_address)(

    partition s_part1 values('长沙'),

    partition s_part2 values('株洲'),

    partition s_part3 values('湘潭')

    );

     

    insert into stu values(1,'张三','长沙');

    insert into stu values(2,'李四','株洲');

    insert into stu values(3,'王五','湘潭');

    insert into stu values(4,'马六','株洲');

    insert into stu values(5,'哈七','长沙');

    commit;

     

    select*from stu;

    select*from stu partition(s_part1)order by s_name;--按s_part1(长沙)分区进行查询,按名字进行排序

    select*from stu partition(s_part2);--按s_part2(株洲)分区进行查询

    select*from stu partition(s_part3);--按s_part3(湘潭)分区进行查询

     

    --散列分区 partition by hash,不知道数据存在那个分区,由oracle底层根据hash值来进行分区

    create table  info(

      id number(20)primary key,

      msg varchar2(20)

    )

    partition by hash(id)(

    partition part1,

    partition part2,

    partition part3

    );

    insert into info values(1,'吃辣条');

    insert into info values(2,'吃面包');

    insert into info values(3,'吃米饭');

    insert into info values(4,'吃辣椒');

    commit;

    select*from info;

    select*from info partition (part1);

    select*from info partition (part2);

    select*from info partition (part3);

     

    --复合分区

    create table sales(

    id number(20)primary key,

    name varchar2(20),

    s_date date,

    status varchar2(20)

    )

    partition by range(id)subpartition by list(status)(

    partition part1 values less than(100)(

    subpartition part101 values ('已支付'),

    subpartition part102 values('未支付')

    ),

    partition part2 values less than(200)(

    subpartition part201 values ('已支付'),

    subpartition part202 values('未支付')

    ),

    partition part3 values less than(maxvalue)(

    subpartition part301 values ('已支付'),

    subpartition part302 values('未支付')

    )

    );

     

    insert into sales values(1,'安踏',sysdate,'未支付');

    insert into sales values(201,'特步',sysdate,'未支付');

    insert into sales values(305,'李宁',sysdate,'已支付');

    insert into sales values(455,'耐克',sysdate,'已支付');

    commit;

    select*from sales;

     

    select*from sales partition (part1);

    select*from sales partition (part2);

    select*from sales partition (part3);

     

    select*from sales subpartition (part102);

    select*from sales subpartition (part301);

    select*from sales subpartition (part302);

    四.表分区的操作

    添加、删除、合并、截取

    --添加一个stu的表

    create table stu(

    id number(20),

    name varchar2(20)

    )

    partition by range(id)(

    partition part1 values less than(20)

    );

    drop table stu;

    insert into stu values(1,'小明');

    commit;

    insert into stu values(43,'小红');

    commit;

    select*from stu partition (part1);

    select*from stu partition (part2);

     

    --添加分区 add

    alter table stu add partition part2 values less than(50);

    --删除分区,数据也会删除 drop

    --如果要删除子分区,可以使用 drop subpartition

    alter table stu drop partition part2;

    --截取分区 truncate,删除数据,不删除分区

    alter table stu truncate partition part2;

    --分区的合并 merge partition....into partition...

    --如果想快速合并分区,可以不加 update indexes 参数,合并完索引后 alter index rebuild partition 重建索引;

    alter table stu  merge partitions part1,part2 into partition part2;

    --拆分分区(将part2分区进行拆分,part21(20-40),part2(40-50),且part2分区不存在)

    --注意:如果是RANGE类型的,使用at,LIST类型的使用values。

    alter table stu split partition part2 at (40)into (partition part21,partition part22)update indexes;

    --重命名分区

     alter table stu rename partition part21 to part2a;

     alter table stu rename partition part22 to part2b;

    展开全文
  • Oracle中的是数据库用来控制共享资源并发访问的机制。 用于保护正在被修改的数据 直到提交或回滚了事务之后,其他用户才可以更新数据 行级 对正在被修改的行进行锁定,其他用户可以访问除被锁定的行...
  • 需要运行两次的脚本 第一次取得所有的,第二次会自动对比第一次,如果还存在相同的,就会报警出来,一般你可以设定每5分钟运行一次。 使用于AIX LINUX【经测试过】
  • Oracle-解读

    千次阅读 2016-11-03 14:13:05
    如果是单用户的系统,那完全没有必要这个,就是因为有多用户并发操作,我们为了确保资源的安全性(也就是oracle的数据完整性和一致性)才引申出这个出来。Oracle 利用其机制来实现事务间的数据并发访问及数据...
  • Oracle机制

    2017-05-31 14:56:50
    Oracle机制Oracle分为:行级;行级Oracle隐式自动产生的,除了会自动产生外,还可以人工通过命令指定。Oracle的锁定模式分为:X锁定模式、SRX锁定模式、S锁定模式、RX锁定模式、RS锁定...
  • oracle锁表检查语句

    2011-08-27 12:59:00
    select p.spid,c.object_name,b.session_id,b.oracle_username,b.os_user_name from v$process p,v$session a, v$locked_object b,all_objects c where p.addr=a.paddr and a.process=b.pro...
  • Oracle数据库机制

    2017-11-27 13:23:23
    Lock行为概述 Lock用途 Lock模式 Lock转换和升级 Lock持续时间 Locks和Deadlocks Lock是一种机制,可以防止事务对共享数据的不正确的更新和不...通常,数据库使用两种类型的:排它(exclusive locks)和共享(sha
  • oracle DDL超时问题

    千次阅读 2018-01-22 13:55:04
    oracle数据库在执行truncate table的时候报错: ORA-00054:resource...该问题原因是oracle在执行DDL操作时,DML操作已经对该对象加锁,由于DDL获取超时导致的。 模拟场景: 1.在session1中首先向一个插入一...
  • Oracle:机制及解锁

    2018-02-07 13:23:26
    4. oracle检测及解锁 --查看被 SELECT p.spid, a.serial#, c.object_name, b.session_id, b.oracle_username,b.os_user_name FROM v$process p, v$ session a, v$locked_object b, all_...
  • Oracle机制

    2015-06-05 16:42:04
    Oracle机制,具体请到这里下载:http://download.csdn.net/detail/maci_hotesion/8776403
  • ORACLE机制

    2011-07-05 13:53:50
    数据库使用(lock)来保证任何给定时刻最多只有一个事务在修改给定的一段数据。实质上讲,正是机制才...ORACLE的封锁策略: 1、只有当修改时,Oracle在行级上定数据,不要把锁定上升到块或级。 2、Oracle决不
  • Oracle TX等待的分析

    2019-03-21 08:09:09
    Oracle检测到死锁产生时,中断并回滚死锁相关语句的执行,报ORA-00060的错误并记录在数据库的日志文件alertSID.log中。同时在user_dump_dest下产生了一个跟踪文件,详细描述死锁的相关信息。在日常工作中,如果...
  • oracle锁机制

    2014-12-31 14:18:01
    一、 Oracle锁机制 1、什么是 是控制“共享资源”并发存取的一种机制。注意这里说“共享资源”而不仅指“数据行”,数据库的却在行一级对表的数据加锁,但是数据库也在其它地方对各种资源的并发存取使用。...
  • ORACLE锁

    2013-08-25 18:31:53
    共具有五种模式,如下所示。 行级排他(Row Exclusive,简称RX) 当我们进行DML时会自动在被更新的上添加RX,或者也可以通过执行lock命令显式的在上添加RX。在该锁定模式下,允许其他的事务...
  • oracle 悲观&乐观

    2011-08-18 10:42:02
    为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是...什么叫悲观呢,悲观顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设
  • 查看oracle数据库中是否被

    千次阅读 2012-02-20 14:59:42
    select p.spid,  c.object_name,  b.session_id,  b.oracle_username,  b.os_user_name,  a.machine,  a.program  from v$process p, v$session a, v$locked_object b,
  • Oracle悲观和乐观

    2009-12-08 22:30:00
    数据的锁定分为两种方法,第一种叫做悲观,第二种叫做乐观。什么叫悲观呢,悲观顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假设数据肯定会冲突,所以在数据开始读取的时候就把数据锁定住。而...
  • Oracle悲观和乐观

    千次阅读 2009-08-23 03:47:00
    数据的锁定分为两种方法,第一种叫做悲观,第二种叫做乐观。什么叫悲观呢,悲观顾名思义,就是对数据的冲突采取一种悲观的态度,也就是说假 设数据 肯定会冲突,所以在数据开始读取的时候就把数据锁定住。而...
  • ORACLE机制

    2016-08-30 11:15:18
    1.存在原因:并发+数据一致性==> 事务隔离级别也是基于实现的。2.基本类型: 排它(Exclusive Locks,即X):no read ,no write ;X+NULL(任何事务都不能再对当前数据对象加任何类型的) 共享...
  • 如何检测住的Oracle存储过程

    千次阅读 2013-08-09 15:57:26
    1.查看是哪一个存储过程被住 查V$DB_OBJECT_CACHE视图 select * from V$DB_OBJECT_CACHE where owner='过程的所属用户' AND LOCKS!='0' 2.查看是哪一个sid,通过sid可以知道是哪一个session 查v$access视图 ...
  • Oracle 数据库机制

    2008-03-31 15:43:00
    Oracle 数据库机制 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的...
  • [Oracle] (Lock)的探讨

    千次阅读 2013-05-31 10:04:37
    Oracle当中的通常是业务层面的问题,是为了在并发的情况下保证数据库的一致性,因此没有并发就没有Oracle有如下几个原则: 只有被修改时,行才会被锁定,因为有UNDO的关系,读不会产生行锁。当一条...
  • http://www.dedecms.com/web-art/shujuku/Oracle/20061008/37324.html 介绍了Oracle数据库的...本文通过对Oracle数据库机制的研究,首先介绍了Oracle数据库的种类,并描述了实际应用中遇到的与相关的异常情
  • oracle 的介绍

    2016-10-02 23:38:13
     Oracle机制是一种轻量级的锁定机制,不是通过构建列表来进行数据的锁定管理,而是直接将作为数据块的属性,存储在数据块首部。这个是通过ITL来实现的,一个事务要修改块中的数据,必须获得该块中的一个itl...
  • Oracle的概念

    2011-11-09 12:56:30
    是数据库用来控制共享资源并发访问的机制。 用于保护正在被修改的数据 直到提交或回滚了事务之后,其他用户才可以更新数据 锁定的优点 一致性 - 一次只允许一个用户修改数据 完整性 - 为所有用户提供正确的...
  • Oracle数据库悲观与乐观是本文我们主要要介绍的内容。有时候为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突。为了解决这个问题,大多数数据库用的方法就是数据的锁定。  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,568
精华内容 8,627
关键字:

oracle检测锁表