ORA-03297


Mencoba untuk mengecilkan file tablespace yang memiliki banyak ruang kosong bisa gagal dengan kesalahan ini:

SQL> alter database datafile '/ora1data/TEST/TEST_ts_data1_f1.dbf' resize 2g ;
ORA-03297: file contains used data beyond requested RESIZE value

Dimulai dengan mendapatkan keluaran SQL untuk memperbaiki ini, untuk sementara memindahkan object segmen ke tablespace lain menggunakan script seperti ini. (Perhatikan bahwa script ini mencakup perintah untuk memindahkan LOB).

set pages 9999 lines 132
spool go.tmp
select 'alter table '||owner||'.'||table_name||' move tablespace ts_data2 ;'
from dba_tables
where tablespace_name = 'TS_DATA1'
order by 1
/
select 'alter index '||owner||'.'||index_name||' rebuild tablespace ts_data2 ;'
from dba_indexes
where tablespace_name = 'TS_DATA1'
and index_type != 'LOB'
order by 1
/
select 'alter table '||owner||'.'||table_name||' move tablespace ts_data2 lob ('||column_name||') store as (tablespace ts_data2) ;'
from dba_lobs
where tablespace_name = 'TS_DATA1'
order by 1
/
spool off
@go.tmp

Object bisa dipindah kembali setelah itu, setelah tablespace asli telah menyusut, seperti diinginkan.

Satu hal yang perlu diperhatikan adalah kuota tablespace pengguna selama proses move. Jika Anda mendapatkan error seperti ini:

ORA-01950: no privileges on tablespace 'TS_DATA2'

Anda juga perlu memberikan hak istimewa tablespace sementara terbatas kepada pengguna yang terkena dampak,
atau memberikan mereka kuota pada tablespace yang baru.

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

w

Connecting to %s