суббота, 27 февраля 2010 г.

SQLNET.VALID_NODE_CHECKING

Фича, которая позволяет запрещать подключение клиентов через LISTENER.

Изначально имеем пустой файл sqlnet.ora на сервере:
> cat sqlnet.ora
>


С клиента у нас есть возможность подключиться к базе
C:>sqlplus sps/sps@v-pc-dev-3
SQL*Plus: Release 10.2.0.3.0 - Production on Sat Feb 27 20:36:28 2010
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Release 10.2.0.1.0 - Production
SQL>

Добавим в файл sqlnet.ora строки
tcp.validnode_checking=yes
tcp.excluded_nodes=(sphaera144)

и перезагружаем листенер командой
lsnrctl reloadПосле перезагрузки при подключении с клиента имеем:
C:\>sqlplus sps/sps@v-pc-dev-3
SQL*Plus: Release 10.2.0.3.0 - Production on Sat Feb 27 20:40:29 2010
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
ERROR:
ORA-12547: TNS:lost contact

Таким образом мы запретили подключаться к серверу с машины sphaera144. С остальных машин подключение разрешено.

ПРИМЕЧАНИЕ: если на сервере файла sqlnet.ora вообще не было и мы его создаем заново, то lsnrctl reload не хватает. Необходимо использовать lsnrctl stop/start.

Изменим строку в файле sqlnet.ora на сервере с tcp.excluded_nodes=(sphaera144) на tcp.invited_nodes=(sphaera144).
и перезапустим листенер lsnrctl reload.
Пробуем подключится с машины sphaera144
C:\>sqlplus sps/sps@v-pc-dev-3
SQL*Plus: Release 10.2.0.3.0 - Production on Sat Feb 27 20:45:43 2010
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Release 10.2.0.1.0 - Production
С другой машины имеем
C:\>sqlplus sps/sps@v-pc-dev-3
SQL*Plus: Release 10.2.0.3.0 - Production on Sat Feb 27 20:40:29 2010
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
ERROR:
ORA-12547: TNS:lost contact


Подключение разрешено только с SPHAERA144. Со всех остальных машин подключение запрещено.

Теперь добавим обе строки:
tcp.invited_nodes=(sphaera144)
tcp.excluded_nodes=(sphaera144)

После подключения:
C:\>sqlplus sps/sps@v-pc-dev-3
SQL*Plus: Release 10.2.0.3.0 - Production on Sat Feb 27 20:45:43 2010
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
Connected to:
Oracle Database 10g Release 10.2.0.1.0 - Production

INVITED_NODES имеем преимущество перед EXCLUDED_NODES

выводы
1. Если нет файла sqlnet.ora на сервере, то listener необходимо перезагружать полностью. В остальных случаях хватает lsnrctl reload
2. При добавлении адреса в invited_nodes все остальные адреса запрещены.
3. invited_nodes имеет преимущество перед excluded_nodes -- подключиться можно только с тех адресов, которые разрешены.

Комментариев нет: