删除表空间

当删除表空间时,也会删除该表空间中的所有数据,释放容器,移除目录条目,并导致该表空间中定义的所有对象都被删除或标记为无效。

关于本任务

可以通过删除表空间来复用空表空间中的容器,但是,在试图复用这些容器之前,必须落实该 DROP TABLESPACE 语句。

注: 如果不删除与其关联的所有表空间,那么无法删除表空间。 例如,如果您在一个表空间中创建了表并在另一个表空间中创建了其索引,那么必须在一个 DROP TABLESPACE 语句中同时删除索引和数据表空间。

过程

  • 删除用户表空间:

    可删除一个包含所有表数据的用户表空间,包括在该单个用户表空间中的索引和 LOB 数据。 也可删除所包含的表跨几个表空间的用户表空间。 即,可能表数据在一个表空间,索引在另一个表空间且任何 LOB 在第三个表空间。 必须在一条语句中同时删除所有 三个表空间。 包含跨越的表的所有表空间必须全部纳入此单条语句中,否则该删除请求将失败。

    以下 SQL 语句将 删除表空间 ACCOUNTING:
        DROP TABLESPACE ACCOUNTING
  • 删除用户临时表空间:
    仅当用户临时表空间中当前未定义已声明临时表或已创建临时表时,才能删除该表空间。 当删除表空间时,不会尝试删除该表空间中的所有已声明临时表或已创建临时表。
    注: 当声明临时表的应用程序与数据库断开连接时,将隐式删除已声明或已创建的临时表。
  • 删除系统临时表空间:

    如果不首先创建另一系统临时表空间,那么不能删除页大小为 4 KB 的系统临时表空间。 新的系统临时表空间必须具有 4 KB 页大小,原因是数据库必须始终存在至少一个具有 4 KB 页大小的系统临时表空间。 例如,如果具有页大小为 4 KB 的单个系统临时表空间,并且您想要将一个容器添加到该表空间(它是 SMS 表空间),那么您必须首先添加一个具有适当数目的容器的新 4 KB 页大小的系统临时表空间,然后删除旧的系统临时表空间。 (如果正在使用 DMS,那么可以添加容器而不必删除并重新创建表空间。)

    缺省表空间页大小是创建数据库时使用的页大小(缺省情况下为 4 KB,但也可以为 8 KB、16 KB 或 32 KB)。

    1. 要创建系统临时表空间,请发出以下语句:
          CREATE SYSTEM TEMPORARY TABLESPACE name 
            MANAGED BY SYSTEM USING ('directories')
    2. 之后,要使用命令行删除系统表空间,请输入以下内容:
          DROP TABLESPACE name
    3. 以下 SQL 语句创建一个称为 TEMPSPACE2 的系统临时表空间:
          CREATE SYSTEM TEMPORARY TABLESPACE TEMPSPACE2
            MANAGED BY SYSTEM USING ('d:\systemp2')
    4. 创建 TEMPSPACE2 后,可使用以下语句来删除原来的系统临时表空间 TEMPSPACE1:
          DROP TABLESPACE TEMPSPACE1