Oracle은 사용자 및 테이블스페이스를 삭제합니다
Oracle은 오랫동안 사용되었으며 많은 새로운 사용자 및 테이블스페이스가 추가되었습니다.
단일 사용자 및 테이블스페이스의 경우 다음 명령을 사용하여 완료할 수 있습니다.
1단계: 사용자 삭제
drop user ×× cascade
참고: 사용자를 삭제하면 사용자 아래의 스키마 개체만 삭제되고 해당 테이블스페이스는 삭제되지 않습니다.
2단계: 테이블스페이스 삭제
DROP TABLESPACE tablespace_name INCLUDING CONTENTS AND DATAFILES;
단, 개발환경용 DB이기 때문에 정리해야 할 사용자 및 테이블스페이스가 많다.
아이디어:
모든 사용자와 테이블스페이스를 DB로 내보내고, 시스템과 유용한 테이블스페이스를 필터링하고, 유용한 정보를 테이블에 로드합니다. 그런 다음 유용한 테이블에 없는 테이블스페이스를 삭제하는 루틴 루프를 작성합니다.
1. dba_users에서 username,default_tablespace를 선택합니다.
2. >
3.create table MTUSEFULSPACE ( ID Number(4) NOT NULL PRIMARY KEY, USERNAME varchar2(30), TABLESPACENAME varchar2(60), OWNERNAME varchar2(30) );
declare icount number(2); tempspace varchar2(60); begin for curTable in (select username as allusr,default_tablespace as alltblspace from dba_users) loop tempspace :=curTable.alltblspace; dbms_output.put_line(tempspace); select count(TABLESPACENAME) into icount from MTUSEFULSPACE where TABLESPACENAME = tempspace; if icount=0 then DROP TABLESPACE tempspace INCLUDING CONTENTS AND DATAFILES; end if; commit; end loop; end;
실행 후 아래와 같은 오류가 발생합니다.
ORA-06550: 第 10 行, 第 5 列: PLS-00103: 出现符号 "DROP"在需要下列之一时: begin case declare exit for goto if loop mod null pragma raise return select update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe 06550. 00000 - "line %s, column %s:\n%s" *Cause: Usually a PL/SQL compilation error. *Action:
잠긴 것 같아요. .
방법이 없습니다. 루틴을 작성할 수 없기 때문에 명령문을 작성하고 실행만 하면 됩니다.
삭제해야 할 사용자 및 테이블스페이스를 Excel로 내보냅니다. CONCATENATE를 사용하여 SQL을 그룹화합니다.
일괄 실행을 위해 SQLdevelop에 게시합니다.
전체 삭제에는 사용자가 100명 이상인 경우 약 12시간이 소요됩니다.
데이터파일의 특정 위치를 알고 싶다면
select t1.name,t2.name from v$tablespace t1, v$datafile t2 where t1.ts# = t2.ts#;
SQL 코드
--빈 테이블 공간을 삭제하지만 실제 파일은 포함하지 않음
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;