Назад | Перейти на главную страницу

Как найти номер порта DB2 (примечание: он не использует порт, указанный в файле служб, а список db2 отсутствует в выводе команды netstat) в Windows?

Я хочу найти порт DB2 в windows, помогите пожалуйста. Немного информации:

  1. DB2 v 9.7 Personal Edition - новая / свежая установка
  2. Команда netstat не отображает порт db2.
  3. Отсутствующая запись db2 отсутствовала в файле system32 \ drivers \ etc \ services, поэтому была сделана запись - "db2c_DB2 50000 / tcp"
  4. возможность запускать db2 с помощью центра управления и создавать таблицы и вставлять строки
  5. возможность запускать db2 с помощью CLP и выполнять операции

На самом деле я пытаюсь подключиться к DB2, используя «jdbc: db2: //127.0.0.1: 50000 / TEST» в качестве URL-адреса подключения из Java, но я получаю сообщение об ошибке: «Exception java.net.ConnectException: Ошибка открытия сокета для сервер /127.0.0.1 на порте 50 000 с сообщением: Используется ссылка на соединение: connect. ERRORCODE = -4499, SQLSTATE = 08001 "

Я обнаружил, что БД запущена и работает, но не прослушивает порт 50000, хотя упоминается в файле служб. Итак, db2 прослушивает какой-то другой порт, но,

  1. какой порт он использует?
  2. почему он не использует порт # 50000, как указано в файле служб?
  3. почему команда netstat не выводит информацию о службах и портах db2?

Заранее большое спасибо.

Сначала убедитесь, что TCP comms включен,

db2cmd -i -w
db2set DB2COMM=npipe,tcpip
db2stop
db2start

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

db2cmd -i -w
db2 get dbm cfg | find "SVCENAME"

Должна получиться такая строка,

TCP/IP Service name                          (SVCENAME) = db2c_DB2

В приведенном выше примере должен быть номер порта, если он не был установлен на порт по умолчанию, как вы можете видеть, моя конфигурация по умолчанию (= 50000)

Кажется, что если параметр DBM имени службы пуст, это означает, что TCP-соединения невозможны. Это не проблема, если вы собираетесь использовать DB2 локально, обращаясь к базе данных с того же компьютера.

Чтобы настроить TCP-соединения, вы должны выполнить шаги, описанные в других ответах. Однако наличие экземпляра без имени службы не указывает на проблему.

На этой странице обсуждается проблема: http://groups.google.com/group/comp.databases.ibm-db2/browse_thread/thread/a515365a5d04af81

Поскольку JDBC использует TCP-соединение, вам действительно нужно изменить конфигурацию вашего экземпляра, чтобы подключиться к базе данных.

Перво-наперво, установка показала ошибку в конце. Я не помню ошибку, но мне не удалось запустить db2. Итак, погуглил и нашел простое решение, и оно сработало. Я мог запускать и выполнять операции с базами данных, как это видно в OP. Но поиск номера порта все еще продолжался. После дальнейшего поиска в Google я обнаружил, что значение "SVCENAME" пустое, затем обновил параметр и ввел номер порта в файл служб. Даже тогда это не помогло. В крайнем случае просто переустановите DB2, и все заработало. Просто примечание: успешная установка будет иметь значение "SVCENAME" в конфигурации, и db2 сделает запись в файле служб для имени службы и порта.

Вы не можете сделать это с Java. Вам нужно это узнать из dbadmin или самой конфигурации DB / 2. Ваш пункт (3) на самом деле ничего не дал: файл 'services' является только ориентировочным или предназначен для использования некоторыми клиентами; он не говорит DB / 2, что делать. Это делает только собственная конфигурация DB / 2.

Поскольку вы можете запускать DB2 и подключаться к локальной базе данных из Центра управления (через драйвер CLI с использованием разделяемой памяти), одна или несколько из следующих проблем могут препятствовать соединениям JDBC, которые обмениваются данными через TCP / IP.

  1. DB2SET должен отображать TCPIP для параметра DB2COMM.
  2. SVCENAME в конфигурации DBM должно отражать действительное имя службы TCP или, предпочтительно, номер порта TCP, который не используется иным образом, например 50000.
  3. Брандмауэр Windows должен разрешать входящие соединения на TCP-порт, который вы выбрали для своего экземпляра DB2.

Изменения в реестре DB2 (через DB2SET) или в конфигурации DBM требуют остановки и запуска DB2, прежде чем они вступят в силу.