这个问题是来自Oracle的一个群的一个人的问题。
他问:
在Oracle中,如果一个用户下有对象,那么“drop user”的时候不加cascade会如何,Oracle是否会把该用户下的数据移动到默认位置吗,还是采用其他的逻辑?
对于这个问题,我做出了如下的测试:
Log:
SQL>
select owner,table_name,tablespace_name,status
from dba_tables
where table_name=
'ADAMHUAN_TABLE';
OWNER
--------------------------------------------------------------------------------
TABLE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
--------------------------------------------------------------------------------
STATUS
------------------------
ADAMHUAN
ADAMHUAN_TABLE
USERS
VALID
SQL> select * from adamhuan.adamhuan_table;
NAME
------------------------------------------------------------
大叔
萝莉
御姐
SQL>
SQL> drop user adamhuan;
drop user adamhuan
*
第 1 行出现错误:
ORA-01922: 必须指定 CASCADE 以删除 'ADAMHUAN'
SQL> create user angel identified by oracle account unlock;
用户已创建。
SQL> grant create session,resource to angel;
授权成功。
SQL> drop user angel;
用户已删除。
SQL>
OWNER
--------------------------------------------------------------------------------
TABLE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
--------------------------------------------------------------------------------
STATUS
------------------------
ADAMHUAN
ADAMHUAN_TABLE
USERS
VALID
SQL> select * from adamhuan.adamhuan_table;
NAME
------------------------------------------------------------
大叔
萝莉
御姐
SQL>
SQL> drop user adamhuan;
drop user adamhuan
*
第 1 行出现错误:
ORA-01922: 必须指定 CASCADE 以删除 'ADAMHUAN'
SQL> create user angel identified by oracle account unlock;
用户已创建。
SQL> grant create session,resource to angel;
授权成功。
SQL> drop user angel;
用户已删除。
SQL>
结论:
如果用户下有数据,那么“drop user”的时候必须加“cascade”关键字。
——
To be continue.
转载于:https://blog.51cto.com/deepinoracle/1125453