Rumah > pangkalan data > Oracle > Operasi pengisihan ruang jadual pangkalan data Oracle, kitar semula dan pelepasan

Operasi pengisihan ruang jadual pangkalan data Oracle, kitar semula dan pelepasan

WBOY
Lepaskan: 2022-07-18 20:18:11
ke hadapan
5688 orang telah melayarinya

Artikel ini membawa anda pengetahuan yang berkaitan tentang Oracle terutamanya isu yang berkaitan dengan operasi pengisihan ruang meja pangkalan data, kitar semula dan pelepasan, termasuk menurunkan paras air yang tinggi bagi ruang meja dan memadamkan data isinya, mari kita lihat di bawah, semoga bermanfaat untuk semua.

Operasi pengisihan ruang jadual pangkalan data Oracle, kitar semula dan pelepasan

Tutorial yang disyorkan: "Tutorial Video Oracle"

Apabila menggunakan Oracle untuk ujian input, kami akan mencipta banyak data ujian . Walau bagaimanapun, selepas pemadaman, paras air tinggi ruang meja masih tidak boleh diturunkan secara automatik, mengakibatkan data kosong dalam ruang jadual, yang bukan sahaja menjejaskan prestasi ruang meja tetapi juga mengambil terlalu banyak ruang penyimpanan.

1. Kurangkan paras air tinggi ruang meja

1 Periksa ruang jadual dan nama fail fizikal yang sepadan

Kodnya adalah seperti berikut:

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
Salin selepas log masuk
Mengikut penggunaan Anda secara intuitif boleh menentukan ruang meja yang boleh dilepaskan.

2. Kosongkan Tong Kitar Semula

Kodnya adalah seperti berikut:

-- 清除用户回收站
purge recyclebin;
-- 清除全库回收站
purge dba_recyclebin;
Salin selepas log masuk
Kosongkan data yang tertinggal semasa proses pemadaman.

3. Susun ruang jadual

Kodnya adalah seperti berikut:

alter tablespace tablespace_name coalesce;
Salin selepas log masuk
Satukan serpihan ruang meja untuk meningkatkan kesinambungan ruang meja

4. Hasilkan Kod RESIZE

Kod adalah seperti berikut:

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
Salin selepas log masuk
Selepas kod di atas dilaksanakan, kod SQL yang sepadan dengan ruang jadual RESIZE boleh dijana Di kali ini, jalankan kod SQL yang sepadan.

2. Lepaskan apabila memadam

1. Kosongkan data jadual dan lepaskan ruang jadual

Kodnya adalah seperti berikut:

-- 清空表数据
truncate table table_name;
-- 释放表空间
alter table table_name deallocate UNUSED KEEP 0;
Salin selepas log masuk
Kosongkan data jadual dahulu , jadual masih wujud pada masa ini, Truncate tidak menyokong rollback, dan tidak boleh memotong jadual dengan kunci asing Jika anda ingin memadam, anda mesti membatalkan kunci asing dahulu, dan kemudian padamkan bahawa jika KEEP 0 tidak ditambah, ruang jadual Ia tidak akan dikeluarkan.


2. Pindahkan data jadual

Apabila ralat berikut berlaku, kita bukan sahaja boleh menyelesaikannya dengan mengatur ruang jadual atau mengosongkan tong kitar semula, tetapi juga dengan memindahkan semua data jadual dalam jadual ruang untuk dilepaskan ke ruang meja lain, lepaskan ruang, dan kemudian berhijrah kembali ke ruang meja asal.

Fail_id dalam kod di atas boleh dibandingkan dan diubah dengan melihat ruang jadual Selepas kod di atas dilaksanakan, kod SQL yang dijana secara automatik boleh diperolehi Pada masa ini, SQL yang sepadan kod boleh dijalankan untuk memindahkan data jadual
	--需移动的表数据
   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;
Salin selepas log masuk

Tutorial yang disyorkan: "

Tutorial Video Oracle

"

Atas ialah kandungan terperinci Operasi pengisihan ruang jadual pangkalan data Oracle, kitar semula dan pelepasan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:csdn.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan