LINUX.ORG.RU
ФорумAdmin

Oracle не стартует автоматически.

 


0

1

Здравствуйте! Обратились ко мне за помощью . Перестал автоматически грузиться Oracle . Но вручную инстанс базы запускается из sqlplus от sysdba успешно, но когда я запускаю от от пользователя 'oracle' , то в startup.log получаю

SQL*Plus: Release 10.2.0.1.0 - Production on --. ?- 21 06:11:06 2020

Copyright (c) 1982, 2005, Oracle. All rights reserved.

connect / as sysdba>ORA-01031: insufficient privileges connect / as sysdba> /opt/oracle/product/10.2.0/bin/dbstart: Database instance «FBD» warm started.

На клиенте ошибки :

ORA-01034 ORA-27101 Linux error 2: No such file or directory

Переменные окружения все присутствуют. Пути правильные Подскажите, плз, где что контрольнуть?

.bash_profile:

#!/bin/bash

# User specific environment and startup programs

        TZ=MET; export TZ
        PATH=$PATH:$HOME/bin
        ENV=$HOME/.bashrc
        BASH_ENV=$HOME/.bashrc
        USERNAME=`whoami`
        POSTFIX=/usr/local/postfix
        # LANG=en_US.UTF-8
        LANG=ru_RU.UTF8
        COLUMNS=130
        LINES=45
        export USERNAME ENV COLUMNS LINES TERM PS1 PS2 PATH POSTFIX BASH_ENV LANG

# Setup the correct Terminal-Type

        if [ `tty` != "/dev/tty1" ]
        then
                TERM=linux
                #TERM=vt100
        else
                # The only wellknown Terminal-Type is "vt100"

                TERM=linux
                #TERM=vt100
        fi

# Setup Terminal

        stty erase "^H" kill "^U" intr "^C" eof "^D"
        stty cs8 -parenb -istrip hupcl ixon ixoff tabs

# Set up shell environment

        # set -u                                # error if undefined variable.
        trap "echo -e 'logout $LOGNAME'" 0      # what to do on exit.

# Set up shell variables:

        # MAIL=/var/spool/mail/$LOGNAME
        # don't export, so only login shell checks.

# Setup ORACLE environment

        ORACLE_HOME=/opt/oracle/product/10.2.0; export ORACLE_HOME
        ORACLE_SID=FBD; export ORACLE_SID
        ORACLE_TERM=xterm; export ORACLE_TERM
        ORACLE_OWNER=oracle; export ORACLE_OWNER
#       TNS_ADMIN=/home/oracle/config/10.2.0 export TNS_ADMIN
        NLS_LANG=UKRAINIAN_UKRAINE.CL8MSWIN1251; export NLS_LANG
        ORA_NLS10=${ORACLE_HOME}/nls/data; export ORA_NLS10
        CLASSPATH=${CLASSPATH}:${ORACLE_HOME}/jdbc/lib/classes12.zip
        LD_LIBRARY_PATH=${ORACLE_HOME}/lib; export LD_LIBRARY_PATH
        DISABLE_HUGETLBFS=1; export DISABLE_HUGETLBFS

# Set up the search paths:

        PATH=${PATH}:${ORACLE_HOME}/bin:${POSTFIX}/bin:${POSTFIX}/sbin:${POSTFIX}/sendmail
        PATH=${PATH}:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin
        export PATH

# Set date in European-Form

        echo -e " "
        date '+Date: %d.%m.%y Time: %H:%M:%S'
        echo -e " "

        uname -a

# clean shell-history file .sh_history
        : > $HOME/.bash_history

# Show last login

        cat .lastlogin
        term=`tty`
        echo -e "Last login at `date '+%H:%M, %h %d'` on $term" >.lastlogin
        echo -e " "

        if [ $LOGNAME = "root" ]
        then
                echo -e "WARNING: YOU ARE SUPERUSER !!!"
                echo -e " "
        fi

# Set Shell Limits for user oracle

        if [ ${USER} = "oracle" ]; then
                if [ ${SHELL} = "/bin/ksh" ]; then
                        ulimit -p 16384
                        ulimit -n 65536
                else
                        ulimit -u 16384 -n 65536
                fi
        fi

# Get the aliases and functions

        if [ -f ~/.bashrc ]; then
                . ~/.bashrc
        fi

        umask 022

tnsnames.ora на сервере :
SERVAK =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.30.231)(PORT = 1521))
    (CONNECT_DATA =
      (SID = FBD)
      (SRVR = DEDICATED)
    )
  )
tnsnames.ora на клиенте :
SERVAK =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = SERVAK)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = FBD)
    )
  )



Последнее исправление: fbb (всего исправлений: 1)

От какого пользователя пускается, а от какого нет(as sysdba)? Непонятно Для подключения as sysdba пользователь должен быть в группе dba

anonymous
()
Ответ на: комментарий от anonymous

Oracle не стартует автоматически

Именно

fbb
() автор топика
Ответ на: комментарий от anonymous

Oracle не стартует автоматически

Коротко :
Пока не startup из sqlplus as sysdba -

ORA-01034 ORA-27101 Linux error 2: No such file or directory

Явно не стартует oracle

fbb
() автор топика
Последнее исправление: fbb (всего исправлений: 1)
Ответ на: Oracle не стартует автоматически от fbb

Т е если вручную открываешь БД, то проблем нет?
А если делаешь ребут компа - инстанс не стартован?\

Ну дык смотри скрипты запуска в init.d или где они у тебя …
То, что ты привел - это только переменные окружения

anonymous
()
Ответ на: комментарий от anonymous

Именно так. До дыр пересмотрел. Может слепой :)
listener стартует, привожу только старт базы:

#oratab
FBD:/opt/oracle/product/10.2.0:Y
в init.d dbora:
#!/sbin/runscript
# Akadia AG, Arvenweg 4, CH-3604 Thun
# ----------------------------------------------------------------------
# File:       dbora
#
# Autor:      Martin Zahn / 10.03.2004
#
# Purpose:    Startup Oracle Database(s) defined in
#             /etc/oratab
# ----------------------------------------------------------------------

# NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1; export NLS_LANG
ORACLE_OWNER=oracle; export ORACLE_OWNER
ORACLE_SCRIPTS_DIR=/home/oracle/config/adm; export ORACLE_SCRIPTS_DIR

depend() {
    need net
}

start() {
    ebegin "Starting Oracle"
    if [ ! -f $ORACLE_SCRIPTS_DIR/dbstart ]
    then
        echo "Oracle not started (no dbstart script)"
    else
        su - $ORACLE_OWNER -c $ORACLE_SCRIPTS_DIR/dbstart
    fi
    eend $? "Failed to start Oracle."
}

stop() {
    ebegin "Stopping Oracle"
    if [ ! -f $ORACLE_SCRIPTS_DIR/dbshut ]
    then
        echo "Oracle not started (no dbshut script)"
    else
        su - $ORACLE_OWNER -c $ORACLE_SCRIPTS_DIR/dbshut
    fi
    eend $? "Failed to stop Oracle."
}

dbstart и dbshut присутствуют в $ORACLE_SCRIPTS_DIR
не срабатывает сам dbstart, но startup.log пустой, не знаю где еще смотреть.

fbb
() автор топика
Последнее исправление: fbb (всего исправлений: 1)
Ответ на: комментарий от bigbit

Что-то чудили с базой на серваке (какой-то «специалист»). Толком не знаю. Не у кого спросить. Сервак не мой. Ко мне уже обратились , когда гавкнуло. есть подозрение, что пытались откатить на запущеном инстансе, но не факт. Пороюсь в trc, может что-то выясню

fbb
() автор топика
Последнее исправление: fbb (всего исправлений: 2)

что дает вывод, на машине где стартует сервис ?

env | grep ORACLE
anonymous
()
Ответ на: комментарий от fbb

Гляжу я на скрипт инициализации - неужели Оракл на Генту взгромоздили?

Если база стартует нормально через sqlplus, а через dbstart - нет, то надо трассировать скрипт dbstart и разбираться, в чем отличие (он ведь точно также sqlplus вызывает).

bigbit ★★★★★
()
Ответ на: комментарий от bigbit

неужели Оракл на Генту взгромоздили? Ему там самое место ))

anonymous
()
Ответ на: комментарий от bigbit

При трассировке ничего необычного не увидел . сам скрипт -

:
#
# $Id: dbstart.sh.pp 30-oct-2003.17:04:23 mwidjaja Exp $ 
# Copyright (c) 1991, 2003, Oracle Corporation.  All rights reserved.  
#

###################################
# 
# usage: dbstart
#
# This script is used to start ORACLE from /etc/rc(.local).
# It should ONLY be executed as part of the system boot procedure.
#
#####################################
#set -x
ORATAB=/etc/oratab

trap 'exit' 1 2 3
case $ORACLE_TRACE in
    T) set -x ;;
esac
    
# Set path if path not set (if called from /etc/rc)
case $PATH in
    "") PATH=/bin:/usr/bin:/etc
        export PATH ;;
esac
# Save LD_LIBRARY_PATH
SAVE_LLP=$LD_LIBRARY_PATH

#
# Loop for every entry in oratab file and and try to start
# that ORACLE
#

cat $ORATAB | while read LINE
do
    case $LINE in
        \#*)                ;;        #comment-line in oratab
        *)
#       Proceed only if last field is 'Y'.
#       Entries whose last field is not Y or N are not DB entry, ignore them.
        if [ "`echo $LINE | awk -F: '{print $3}' -`" = "Y" ] ; then
            ORACLE_SID=`echo $LINE | awk -F: '{print $1}' -`
            if [ "$ORACLE_SID" = '*' ] ; then
                ORACLE_SID=""
            fi
#           Called programs use same database ID
            export ORACLE_SID
            ORACLE_HOME=`echo $LINE | awk -F: '{print $2}' -`
#           Called scripts use same home directory
            export ORACLE_HOME
#           Put $ORACLE_HOME/bin into PATH and export.
            PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/etc ; export PATH
#           add for bug # 652997
            LD_LIBRARY_PATH=${SAVE_LLP}:${ORACLE_HOME}/lib ; export LD_LIBRARY_PATH
            PFILE=${ORACLE_HOME}/dbs/init${ORACLE_SID}.ora
            SPFILE=${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora
            SPFILE1=${ORACLE_HOME}/dbs/spfile.ora

#            See if it is a V6 or V7 database
            VERSION=undef
            if [ -f $ORACLE_HOME/bin/sqldba ] ; then
                SQLDBA=sqldba
                VERSION=`$ORACLE_HOME/bin/sqldba command=exit | awk '
                    /SQL\*DBA: (Release|Version)/ {split($3, V, ".") ;
                    print V[1]}'`
                case $VERSION in
		    "6") ;;
		    *) VERSION="internal" ;;
	        esac
            else
                if [ -f $ORACLE_HOME/bin/svrmgrl ] ; then
                    SQLDBA=svrmgrl
		    VERSION="internal"
                else
                    SQLDBA="sqlplus /nolog"
                fi
            fi

            STATUS=1
            if [ -f $ORACLE_HOME/dbs/sgadef${ORACLE_SID}.dbf ] ; then
                STATUS="-1"
            fi
            if [ -f $ORACLE_HOME/dbs/sgadef${ORACLE_SID}.ora ] ; then
                STATUS="-1"
            fi
            pmon=`ps -ef | egrep pmon_$ORACLE_SID  | grep -v grep`
            if [ "$pmon" != "" ]; 
            then
                STATUS="-1"
                echo "Database \"${ORACLE_SID}\" already started."
            fi

            if test $STATUS -eq -1 ; then
                echo ""
                echo "Database \"${ORACLE_SID}\" possibly left running when system went down (system crash?)."
                echo "Notify Database Administrator."
                case $VERSION in
                    "6")  sqldba "command=shutdown abort" ;;
                    "internal")  $SQLDBA $args <<EOF
connect internal
shutdown abort
EOF
                        ;;
                    *)  $SQLDBA $args <<EOF
connect /as sysdba
shutdown abort
EOF
                        ;;
                esac
                if test $? -eq 0 ; then
                    STATUS=1
                else
                    echo "Database \"${ORACLE_SID}\" NOT started."
                fi
            fi

            if test $STATUS -eq 1 ; then
                if [ -f $SPFILE -o -f $SPFILE1 -o -f $PFILE ] ; then
                    case $VERSION in
                        "6")  sqldba command=startup ;;
                        "internal")  $SQLDBA <<EOF
connect internal
startup
EOF
                            ;;
                        *)  $SQLDBA <<EOF
connect / as sysdba
startup
EOF
                            ;;
                    esac

                    if test $? -eq 0 ; then
                        echo ""
                        echo "Database \"${ORACLE_SID}\" warm started."
                    else
                        echo ""
                        echo "Database \"${ORACLE_SID}\" NOT started."
                    fi
                else
                    echo ""
                    echo "Can't find init file for Database \"${ORACLE_SID}\"."
                    echo "Database \"${ORACLE_SID}\" NOT started."
                fi
            fi
        fi
        ;;
    esac
done

fbb
() автор топика
Ответ на: комментарий от fbb

Различие вижу только в одном - вручную ты делаешь «sqlplus / as sysdba», а dbstart делает так:

sqlplus /nolog
connect / as sysdba

bigbit ★★★★★
()
Ответ на: комментарий от fbb

Посмотри, похоже твой случай: https://community.oracle.com/thread/698728?start=0&tstart=0

Но то, что помогло ему, может не помочь тебе.

В этих нотах по шагам расписано, что проверять. Пройдись по ним.

Troubleshooting ORA-1031: Insufficient Privileges While Connecting As SYSDBA [ID 730067.1]
UNIX: Checklist for Resolving Connect AS SYSDBA Issues [ID 69642.1]

bigbit ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.