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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s