数据库的删除与授权
oracle表的快速删除和授权操作
删除
delete和truncate
1、Truncate比Delete所用的事务日志空间更少:
DELETE 是一行一行操作,并且把记录都存进日志文件(无论任何恢复模式,都会记录日志)。而TRUNCATE操作,通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放,在日志中,仅仅记录释放页的这个动作,而不记录每一行。
2、Truncate比Delete使用锁通常较少:
DELETE由于是一行一行删除,所以需要对处理的行进行加锁,而且是行锁。TRUNCATE操作由于是对页操作,所以只需要申请页锁或者表锁。
3、TRUNCATE对表中的所有页都清空:
执行DELETE后,表还是会有空页,但是TRUNCATE则会全部清除。但是TRUNCATE会保留表结构、列、约束、索引等。
truncate 、drop和 delete
1、truncate 和 delete 只删除数据不删除表的结构(定义)
2、truncate和drop自动提交事务,delete需要提交事务
3、delete 语句不影响表所占用的 extent,高水线(high watermark)保持原位置不动;truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;truncate 会将高水线复位(回到最开始)。
为了更好地删除空间,可以使用以下方法:
(1)在表中创建聚集索引
(2)如果所有数据已经不要,那使用TRUNCATE 而不是DELETE,删除后DROP TABLE 。
授权
- select * from dba_users; –查询数据库中的所有用户
- GRANT SELECT ON tableName to userName;–授权查询(将表tableName的查询权授给userName)
GRANT INSERT ON tableName to userName;–授权插入(将表tableName的插入权授给userName)
GRANT UPDATE ON tableName to userName;–授权更新(将表tableName的更新权授给userName)
GRANT UPDATE ON table1 to userName with grant option; –授权更新权限转移给用户,该用户可以继续授权;
GRANT EXECUTE ON procedure1 to userName;–授权存储过程 - revoke select on table1 from user1; –收回查询表的权限;
revoke all on table1 from user1;–收回表table1的所有权限; - select table_name,privilege from dba_tab_privs where grantee=’xujin’ ;–查询一个用户拥有的对象权限
select * from dba_sys_privs where grantee=’xujin’ ;–查询一个用户拥有的系统权限
select * from session_privs ;–a当前会话有效的系统权限