1. ใน SQL developer ให้คลิกขวาที่ Connection ที่เราต้องการลบข้อมูล เลือก Open SQL Worksheet ขึ้นมา หากมีอยู่แล้วข้ามขั้นตอนนี้ไปได้เลยครับ
2. พิมพ์คำสั่งนี้ลงไปหรือคัดลอกไปวางก็ได้ครับ :
ตัวอย่างที่ 1
BEGIN FOR cur_rec IN (SELECT object_name, object_type FROM user_objects WHERE object_type IN (SELECT DISTINCT object_type FROM user_objects) ) LOOP BEGIN IF cur_rec.object_type = 'TABLE' THEN EXECUTE IMMEDIATE 'DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '" CASCADE CONSTRAINTS PURGE'; ELSE EXECUTE IMMEDIATE 'DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '"'; END IF; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ( 'FAILED: DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '"' ); END; END LOOP; END;
ซึ่งจาก script จะเห็นว่าเป็นการเลือกข้อมูลต่างๆชื่อตาราง, ชื่อวิว, ชื่อ Index , ชื่อ Sequence และอื่นๆ จากตารางของระบบ (user_objects) ตามประเภทของ object_type ออกมาทั้งหมดจาก user ที่สร้าง connection อยู่.
โคดตัวอย่างที่ 2
หากเราต้องการระบุเฉพาะ object_type ที่เราต้องการก็ได้ครับโดยเราสามารถดู object_type ทั้งหมดได้จาก script
select distinct object_type from ALL_OBJECTS
ผลลัพธ์ที่ได้คือ
CONSUMER GROUP INDEX PARTITION SEQUENCE SCHEDULE TABLE PARTITION RULE JAVA DATA PROCEDURE OPERATOR WINDOW PACKAGE PACKAGE BODY LIBRARY RULE SET PROGRAM LOB TYPE BODY CONTEXT JAVA RESOURCE XML SCHEMA TRIGGER JOB CLASS DIRECTORY MATERIALIZED VIEW TABLE INDEX SYNONYM VIEW FUNCTION WINDOW GROUP JAVA CLASS INDEXTYPE CLUSTER TYPE EVALUATION CONTEXT JOBเช่น ต้องการลบเฉพาะ TABLE,INDEX,VIEW และ SEQUENCE
BEGIN FOR cur_rec IN (SELECT object_name, object_type FROM user_objects WHERE object_type IN ('TABLE','INDEX','VIEW','SEQUENCE') ) LOOP BEGIN IF cur_rec.object_type = 'TABLE' THEN EXECUTE IMMEDIATE 'DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '" CASCADE CONSTRAINTS PURGE'; ELSE EXECUTE IMMEDIATE 'DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '"'; END IF; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.put_line ( 'FAILED: DROP ' || cur_rec.object_type || ' "' || cur_rec.object_name || '"' ); END; END LOOP; END;
- (1) คือ connection ที่เราจะทำการลบออปเจ็คทั้งหมดของผู้ใช้
- (2) คือ กดปุ่มเพื่อ run script
- (3) คือ ส่วนที่เราสามารถเพิ่มเงื่อนไขในการลบออปเจ็คของ User นั้นๆตามประเภท object_type ที่ระบุตามโคด ตัวอย่างที่ 2
4. ข้อสังเกตุ
- (1) คือ connection ที่เราจะทำการลบออปเจ็คทั้งหมดของผู้ใช้เรีบยร้อยแล้วจะเห็นว่าไม่มีข้อมูลใดๆเหลืออยู่เลย
- (2) คือ ผลลัพธ์ของการ run script
ทั้งหมดทั้งมวลคือ การลบออปเจ็คทั้งหมดของผู้ใช้จากฐานข้อมูล Oracle ด้วย SQL Developerครับ
0 comments:
Post a Comment