drop user与drop user cascade的区别
文档课题:drop user与drop user cascade的区别.
oracle数据库删除用户有dropuser username和drop user username cascade命令,它们有何区别呢?
官方文档:
删除数据库用户:示例 如果用户 Sidney 的模式不包含任何对象,则可以通过发出以下语句来删除 sidney:
掉落用户西德尼;
如果 Sidney 的模式包含对象,则必须使用 CASCADE 子句删除 sidney 和对象:
掉落用户西德尼·卡斯卡德;
当用户下没有数据库对象时,可以用dropuser username删除用户,但当该用户有对象时,就要用drop用户用户名级联删除用户.
测试如下:
数据库:oracle11.2.0.4 64位
系统:CentOS7.9 64位
1、掉线用户测试
SQL>创建由刘军识别的用户刘军;
用户创建。
SQL>从all_objects中选择object_type,count(*),其中所有者='刘军'组byobject_type;
未选择任何行
SQL>drop用户刘军;
用户掉落。
说明:用户LIUJUN无数据库对象,dropuser命令删除成功.
2、掉线用户级联测试
SQL>创建由刘军识别的用户刘军;
用户创建。
SQL>授予连接,资源,无限表空间给刘军;
格兰特成功了。
SQL>conn liujun/liujun;
连接。
SQL>从user_sys_privs中选择*;
用户名权限 ADM
---------------------------------------------------------------------- ---
刘军无限表空间 否
SQL>从session_privs中选择 *;
特权
----------------------------------------
创建会话
无限表空间
创建表
创建集群
创建序列
创建过程
创建触发器
创建类型
创建运算符
创建索引类型
已选择 10 行。
SQL> 创建表测试 (ID 号(6,2),
2 名称 varchar2(20));
表已创建。
SQL>开始
2 for i in 1..1000 循环
3 插入测试值(i,'a' || i);
4端环;
5端;
4 米
PL/SQL过程成功完成。
SQL>commit;
提交完成。
SQL>conn / as sysdba
连接。
SQL>从all_objects中选择object_type,count(*),其中所有者='刘军'组byobject_type;
OBJECT_TYPE计数(*)
-----------------------------
表1
SQL>drop用户刘军;
放下用户柳军
*
错误在第 1 行:
ORA-01922:必须指定级联才能删除“刘军”
SQL>drop用户刘军级联;
用户掉落。
说明:当用户LIUJUN有数据库对象时,删除该用户就需要使用drop user cascade.