Maison > Article > base de données > Opérations de tri, de recyclage et de libération des espaces table de base de données Oracle
Cet article vous apporte des connaissances pertinentes sur Oracle, qui introduit principalement les problèmes liés aux opérations de tri, de recyclage et de libération de l'espace table de la base de données, notamment l'abaissement du niveau d'eau élevé de l'espace table, la libération lors de la suppression, etc. ensemble, j'espère que cela sera utile à tout le monde.
Tutoriel recommandé : "Tutoriel vidéo Oracle"
Lors de l'utilisation d'Oracle pour les tests d'entrée, nous créerons de nombreuses données de test, et après la suppression, le niveau d'eau élevé de l'espace table ne peut toujours pas être automatiquement abaissé , entraînant une occurrence d'espace table. L'apparition de données vides affecte les performances de l'espace table et occupe également trop d'espace de stockage.
Le code est le suivant :
select b.file_id 物理文件号, b.file_name 物理文件名, b.tablespace_name 表空间, b.bytes/1024/1024 大小M, (b.bytes-sum(nvl(a.bytes,0)))/1024/1024 已使用M, substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) 利用率 from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_id,b.file_name,b.bytes order by b.tablespace_name
En fonction du taux d'utilisation, vous pouvez déterminer intuitivement quels espaces table peuvent être libéré.
Le code est le suivant :
-- 清除用户回收站 purge recyclebin; -- 清除全库回收站 purge dba_recyclebin;
Effacez les données laissées lors du processus de suppression.
Le code est le suivant :
alter tablespace tablespace_name coalesce;
Intégrez les fragments de l'espace table pour augmenter la continuité de l'espace table
Le code est le suivant :
select a.file#,a.name,a.bytes/1024/1024 CurrentMB, ceil(HWM * a.block_size)/1024/1024 ResizeTo, (a.bytes - HWM * a.block_size)/1024/1024 ReleaseMB, 'alter database datafile '''||a.name||''' resize '|| ceil(HWM * a.block_size/1024/1024) || 'M;' ResizeCMD from v$datafile a, (select file_id,max(block_id+blocks-1) HWM from dba_extents where file_id in (select b.file# From v$tablespace a ,v$datafile b where a.ts#=b.ts# and a.name='tablespace_name') group by file_id) b where a.file# = b.file_id(+) and (a.bytes - HWM *block_size)>0 order by 5
Une fois le code ci-dessus exécuté, une réponse correspondante peut être générée. Code SQL de RESIZE de l'espace table, exécutez simplement le code SQL correspondant à ce moment.
Le code est le suivant :
-- 清空表数据 truncate table table_name; -- 释放表空间 alter table table_name deallocate UNUSED KEEP 0;
Effacez d'abord les données de la table pour le moment, la table n'existe toujours pas. rollback et ne peut pas tronquer une bande. Si vous souhaitez supprimer une table avec une clé étrangère, vous devez d'abord annuler la clé étrangère puis la supprimer
Notez que si KEEP 0 n'est pas ajouté, l'espace table ne sera pas libéré ;
Lorsque les erreurs suivantes se produisent, nous pouvons non seulement les résoudre en organisant l'espace table ou en vidant la corbeille, mais nous pouvons également libérer de l'espace en migrant toutes les données de la table dans l'espace table. à libérer vers d'autres espaces table. Ensuite, migrez-le vers l'espace table d'origine.
--需移动的表数据 select DISTINCT 'alter table '|| owner||'.'||segment_name || ' move tablespace user_test;' from dba_extents where segment_type='TABLE' and file_id=4; --需移动的索引数据 select DISTINCT 'alter index '|| owner||'.'|| segment_name || ' rebuild tablespace user_test;' from dba_extents where segment_type='INDEX' and file_id=4; --需移动的分区表数据 select DISTINCT 'alter table '|| owner||'.'|| segment_name || ' move partition '|| partition_name || ' tablespace user_test;' from dba_extents where segment_type='TABLE PARTITION' and file_id=4; --需移动的分区表索引数据 select DISTINCT 'alter index '|| owner||'.'|| segment_name || ' rebuild partition '|| partition_name || ' tablespace user_test;' from dba_extents where segment_type='INDEX PARTITION' and file_id=4;
Le file_id dans le code ci-dessus peut être comparé et modifié en affichant l'espace table. Une fois le code ci-dessus exécuté, le code SQL généré automatiquement correspondant peut être obtenu à ce moment, le code SQL correspondant peut être exécuté pour migrer. les données du tableau
Tutoriel recommandé : " Tutoriel vidéo Oracle》
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!