理论教育 如何重命名和删除Oracle表空间

如何重命名和删除Oracle表空间

时间:2023-10-30 理论教育 版权反馈
【摘要】:重命名表空间表空间创建后,使用ALTER TABLESPACE语句的RENAME TO子句可以重命名表空间。重命名表空间时,Oracle数据库会自动更新数据字典、控制文件和数据文件头部对该表空间名称的所有引用。调用以上语句重命名表空间需要注意的是:①SYSTEM和SYSAUX表空间不能重命名。删除表空间时,其在数据库控制文件内的文件指针被删除。DROP TABLESPACE语句的语法格式为DROP TABLESPACE表空间名[INCLUDING CONTENTS[{AND|KEEP}DATAFILES][CASCADE CONSTRAINTS]];其中各子句的作用如下:①INCLUDING CONTENTS:指出删除表空间内的所有内容。

如何重命名和删除Oracle表空间

(1)重命名表空间

表空间创建后,使用ALTER TABLESPACE语句的RENAME TO子句可以重命名表空间。例如,下面语句把前面创建的DEMOA表空间重命名为DEMOTS。

重命名表空间时,Oracle数据库会自动更新数据字典、控制文件和数据文件头部对该表空间名称的所有引用。重命名表空间只会改变表空间的名称,不会改变表空间的ID(标识号),因此也不会改变用户默认表空间的设置。

调用以上语句重命名表空间需要注意的是:

①SYSTEM和SYSAUX表空间不能重命名。

②如果表空间或者其中的任何一个数据文件已脱机,则不能重命名该表空间。

③重命名只读表空间时,由于数据文件头无法更新,所以只能更新数据字典和控制文件。这不会导致重命名语句执行失败,但Oracle会在数据库警告日志文件内写入一条警告消息,说明数据文件头没有更新。

例如,执行下面语句将DEMOE修改为只读表空间,之后将该只读表空间重命名为DEMOETS:

执行第2条语句重命名表空间后会在数据库警告日志文件尾部添加以下信息:

ALTER TABLESPACE DEMOE RENAME TO DEMOETS

Tablespace DEMOE is renamed to DEMOETS.

Tablespace name change is not propagated to file headers because the

Tablespace is read only.

Completed:ALTER TABLESPACE DEMOE RENAME TO DEMOETS(www.daowen.com)

(2)删除表空间

不再需要表空间及其中的内容时,可以调用DROP TABLESPACE语句删除它们。删除表空间时,其在数据库控制文件内的文件指针被删除。删除之后,表空间内的数据不能再恢复。

DROP TABLESPACE语句的语法格式为

DROP TABLESPACE表空间名

[INCLUDING CONTENTS

[{AND|KEEP}DATAFILES]

[CASCADE CONSTRAINTS]];

其中各子句的作用如下:

①INCLUDING CONTENTS:指出删除表空间内的所有内容。如果表空间不是空的(包含任何数据库对象),在删除表空间时必须包含该子句,否则会导致语句执行失败。

②AND DATAFILES:指出在删除表空间及其中内容时,同时从操作系统中删除与该表空间相关的所有数据文件。

③KEEP DATAFILES:指出在删除表空间及其中内容时,保留与该表空间相关的所有数据文件。

④CASCADE CONSTRAINTS:如果其他表空间引用了所删除表空间中表上的主键或者唯一键,选择此项可以删除其他表空间的所有参照完整性约束。如果存在这样的参照完整性约束,而又在调用DROP TABLESPACE语句时省略该子句,会导致其执行失败。

例如,下面语句删除表空间DEMOTS及其中的内容,并将其包含的数据文件从操作系统中删除:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈