Tuesday, February 1, 2011

Purge Oracle 10g

purge sangat berguna "saat anda benar" ingin menghapus table"

dalam 10g, tables bisa d "undropped":

ops$tkyte@ORA10G> desc t;
Name Null? Type
---------------------------------------- -------- ----------------------------
X VARCHAR2(2000)

ops$tkyte@ORA10G> select count(*) from t;

COUNT(*)
----------
0

ops$tkyte@ORA10G> drop table t;

Table dropped.

ops$tkyte@ORA10G> desc t;
ERROR:
ORA-04043: object t does not exist


ops$tkyte@ORA10G> select count(*) from t;
select count(*) from t
*
ERROR at line 1:
ORA-00942: table or view does not exist


ops$tkyte@ORA10G> flashback table t to before drop;

Flashback complete.

ops$tkyte@ORA10G> desc t;
Name Null? Type
---------------------------------------- -------- ----------------------------
X VARCHAR2(2000)



di dalam logic, kita membuat "drop table t" into " tapi sebenarnya kita menyembunyikanya seperti reciclebyn jendela :p
consider:

ops$tkyte@ORA10G> drop table t;
Table dropped.

ops$tkyte@ORA10G> select table_name from user_tables;
no rows selected

ops$tkyte@ORA10G> select object_name from recyclebin;

OBJECT_NAME
------------------------------
BIN$7oTtcup30ZfgMAGK/3hjKw==$0

ops$tkyte@ORA10G> flashback table t to before drop;
Flashback complete.

ops$tkyte@ORA10G> select object_name from recyclebin;
no rows selected

ops$tkyte@ORA10G> select table_name from user_tables;

TABLE_NAME
------------------------------
T

ops$tkyte@ORA10G>


jadi, setiap anda men drop table, sebenarnya kita menyembunyikannya -- tidak seluruhnya menghapusnya (sama dengan
indexes, etc)


anda mungkin ingin agar situasi ini tidak terjadi. kadang kala
(poorly written) aplication yg membuat creates dan drops ratusan "scratch" tables (instead
of using global temporary tables created once...)

itu, bisa membuat banjir data dictionary dengan ratusan atau ribuan object yg di sembunyikan ini
-- ini mengakibatkan queries ke dictionary menjadi slow down. anda mungkin menginginkan table ini benar hilang.

jadi, anda dapate menggunakan drop table T purge:

ops$tkyte@ORA10G> drop table t purge;

Table dropped.

ops$tkyte@ORA10G> select table_name from user_tables;

no rows selected

ops$tkyte@ORA10G> select object_name from recyclebin;

no rows selected

ops$tkyte@ORA10G>


atau anda bisa menggunakan purge untuk purge all dropped objects d database atau table space, scema.

souce asktom.oracle.com

No comments: