为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:
SELECT DBMS_METADATA.GET_DDL('VIEW','ALL_CONS_COLUMNS') FROM DUAL;
[-20008]:未找到对象或不允许查询系统定义的内部索引
-20008: DBMS_METADATA.GET_DDL line 2400 .
只能查看自己建的
CREATE OR REPLACE VIEW SYS.ALL_CONS_COLUMNS AS
SELECT /*+ PHC_MODE_ENFORCE(13) */
O1.NAME OWNER,
O2.NAME CONSTRAINT_NAME,
O.NAME TABLE_NAME,
COLS.NAME COLUMN_NAME,
CASE WHEN CON.TYPE$ != 'C' THEN
CAST(SF_GET_INDEX_KEY_SEQ(I.KEYNUM, I.KEYINFO, COLS.COLID) AS NUMBER(10,0))
ELSE
CAST(NULL AS NUMBER(10,0))
END POSITION
FROM TSYSOBJECTS O,
TSYSOBJECTS O1,
TSYSOBJECTS O2,
SYS.SYSCONS CON LEFT JOIN SYS.SYSINDEXES I ON I.ID=CON.INDEXID,
SYS.SYSCOLUMNS COLS
WHERE
O2.SUBTYPE$='CONS' AND O.SUBTYPE$ IN ('UTAB', 'STAB', 'VIEW') AND O2.PID=O.ID
AND O1.ID=O.SCHID AND O1.TYPE$ = 'SCH'
AND CON.ID=O2.ID
AND COLS.ID=O.ID
AND (SF_COL_IS_IDX_KEY(I.KEYNUM, I.KEYINFO, COLS.COLID) = 1 OR
SF_COL_IS_CHECK_KEY(O2.INFO1, O2.INFO6, COLS.COLID) = 1)
AND SF_CHECK_USER_TABLE_COL_PRIV_OPT(SYS_CONTEXT('USERENV', 'CURRENT_USERID'), SYS_CONTEXT('USERENV', 'CURRENT_USERTYPE'), O.ID, O1.PID, (SELECT INFO1 FROM TSYSOBJECTS WHERE TYPE$ = 'UR' AND ID = O1.PID), COLS.COLID, 0) = 1;
SELECT DBMS_METADATA.GET_DDL(OBJECT_TYPE => 'VIEW',NAME=>UPPER('ALL_CONS_COLUMNS'),SCHNAME => 'SYS');
直接从 ALL_VIEWS 里查询视图定义脚本呢?
SELECT TEXT FROM ALL_VIEWS WHERE VIEW_NAME = 'ALL_CONS_COLUMNS'
不过视图脚本比较长,可能显示不完整