Her*_*ere 5 sql oracle oracle11g oracle-sqldeveloper
我需要从Oracle 11g R2数据库中删除特定用户的所有残余.这意味着不仅要逐个删除用户,还要删除与该用户关联的所有对象,以及磁盘上的所有物理残余,例如.dbf文件.
我阅读了几篇建议语法的文章,并针对每个用户确定了以下两行系列:
DROP USER <username> CASCADE;
DROP TABLESPACE <username> INCLUDING CONTENTS AND DATAFILES;
Run Code Online (Sandbox Code Playgroud)
然后我输入SELECT USERNAME, DEFAULT_TABLESPACE FROM DBA_USERS;并确认具有特定用户名的USER未包含在结果中.
但我也有一个包含文件夹.DBF的文件打开,我注意到了.DBF,即使的Oracle SQL Developer接口告诉我,这两种以上两个命令的成功文件不会被删除.
为了从Oracle 11g R2数据库中删除用户及其关联模式等的每个残余,我需要采取哪些特定的语法或其他操作?
正在进行的研究:
在阅读了@ EliasGarcia的方法之后,我尝试了他的第一个命令select tablespace_name from dba_data_files where file_name = 'file_including_path',用于OP中前面命令中使用的相同用户名.但是这个查询没有产生任何结果,因为我的OP中上面显示的两个命令删除了表空间.
鉴于我必须删除用户以及与用户相关的所有对象,有人可以展示如何将OP方法与@EliasGarcia的方法结合起来吗?例如,OP正在寻求类似的东西DROP USER username CASCADE INCLUDING CONTENTS AND DATAFILES;
.dbf在运行上述命令后,我对删除文件犹豫不决.
数据文件分配给表空间,而不是用户.删除用户将从表空间中删除表等,但底层存储不受影响.
不要直接从文件系统中删除dbf文件,否则会使数据库陷入混乱.要删除它们,请使用以下语句查找文件所属的表空间:
select tablespace_name
from dba_data_files
where file_name = <file name with full path>;
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过删除表空间来删除文件:
drop tablespace <tablespace_name> including contents and datafiles;
Run Code Online (Sandbox Code Playgroud)
在执行此操作之前,您应该验证是否仍然没有为其他用户分配给表空间的任何对象.您可以通过运行找到:
select * from dba_segments
where tablespace_name = <tablespace to drop>;
Run Code Online (Sandbox Code Playgroud)
如果这返回任何内容,如果要在删除表空间之前保留它们,请将对象移动到另一个表空间.
| 归档时间: |
|
| 查看次数: |
16716 次 |
| 最近记录: |