Atomic Habits

[Oracle] 모든 사용자 오브젝트(테이블, 인덱스, 시퀀스) 삭제 본문

IT/SQL

[Oracle] 모든 사용자 오브젝트(테이블, 인덱스, 시퀀스) 삭제

체계성 2021. 11. 20. 09:37
-- 테이블 및 인덱스 삭제 쿼리문 출력
SELECT '(TEST) DROP '
  ||object_type
  ||' '
  || object_name
  || DECODE(OBJECT_TYPE,'TABLE',' CASCADE CONSTRAINTS;',';')
FROM user_objects;


-- 테이블 삭제 쿼리문 출력
SELECT 'DROP '
  ||TABLE_NAME
  ||'       CASCADE CONSTRAINTS;'
FROM USER_TABLES                       -- pg_tables In postgreSQL 
WHERE TABLE_NAME LIKE 'TN_RLDLPC_%_BAK';


-- 테이블의 모든 인덱스 삭제 쿼리문 출력
SELECT 'DROP INDEX ' || INDEX_NAME || ';' FROM USER_INDEXES WHERE TABLE_NAME = 'TN_RLDLPC_RENT_APT_BAK';
--DROP INDEX TN_RLDLPC_RENT_APT_III_1;
--DROP INDEX TN_RLDLPC_RENT_APT_III_2;
--DROP INDEX TN_RLDLPC_RENT_APT_III_3;

 

oracle 모든 사용자 오브젝트(테이블, 인덱스, 시퀀스) 삭제

개발이나 테스트등의 용도로 특정 사용자의 table, index, sequence 등의 모든 object 를 삭제할 경우가 있다.

drop user 후에 재생성해주면 되지만 DBA 권한이 필요하므로 오라클의 특정 사용자의 모든 오브젝트를 삭제하는 방법을 정리해 본다.

GUI툴은 Oracle SQL Developer 사용했다.

 

  1. sqldeveloper 로 해당 사용자로 로그인
  2. 다음 SQL 실행
  3. SELECT 'drop '
      ||object_type
      ||' '
      || object_name
      || DECODE(OBJECT_TYPE,'TABLE',' CASCADE CONSTRAINTS;',';')
    FROM user_objects
    Plain text
    Copy
    CODE
  4. 다음과 같이 drop SQL 문이 생성됨
  5. drop INDEX IDX_USERS_0;
    drop INDEX IDX_USERS_1;
    drop TABLE USERS CASCADE CONSTRAINTS;
    Plain text
    Copy
    CODE
  6. 질의 결과에서 마우스 우클릭해서 익스포트 선택
  7. 형식에서 text 를 선택하고 둘러싸기는 없음 선택
     
  8. 저장을 누른후에 생성된 SQL 을 SQL Developer에서 실행

 

참조 : https://www.lesstif.com/dbms/oracle-20776567.html

Comments