同义词、事务、数据字典
1、同义词
它是Oracle给数据库中的对象取的另一个名字,类似于sql语句中的别名,但是和别名又有区别,别名只使用在sql语句中,同义词是保存在数据库, 一次创建可以一直使用,同义词使用和使用原对象完一样,可以给表、视图等起同义词
同义词分类
- 公有同义词:可以被所有的数据库用户访问
- 私有同义词:只能在其模式内访问,且不能于当前模式的对象同名
创建同义词
create [public][or replace] synonym synonym_name for object;
-- 例
create synonym e for emp;
-- 使用
select * from emp;
select * from e;
-- 授予同义词所有权限
grant create any synonym to 用户名;
- synonym:同义词关键字
- or replace:创建或替换现有的同义词,
- synonym_name:同义词名称
- object:同义词的对象,可以是表、视图等
删除同义词
drop [public] synonym e;
2、事务
事务(transcation)是作为单个逻辑工作单元执行的一系列操作。这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行。 事务是一个不可分割的工作逻辑单元。
事务的ACID属性
-
原子性(Atomicity)
:事务是一个完整的操作。事务的各步操作是不可分的,要么都执行,要么都不执行 -
一致性(Consistency)
:当事务完成时,数据必须处于一致状态 -
隔离性(Isolation)
:对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务 -
永久性(Durability)
:事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性 -
commit:事务提交
-
rollback:事务回滚
-
savepoint:声明保存点
事务分类
- 显示事务
- set autocommit off,关闭事务的自动提交
- 手动调用 commit 和 rollback
- 隐式事务
- set autocommit on,事务自动提交
- create、drop、grant 等操作事务时自动提交
- 每一个insert、update、delete执行后都会提交到数据库
3、数据字典
- 记录了数据库的最基本的信息
- 数据字典包括数据字典基本表和数据库字典视图
数据字典分类
- USER_:表示当前用户拥有的信息
- ALL_:表示当前登录用户有权限看到的信息
- DBA_:表示数据库管理员能够看到的信息,也就是整个数据库范围内的信息
-- 表字段字典试图:user_tab_cols
select * from user_tab_cols;
-- 查询emp表中的字段信息
select column_name from user_tab_cols where table_name='EMP';
-- 用户对象字典视图:user_objects
select * from user_objects;
select * from user_tablespaces;
select * from dba_tablespaces;
4、动态性能视图
存储数据库中每时每刻都在变化的信息,主要是数据库的活动状态信息,它把存储在内存里的信息、和存储在控制文件里的信息,以视图的形式展现出来。
常见的动态性能视图
v$parameter
:初始化参数文件中所有项的值v$process
:当前进程的信息v$session
:有关会话的信息v$sysstat
:基于当前操作会话进行的系统统计v$log
:从控制文件中提取有关重做日志组的信息v$logfile
:有关实例重置日志组文件名及其位置的信息v$lock
:当前进程已获得的和正在请求的锁定信息v$transaction
:数据库的事务信息v$fixed_view_definition
:中记录了所有的动态性能视图的定义信息
5、锁
- 锁的概念:锁是数据库用来控制共享资源并发访问的机制。
- 锁用于保护正在被修改的数据,直到提交或回滚了事务之后,其他用户才可以更新数据
锁的类型
行级锁(TX)
:行级锁是一种排他锁,防止其他事务修改此行,在使用以下语句时,Oracle会自动应用行级锁:update、delete、select… for update表级锁(TM)
删除锁
-- 查询锁
select s.sid, s.serial#
from v$locked_object lo, dba_objects ao, v$session s
where ao.object_id = lo.object_id and lo.session_id = s.sid;
-- 删除锁
alter system kill session '227,1017';