내 첫 번째 생각은 이것이보기가 어떻게 행동 해야하는지와 달랐습니다. 내가 생각할 수있는 유일한 가능성은 누군가 장난이나 실험 정신으로 스키마에 ALL_OBJECTS
테이블이나 뷰를 만들었다는 것입니다. 자신의 가정에 도전을 제기하는 것은 항상 흥미 롭습니다. 그래서 나는 이것에 대해 좀 더 살펴 보았습니다. 내 데이터베이스에 SYS로 로그인하여 ALL_OBJECTS 및 ALL_SOURCE 뷰의 소스 코드를 살펴 보았습니다. 관련 조각이 여기에 있습니다 - 내가 여기를 재현 어떤 IP 법규 위반 있다고 생각하지 않지만, 필요한 경우 삭제됩니다
ALL_OBJECTS
select obj# from sys.objauth$
where grantee# in (select kzsrorol from x$kzsro)
and privilege# in (3 /* DELETE */, 6 /* INSERT */,
7 /* LOCK */, 9 /* SELECT */,
10 /* UPDATE */, 12 /* EXECUTE */,
11 /* USAGE */, 16 /* CREATE */,
17 /* READ */, 18 /* WRITE */)
ALL_SOURCE
o.type# = 11 and
(
privilege# = -141 /* CREATE ANY PROCEDURE */
or
privilege# = -241 /* DEBUG ANY PROCEDURE */
)
및 또한 :
(o.type# in (11 /* package body */, 14 /* type body */))
and
exists
(
select null from sys."_ACTUAL_EDITION_OBJ" specobj, sys.dependency$ dep, sys.objauth$ oa
where specobj.owner# = o.owner#
and specobj.name = o.name
and specobj.type# = decode(o.type#,
11 /* pkg body */, 9 /* pkg */,
14 /* type body */, 13 /* type */,
null)
and dep.d_obj# = o.obj# and dep.p_obj# = specobj.obj#
and oa.obj# = specobj.obj#
and oa.grantee# in (select kzsrorol from x$kzsro)
and oa.privilege# = 26 /* DEBUG */)
저는 DBA가 아니며 약간 벗어났습니다. 내 깊이 이것을 해석하지만, 당신의 스키마가 CREATE ANY PROCEDURE
을 가지고 있다고 추측하고 있지만 패키지에 특정한 특권이 없다? 이 경우 소스가 ALL_SOURCE
인 이유를 설명 할 수 있지만 패키지는 ALL_OBJECTS
에 표시되지 않습니다.
매우 이상하게 보입니다. 'select * from all_objects where object_name = 'ALL_OBJECTS';' – Bacs
아니요, SYS VIEW와는 다른 것을 얻지 못합니다. PUBLIC SYNONYM – Arnab
필자의 쿼리가 다음과 같아야한다는 것을 깨달았다 :'select * from SYS.all_objects where object_name = 'ALL_OBJECTS';'여전히 길다. – Bacs