среда, 31 октября 2007 г.

Автоматическая регистрация в Listener

По материалам Металинка 235562.1.

1. Автоматическая регистрация осуществляется PMON (судя по всему приблизительно раз в минуту).
PMON sends the current state and load of the instance and SharedServers/Dispatchers.
Файл Listener.ora при этом вообще не требуется (если прописаны в нем что-то прописано, то они будут выводится со статусом unknown).
Для регистрации ручками можно использовать команду:
ALTER SYSTEM REGISTER;

2. Параметры инициализации, которые влияют на регистрацию:
SERVICE_NAMES for the database service name (какой сервис реализует экземпляр)
INSTANCE_NAME for the instance name
The value of SERVICE_NAMES parameter defaults to the global database name, a name comprising the DB_NAME and DB_DOMAIN parameters in the initialization parameter file, entered during installation or database creation. The value of INSTANCE_NAME parameter defaults to the SID, entered during installation or database creation.
For example:
SERVICE_NAMES=sales.us.acme.com
INSTANCE_NAME=sales

3. Регистрация:
  • Листенер на порту 1521
  • LOCAL_LISTENER (на той же машине, но на другом порту)
  • на MTS можно указывать атрибут в DISPATCHERS

Пример:
LOCAL_LISTENER=listener1
Listener1 must be resolvable on the server so it would need to be defined in the TNSNAMES.ORA file as follows:
listener1=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=sales-server)(PORT=1421))
)

Или
LOCAL_LISTENER="(address=(protocol=tcp) (host=)(port=))"
  • REMOTE_LISTENER - прописывается аналогично LOCAL_LISTENER

4. ALTER SYSTEM SET REMOTE_LISTENER=''; - разрегестрирует информацию в листенере.

PMON регистрирует в листенере SERVICE_NAME(DB_NAME+DB_DOMAIN). Посмотреть, что он там нарегестрировал можно через lsnrctl services. Подключаться мы должны к тому же сервису, что и зарегестрирован.
При автоматической регистрации и при старте листенеру передается значение TNS_ADMIN (зачем он ему нужен?)

5. Для отмены автоматической регистрации можно указать параметр LOCAL_LISTENER в никуда или пересадить листенер на другой порт.