[20190522]DISABLE TABLE LOCK.txt
[20190522]DISABLE TABLE LOCK.txt
--//如果禁止table lock时,一些ddl操作会被禁止.但是我有点吃惊的是增加字段不受限制.
--//通过测试说明问题.
1.环境:
SCOTT@book> @ ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
SCOTT@book> create table t as select rownum id from dual ;
Table created.
SCOTT@book> alter table t disable table lock;
Table altered.
2.测试:
SCOTT@book> truncate table t;
truncate table t
*
ERROR at line 1:
ORA-00069: cannot acquire lock -- table locks disabled for T
SCOTT@book> alter table t add v1 varchar2(10);
Table altered.
--//增加1列v1没有问题.
SCOTT@book> @ desc t
Name Null? Type
----- -------- ----------------------------
ID NUMBER
V1 VARCHAR2(10)
SCOTT@book> alter table t drop column v1;
alter table t drop column v1
*
ERROR at line 1:
ORA-00069: cannot acquire lock -- table locks disabled for T
--//删除列不行.
SCOTT@book> alter table t set unused column v1;
alter table t set unused column v1
*
ERROR at line 1:
ORA-00069: cannot acquire lock -- table locks disabled for T
3.继续:
SCOTT@book> alter table t enable table lock;
Table altered.
SCOTT@book> alter table t set unused column v1;
Table altered.
--//有时候感觉oracle设计的很奇怪,也就是增加1列不需要TM锁吗?
3.继续测试:即使有事务存在的情况下.
--//session 1:
SCOTT@book> @ spid
SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
30 535 42553 DEDICATED 42554 26 245 alter system kill session '30,535' immediate;
SCOTT@book> alter table t disable table lock;
Table altered.
--//session 2:
SCOTT@book> @ spid
SID SERIAL# PROCESS SERVER SPID PID P_SERIAL# C50
---------- ---------- ------------------------ --------- ------ ------- ---------- --------------------------------------------------
1 10297 43346 DEDICATED 43347 24 237 alter system kill session '1,10297' immediate;
SCOTT@book> insert into t values (2);
1 row created.
SCOTT@book> @ viewlock ;
SID SERIAL# USERNAME OSUSER MACHINE MODULE LOCK_TYPE MODE_HELD MODE_REQUE LOCK_ID1 LOCK_ID2 OWNER OBJECT_TYP OBJECT_NAME BLOCK LOCKWAIT
------ ---------- ---------- ---------- ---------- ------------ --------------- ---------- ---------- ---------- ---------- ------ ---------- -------------------- ----- --------------------
1 10297 SCOTT oracle gxqyydg4 SQL*Plus TX Transaction Exclusive None 655375 4583723 No
--//session 1:
SCOTT@book> alter table t add v1 varchar2(10);
Table altered.
SCOTT@book> alter table t add v2 varchar2(10);
Table altered.
--//确实可以.
--//session 2:
SCOTT@book> select * from t;
ID V1 V2
---------- ---------- ----------
1
2
SCOTT@book> insert into t values (3);
insert into t values (3)
*
ERROR at line 1:
ORA-00947: not enough values
--//增加了字段.
SCOTT@book> insert into t values (3,'a','b');
1 row created.
SCOTT@book> select * from t;
ID V1 V2
---------- ---------- ----------
1
2
3 a b
4.如果enable table lock,如果有会话事务没有提交,在别的会话增加一列一定会挂起:
--//感觉oracle的设计还真奇怪....
--//session 1:
SCOTT@book> alter table t enable table lock;
Table altered.
--//session 2:
SCOTT@book> insert into t values (4,'a','b');
1 row created.
--//session 1:
SCOTT@book> alter table t add v3 varchar2(10);
--//挂起!!
SCOTT@book> @ viewlock
SID SERIAL# USERNAME OSUSER MACHINE MODULE LOCK_TYPE MODE_HELD MODE_REQUE LOCK_ID1 LOCK_ID2 OWNER OBJECT_TYP OBJECT_NAME BLOCK LOCKWAIT
------ ---------- ---------- ---------- ---------- ------------ --------------- ---------- ---------- ---------- ---------- ------ ---------- -------------------- ----- --------------------
1 10297 SCOTT oracle gxqyydg4 SQL*Plus TM DML(TM) Row-X (SX) None 42044813 0 SCOTT TABLE T No
1 10297 SCOTT oracle gxqyydg4 SQL*Plus TX Transaction Exclusive None 655379 4583660 Yes
30 535 SCOTT oracle gxqyydg4 SQL*Plus TX Transaction None Share 655379 4583660 No 0000000085439E00
30 535 SCOTT oracle gxqyydg4 SQL*Plus TM DML(TM) Row-X (SX) None 42044813 0 SCOTT TABLE T No 0000000085439E00
30 535 SCOTT oracle gxqyydg4 SQL*Plus TX Transaction Exclusive None 589849 212173 No 0000000085439E00
5.viewlock.sql脚本:
$ cat viewlock.sql
column sid format 99999
column username format a10
column osuser format a10
column machine format a10
column lock_type format a15
column mode_held format a10
column mode_requested format a10
column lock_id1 format a10
column lock_id2 format a10
column owner format a6
column object_type format a10
column object_name format a20
column block format a5
column lockwait format a20
SELECT se.SID, se.serial#,se.username, se.osuser, se.machine,se.module,
DECODE (lk.TYPE, 'TX', 'TX Transaction', 'TM', 'TM DML(TM)', 'UL', 'PL/SQL User Lock', lk.TYPE) lock_type,
DECODE (lk.lmode,
0, 'None',
1, 'Null',
2, 'Row-S (SS)',
3, 'Row-X (SX)',
4, 'Share',
5, 'S/Row-X (SSX)',
6, 'Exclusive',
TO_CHAR (lk.lmode)
) mode_held,
DECODE (lk.request,
0, 'None',
1, 'Null',
2, 'Row-S (SS)',
3, 'Row-X (SX)',
4, 'Share',
5, 'S/Row-X (SSX)',
6, 'Exclusive',
TO_CHAR (lk.request)
) mode_requested,
TO_CHAR (lk.id1) lock_id1, TO_CHAR (lk.id2) lock_id2, ob.owner, ob.object_type, ob.object_name,
DECODE (lk.BLOCK, 0, 'No', 1, 'Yes', 2, 'Global') BLOCK, se.lockwait
FROM v$lock lk, dba_objects ob, v$session se
WHERE lk.TYPE IN ('TX','TM', 'UL') AND lk.SID = se.SID AND lk.id1 = ob.object_id(+) order by 1;
[20190522]DISABLE TABLE LOCK.txt的更多相关文章
- [20190524]DISABLE TABLE LOCK(12c).txt
[20190524]DISABLE TABLE LOCK(12c).txt --//如果禁止table lock时,一些ddl操作会被禁止.但是我有点吃惊的是增加字段不受限制.--//链接:http: ...
- disable table 失败的处理
相信每一个维护hbase集群的运维人员一定碰到过disable失败,陷入无穷的"Region has been PENDING_CLOSE for too long..."状态,此 ...
- PLSQL_Oracle Table Lock表级锁的处理(案例)
20150506 Created By BaoXinjian
- 使用 xtrabackup 进行MySQL数据库物理备份
0. xtrabackup的功能 能实现的功能: 非阻塞备份innodb等事务引擎数据库. 备份myisam表会阻塞(需要锁). 支持全备.增量备份.压缩备份. 快速增量备份(xtradb,原理类似于 ...
- 【锁】Oracle锁系列
[锁]Oracle锁系列 1 BLOG文档结构图 2 前言部分 2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ...
- Microsoft SQL Server Trace Flags
Complete list of Microsoft SQL Server trace flags (585 trace flags) REMEMBER: Be extremely careful w ...
- MySQL Backup--Xtrabackup备份设置锁等待问题
问题描述 innobackupex备份过程需要保证备份数据一致性,通过刷新表缓存和加全局读锁(FLUSH TABLES WITH READ LOCK)获取备份位点,而为防止锁等待超时,会先设置: SE ...
- SQL Server Lock Escalation - 锁升级
Articles Locking in Microsoft SQL Server (Part 12 – Lock Escalation) http://dba.stackexchange.com/qu ...
- [20190415]11g下那些latch是共享的.txt
[20190415]11g下那些latch是共享的.txt http://andreynikolaev.wordpress.com/2010/11/23/shared-latches-by-oracl ...
随机推荐
- HTML基础——表单的应用
1.表单的构成 一个完整的表单由表单控件(表单元素).提示信息和表单域3个部分构成. 表单控件:包含了具体的表单功能项,如单行文本输入框.密码输入框.复选框.提交按钮.搜索框等. 提示信息:一个表单中 ...
- Cesium专栏-裁剪效果(基于3dtiles模型,附源码下载)
Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...
- STL--标准模板库--简要概述
STL--标准模板库 #include <vector> //头文件 STL(Standared Template Library)即标准模板库,惠普实验室开发的一系列软件的统称. ...
- docker-compose 使用自定义网络并绑定 IP
0x00 事件 原先使用了 docker network create mynetwork 的方式创建了自定义网络,在使用 docker-compose 工具运行服务的时候,需要容器使用 mynetw ...
- hidraw设备简要分析
关键词:hid.hidraw.usbhid.hidp等等. 下面首先介绍hidraw设备主要用途,然后简要分析hidraw设备驱动(但是不涉及到相关USB/Bluwtooth驱动),最后分析用户空间接 ...
- busybox启动流程简单解析:从init到shell login
关键词:kernel_init().init.inittab.wait/waitpid.fork/vfork.setsid().execvp/execlp.dup2等等. 由于遇到一系列定制,从ini ...
- mysql使用——sql实现随机取一条数据
最近在做接口测试的时候,测试数据是从数据库查询的,但是当需要并发多次去调用接口时,如果sql只是单纯的进行了limit取值,那并发的时候肯定会每条数据都一样. 因此,研究了下sql随机取一条数据的写法 ...
- 【1期】Java必知必会之一
面试官:线程池那些事儿 面试官:new 一个对象有哪两个过程?
- poj 3233 矩阵快速幂
地址 http://poj.org/problem?id=3233 大意是n维数组 最多k次方 结果模m的相加和是多少 Given a n × n matrix A and a positive i ...
- MNIST 例程源码分析 TensorFlow 从入门到精通
按照上节步骤, TensorFlow 默认安装在 /usr/lib/python/site-packages/tensorflow/ (也有可能是 /usr/local/lib……)下,查看目录结构: ...