银符考试题库B12
现在是:
试卷总分:100.0
您的得分:
考试时间为:
点击“开始答卷”进行答题
相同点 | 1)TRUNCATE和不带WHERE子句的DELETE及DROP都会删除表内的所有数据 2)DROP和TRUNCATE都是DDL语句,执行后会自动提交 3)表上的索引大小会自动进行维护 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
不同点 | 分 类 | DROP | TRUNCATE | DELETE | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
是否删除表结构 | 删除表结构及其 表上的约束,且依赖 于该表的存储过程 和函数将保留,但是 变为INVALID状态 |
只删除数据,不删除表的定义、约束、触发器和索引 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SQL命令类型 | DDL语句,隐式提交,不能对 TRUNCATE和DROP使用ROLLBACK命 令 |
DML语句,事务提交(COMMIT)之后才生 效,可以使用ROLLBACK语句撤销未提交的 事务 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
删除的数据是否放入回滚段 (ROLLBACK SEGMENT) |
否 | 否 | 是 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
高水位是否下降 | 是 | 是,在宏观上表 现为TRUNCATE 操作后,表的大小 变为初始化的大小 |
否,在宏观上表现为DELETE后表的大小并 不会因此而改变,所以,在对整个表进行全表 扫描时,经过TRUNCATE操作后的表比 DELETE操作后的表要快得多 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
日志的产生 | 少量日志 | 少量日志 | 大量日志 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
是否可以通过闪回查询来 找回数据 |
否 | 否 | 是 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
是否可以对视图进行操作 | 是 | 否 | 是 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
级联删除 | 不能DROP一个 带有ENABLE外键 的表 |
不能TRUNCATE 一个带有ENABLE 外键的表,会报错 ORA-02266 |
可以DELETE一个带有ENABLE外键的 表 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
执行速度 | 一般来说,DROP>TRUNCATE>DELETE,DROP和TRUNCATE由于是在底层修改了数据 字典,所以,无论是大表还是小表执行都非常快,而DELETE是需要读取数据到Undo,所以, 对于大表进行DELETE全表操作将会非常慢 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
安全性 | DROP和TRUNCATE在无备份的情况下需谨慎 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
使用方面 | 想删除部分数据行只能用DELETE且带上WHERE子句;想删除表数据及其结构则使用 DROP;想保留表结构而将所有数据删除则使用TRUNCATE |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
恢复方法 | 使用回收站恢复, 闪回数据库,RMAN 备份、DUL工具等 |
闪回数据库,RMAN 备份、DUL工具等 |
闪回查询、闪回事务、闪回版本、闪回 数据库等 |
锁模 式 |
锁描述 | 锁别名 | SQL语句举例 | 详解 | 允许的操作 | 禁止的操作 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0 | none | 没有锁 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | NULL | 空 | SELECT | NULL锁是一种分析锁,是系统 自动生成的。有NULL锁的对象, 一旦被删除,它会通知有该表NULL 锁的会话,该对象被删除了。在某些 情况下,如分布式数据库的查询也会 产生此锁。在一些数据库内部操作的 某些阶段也会自动获得该锁 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | SS(Sub- Share)、 RS(Row Share, Row-S) |
行共享表级 锁(Row Share Table Lock, RS)或行级共 享锁也被称为 子共享表锁 (Subshare Table Lock,SS) |
1)LOCK TABLE...IN SHARE UPDATE MODE; 2)LOCK TABLE...IN ROW SHARE MODE; 3)CREATE/ALTER INDEX...ONLINE;-- 从Oracle 11g开始全过 程是2级TM锁 |
SS锁在表级别只和X锁不兼容, 和其他的锁都是兼容的。SS锁表明 拥有此锁的事务已经锁定了表内的 某些数据行,并有意对数据行进行 更新操作。行共享锁是限制最少的 表级锁模式,提供在表上最高程度 的并发性 |
某个事务拥有了某个表 的RS锁后,其他事务依然 可以并发地对相同数据表 执行查询、插入、更新和删 除操作,或对表内数据行执 行加锁的操作。也就是说, 其他事务同时也能获得相 同表上的RS、RX、S和SSX 模式的表级锁 |
某个事务 拥有了某个表 的RS锁后, 只会禁止其他 事务对相同表 获取X锁 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3 | SX(Sub- Exclusive)、 RX(Row Exclusive, Row-X) |
行级排它锁 (行独占表锁, Row Exclusive Table Lock)也被 称为子独占表锁 (Subexclusive Table Lock, SX) |
1) INSERT、 UPDATE、DELETE、 MERGE INTO 2)SELECT...FOR UPDATE 3)SELECT...FOR UPDATE OF column 4)LOCK TABLE... IN ROW EXCLUSIVE MODE; 注:在Oracle 10g之 前FOR UPDATE是RS 锁 |
RX比RS的限制程度略高。RX锁 表明拥有此锁的事务已经对表内的某 些数据行进行了更新操作。当对话使 用SELECT...FOR UPDATE子串打 开一个游标时,所有返回结果集中的 数据行都将处于行级(Row-x)独占 式锁定,其他对象只能查询这些数据 行,不能进行UPDATE、DELETE或 SELECT...FOR UPDATE操作,但是 可以执行INSERT的操作。在没有 COMMIT之前其他会话更新 (UPDATE、DELETE)相同记录会没 有反应,因为后一个模式为3的锁会一 直等待上一个模式为3的锁,此时必须 释放掉上一个锁才能继续工作 |
某个事务拥有了某个表 的RX锁后,其他事务依然 可以并发地对相同数据表 执行查询、插入、更新和删 除操作。RX锁允许其他多 个事务同时获得相同表上 的RS或RX锁 |
某个事务 拥有了某个表 的RX锁后, 将禁止其他事 务对表加S、 SSX和X锁 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 | S (Share) |
共享表锁 (Share Table Lock,S) |
1)CREATE INDEX 2)ALTER INDEX 3)CREATE/ALTER INDEX...ONLINE;-- 在Oracle 10g中的开始 和结束的时候 4)LOCK TABLE... IN SHARE MODE |
不带ONLINE的新建或重建索引 的SQL语句获取的是4级TM锁。 从Oracle 10g开始,带ONLINE的 新建或重建索引的SQL语句在开始 和结束的时候获取的是4级TM锁, 而在读取表数据的过程中获取的是 2级TM锁。在Oracle 11g中,带 ONLINE的新建或重建索引的SQL 语句在整个执行过程中获取的是2 级TM锁。S锁和S、RS锁都兼容, 和其他3种带X的锁模式(SX、 SSX、X)都不兼容 |
某个事务拥有了某个表 的S锁后,其他事务可以查 询表,也能够成功执行 LOCK TABLE...IN SHARE MODE语句,但其他事务不 能对表进行执行INSERT、 UPDATE和DELETE操作。 多个事务可以并发地获得 同一个表上的S锁。因此, 拥有S锁的事务只有在此表 上没有其他事务的S锁时, 才能对表进行更新操作 |
某个事务 拥有了某个表 的S锁后,将 禁止其他事务 修改此表,同 时禁止其他事 务获得3.5和 6级锁 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5 | SSX (Share Sub- Exclusive)、 SRX(Share Row Exclusive, S/Row-X) |
共享行级排 它锁,也被称 为共享行独占 表锁(Share Row Exclusive Table Lock, SRX或共享子 独占表锁 |
1)LOCK TABLE... IN SHARE ROW EXCLUSIVE MODE |
SSX比S锁的限制性更强,一次 只能有一个事务可以获取给定的表 上的SSX锁,SSX只和2级锁RX 是兼容的 |
同一时间只有一个事务 能够获得表的SSX锁。若某 个事务拥有了某个表的 SSX锁后,则其他事务可以 查询表,但不能对表进行更 新操作 |
拥有SSX锁 的事务将阻止 其他事务获取 SX锁来修改数 据。SSX锁还能 阻止其他事务 在相同表上获 取S、SSX和X 锁 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
6 | X (Exclusive) |
排它锁或独 占表锁 (Exclusive Table Lock,X) |
1)ALTER TABLE、 DROP TABLE、DROP INDEX、TRUNCATE TABLE 2)LOCK TABLE... IN EXCLUSIVE 3)INSERT /*+ APPEND*/INTO... |
这种锁是最严格的锁,禁止其他 事务执行任何类型的DML语句, 或在表上放置任何类型的锁。X锁 是限制程度最高的表级锁,它能使 获得此锁的事务排它地对表进行写 操作 |
同一时间只有一个事务 能获得表上的X锁。在一个 事务获得X锁后,其他事务 只能对表进行查询操作 |
一个事务获 得排它表级锁 后,将禁止其 他事务对表执 行任何DML 操作,其他事 务也无法获取 表上任何类型 的锁 |
SQL语句 | 行级锁模式 | 表级锁模式 | 是否允许锁操作? | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
RS(2) | RX(3) | S(4) | SRX(5) | X(6) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SELECT...FROM table... | NULL | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
INSERT INTO table... | X | RX | Y | Y | N | N | N | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
INSERT/*+APPEND*/INTO table... | X | X | N | N | N | N | N | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
UPDATE table... | X | RX | Y* | Y* | N | N | N | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
DELETE FROM table... | X | RX | Y* | Y* | N | N | N | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
SELECT...FROM table FOR UPDATE(OF)... | X | RX(Oracle 9i是RS) | Y* | Y* | Y* | Y* | N | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
LOCK TABLE table IN ROW SHARE MODE | RS | Y | Y | Y | Y | N | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LOCK TABLE table IN SHARE UPDATE MODE | RS | Y | Y | Y | Y | N | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LOCK TABLE table IN ROW EXCLUSIVE MODE | RX | Y | Y | N | N | N | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LOCK TABLE table IN SHARE MODE | S | Y | N | Y | N | N | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LOCK TABLE table IN SHARE ROW EXCLUSIVE MODE |
SRX | Y | N | N | N | N | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LOCK TABLE table IN EXCLUSIVE MODE | X | N | N | N | N | N | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
注:Y*表示当不与其他事务的行级锁冲突时才允许,否则将产生等待。 |
Held/Get | Null(1) | RS(2) | RX(3) | S(4) | SSX(5) | X(6) | ||||||||||||||||||||||||||||||||||||||||||
0、1 | none、Null | √ | √ | √ | √ | √ | √ | |||||||||||||||||||||||||||||||||||||||||
2 | RS | √ | √ | √ | √ | √ | ||||||||||||||||||||||||||||||||||||||||||
3 | RX | √ | √ | √ | ||||||||||||||||||||||||||||||||||||||||||||
4 | S | √ | √ | √ | ||||||||||||||||||||||||||||||||||||||||||||
5 | SSX | √ | √ | |||||||||||||||||||||||||||||||||||||||||||||
6 | X | √ |