Maison >base de données >Oracle >Comment supprimer des tables dans Oracle pour libérer de l'espace table

Comment supprimer des tables dans Oracle pour libérer de l'espace table

PHPz
PHPzoriginal
2023-04-21 11:19:495698parcourir

Dans la base de données Oracle, la suppression d'une table est une opération très courante, mais la suppression d'une table ne libère pas nécessairement immédiatement l'espace table correspondant, ce qui entraînera un gaspillage d'espace dans la base de données. Par conséquent, lors de la suppression d’une table, libérer l’espace table est également une tâche très importante. Cet article expliquera aux lecteurs comment supprimer des tables et libérer l'espace table correspondant dans la base de données Oracle.

  1. Supprimer une table

Dans la base de données Oracle, l'opération de suppression d'une table peut être réalisée via des instructions SQL. La syntaxe spécifique est la suivante :

DROP TABLE 表名;

Parmi elles, le nom de la table est le nom de la table qui doit être supprimée. être supprimé.

  1. Vérifiez l'utilisation de l'espace table

Avant de supprimer la table, nous devons vérifier l'utilisation de l'espace table pour nous assurer que l'espace table peut être libéré à temps après la suppression.

Nous pouvons utiliser l'instruction suivante pour vérifier l'utilisation de l'espace table :

SELECT TABLESPACE_NAME, FILE_NAME, ROUND(SUM(BYTES)/(1024*1024),2) AS "SIZE (MB)", AUTOEXTENSIBLE
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME, FILE_NAME, AUTOEXTENSIBLE;

Parmi eux, DBA_DATA_FILES est la table système Oracle, qui contient toutes les informations sur les fichiers de données. Cette instruction de requête peut interroger le nom du fichier de données correspondant à chaque espace table, la taille occupée et si l'expansion automatique est autorisée. Si le fichier de données correspondant à un certain espace table permet une expansion automatique, il peut être réoccupé après la suppression de la table. DBA_DATA_FILES是Oracle系统表,包含了所有的数据文件信息。这个查询语句可以查询到每个表空间对应的数据文件名称、已经占用的大小以及是否允许自动扩展。如果某一个表空间对应的数据文件允许自动扩展,那么在执行表的删除操作之后,可能会被重新占用。

  1. 清空表

在执行表的删除操作之前,我们可以先选择将表中的数据清空,这样可以有效地减少表空间的使用。

我们可以使用以下语句来清空表的数据:

TRUNCATE TABLE 表名;

其中,表名就是需要清空数据的表的名称。

需要注意的是,TRUNCATE操作是一个DDL语句,会清除整个表的数据,而不是一个一个的行。这意味着该操作是非常快的,因为它不会记录每一行的删除日志。但是,我们需要小心使用该操作,因为无法恢复已经被清空的数据。

  1. 删除表,并释放表空间

在清空了表的数据之后,我们可以使用以下语句来删除表并释放对应的表空间:

DROP TABLE 表名 PURGE;

其中,PURGE关键字表示立即释放表空间。

需要注意的是,在执行DELETE或者TRUNCATE操作后,即使执行了PURGE关键字也可能无法立即释放表空间。这是因为在Oracle中,表空间的使用情况是由SMON(System Monitor)进程来维护的,SMON进程会定期扫描数据库,收集所有未使用的空间,并把这些空间变成“可用空间”。因此,如果需要立即释放表空间,可以使用ALTER TABLESPACE语句来强制执行、压缩表空间。

  1. 查看已经释放的表空间

我们可以使用以下语句来查询已经释放的表空间:

SELECT TABLESPACE_NAME, FILE_NAME, ROUND(SUM(BYTES)/(1024*1024),2) AS "SIZE (MB)", AUTOEXTENSIBLE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME, FILE_NAME, AUTOEXTENSIBLE;

其中,DBA_FREE_SPACE

    Effacer le tableau
    1. Avant d'effectuer l'opération de suppression de table, nous pouvons choisir d'effacer les données du tableau, ce qui peut réduire efficacement l'utilisation de l'espace table.

    Nous pouvons utiliser l'instruction suivante pour effacer les données du tableau :

    rrreee🎜 Parmi eux, le nom de la table est le nom de la table dont les données doivent être effacées. 🎜🎜Il convient de noter que l'opération TRUNCATE est une instruction DDL et effacera les données de la table entière, et non les lignes une par une. Cela signifie que l’opération est très rapide car elle n’enregistre pas la suppression de chaque ligne. Cependant, nous devons être prudents lors de cette opération car les données effacées ne peuvent pas être récupérées. 🎜
      🎜Supprimer la table et libérer l'espace table🎜🎜🎜Après avoir effacé les données de la table, nous pouvons utiliser l'instruction suivante pour supprimer la table et libérer l'espace table correspondant : 🎜rrreee🎜Parmi eux, PURGE signifie libérer l'espace table immédiatement. 🎜🎜Il est à noter qu'après l'exécution d'une opération DELETE ou TRUNCATE, l'espace table peut ne pas être libéré immédiatement même si le mot-clé PURGE est exécuté. En effet, dans Oracle, l'utilisation de l'espace table est gérée par le processus SMON (System Monitor). Le processus SMON analyse régulièrement la base de données, collecte tout l'espace inutilisé et transforme ces espaces en « espace disponible ». Par conséquent, si vous devez libérer l'espace table immédiatement, vous pouvez utiliser l'instruction ALTER TABLESPACE pour forcer et compresser l'espace table. 🎜
        🎜Afficher l'espace table libéré🎜🎜🎜Nous pouvons utiliser l'instruction suivante pour interroger l'espace table libéré :🎜rrreee🎜Parmi eux, DBA_FREE_SPACE est la table système Oracle , Contient toutes les informations sur l'espace libre. 🎜🎜🎜Résumé🎜🎜🎜Dans la base de données Oracle, supprimer des tables et libérer l'espace table correspondant est une tâche très importante. Avant de supprimer la table, nous devons vérifier l'utilisation de l'espace table et effacer les données de la table pour réduire l'utilisation de l'espace. Lors de la suppression d'une table, vous pouvez utiliser l'instruction DROP TABLE et ajouter le mot clé PURGE pour libérer immédiatement l'espace table. Si vous devez libérer davantage l'espace table, vous pouvez utiliser l'instruction ALTER TABLESPACE pour forcer et compresser l'espace table. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn