2010-03-04 4 views
3

나는 impdp를 사용하여 오타가 있었는데 이제는 콜론 (:)으로 시작하는 사용자 이름을 갖게되었습니다. 예 : my_schema.콜론 (:)으로 시작하는 oracle 사용자를 삭제하는 방법

어떻게이 사용자를 삭제할 수 있습니까? 나는 그것을 탈출하기 위해 생각할 수있는 모든 것을 시도했지만 아무 도움이되지 않습니다.

편집 : 명확히하려면 - 사용자 삭제 방법을 알고 있습니다. 특수 문자 문제를 극복하는 데 어려움을 겪고 있습니다.

답변

2

당신이 동적 SQL이 할 수있는 것 같다

begin 
    execute immediate 'create user ":MY_SCHEMA" identified by xxx'; 
end; 
/

PL/SQL procedure successfully completed. 

select username, account_status from dba_users where username = ':MY_SCHEMA'; 

USERNAME      ACCOUNT_STATUS 
------------------------------ -------------------------------- 
:MY_SCHEMA      OPEN 

begin 
    execute immediate 'drop user ":MY_SCHEMA"'; 
end; 
/

PL/SQL procedure successfully completed. 

select username, account_status from dba_users where username = ':MY_SCHEMA'; 

no rows selected 
+0

이름에 특수 문자가있는 프로 시저를 삭제하는 것과 비슷한 문제에 대해 저에게 도움이되었습니다. – Jeff

+0

@Jeff -이 경우에는 이름을 큰 따옴표로 묶어야합니다 ([문서보기] (https://docs.oracle.com/cd/E24693_01/server.11203/e17118/sql_elements008.htm)) 정적 SQL에서; 여기서 동적 인 부분은 특별히 사용자 이름입니다. 이것은 작동하지만 따옴표로 묶인 식별자가있는 다른 객체 나 프로 시저에 대해서는 약간 과장입니다. –

+0

정적 문장에서 큰 따옴표를 사용하려고 시도했지만 여전히 큰 소리로 울 렸습니다. 그것은 나에게도 의미가 없지만, 역동적 인 작업과 나는 일하는 것을 발견해 주셔서 감사했습니다. 프로 시저에 하이픈이있어서 물음표 문자로 끝납니다. (나는 그것을 "- 삭제할 수 있습니까?"라고 말하면서 그것을 지울 수 없습니다.) 아이러니! – Jeff

3

큰 따옴표로 묶으려고 했습니까? 예컨대

drop user ":my_schema"; 

사건은이 작업을 수행 할 때 중요하다 - 그것은이다 "MYSCHEMA"또는 ": MYSCHEMA"또는 뭔가 사이에?

+0

시도 작동하지 않습니다. –

0

당신은 할 수 중 하나를 사용 :

drop user :my_schema; 

또는

drop user :my_schema cascade; 

사용자가 그 때 제거되지 않습니다 다른 테이블에 제약이있는 경우

.

drop table x cascade constraints; etc. 

유일한 문제는 모든 것을 풀어 놓고 다시 시작해야한다는 것입니다. 데이터베이스에 스크립트가있는 경우 다시로드하기 위해 스크립트를 다시 실행해야합니다.

+0

나는 사용자를 드롭하는 방법을 알고있다 - 처음에는 콜론에 문제가있다 - 특별한 숯이다. –

+0

@Ran Biron 나는 문제에 대한 해결책을 찾기 위해 계속 노력할 것이다. 내가 무엇이든 만나면 나는 그것을 게시 할 것입니다. –

1

백업본에서 복원해야만했습니다.

관련 문제