powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не создается policy в OLS (Oracle 12c)
23 сообщений из 23, страница 1 из 1
Не создается policy в OLS (Oracle 12c)
    #39554666
Wassja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Oracle Label Security у меня работал в версии Oracle 11g.
Попытался настроить в Oracle 12c.

Включил опцию Oracle Label Security:
Код: plsql
1.
2.
SELECT VALUE FROM V$OPTION WHERE PARAMETER = 'Oracle Label Security';
SELECT STATUS FROM DBA_OLS_STATUS WHERE NAME = 'OLS_CONFIGURE_STATUS';


Включил пользователя LBACSYS.

Пытаюсь создать policy:
Код: plsql
1.
exec SA_SYSDBA.create_policy('sss');



Не работает! Ошибка "ошибка преобразования символа в число ошибка числа или значения"

Error starting at line : 2 in command -
BEGIN SA_SYSDBA.create_policy('sss'); END;
Error report -
ORA-06502: PL/SQL: : ошибка преобразования символа в число ошибка числа или значения
ORA-06512: на "LBACSYS.LBAC_LGSTNDBY_UTIL", line 94
ORA-06512: на "LBACSYS.LBAC_SYSDBA", line 132
ORA-06512: на "LBACSYS.LBAC_LGSTNDBY_UTIL", line 73
ORA-06512: на "LBACSYS.SA_SYSDBA", line 16
ORA-06512: на line 1
06502. 00000 - "PL/SQL: numeric or value error%s"
*Cause: An arithmetic, numeric, string, conversion, or constraint error
occurred. For example, this error occurs if an attempt is made to
assign the value NULL to a variable declared NOT NULL, or if an
attempt is made to assign an integer larger than 99 to a variable
declared NUMBER(2).
*Action: Change the data, how it is manipulated, or how it is declared so
that values do not violate constraints.


Попытался запустить такую-же процедуру из примера описания:
Код: plsql
1.
2.
3.
4.
5.
6.
BEGIN
 SA_SYSDBA.CREATE_POLICY (
  policy_name      => 'emp_ols_pol',
  column_name      => 'ols_col',
  default_options  => 'read_control, update_control');
END;


Вот от сюда:
https://docs.oracle.com/database/121/OLSAG/getstrtd.htm#OLSAG3731
Эффект одинаковый.

Подозреваю, что не те какие-то настройки всей БД. Но где искать...
Спасибо за помощь!
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39554700
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wassja,

Попробуйте отловить так

alter session set event '6502 trace name errorstack level 3';
exec SA_SYSDBA.create_policy('sss');
select value from v$dai_info where name='Default Trace File';
exit


смотрите трейс
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39555846
Wassja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orac_list, спасибо за помощь, стало легче, не полностью...
Запустил процедурку:
Код: plsql
1.
2.
3.
4.
alter session set events '6502 trace name errorstack level 3'; 
exec SA_SYSDBA.create_policy('sss');
select value from v$diag_info where name='Default Trace File';
exit


Получил результат: файл orcl_ora_4996.trc
В последних строчках получил описание ошибок:
Код: plaintext
1.
2.
3.
4.
2017-11-16 23:06:16.585 : [ default][ default]ut_read_reg:2:ocr registry key SOFTWARE\Oracle\olr cannot be opened. error 2
2017-11-16 23:06:16.585 : [ default][ default]ut_read_reg:2:ocr registry key SOFTWARE\Oracle\ocr cannot be opened. error 2
2017-11-16 23:06:16.585 : [ default][ default]ut_read_reg:2:ocr registry key SOFTWARE\Oracle\olr cannot be opened. error 2
2017-11-16 23:06:16.585 : [ default][ default]ut_read_reg:2:ocr registry key SOFTWARE\Oracle\ocr cannot be opened. error 2

В реестре таких ключей нет. В интернете подобных проблем я не нашел.
Может быть кто-то встречался с подобными?
Спасибо!

ОС - Windows Server 2016 Standard.
При установки Oracle ошибок не было.
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39555856
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у тебя не RAC, то забей на эти сообщения или установи CRS_NOTIFICATION_LISTENER_NAME=OFF в LISTENER.ORA.

SY.
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39555868
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
WassjaПолучил результат: файл orcl_ora_4996.trc
В последних строчках получил описание ошибок:не туда смотришь:
Сначала ищешь в трейсе строчку "Current cursor: ". Допустим, там будет "Current cursor: 18"
Берешь это число и ищешь в трейсе строчку "Cursor#18" там ниже будет его дамп, в нем и найдешь в чем ошибка, если не можешь сам, то выложи сюда этот кусок
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39555914
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xtenderДопустим, там будет "Current cursor: 18"Интересное допущение. На этих версиях там непроговариваемо длинные числа.
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39555980
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wassja,


Выполните из под sysdba

set serverout on
declare
VERSION VARCHAR2(100);
COMPAT NUMBER;
STMT VARCHAR2(100);
COMPAT_LEVEL VARCHAR2(100);
begin
STMT := 'BEGIN SYS.DBMS_UTILITY.DB_VERSION(:ver,:compat); END;';
EXECUTE IMMEDIATE STMT USING OUT VERSION, OUT COMPAT_LEVEL;
COMPAT := TO_NUMBER(SUBSTR(COMPAT_LEVEL, 1,INSTR(COMPAT_LEVEL, '.', 1, 2) - 1));
dbms_output.put_line('COMPAT_LEVEL: '||COMPAT_LEVEL);
dbms_output.put_line('VERSION: '||VERSION);
dbms_output.put_line('COMPAT: '||COMPAT);
end;
/

Ошибка ORA-06502 будет?
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556045
Wassja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orac_list, запустил вашу программу. Получил ошибку. Малость подправил программу и запустил:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
set serverout on
declare
   VERSION VARCHAR2(100);
   COMPAT NUMBER;
   STMT VARCHAR2(100);
   COMPAT_LEVEL VARCHAR2(100);
   QQQ VARCHAR2(100);
begin
   STMT := 'BEGIN SYS.DBMS_UTILITY.DB_VERSION(:ver,:compat); END;';
   EXECUTE IMMEDIATE STMT USING OUT VERSION, OUT COMPAT_LEVEL;
   QQQ := SUBSTR(COMPAT_LEVEL, 1,INSTR(COMPAT_LEVEL, '.', 1, 2) - 1);
   dbms_output.put_line('SUBSTR(COMPAT_LEVEL, 1,INSTR(COMPAT_LEVEL, ".", 1, 2) - 1) ---> ' || QQQ);
   COMPAT := TO_NUMBER('12,1');
   dbms_output.put_line('COMPAT_LEVEL: '||COMPAT_LEVEL);
   dbms_output.put_line('VERSION: '||VERSION);
   dbms_output.put_line('COMPAT: '||COMPAT);
end;


Получил вот такой результат:
Код: plaintext
1.
2.
3.
4.
5.
SUBSTR(COMPAT_LEVEL, 1,INSTR(COMPAT_LEVEL, ".", 1, 2) - 1) ---> 12.2
COMPAT_LEVEL: 12.2.0
VERSION: 12.2.0.1.0
COMPAT: 12,1
PL/SQL procedure successfully completed.

Получается преобразование строки в число должно быть с запятой, а не с точкой. Наверное можно настроить наоборот, но возможно, что-нибудь еще отвалится... Или я что-то не понимаю?
Спасибо!
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556066
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wassja,

Покажите что у вас в параметре compatible?

Show parameter compat

или

select name,value from v$spparameter where name='compatible';

select name,value from v$parameter where name='compatible';

Настройки NLS


select * from NLS_DATABASE_PARAMETERS;

select * from NLS_INSTANCE_PARAMETERS;
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556067
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wassjaorac_list, запустил вашу программу. Получил ошибку. Малость подправил программу и запустил:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
set serverout on
declare
   VERSION VARCHAR2(100);
   COMPAT NUMBER;
   STMT VARCHAR2(100);
   COMPAT_LEVEL VARCHAR2(100);
   QQQ VARCHAR2(100);
begin
   STMT := 'BEGIN SYS.DBMS_UTILITY.DB_VERSION(:ver,:compat); END;';
   EXECUTE IMMEDIATE STMT USING OUT VERSION, OUT COMPAT_LEVEL;
   QQQ := SUBSTR(COMPAT_LEVEL, 1,INSTR(COMPAT_LEVEL, '.', 1, 2) - 1);
   dbms_output.put_line('SUBSTR(COMPAT_LEVEL, 1,INSTR(COMPAT_LEVEL, ".", 1, 2) - 1) ---> ' || QQQ);
   COMPAT := TO_NUMBER('12,1');
   dbms_output.put_line('COMPAT_LEVEL: '||COMPAT_LEVEL);
   dbms_output.put_line('VERSION: '||VERSION);
   dbms_output.put_line('COMPAT: '||COMPAT);
end;


Получил вот такой результат:
Код: plaintext
1.
2.
3.
4.
5.
SUBSTR(COMPAT_LEVEL, 1,INSTR(COMPAT_LEVEL, ".", 1, 2) - 1) ---> 12.2
COMPAT_LEVEL: 12.2.0
VERSION: 12.2.0.1.0
COMPAT: 12,1
PL/SQL procedure successfully completed.

Получается преобразование строки в число должно быть с запятой, а не с точкой. Наверное можно настроить наоборот, но возможно, что-нибудь еще отвалится... Или я что-то не понимаю?
Спасибо!

Какую ошибку получили?
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556074
Wassja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtender, попробовал сделать, как ты предлагаешь, но полезного ничего не нашел. Может ты сможешь тут разобраться...
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556077
Wassja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orac_listКакую ошибку получили?


Ошибка старая:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Error report -
ORA-06502: PL/SQL: : ошибка преобразования символа в число ошибка числа или значения
ORA-06512: на  line 12
06502. 00000 -  "PL/SQL: numeric or value error%s"
*Cause:    An arithmetic, numeric, string, conversion, or constraint error
           occurred. For example, this error occurs if an attempt is made to
           assign the value NULL to a variable declared NOT NULL, or if an
           attempt is made to assign an integer larger than 99 to a variable
           declared NUMBER(2).
*Action:   Change the data, how it is manipulated, or how it is declared so
           that values do not violate constraints.
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556080
Wassja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orac_listWassja,

Покажите что у вас в параметре compatible?

Show parameter compat

или

select name,value from v$spparameter where name='compatible';

select name,value from v$parameter where name='compatible';

Настройки NLS


select * from NLS_DATABASE_PARAMETERS;

select * from NLS_INSTANCE_PARAMETERS;


Код: plaintext
1.
2.
3.
4.
5.
6.
NAME                   TYPE    VALUE  
---------------------- ------- ------ 
compatible             string  12.2.0 
noncdb_compatible      boolean FALSE  
plsql_v2_compatibility boolean FALSE  

NLS_RDBMS_VERSION 12.2.0.1.0NLS_NCHAR_CONV_EXCP FALSENLS_LENGTH_SEMANTICS BYTENLS_COMP BINARYNLS_DUAL_CURRENCY $NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZRNLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZRNLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AMNLS_TIME_FORMAT HH.MI.SSXFF AMNLS_SORT BINARYNLS_DATE_LANGUAGE AMERICANNLS_DATE_FORMAT DD-MON-RRNLS_CALENDAR GREGORIANNLS_NUMERIC_CHARACTERS .NLS_NCHAR_CHARACTERSET AL16UTF16NLS_CHARACTERSET AL32UTF8NLS_ISO_CURRENCY AMERICANLS_CURRENCY $NLS_TERRITORY AMERICANLS_LANGUAGE AMERICAN

Для NLS_NUMERIC_CHARACTERS - ".,"

NLS_LANGUAGE RUSSIANNLS_TERRITORY RUSSIANLS_SORT NLS_DATE_LANGUAGE NLS_DATE_FORMAT NLS_CURRENCY NLS_NUMERIC_CHARACTERS NLS_ISO_CURRENCY NLS_CALENDAR NLS_TIME_FORMAT NLS_TIMESTAMP_FORMAT NLS_TIME_TZ_FORMAT NLS_TIMESTAMP_TZ_FORMAT NLS_DUAL_CURRENCY NLS_COMP BINARYNLS_LENGTH_SEMANTICS BYTENLS_NCHAR_CONV_EXCP FALSE
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556085
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wassja,

Удалось воспроизвести

alter session set NLS_NUMERIC_CHARACTERS=', ';

declare
VERSION VARCHAR2(100);
COMPAT NUMBER;
STMT VARCHAR2(100);
COMPAT_LEVEL VARCHAR2(100);
begin
STMT := 'BEGIN SYS.DBMS_UTILITY.DB_VERSION(:ver,:compat); END;';
EXECUTE IMMEDIATE STMT USING OUT VERSION, OUT COMPAT_LEVEL;
COMPAT := TO_NUMBER(SUBSTR(COMPAT_LEVEL, 1,INSTR(COMPAT_LEVEL, '.', 1, 2) - 1));
dbms_output.put_line('COMPAT_LEVEL: '||COMPAT_LEVEL);
dbms_output.put_line('VERSION: '||VERSION);
dbms_output.put_line('COMPAT: '||COMPAT);
end;

ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 9



http://www.sql.ru/forum/258743/to-number-and-nls-numeric-characters
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556090
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wassja,

Попробуйте так

alter session set NLS_NUMERIC_CHARACTERS='.,';
exec SA_SYSDBA.create_policy('sss');
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556195
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Wassja,

Блин ну все понятно же в приведенном дампе: обратите внимание на замену литералов биндами и прочтите это: Oracle SQL Developer 17.3.0: Кривой биндинг переменных

В общем либо используйте sqlplus либо установите параметр из той темы
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556197
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Elic,

Это не 10046, а errorstack dump, в нем курсоры указываются так.
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556203
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtenderWassja,

Блин ну все понятно же в приведенном дампе: обратите внимание на замену литералов биндами и прочтите это: Oracle SQL Developer 17.3.0: Кривой биндинг переменных

В общем либо используйте sqlplus либо установите параметр из той темы


Невдупляю причем здесь замена литералов если ошибка происходит на
ORA-06512: на "LBACSYS.LBAC_SYSDBA", line 132


--LBAC_SYSDBA--

129 STMT := 'BEGIN SYS.DBMS_UTILITY.DB_VERSION(:ver,:compat); END;';
130 EXECUTE IMMEDIATE STMT USING OUT VERSION, OUT COMPAT_LEVEL;
131
132 COMPAT := TO_NUMBER(SUBSTR(COMPAT_LEVEL, 1,
133 INSTR(COMPAT_LEVEL, '.', 1, 2) - 1));

И в sqlplus можно воспроизвести

20968760
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556207
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
xtenderWassja,

Блин ну все понятно же в приведенном дампе: обратите внимание на замену литералов биндами и прочтите это: Oracle SQL Developer 17.3.0: Кривой биндинг переменных

В общем либо используйте sqlplus либо установите параметр из той темыхотя я ошибся - надо было полный дамп дать, а так orac_list правильно ответил
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556211
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
orac_list,

да, это я быстро глянул и не туда... а, так да, в начале темы все понятно было

зы. а secureliterals все-таки лучше выключить, оно может приводить к таким же проблемам
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556236
Wassja
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orac_listWassja,

Попробуйте так

alter session set NLS_NUMERIC_CHARACTERS='.,';
exec SA_SYSDBA.create_policy('sss');


Помогло!
Большое спасибо!
Буду дальше настраивать OLS...
...
Рейтинг: 0 / 0
Не создается policy в OLS (Oracle 12c)
    #39556250
orac_list
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Wassjaorac_listWassja,

Попробуйте так

alter session set NLS_NUMERIC_CHARACTERS='.,';
exec SA_SYSDBA.create_policy('sss');


Помогло!
Большое спасибо!
Буду дальше настраивать OLS...

Хорошо.
Возможно имеет смысл открыть SR на эту тему, похоже на баг.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Не создается policy в OLS (Oracle 12c)
    #40041915
Правильный Вася
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orac_list
имеет смысл открыть SR на эту тему, похоже на баг.

Сейчас на 19.3 споткнулся об то же самое.
Так что, у кого есть возможность, всё-таки походатайствуйте.
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не создается policy в OLS (Oracle 12c)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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