Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Вопрос по logon triger  [new]
KyRo
Member

Откуда: г.Киев
Сообщений: 361
Добрый день,

У меня в одной из БД есть logon trigger отсеивающий соединения пользователей с заданным ip или входящих в определенные группы.
События срабатывания
 AFTER 
 LOGON
 ON DATABASE

Так вот, в sqlppluss из консоли, если я пытаюсь установить соединение пользователем которому запрещено входить , то в первый раз все хорошо, логин тригер возвращает заданную ошибку и все вроде как и должно быть.
Но если я не закрывая окно терминала и окно sqlpluss делаю повторную попытку то тригер не срабатывает.
Пример:

D:\oracle\product\10.2.0\db_1\BIN>sqlplus sunduch1@standby2

SQL*Plus: Release 10.2.0.5.0 - Production on ╧φ. ╦Φ∩ 13 09:12:14 2015

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Enter password:
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20099: Access is denied for user SUNDUCH1 from 10.1.*.*
WORKGROUP\ORACLE-TEST FALSE
ORA-06512: at line 59


Enter user-name: sunduch1
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>


Я подозреваю что в данном случае событие на котором должен висеть тригер другое, но не знаю какое.
Подскажите в чем может быть данная проблема ?
13 июл 15, 09:14    [17884123]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
-2-
Member

Откуда:
Сообщений: 15330
KyRo
Enter user-name: sunduch1
Enter password: *****@standby2

13 июл 15, 09:22    [17884153]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
KyRo
Member

Откуда: г.Киев
Сообщений: 361
Не обращайте внимание , это тестовая среда которую я делал из standby сервера.
Как бы не стал менять tns и sid, вот она так и называется.
13 июл 15, 09:25    [17884162]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
Alexander Ryndin
Member

Откуда:
Сообщений: 4917
Блог
KyRo,

Show user покажите
13 июл 15, 09:30    [17884183]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
KyRo
Member

Откуда: г.Киев
Сообщений: 361
D:\oracle\product\10.2.0\db_1\BIN>sqlplus sunduch1@standby2

SQL*Plus: Release 10.2.0.5.0 - Production on ╧φ. ╦Φ∩ 13 09:12:14 2015

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Enter password:
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20099: Access is denied for user SUNDUCH1 from 10.1.32.180
WORKGROUP\ORACLE-TEST FALSE
ORA-06512: at line 59


Enter user-name: sunduch1
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show user
USER is "SUNDUCH1"
SQL>
13 июл 15, 09:32    [17884194]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
Zloxa
Member

Откуда: СССР ☭
Сообщений: 1033
KyRo,

Из приведенного Вами примера не видно, что второй раз вы подключаетесь по тому же самому подключению, что и в первый.
13 июл 15, 09:38    [17884209]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
Elic
Member

Откуда:
Сообщений: 29979
KyRo
делаю повторную попытку
define _CONNECT_IDENTIFIER

Zloxa
не видно, что второй раз вы подключаетесь по тому же самому подключению, что и в первый.
Видно, что не по тому же.
13 июл 15, 09:53    [17884258]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
KyRo
Member

Откуда: г.Киев
Сообщений: 361
Та в том то и дело что к тому же получается

D:\oracle\product\10.2.0\db_1\BIN>sqlplus sunduch1@standby2

SQL*Plus: Release 10.2.0.5.0 - Production on ╧φ. ╦Φ∩ 13 09:12:14 2015

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Enter password:
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20099: Access is denied for user SUNDUCH1 from 10.1.32.180
WORKGROUP\ORACLE-TEST FALSE
ORA-06512: at line 59


Enter user-name: sunduch1
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show user
USER is "SUNDUCH1"
SQL> define _CONNECT_IDENTIFIER;
DEFINE _CONNECT_IDENTIFIER = "standby2" (CHAR)
SQL>
13 июл 15, 09:57    [17884281]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
SY
Member

Откуда: Middlebury, CT USA
Сообщений: 10045
KyRo,

Триггер привести можешь?

SY.
13 июл 15, 14:41    [17885727]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
SeaGate
Member

Откуда: Новосибирск
Сообщений: 1635
KyRo,

Ответ вот тут уже дал товарищ -2-.
Перефразирую его вариант:
Enter user-name: sunduch1@standby2
Enter password: *****

Чтобы вводить user/password и соединяться не через bequeath, установи переменную TWO_TASK (LOCAL на M$)
+

user@localhost ~$ sqlplus tc@orcl
sqlplus tc@orcl

SQL*Plus: Release 12.1.0.2.0 Production on Mon Jul 13 19:50:14 2015

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Enter password: 
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20101: Access is denied...
ORA-06512: at line 1


Enter user-name: tc
Enter password: 
Last Successful login time: Mon Jul 13 2015 19:48:23 +06:00

Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> select sys_context( 'userenv', 'ip_address') from dual;

SYS_CONTEXT('USERENV','IP_ADDRESS')
--------------------------------------------------------------------------------


SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
user@localhost ~$ export TWO_TASK=orcl
user@localhost ~$ sqlplus tc@orcl
sqlplus tc@orcl

SQL*Plus: Release 12.1.0.2.0 Production on Mon Jul 13 19:50:38 2015

Copyright (c) 1982, 2014, Oracle.  All rights reserved.

Enter password: 
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20101: Access is denied...
ORA-06512: at line 1


Enter user-name: tc
Enter password: 
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20101: Access is denied...
ORA-06512: at line 1
13 июл 15, 16:58    [17886647]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
KyRo
Member

Откуда: г.Киев
Сообщений: 361
Чего то не получилось у меня повторить Ваш эксперимент

D:\oracle\product\10.2.0\db_1\BIN>echo %TWO_TASK%
standby2

D:\oracle\product\10.2.0\db_1\BIN>sqlplus sunduch1@standby2

SQL*Plus: Release 10.2.0.5.0 - Production on ╧φ. ╦Φ∩ 13 17:22:54 2015

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Enter password:
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20099: Access is denied for user SUNDUCH1 from 10.1.32.180
WORKGROUP\ORACLE-TEST FALSE
ORA-06512: at line 61


Enter user-name: sunduch1
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64
bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

D:\oracle\product\10.2.0\db_1\BIN>sqlplus sunduch1

SQL*Plus: Release 10.2.0.5.0 - Production on ╧φ. ╦Φ∩ 13 17:23:39 2015

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64
bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
13 июл 15, 17:26    [17886868]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
Nobody1111
Guest
Elic
KyRo
делаю повторную попытку
define _CONNECT_IDENTIFIER

Zloxa
не видно, что второй раз вы подключаетесь по тому же самому подключению, что и в первый.
Видно, что не по тому же.


+1
13 июл 15, 19:11    [17887280]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
KyRo
Member

Откуда: г.Киев
Сообщений: 361
Я возможно чего то не понимаю.
Но разве вот тут не показано в какой инстанс происходит соединение ?

D:\oracle\product\10.2.0\db_1\BIN>sqlplus sunduch1@standby2

SQL*Plus: Release 10.2.0.5.0 - Production on ╧φ. ╦Φ∩ 13 09:12:14 2015

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Enter password:
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20099: Access is denied for user SUNDUCH1 from 10.1.32.180
WORKGROUP\ORACLE-TEST FALSE
ORA-06512: at line 59


Enter user-name: sunduch1
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show user
USER is "SUNDUCH1"
SQL> define _CONNECT_IDENTIFIER;
DEFINE _CONNECT_IDENTIFIER = "standby2" (CHAR)
SQL>


Возможно я не прав. Объясните по подробне плиз.
14 июл 15, 08:51    [17888498]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
Elic
Member

Откуда:
Сообщений: 29979
KyRo
Но разве вот тут не показано
Это всего лишь переменная, устанавливаемая, например, во время последней попытки соединения (коей повторный ввод пароля не обязан являться). Если ты сам не в состоянии сам определить, к какому же экземпляру ты подключился, то попробуй после "успешного" подключения подключиться ещё раз:
connect &_USER@&_CONNECT_IDENTIFIER
14 июл 15, 09:11    [17888556]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
KyRo
Member

Откуда: г.Киев
Сообщений: 361
Вы правы , если сделать после успешного соеденения еще раз реконект то я получаю отлуп:

D:\oracle\product\10.2.0\db_1\BIN>sqlplus sunduch1@standby2

SQL*Plus: Release 10.2.0.5.0 - Production on ┬≥. ╦Φ∩ 14 09:20:39 2015

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Enter password:
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20099: Access is denied for user SUNDUCH1 from **
WORKGROUP\ORACLE-TEST FALSE
ORA-06512: at line 61


Enter user-name: sunduch1
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> connect &_USER@&_CONNECT_IDENTIFIER
Enter password:
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20099: Access is denied for user SUNDUCH1 from **
WORKGROUP\ORACLE-TEST FALSE
ORA-06512: at line 61


Но если все же действовать так как я писал, то пользователь у которого нет доступа так и попадает в целевую БД и способен выполнять запросы :

D:\oracle\product\10.2.0\db_1\BIN>sqlplus.exe sunduch1@standby2

SQL*Plus: Release 10.2.0.5.0 - Production on ┬≥. ╦Φ∩ 14 09:29:12 2015

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

Enter password:
ERROR:
ORA-00604: error occurred at recursive SQL level 1
ORA-20099: Access is denied for user SUNDUCH1 from **
WORKGROUP\ORACLE-TEST FALSE
ORA-06512: at line 61


Enter user-name: sunduch1
Enter password:

Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> set sqlprompt '_user@&_connect_identifier>'
SUNDUCH1@standby2>select count(*) from  ***.maxusergroups;

  COUNT(*)
----------
      1251

SUNDUCH1@standby2>
14 июл 15, 09:34    [17888660]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
-2-
Member

Откуда:
Сообщений: 15330
KyRo
пользователь у которого нет доступа
по прежнему игнорируешь суть. твои правила не работают в определенной ситуации, а не механизм триггера.
логируй те критерии, что ты используешь для отказа вне зависимости от успешности логона. и сравнивай, почему твой триггер работает иначе, чем ты полагаешь. ну и данные аудита смотри, что логон попадает именно в эту бд.
14 июл 15, 09:43    [17888696]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
Elic
Member

Откуда:
Сообщений: 29979
KyRo
SQL> set sqlprompt '_user@&_connect_identifier>'
Elic
ты не в состоянии сам определить, к какому же экземпляру ты подключился
14 июл 15, 10:11    [17888846]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
Alex URS
Member

Откуда: 0f17
Сообщений: 226
KyRo
Добрый день,

.. отсеивающий соединения пользователей с заданным ip... ?


а что используется в качестве определения ip?
sys_context('userenv','ip_address') или dbms_standard.client_ip_address ?
14 июл 15, 12:21    [17889484]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по logon triger  [new]
KyRo
Member

Откуда: г.Киев
Сообщений: 361
C тригером разобрался.
Как тут упомяналось, проблема была в типе соединения.
В случае соединения через листенер - ip отображался в соединении и все отрабатывало как следует. В случае bequeath connection ip в соединении не отображалось. Тригер воспринимал данного пользователя как системного и пропускал коннекшн.

Соответственно при моих попытках , первое соединение было через листенер ,а уже последующее через bequeath. Данное поведение тригера учел и одновременно почитал что такое bequeath.

Всем спасибо за ответы.
14 июл 15, 16:58    [17891327]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить