数据库的删除与授权

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当前会话有效的系统权限