Oracle锁实验
MASICONG@orclselectsidfromv$mystatwhererownum=1;SID----------35MASICONG@orclselectsidfromv$mystatwhererownum=1;SID---..
MASICONG@orcl> select sid from v$mystat where rownum=1;
SID
----------
35
MASICONG@orcl> select sid from v$mystat where rownum=1;
SID
----------
1
1.分别模拟insert,update和delete造成阻塞的示例,并对v$lock中的相应的信息进行说明,给出SQL演示。
MASICONG@orcl> create table test (id varchar(2) primary key);
Table created.
INsert阻塞
MASICONG@orcl> insert into test values (10);
1 row created.
MASICONG@orcl> insert into test values(10); 另一个用户提交同样的请求就会卡住
MASICONG@orcl> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM','TX') ;
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- ---------- ---------- ---------- ----------
1 TX 131090 674 0 4 0
35 TM 74571 0 3 0 0
1 TM 74571 0 3 0 0
1 TX 65540 508 6 0 0
35 TX 131090 674 6 0 1
说明1会话需要一个4级锁,网站空间,但是35已经加了一个6级的锁阻塞了会话。因为会话1已经插入了一条记录,所以又一个TX锁可以通过。
MASICONG@orcl> select object_name from dba_objects where object_id=74571;
OBJECT_NAME
--------------------------------------------------------------------------------
TEST
通过TM知道目前是在一个表上加的锁,所有通过ID可以查到具体操作的是哪个表。
MASICONG@orcl> commit;
Commit complete.
MASICONG@orcl> insert into test values(10); 当一个会话提交后,另一个会话才能访问
*
ERROR at line 1:
ORA-00001: unique constraint (MASICONG.SYS_C0011055) violated
Update阻塞
MASICONG@orcl> commit
2 ;
Commit complete.
MASICONG@orcl> select * from test;
ID
--
1
10
MASICONG@orcl> update test set id=2 where id =1;
1 row updated.
MASICONG@orcl> update test set id=2 where id =1; 另一回话处于Block状态
MASICONG@orcl> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM','TX') ;
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- ---------- ---------- ---------- ----------
1 TX 458775 552 0 6 0
1 TM 74571 0 3 0 0
35 TM 74571 0 3 0 0
35 TX 458775 552 6 0 1
显示出现了阻塞信息,会话在等待一个6级的锁
MASICONG@orcl> select sid,event from v$session_wait where sid in (1,35);
SID EVENT
---------- ----------------------------------------------------------------
1 enq: TX - row lock contention
35 SQL*Net message from client
上面标示1会话需要TX锁
DELETE操作
MASICONG@orcl> delete from test where id=10;
1 row deleted.
MASICONG@orcl> select sid,type,id1,id2,lmode,request,block from v$lock where type in ('TM','TX') ;
SID TY ID1 ID2 LMODE REQUEST BLOCK
---------- -- ---------- ---------- ---------- ---------- ----------

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Oracle 打不开的解决办法包括:1. 启动数据库服务;2. 启动监听器;3. 检查端口冲突;4. 正确设置环境变量;5. 确保防火墙或防病毒软件未阻止连接;6. 检查服务器是否已关闭;7. 使用 RMAN 恢复损坏的文件;8. 检查 TNS 服务名称是否正确;9. 检查网络连接;10. 重新安装 Oracle 软件。

解决 Oracle 游标关闭问题的方法包括:使用 CLOSE 语句显式关闭游标。在 FOR UPDATE 子句中声明游标,使其在作用域结束后自动关闭。在 USING 子句中声明游标,使其在关联的 PL/SQL 变量关闭时自动关闭。使用异常处理确保在任何异常情况下关闭游标。使用连接池自动关闭游标。禁用自动提交,延迟游标关闭。

Oracle 中,FOR LOOP 循环可动态创建游标, 步骤为:1. 定义游标类型;2. 创建循环;3. 动态创建游标;4. 执行游标;5. 关闭游标。示例:可循环创建游标,显示前 10 名员工姓名和工资。

Oracle 日志文件写满时,可采用以下解决方案:1)清理旧日志文件;2)增加日志文件大小;3)增加日志文件组;4)设置自动日志管理;5)重新初始化数据库。在实施任何解决方案前,建议备份数据库以防数据丢失。

在CentOS系统上搭建Hadoop分布式文件系统(HDFS)需要多个步骤,本文提供一个简要的配置指南。一、前期准备安装JDK:在所有节点上安装JavaDevelopmentKit(JDK),版本需与Hadoop兼容。可从Oracle官网下载安装包。环境变量配置:编辑/etc/profile文件,设置Java和Hadoop的环境变量,使系统能够找到JDK和Hadoop的安装路径。二、安全配置:SSH免密登录生成SSH密钥:在每个节点上使用ssh-keygen命令

Oracle不仅是数据库公司,还是云计算和ERP系统的领导者。1.Oracle提供从数据库到云服务和ERP系统的全面解决方案。2.OracleCloud挑战AWS和Azure,提供IaaS、PaaS和SaaS服务。3.Oracle的ERP系统如E-BusinessSuite和FusionApplications帮助企业优化运营。

要停止 Oracle 数据库,请执行以下步骤:1. 连接到数据库;2. 优雅关机数据库(shutdown immediate);3. 完全关机数据库(shutdown abort)。

可以通过 EXP 实用程序导出 Oracle 视图:登录 Oracle 数据库。启动 EXP 实用程序,指定视图名称和导出目录。输入导出参数,包括目标模式、文件格式和表空间。开始导出。使用 impdp 实用程序验证导出。
