この記事では、Oracle に関する関連知識を提供します。この記事では、主にデータベース表スペースのソート、リサイクル、およびリリース操作に関連する問題 (表スペースの高水位の低下、リリースやその他のコンテンツの削除など) について紹介します。以下で見てみましょう。皆さんのお役に立てれば幸いです。
推奨チュートリアル: 「Oracle ビデオ チュートリアル 」
Oracle を入力テストに使用する場合、大量のテスト データを作成します。 , ただし、削除後も表スペースの最高水位を自動的に下げることができないため、表スペースに空白のデータが残り、表スペースのパフォーマンスに影響を与え、また多くのストレージ・スペースを占有します。
コードは次のとおりです:
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
使用率に基づいて直感的にどの表スペースを解放できるかを決定します。
コードは次のとおりです:
-- 清除用户回收站 purge recyclebin; -- 清除全库回收站 purge dba_recyclebin;
削除プロセス中に残ったデータをクリアします。
コードは次のとおりです:
alter tablespace tablespace_name coalesce;
表スペースの断片を統合して表スペースの連続性を高めます
コードは次のとおりです:
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
上記のコードを実行すると、表スペース RESIZE に対応する SQL コードを生成できます。対応する SQL コードを実行します。
コードは次のとおりです:
-- 清空表数据 truncate table table_name; -- 释放表空间 alter table table_name deallocate UNUSED KEEP 0;
テーブルをクリアしますデータが最初にある場合、テーブルはまだ存在します。Truncate はロールバックをサポートしておらず、外部キーを含むテーブルを切り捨てることはできません。テーブルを削除したい場合は、まず外部キーをキャンセルしてから削除する必要があります。
KEEP 0 の場合は注意してください。が追加されない場合、表スペースは削除されず、解放されます。
次のエラーが発生した場合、テーブル スペースを整理するかごみ箱をクリアすることで問題を解決できるだけでなく、テーブル データをすべて移行することもできます。解放される表スペースを他の表スペースに移動し、スペースを解放してから、元の表スペースに戻します。
--需移动的表数据 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;
上記のコードの file_id は、テーブルスペースを参照することで比較および変更できます。上記のコードを実行すると、対応する自動生成された SQL コードを取得できます。このとき、対応する SQL コードは取得できます。テーブル データを移行するために実行する必要があります。
推奨チュートリアル: 「Oracle ビデオ チュートリアル 」
以上がOracle データベースの表スペースのソート、リサイクル、および解放の操作の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。