多选题 要截断(TRUNCATE)其他用户拥有的一个表,需要哪一个权限?
A.ALTER TABLE
B.DROP ANY TABLE
C.DELETE ANY TABLE
D.TRUNCATE ANY TABLE

【正确答案】 B
【答案解析】[解析] 这一题是测试对权限的分类以及系统权限的理解程度。根据有关系统权限的介绍,可知在所有的系统权限中ANY关键字表示在任何模式(用户)中都有所定义的权限,所以可以断定选项A是错误的。
由于截断表是DDL语句,而DELETE语句是一个DML语句,所以DELETE ANY TABLE可以排除,因此选项C也是错误的。
因为并没有TRUNCATE ANY TABLE权限,所以答案只能是选项B了。那么怎样才能确定Oracle数据库中并没有TRUNCATE ANY TABLE权限呢?因为所有的系统权限都可以通过查询数据字典DBA_SYS_PRIVS获得,所以应该以SYS用户登录数据库并在SQL*Plus中使用如下的查询语句:
SQL>select * from
2 DBA_SYS_PRIVS
3 WHERE PRIVILEGE LIKE '%ANY TABLE%'
4 AND GRANTEE='SYS'
5 ORDER BY PRIVILEGE;
GRANTEE PRIVILEGE ADM
----------- -------------------- -------
SYS ALTER ANY TABLE NO
SYS BACKUP ANY TABLE NO
SYS COMMENT ANY TABLE NO
SYS CREATE ANY TABLE NO
SYS DELETE ANY TABLE NO
SYS DROP ANY TABLE NO
SYS FLASHBACK ANY TABLE NO
SYS INSERT ANY TABLE NO
SYS LOCKANY TABLE NO
SYS SELECT ANY TABLE YES
SYS UNDER ANY TABLE NO
SYS UPDATE ANY TABLE NO
已选择12行
以上查询语句的显示结果表示确实没有TRUNCATE ANY TABLE这个系统权限,现在放心了吧!