powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка доступа к метаданным типа
10 сообщений из 10, страница 1 из 1
Ошибка доступа к метаданным типа
    #39951740
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Connected to Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 

SQL> SELECT DBMS_METADATA.GET_DDL('TYPE', 'SYS_PLSQL_A130829_586_1', 'CTXSYS') FROM dual;

SELECT DBMS_METADATA.GET_DDL('TYPE', 'SYS_PLSQL_A130829_586_1', 'CTXSYS') FROM dual

ORA-31603: объект "SYS_PLSQL_A130829_586_1" с типом TYPE не найден в схеме "CTXSYS"
ORA-06512: на  "SYS.DBMS_METADATA", line 6478
ORA-06512: на  "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: на  "SYS.DBMS_METADATA", line 6465
ORA-06512: на  "SYS.DBMS_METADATA", line 9202
ORA-06512: на  line 1

SQL> SELECT * FROM all_objects WHERE object_name = 'SYS_PLSQL_A130829_586_1';

OWNER      OBJECT_NAME               SUBOBJECT_NAME   OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE  CREATED     LAST_DDL_TIME TIMESTAMP           STATUS  TEMPORARY GENERATED SECONDARY  NAMESPACE EDITION_NAME  SHARING        EDITIONABLE ORACLE_MAINTAINED APPLICATION DEFAULT_COLLATION  DUPLICATED SHARDED CREATED_APPID CREATED_VSNID MODIFIED_APPID MODIFIED_VSNID
---------- ------------------------- --------------- ---------- -------------- ------------ ----------- ------------- ------------------- ------- --------- --------- --------- ---------- ------------- -------------- ----------- ----------------- ----------- ------------------ ---------- ------- ------------- ------------- -------------- --------------
CTXSYS     SYS_PLSQL_A130829_586_1                        61339                TYPE         08.03.2017  08.03.2017 17 2017-03-08:17:04:43 VALID   N         N         N                  1               METADATA LINK  N           Y                 N           USING_NLS_COMP     N          N                                                  

SQL>

Если я имею доступ к типу через ALL_OBJECTS, почему не могу получить метаданные?

Роли SELECT_CATALOG_ROLE и даже DBA выданы пользователю.
...
Рейтинг: 0 / 0
Ошибка доступа к метаданным типа
    #39951758
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильный Вася,

А ты обрати внимание на имя - SYS_PLSQL. Этот префикс дается SQL типaм сгнерированным из PL/SQL для соответствия PL/SQL типу RECORD. DBMS_METADATA, насколько я понимаю, такие типы не выдаст.

SY.
...
Рейтинг: 0 / 0
Ошибка доступа к метаданным типа
    #39951770
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вижу, что он oracle_maintained=Y

Но почему ошибка? Если ему нечего возвратить, пусть NULL дает. Если там текстовка вырезана, тоже можно NULL или просто заголовок.
Получается: вот он есть, но его как бы и нет. Когнитивный диссонанс.
...
Рейтинг: 0 / 0
Ошибка доступа к метаданным типа
    #39951779
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильный Вася
Я вижу, что он oracle_maintained=Y

Но почему ошибка? Если ему нечего возвратить, пусть NULL дает. Если там текстовка вырезана, тоже можно NULL или просто заголовок.
Получается: вот он есть, но его как бы и нет. Когнитивный диссонанс.


При чем тут oracle_maintained? Тип SYS_PLSQL это "теневой" тип - "связывающее звено" между PL/SQL и SQL:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
SQL> SELECT OWNER,OBJECT_NAME,ORACLE_MAINTAINED FROM DBA_OBJECTS WHERE OBJECT_TYPE = 'TYPE' AND OBJECT_NAME = 'KU$_VCNT';

OWNER      OBJECT_NAME     ORACLE_MAINTAINED
---------- --------------- -----------------
SYS        KU$_VCNT        Y

SQL> SELECT DBMS_METADATA.GET_DDL('TYPE', 'KU$_VCNT','SYS') FROM dual;

DBMS_METADATA.GET_DDL('TYPE','KU$_VCNT','SYS')
--------------------------------------------------------------------------------

  CREATE OR REPLACE NONEDITIONABLE TYPE "SYS"."KU$_VCNT"


SQL> SELECT OWNER,OBJECT_NAME,ORACLE_MAINTAINED FROM DBA_OBJECTS WHERE OBJECT_TYPE = 'TYPE' AND OBJECT_NAME LIKE 'SYS_PLSQL%' AND ROWNUM = 1;

OWNER      OBJECT_NAME               ORACLE_MAINTAINED
---------- ------------------------- -----------------
SYS        SYS_PLSQL_C80B37C8_228_1  Y

SQL> SELECT DBMS_METADATA.GET_DDL('TYPE', 'SYS_PLSQL_C80B37C8_228_1','SYS') FROM dual;
ERROR:
ORA-31603: object "SYS_PLSQL_C80B37C8_228_1" of type TYPE not found in schema "SYS"
ORA-06512: at "SYS.DBMS_METADATA", line 6478
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.DBMS_METADATA", line 6465
ORA-06512: at "SYS.DBMS_METADATA", line 9202
ORA-06512: at line 1

no rows selected

SQL>



SY.
...
Рейтинг: 0 / 0
Ошибка доступа к метаданным типа
    #39951786
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильный Вася,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
SQL> connect u1@pdb1sol122
Enter password:
Connected.
SQL> select banner from v$version;

BANNER
--------------------------------------------------------------------------------
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
PL/SQL Release 12.2.0.1.0 - Production
CORE    12.2.0.1.0      Production
TNS for 64-bit Windows: Version 12.2.0.1.0 - Production
NLSRTL Version 12.2.0.1.0 - Production

SQL> select object_name from user_objects;

no rows selected

SQL> CREATE OR REPLACE
  2    PACKAGE pkg_cl_risk_eval
  3      AS
  4        TYPE cl_risk_type
  5          IS RECORD(
  6                    adate date,
  7                    cid   number(10),
  8                    indicatorid number(5),
  9                    value number(5)
 10                   );
 11        TYPE cl_risk_act IS TABLE OF cl_risk_type;
 12        FUNCTION sample(
 13                        p_date date,
 14                        p_indicatorid number,
 15                        p_ismodel number
 16                       )
 17          return cl_risk_act
 18          pipelined;
 19   END;
 20  /

Package created.

SQL> CREATE OR REPLACE
  2    PACKAGE BODY pkg_cl_risk_eval
  3      is
  4        FUNCTION sample(
  5                        p_date date,
  6                        p_indicatorid number,
  7                        p_ismodel number
  8                       )
  9          return cl_risk_act
 10          pipelined
 11          IS
 12              v_obj cl_risk_type;
 13          BEGIN
 14               FOR e IN (select trunc(sysdate) adate,0 cid,0indicatorid,case when p_ismodel = 0 then 0 else 1 end value from dual) LOOP
 15                 v_obj.adate        := e.adate;
 16                 v_obj.cid            := e.cid;
 17                 v_obj.indicatorid := e.indicatorid;
 18                 v_obj.value        := e.value;
 19                 PIPE ROW (v_obj);
 20               END LOOP;
 21               RETURN;
 22          end;
 23  end;
 24  /

Package body created.

SQL> select object_name,object_type from user_objects;

OBJECT_NAME                    OBJECT_TYPE
------------------------------ -----------------------
SYS_PLSQL_EEB4195C_41_1        TYPE
SYS_PLSQL_EEB4195C_DUMMY_1     TYPE
SYS_PLSQL_EEB4195C_9_1         TYPE
PKG_CL_RISK_EVAL               PACKAGE
PKG_CL_RISK_EVAL               PACKAGE BODY

SQL> SELECT DBMS_METADATA.GET_DDL('TYPE','SYS_PLSQL_EEB4195C_41_1') FROM DUAL;
ERROR:
ORA-31603: object "SYS_PLSQL_EEB4195C_41_1" of type TYPE not found in schema "U1"
ORA-06512: at "SYS.DBMS_METADATA", line 6478
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 105
ORA-06512: at "SYS.DBMS_METADATA", line 6465
ORA-06512: at "SYS.DBMS_METADATA", line 9202
ORA-06512: at line 1



no rows selected

SQL>



SY.
...
Рейтинг: 0 / 0
Ошибка доступа к метаданным типа
    #39952029
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY, спасибо.

А есть ли какой-то более формальный признак для определения таких типов-"прослоек"?
В полях ALL_OBJECTS и ALL_TYPES не разглядел :(

А то ориентироваться на имя LIKE 'SYS_PLSQL_%' мне кажется нецелесообразным.
Ведь ничто не мешает пользователю создать нормальный тип с похожим именем.
...
Рейтинг: 0 / 0
Ошибка доступа к метаданным типа
    #39952038
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильный Вася
SY, спасибо.

А есть ли какой-то более формальный признак для определения таких типов-"прослоек"?
В полях ALL_OBJECTS и ALL_TYPES не разглядел :(


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SQL> SELECT OBJECT_NAME,SHARING FROM DBA_OBJECTS WHERE OBJECT_TYPE = 'TYPE' AND OBJECT_NAME LIKE 'SYS_PLSQL%' AND ROWNUM = 1;

OBJECT_NAME                    SHARING
------------------------------ ------------------
SYS_PLSQL_C80B37C8_228_1       METADATA LINK

SQL> SELECT * FROM DBA_TYPES WHERE TYPE_NAME = 'SYS_PLSQL_C80B37C8_228_1';

no rows selected

SQL> DESC SYS.SYS_PLSQL_C80B37C8_228_1
ERROR:
ORA-04043: object SYS.SYS_PLSQL_C80B37C8_228_1 does not exist


SQL>



SY.
...
Рейтинг: 0 / 0
Ошибка доступа к метаданным типа
    #39952044
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Правильный Вася
ALL_TYPES
ты уверен, что видишь этот тип в ALL_TYPES?
...
Рейтинг: 0 / 0
Ошибка доступа к метаданным типа
    #39952062
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtender, конечно его там нет. Но я там искал, поэтому и написал.
...
Рейтинг: 0 / 0
Ошибка доступа к метаданным типа
    #39956211
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ошибка доступа к метаданным типа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]