база данных не указана в DB2

У меня есть несколько баз данных на DB2 на сервере AIX.

Я вхожу в систему с идентификатором пользователя экземпляра DB2 "chandroo" (имея профиль db2, установленный автоматически при входе в систему), и выполняю команду, как показано ниже, но не получаю результата.

chandroo@xxxxxxxx::/db2/chandroo> db2 list db directory
chandroo@xxxxxxxx::/db2/chandroo>

Однако, если я вызову db2 непосредственно из каталога установки, я смогу увидеть записи, и я понятия не имею, почему это происходит.

chandroo@xxxxxxxxx::/opt/IBM/db2/V9.5/bin> ./db2 list db directory

 System Database Directory

 Number of entries in the directory = 2

Database 1 entry:

 Database alias                       = CHANDB
 Database name                        = CHANDB
 Local database directory             = /db2/chandroo/db
 Database release level               = c.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =

Database 2 entry:

 Database alias                       = CHAN
 Database name                        = CHAN
 Local database directory             = /db2/chandroo/db
 Database release level               = c.00
 Comment                              =
 Directory entry type                 = Indirect
 Catalog database partition number    = 0
 Alternate server hostname            =
 Alternate server port number         =

chandroo@xxxxxxxxx::/opt/IBM/db2/V9.5/bin>

person Chandru    schedule 07.08.2013    source источник
comment
Я также отмечаю, что ни одна из команд db2 не работает для этого экземпляра, chandroo@xxxxxxxx::/db2/chandroo› db2 get dbm cfg chandroo@xxxxxxxx::/db2/chandroo›   -  person Chandru    schedule 08.08.2013
comment
Когда вы входите в систему как пользователь chandroo, что вы получаете от команды which db2?   -  person Ian Bjorhovde    schedule 09.08.2013
comment
@IanBjorhovde: я думаю, вы уловили суть. chandroo@XXXXXXXX::/db2/chandroo> which db2 ./db2 Но если я укажу другой экземпляр, как показано ниже, в результате я получу путь. Возможно причина в этом? instant1@XXXXXXXXX::/home/instant1> which db2 /home/instant1/sqllib/bin/db2   -  person Chandru    schedule 10.08.2013
comment
Что такое файл /db2/chandroo/db2? Это двоичный файл, сценарий оболочки и т. Д.? Я бы сделал его неисполняемым (chmod a-x /db2/chandroo/db2), проверил, что which db2 возвращает правильный исполняемый файл (/db2/chandroo/sqllib/bin/db2), а затем посмотрел, все ли снова работает.   -  person Ian Bjorhovde    schedule 11.08.2013
comment
@IanBjorhovde: ты спас мой день!!! Я не могу проголосовать, так как я дважды нажал кнопку голосования и получил сообщение об ошибке: Вы уже отменили свой голос по этому комментарию; вы не можете проголосовать за это снова   -  person Chandru    schedule 12.08.2013


Ответы (1)


Похоже, что сценарий db2profile не используется должным образом. Переменные среды, определенные в этом сценарии, должны быть установлены для вашего текущего процесса оболочки AIX, а не для временного подпроцесса, запускаемого sh, ksh или bash. Это достигается путем задания одной точки вместо имени программы для запуска сценария db2profile. Разница тонкая, но важная.

Если это проблема, запуск этой команды решит проблему, правильно инициализировав текущий процесс оболочки:

. ~chandroo/sqllib/db2profile

и команды типа db2 list db directory начнут работать.

Следующий шаг — определить, что препятствует этому в вашем сценарии запуска $HOME/.profile. Если вы видите, что вызов db2profile использует правильный синтаксис, как показано выше, возможно, возникла проблема с разрешениями на выполнение для $HOME/.profile.

person Fred Sobotka    schedule 08.08.2013
comment
Я попробовал ваш совет, но проблема все еще сохраняется. Вот мой файл .profile ниже: chandroo@a25cirdb022::/db2/chandroo> cat .profile PATH=/usr/bin:/etc:/usr/sbin:/usr/ucb:$HOME/bin:/usr/bin/X11:/sbin:. export PATH if [ -f /db2/chandroo/sqllib/db2profile ]; then . /db2/chandroo/sqllib/db2profile fi - person Chandru; 10.08.2013
comment
Кроме того, я заметил эти необычные вещи, как показано ниже: chandroo@a25cirdb022::/db2/chandroo> db2 asdasd chandroo@a25cirdb022::/db2/chandroo> db2 some argument out of space chandroo@a25cirdb022::/db2/chandroo> db2 xyz chandroo@a25cirdb022::/db2/chandroo> DB2 не выдает ошибку из-за недопустимого аргумента. - person Chandru; 10.08.2013