Dieser Artikel vermittelt Ihnen relevantes Wissen über „Oracle“ und stellt hauptsächlich Probleme im Zusammenhang mit Sortier-, Recycling- und Freigabevorgängen für Datenbanktabellenbereiche vor, einschließlich der Senkung des hohen Wasserstands des Tabellenbereichs, der Freigabe beim Löschen usw. Werfen wir einen Blick darauf Gemeinsam hoffe ich, dass es für alle hilfreich sein wird.
Empfohlenes Tutorial: „
Oracle-Video-Tutorial“Wenn wir Oracle für Eingabetests verwenden, erstellen wir viele Testdaten, und nach dem Löschen kann der hohe Wasserstand des Tabellenbereichs immer noch nicht automatisch gesenkt werden , was zum Vorkommen von Tabellenbereichen führt. Das Vorkommen leerer Daten beeinträchtigt die Leistung des Tabellenbereichs und beansprucht außerdem zu viel Speicherplatz.
1. Reduzieren Sie den hohen Wasserstand des Tabellenbereichs.
Der Code lautet wie folgt:
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
Löschen Sie die während des Löschvorgangs verbleibenden Daten.
Der Code lautet wie folgt:
-- 清除用户回收站 purge recyclebin; -- 清除全库回收站 purge dba_recyclebin;
Integrieren Sie die Fragmente des Tabellenbereichs, um die Kontinuität des Tabellenbereichs zu erhöhen
Der Code lautet wie folgt:
alter tablespace tablespace_name coalesce;
Nachdem der obige Code ausgeführt wurde, ein entsprechender SQL-Code für die Größenänderung des Tabellenbereichs, führen Sie zu diesem Zeitpunkt einfach den entsprechenden SQL-Code aus.
1. Der Code lautet wie folgt:
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
Zu diesem Zeitpunkt ist die Tabelle noch nicht vorhanden Rollback und ein Band kann nicht abgeschnitten werden. Wenn Sie eine Tabelle mit einem Fremdschlüssel löschen möchten, müssen Sie zuerst den Fremdschlüssel abbrechen und ihn dann löschen.
Beachten Sie, dass der Tabellenbereich nicht freigegeben wird. 2. Tabellendaten migrierenWenn die folgenden Fehler auftreten, können wir sie nicht nur durch die Organisation des Tabellenbereichs oder das Leeren des Papierkorbs beheben, sondern wir können den Speicherplatz auch freigeben, indem wir alle Tabellendaten im Tabellenbereich migrieren Um es in andere Tabellenbereiche freizugeben, migrieren Sie es dann zurück in den ursprünglichen Tabellenbereich.-- 清空表数据 truncate table table_name; -- 释放表空间 alter table table_name deallocate UNUSED KEEP 0;Die Datei-ID im obigen Code kann durch Anzeigen des Tabellenbereichs verglichen und geändert werden. Nachdem der obige Code ausgeführt wurde, kann der entsprechende automatisch generierte SQL-Code zur Migration ausgeführt werden die Tabellendaten
Empfohlenes Tutorial: „
Das obige ist der detaillierte Inhalt vonSortier-, Recycling- und Freigabevorgänge für Oracle-Datenbanktabellenbereiche. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!