> php教程 > PHP开发 > 본문

사용자 및 테이블스페이스를 삭제하는 Oracle에 대한 자세한 소개

高洛峰
풀어 주다: 2017-01-06 11:37:22
원래의
1537명이 탐색했습니다.

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;
로그인 후 복사
사용자 및 테이블스페이스 삭제에 대한 자세한 Oracle 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!