1. 程式人生 > >Oracle 刪除使用者、刪除當前使用者的資料庫表、刪除表空間的過程

Oracle 刪除使用者、刪除當前使用者的資料庫表、刪除表空間的過程

1. 刪除使用者

如果要刪除的使用者當前沒有連線,則可以直接用下面語句刪除;
如果要刪除的使用者當前存在連線,轉到 Oracle刪除當前連線使用者

 /* CASCADE 的意思是將使用者的資料庫資料一併刪除,並沒有刪除相應的表空間!*/
 drop user user_name CASCADE;

2. 刪除當前使用者資料庫表

方法一(執行SQL語句)

/* 複製貼上並執行下面語句的結果集*/
SELECT 'DROP TABLE '|| table_name || ';' FROM USER_TABLES;

方法二(執行儲存過程)

這種方法需要登入刪除資料的使用者執行。

DECLARE
  V_NAME ALL_TABLES.TABLE_NAME%TYPE;
  CURSOR MYCUR IS
                                                  -- 要刪除資料的使用者名稱
    SELECT TABLE_NAME FROM ALL_TABLES WHERE OWNER = UPPER('USERNAME');
BEGIN
  OPEN MYCUR;
  LOOP
    FETCH MYCUR
      INTO V_NAME;
    EXIT WHEN MYCUR%NOTFOUND OR MYCUR%NOTFOUND IS
NULL; EXECUTE IMMEDIATE 'drop table ' || V_NAME; END LOOP; CLOSE MYCUR; END;

3. 刪除表空間

 /*查詢所有表空間物理位置*/
 select t1.name,t2.name from v$tablespace t1, v$datafile t2 where t1.ts# = t2.ts#;
 /*刪除空的表空間,不包含物理檔案*/
 drop tablespace tablespace_name;
 /*刪除非空表空間,不包含物理檔案*/
 drop tablespace tablespace_name including contents;
 /*刪除空表空間,包含物理檔案*/
 drop tablespace tablespace_name including datafiles;
 /*刪除非空表空間,包含物理檔案*/
  drop tablespace tablespace_name including contents and datafiles;
 /*如果其他表空間中的表有外來鍵等約束關聯到了本表空間中的表的欄位,就要加上CASCADE CONSTRAINTS*/
 drop tablespace tablespace_name including contents and datafiles CASCADE CONSTRAINTS;