如何使用SQL删除Oracle中的用户数据文件?

如何使用SQL删除Oracle中的用户数据文件?,oracle,ddl,tablespace,Oracle,Ddl,Tablespace,我试图删除数据文件本身,但我得到这个错误 SQL> alter tablespace USERS drop datafile '/u01/app/oracle/oradata/orcl/users01.dbf'; alter tablespace USERS drop datafile '/u01/app/oracle/oradata/orcl/users01.dbf' * ERROR at line 1: ORA-03261: the tablespace USERS has only

我试图删除数据文件本身,但我得到这个错误

SQL> alter tablespace USERS drop datafile '/u01/app/oracle/oradata/orcl/users01.dbf';
alter tablespace USERS drop datafile '/u01/app/oracle/oradata/orcl/users01.dbf'
*
ERROR at line 1:
ORA-03261: the tablespace USERS has only one file
我也尝试过将表空间脱机并删除整个表空间,但这也不起作用

SQL> drop tablespace users including contents and datafiles;
drop tablespace users including contents and datafiles
*
ERROR at line 1:
ORA-12919: Can not drop the default permanent tablespace

编辑:这是用于模拟我将要恢复的数据文件失败的分配。我会手动删除它,但分配要求我使用SQL。

如果您只想删除数据文件以模拟硬件故障,那么您可以简单地从机器上删除它们

通过一个简单的查询,您可以知道数据文件存储在何处:

select name
from V$DATAFILE;
这将提供所有数据文件的路径


编辑:要模拟更酷的系统故障,以确保备份脚本或您正在测试的任何东西正常工作,您还可能损坏数据(打开一个文件并在其中写入一些随机乱码)

如果您只想删除数据文件以模拟硬件故障,然后你可以简单地从机器上删除它们

通过一个简单的查询,您可以知道数据文件存储在何处:

select name
from V$DATAFILE;
这将提供所有数据文件的路径


编辑:为了模拟更酷的系统故障,以确保备份脚本或您正在测试的任何东西正常工作,您还可能损坏数据(打开一个文件并在其中写入一些随机乱码)

因为用户是默认表空间,您不能删除它的任何数据文件,并将得到错误ORA-12919。 解决方案是创建另一个表空间,然后更改默认表空间:

SQL>CREATE TABLESPACE USERS\u TEMP DATAFILE'/u01/app/oracle/oradata/orcl/USERS\u TEMP\u 01.dbf'大小10M自动扩展
SQL>alter数据库默认表空间用户\u TEMP;

现在您可以删除用户:

SQL>删除表空间用户,包括内容和数据文件;


要删除位于“app\Ora11gHome\oradata\someName”上的数据文件,必须关闭数据库服务。打开Oracle Administration Assistant并停止该服务,现在您可以删除该文件。

由于用户是默认表空间,因此您不能删除其任何数据文件,并将得到错误ORA-12919。 解决方案是创建另一个表空间,然后更改默认表空间:

SQL>CREATE TABLESPACE USERS\u TEMP DATAFILE'/u01/app/oracle/oradata/orcl/USERS\u TEMP\u 01.dbf'大小10M自动扩展
SQL>alter数据库默认表空间用户\u TEMP;

现在您可以删除用户:

SQL>删除表空间用户,包括内容和数据文件;


要删除位于“app\Ora11gHome\oradata\someName”上的数据文件,必须关闭数据库服务。打开Oracle Administration Assistant并停止该服务,现在您可以删除该文件。

“无法删除默认的永久表空间”非常清楚,不是吗?您需要将不同的表空间设置为默认表空间,然后才能删除
USERS
一个(或多个)用户将
USERS
表空间设置为默认表空间。在删除表空间之前,您需要更改它。我只想删除数据文件,而不是整个表空间,以模拟硬件故障。在该表空间中创建另一个文件,然后删除您首先要删除的文件。如果任务是删除并恢复1个文件,那么结果应该很好。“不能删除默认的永久表空间”很清楚,不是吗?您需要将不同的表空间设置为默认表空间,然后才能删除
USERS
一个(或多个)用户将
USERS
表空间设置为默认表空间。在删除表空间之前,您需要更改它。我只想删除数据文件,而不是整个表空间,以模拟硬件故障。在该表空间中创建另一个文件,然后删除您首先要删除的文件。如果任务是删除并恢复一个文件,那应该很好。是的,我就是这么做的。我们的讲师意识到这并不像一条SQL语句那么简单,所以他说我们可以手动删除它。是的,我就是这么做的。我们的讲师意识到这并不像一条SQL语句那么简单,所以他说我们可以手动删除它。