2017-10-26 2 views
0

는이 오류SELECT_CATALOG_ROLE이 있어도 DBMS_METADATA.GET_DDL이 실패합니까? 다음 SQL을 사용하여 트리거에 대한 SQL을 얻으려고 할 때

java.sql.SQLException: ORA-31603: object "XXX" of type TRIGGER not found in schema "YYYY" 
ORA-06512: at "SYS.DBMS_METADATA", line 6069 
ORA-06512: at "SYS.DBMS_METADATA", line 8666 
ORA-06512: at line 1 

를 얻을.

SELECT 
s.OWNER AS SCHEMA, 
s.object_name AS NAME, 
dbms_metadata.get_DDL(s.object_type,s.object_name,s.owner) AS "SQL" 
FROM SYS.DBA_OBJECTS s 
WHERE s.OBJECT_TYPE IN ('TRIGGER') 

나는 다음과 같은 USER_ROLE_PRIVS 있습니다 SELECT_CATALOG_ROLE
USER_ROLE_PRIVS

DB 버전 : 내가 잘못하지만 난 막 다른 골목에 온 것을 그림을 시도했습니다

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 
PL/SQL Release 12.1.0.2.0 - Production 
"CORE 12.1.0.2.0 Production" 
TNS for IBM/AIX RISC System/6000: Version 12.1.0.2.0 - Production 
NLSRTL Version 12.1.0.2.0 - Production 

합니다. 어디서나이 프로 시저 내에서 실행하지 않는 한 내가 필요한 모든 것을 SELECT_CATALOG_ROLE이라고 말합니다. SQL 연결을 통해 SQL을 실행하고 있지만 SQL 클라이언트를 사용하여 실행 중이더라도 오류가 발생합니다.

내가 가진 다른 권한을 알고 싶다면 알려주십시오. DBA_SOURCE를 사용하는 방법에 대해서는 이미 알고 있습니다. 오라클 워드 프로세서에 따라 get_DDL을 사용할 수없는 이유를 이해해야합니다. SELECT 문을 사용하려면 SELECT_CATALOG_ROLE 만 있으면됩니다.

편집 : 몇 가지 메모.
다른 데이터베이스를 검색 할 때이 쿼리가 올바르게 작동합니다.이 환경에서이 쿼리가 작동하지 않는 이유를 알 수 없습니다.
DBA_SOURCE를 사용하고 싶지 않습니다. '트리거 생성'과 같은 일부 구문을 생략하고 수동 조작 대신 사용 가능한 함수를 사용하고 싶기 때문입니다. (그러나 왜 이런 일이 발생하는지 알 수없는 경우 DBA_SOURCE를 사용하여 다시 돌아 가야합니다.)
쿼리에 소유자 필터가 있습니다. 다른 불필요한 정보없이 문제를 제시하고자 했으므로 여기에 추가하지 않았습니다.

일에 대한

답변

0

방법 : 나는 또한 소유자를 제한 할

SELECT 
s.OWNER AS SCHEMA, 
s.name AS NAME, 
s.text as "SQL" 
FROM SYS.dba_source s 
WHERE s.TYPE IN ('TRIGGER'); 

그렇지 않으면이 실행하는 데 시간이 오래 걸릴 수 있습니다.

+0

전체 SQL 문을 제공하지 않기 때문에 dba_source를 사용하고 싶지 않습니다. 그것은 라인을 작성하지 않고 다른 문제가 있는지 잘 모르겠습니다. get_ddl은 다른 데이터베이스에서 아무런 문제없이이 모든 시간 동안 저에게 효과적이었습니다.하지만이 데이터베이스에는 누락 된 것이 있습니다. 나는 실수가 무엇인지 알아 내려고 노력 중이다. 예 소유자를 기준으로 쿼리가 제한됩니다. 관련성이 없으므로 문제를 게시하기 전에 추가 필터를 제거했습니다. –

+0

누락 된 유일한 사실은 전체 소스를 가져 오기 위해 텍스트의 접두사 인 "CREATE OR REPLACE"입니다. 지금까지 수년 동안이 방법을 사용해 왔고 아무런 문제도 없었다. – sandman

+0

감사합니다.하지만이 방법이 효과가없는 이유는 무엇입니까? –