【同义词、事务、锁】

本文介绍了Oracle数据库中的同义词概念,包括公有和私有同义词的创建、使用和管理,以及事务的原子性、一致性、隔离性和持久性。还详细讲解了行级锁和表级锁的区别,以及如何处理死锁问题。
摘要由CSDN通过智能技术生成

1.同义词

同义词:它是Oracle给数据库中的对象取的另一个名字,类似于sql语句中的别名,

但是和别名又有区别,别名只使用在sql语句中,同义词是保存在数据库, 一次创建可以一直使用,同义词使用和使用原对象完一样,可以给表、视图等起同义词

同义词共有两种类型

公有同义词可被所有的数据库用户访问--没有访问表的权限也无法访问公有同义词

私有同义词只能在其模式内访问,且不能与当前模式的对象同名。--有访问表权限既可以访问私有同义词 

创建同义词语法:

create [public] synonym synonym_name for object;

create synonym:synonym是同义词的关键字

synonym_name:同义词名称

object:取同义词的对象,可以是表、视图等

create synonym e for emp;

使用

select * from emp;

select * from E;

--创建或替换现有的同义词

CREATE OR REPLACE SYNONYM emp_syn FOR SCOTT.emp;

删除同义词

DROP SYNONYM emp;

DROP PUBLIC SYNONYM emp_syn;

给用户赋予创建同义词权限:

grant create any synonym to 用户名;

2.事务

事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作。这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。

事务是一个不可分割的工作逻辑单元。

例如:

    银行转账过程就是一个事务。它需要两条UPDATE语句来完成,这两条语句是一个整体,如果其中任一条出现错误,则整个转账业务也应取消,两个账户中的余额应恢复到原来的数

据。

事务必须具备以下四个属性,简称ACID 属性:

原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行

一致性(Consistency):当事务完成时,数据必须处于一致状态

隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务

永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性

事务提交:commit

事务回滚:rollback

声明保存点:savepoint

声明保存点:savepoint 保存点名字

回滚保存点:rollback to savepoint 保存点名字--回滚到指定位置

显式事务:

   1.set autocommit off --关闭事务的自动提交 --在sqlplus生效

   2.手动调用commit和rollback

隐式事务:

   1.set autocommit on

   2.create、drop、grant等操作事务是自动提交

   3.每一个insert、update、delete执行后都会提交到数据库

3.锁

锁的概念

锁是数据库用来控制共享资源并发访问的机制。

锁用于保护正在被修改的数据

直到提交或回滚了事务之后,其他用户才可以更新数据

锁的类型

         行级锁、表级锁

行级锁是一种排他锁,防止其他事务修改此行

在使用以下语句时,Oracle会自动应用行级锁:

UPDATE、

DELETE、

SELECT … FOR UPDATE--可随意更改表中任意数据

SELECT … FOR UPDATE[WAIT n | NOWAIT]语句允许用户一次锁定多条记录进行更新

使用COMMIT或ROLLBACK语句释放锁

表级锁

锁定整个表,限制其他用户对表的访问

使用命令显示的锁定表,应用表级锁的语法是:

                 LOCK TABLE 表名 IN 锁类型MODE;

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

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

共享锁(SHARE)

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

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

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

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

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

3.1什么是死锁?

死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去

如果遇到死锁怎么办?出现死锁就可以把进程结束掉,从而结束死锁

  • 17
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.房东的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值