Недавно довелось мне столкнуться с одной занятной проблемой.
Собственно, нельзя сказать, чтобы я сталкивался с ней впервые, однако очень уж давно это было, уже и не помню, что, собственно происходило. Так, смутное воспоминание.
В двух словах суть дела следующая. После повреждения файловой системы и ее восстановления на Солярис, оракловые сервисы стали запускаться не полностью.
Стартовало все. Кроме листенера. С такой вот ошибкой:
Никакие перезапуски не помогали. Permission denied - и все тут.
Что делает правильный айтишник, наткнувшись на проблему? Правильно, открывает мануал. Читаю Oracle Error Messages and Codes - и вижу фигу. В вольном переводе - "Получите необходимые права и повторите операцию". И все.
"Куда теперь, Джеймс?"
Что делает правильный оракловый админ дальше? Правильно, включает трассировку. Уровня ADMIN.
Смотрим в трассировку и видим - ругань происходит при запуске листенера на IPC в связи с отсутствием прав владельца софта Oracle на файлик sEXTPROC0 в /var/tmp/.oracle. Владелец root вместо oracle:
"Ага! - сказали мужики."
Останавливаем все сервисы, удаляем все файлы в директории /var/tmp/.oracle:
Вуаля:
"Реконструкция завершена."
В двух словах суть дела следующая. После повреждения файловой системы и ее восстановления на Солярис, оракловые сервисы стали запускаться не полностью.
Стартовало все. Кроме листенера. С такой вот ошибкой:
TNSLSNR for Solaris: Version 10.2.0.4.0 - Production
System parameter file is /data/OraHome1/app/oracle/product/10.2.0/network/admin/listener.ora
Log messages written to /data/OraHome1/app/oracle/product/10.2.0/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=pegasus.yvoinov.com)(PORT=1521)))
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC0)))
TNS-12546: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00516: Permission denied
Solaris Error: 13: Permission denied
Listener failed to start. See the error message(s) above...
Никакие перезапуски не помогали. Permission denied - и все тут.
Что делает правильный айтишник, наткнувшись на проблему? Правильно, открывает мануал. Читаю Oracle Error Messages and Codes - и вижу фигу. В вольном переводе - "Получите необходимые права и повторите операцию". И все.
"Куда теперь, Джеймс?"
Что делает правильный оракловый админ дальше? Правильно, включает трассировку. Уровня ADMIN.
Смотрим в трассировку и видим - ругань происходит при запуске листенера на IPC в связи с отсутствием прав владельца софта Oracle на файлик sEXTPROC0 в /var/tmp/.oracle. Владелец root вместо oracle:
root @ pegasus /var/tmp # ls -al
total 6
drwxrwxrwt 3 root sys 3 Dec 25 03:02 .
drwxr-xr-x 43 root sys 43 Nov 21 13:36 ..
drwxrwxrwt 2 oracle dba 4 Dec 25 03:02 .oracle
root @ pegasus /var/tmp # cd .oracle
root @ pegasus /var/tmp/.oracle # ls -al
total 4
drwxrwxrwt 2 oracle dba 4 Dec 25 03:02 .
drwxrwxrwt 3 root sys 3 Dec 25 03:02 ..
srwxrwxrwx 1 oracle dba 0 Dec 25 03:02 s#2729.1
srwxrwxrwx 1 root root 0 Dec 25 03:02 sEXTPROC0
"Ага! - сказали мужики."
Останавливаем все сервисы, удаляем все файлы в директории /var/tmp/.oracle:
root @ pegasus /var/tmp # rm -Rf .oracle
Вуаля:
oracle @ pegasus /data/OraHome1/app/oracle/product/10.2.0/network/admin $ lsnrctl start
LSNRCTL for Solaris: Version 10.2.0.4.0 - Production on 25-ДЕК-2009 03:00:56
Copyright (c) 1991, 2007, Oracle. All rights reserved.
Starting /data/OraHome1/app/oracle/product/10.2.0/bin/tnslsnr: please wait...
TNSLSNR for Solaris: Version 10.2.0.4.0 - Production
System parameter file is /data/OraHome1/app/oracle/product/10.2.0/network/admin/listener.ora
Log messages written to /data/OraHome1/app/oracle/product/10.2.0/network/log/listener.log
Trace information written to /data/OraHome1/app/oracle/product/10.2.0/network/trace/listener.trc
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=pegasus.yvoinov.com)(PORT=1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=pegasus.yvoinov.com)(PORT=1521)(QUEUESIZE=10)(SEND_BUF_SIZE=65536)(RECV_BUF_SIZE=65536)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Solaris: Version 10.2.0.4.0 - Production
Start Date 25-ДЕК-2009 03:00:56
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level admin
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /data/OraHome1/app/oracle/product/10.2.0/network/admin/listener.ora
Listener Log File /data/OraHome1/app/oracle/product/10.2.0/network/log/listener.log
Listener Trace File /data/OraHome1/app/oracle/product/10.2.0/network/trace/listener.trc
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=pegasus.yvoinov.com)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "SUN10.yvoinov.com" has 1 instance(s).
Instance "SUN10", status UNKNOWN, has 1 handler(s) for this service...
Service "SUN10_XPT.yvoinov.com" has 1 instance(s).
Instance "SUN10", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
"Реконструкция завершена."
