Инсталляция ORACLE 10g. ORA-12547: TNS:lost contact ORA-27102: out of memory

dbstalker, 01 февраля

Проблемы при инсталляции ORACLE 10g Release 2 (10.2) for Linux x86-64, операционная система Red Hat Enterprise Linux AS release 4 (Nahant Update 4) 2.6.9 42.ELlargesmp (64-bit), платформа x86_64.

Возникло две проблемы:

  1. error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory ERROR: ORA-12547: TNS:lost contact
  2. startup nomount pfile="/opt/oracle/product/10.2.0/db_1/admin/my_db/scripts/init.ora";ORA-27102: out of memory Linux-x86_64 Error: 28: No space left on device
А теперь, как побороли эти проблемы.

Проблема первая.

Экземпляр не создается: на команды sqlplus /nolog connect / as sysdba получаем сообщение об ошибке.

На команду ldd $ORACLE_HOME/bin/oracle Получаем:

…
libaio.so.1 => file not found
libdl.so.2 => /lib64/libdl.so.2 (0x0000003d1b700000)
libm.so.6 => /lib64/tls/libm.so.6 (0x0000003d1b900000)
libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x0000003d1bf00000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003d1ef00000)
libc.so.6 => /lib64/tls/libc.so.6 (0x0000003d1b400000)
/lib64/ld-linux-x86-64.so.2 (0x000000552aaaa000)

Неужели не поставлена эта библиотека (асинхронный ввод-вывод)?

Есть такая библиотека:

$ rpm –q libaio
libaio-0.3.105-2

В чем же дело?

Перелопатив тьму всякой инфы, нашли следующие рекомендации:

  1. Solution: Install libaio and libaio-devel packages. If packages already installed and error still occurs try execute "ldconfig" as root. Выполнили команду ldconfig – проблема осталась.
  2. Relinking Oracle 10g to Enable Asynchronous I/O Support
    su - oracle
    $ cd $ORACLE_HOME/rdbms/lib
    $ make PL_ORALIBS=-laio -f ins_rdbms.mk async_on
    
    Выполнили – не помогло.
  3. Поставить библиотеку libaio более старой версии. Снесли библиотеку, поставили старую версию: $ rpm –q libaio libaio-0.3.96-3 О чудо!!!! Получилось.
    [oracle@srv36fsc lib]$ ldd /opt/oracle/product/10.2.0/bin/oracle
            libskgxp10.so => /opt/oracle/product/10.2.0/lib/libskgxp10.so (0x0000002a95557000)
            libhasgen10.so => /opt/oracle/product/10.2.0/lib/libhasgen10.so (0x0000002a95682000)
            libskgxn2.so => /opt/oracle/product/10.2.0/lib/libskgxn2.so (0x0000002a95875000)
            libocr10.so => /opt/oracle/product/10.2.0/lib/libocr10.so (0x0000002a95977000)
            libocrb10.so => /opt/oracle/product/10.2.0/lib/libocrb10.so (0x0000002a95adc000)
            libocrutl10.so => /opt/oracle/product/10.2.0/lib/libocrutl10.so (0x0000002a95c18000)
            libjox10.so => /opt/oracle/product/10.2.0/lib/libjox10.so (0x0000002a95d8d000)
            libclsra10.so => /opt/oracle/product/10.2.0/lib/libclsra10.so (0x0000002a96858000)
            libdbcfg10.so => /opt/oracle/product/10.2.0/lib/libdbcfg10.so (0x0000002a96960000)
            libnnz10.so => /opt/oracle/product/10.2.0/lib/libnnz10.so (0x0000002a96a7d000)
            libaio.so.1 => /usr/lib64/libaio.so.1 (0x00000033a8500000)
            libdl.so.2 => /lib64/libdl.so.2 (0x00000033a8c00000)
            libm.so.6 => /lib64/libm.so.6 (0x0000002a96f52000)
            libpthread.so.0 => /lib64/libpthread.so.0 (0x0000002a970d9000)
            libnsl.so.1 => /lib64/libnsl.so.1 (0x00000033ae000000)
            libc.so.6 => /lib64/libc.so.6 (0x0000002a9726e000)
            /lib64/ld-linux-x86-64.so.2 (0x00000033a8300000)
    
  4. Но осталась некая неудовлетворенность. Поставили снова libaio-0.3.105-2.

     [oracle@my_server bin]$ cd $ORACLE_HOME/rdbms/lib
    [oracle@my_server lib]$ ln -sf /usr/lib64/libaio.so.1 skgaio.o
    [oracle@my_server lib]$ make PL_ORALIBS=-laio -f ins_rdbms.mk async_on
    rm -f /opt/oracle/product/10.2.0/db_1/rdbms/lib/skgaioi.o
    cp /opt/oracle/product/10.2.0/db_1/rdbms/lib/skgaio.o /opt/oracle/product/10.2.0/db_1/rdbms/lib/skgaioi.o
    chmod 755 /opt/oracle/product/10.2.0/db_1/bin
    
     - Linking Oracle
    rm -f /opt/oracle/product/10.2.0/db_1/rdbms/lib/oracle
    gcc  -o /opt/oracle/product/10.2.0/db_1/rdbms/lib/oracle -L/opt/oracle/product/10.2.0/db_1/rdbms/lib/ -L/opt/oracle/product/10.2.0/db_1/lib/ -L/opt/oracle/product/10.2.0/db_1/lib/stubs/   -Wl,-E `test -f /opt/oracle/product/10.2.0/db_1/rdbms/lib/sskgpsmti.o && echo /opt/oracle/product/10.2.0/db_1/rdbms/lib/sskgpsmti.o` /opt/oracle/product/10.2.0/db_1/rdbms/lib/opimai.o /opt/oracle/product/10.2.0/db_1/rdbms/lib/ssoraed.o /opt/oracle/product/10.2.0/db_1/rdbms/lib/ttcsoi.o /opt/oracle/product/10.2.0/db_1/rdbms/lib/defopt.o  -Wl,--whole-archive -lperfsrv10 -Wl,--no-whole-archive /opt/oracle/product/10.2.0/db_1/lib/nautab.o /opt/oracle/product/10.2.0/db_1/lib/naeet.o /opt/oracle/product/10.2.0/db_1/lib/naect.o /opt/oracle/product/10.2.0/db_1/lib/naedhs.o /opt/oracle/product/10.2.0/db_1/rdbms/lib/config.o  -lserver10 -lodm10 -lnnet10 -lskgxp10 -lsnls10 -lnls10  -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 -lhasgen10 -lcore10 -lskgxn2 -locr10 -locrb10 -locrutl10 -lhasgen10 -lcore10 -lskgxn2   -lclient10  -lvsn10 -lcommon10 -lgeneric10 -lknlopt `if /usr/bin/ar tv /opt/oracle/product/10.2.0/db_1/rdbms/lib/libknlopt.a | grep xsyeolap.o > /dev/null 2>&1 ; then echo "-loraolap10" ; fi` -lslax10 -lpls10  -lplp10 -lserver10 -lclient10  -lvsn10 -lcommon10 -lgeneric10 -lknlopt -lslax10 -lpls10  -lplp10 -ljox10 -lserver10 -lclsra10 -ldbcfg10 -locijdbcst10 -lwwg  `cat /opt/oracle/product/10.2.0/db_1/lib/ldflags`    -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /opt/oracle/product/10.2.0/db_1/lib/ldflags`    -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lmm -lsnls10 -lnls10  -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat /opt/oracle/product/10.2.0/db_1/lib/ldflags`    -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /opt/oracle/product/10.2.0/db_1/lib/ldflags`    -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10   -lsnls10 -lnls10  -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `if /usr/bin/ar tv /opt/oracle/product/10.2.0/db_1/rdbms/lib/libknlopt.a | grep "kxmnsd.o" > /dev/null 2>&1 ; then echo " " ; else echo "-lordsdo10"; fi` -lctxc10 -lctx10 -lzx10 -lgx10 -lctx10 -lzx10 -lgx10 -lordimt10 -lsnls10 -lnls10  -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 -lsnls10 -lunls10  -lsnls10 -lnls10  -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 -laio    `cat /opt/oracle/product/10.2.0/db_1/lib/sysliblist` -Wl,-rpath,/opt/oracle/product/10.2.0/db_1/lib -lm    `cat /opt/oracle/product/10.2.0/db_1/lib/sysliblist` -ldl -lm   -L/opt/oracle/product/10.2.0/db_1/lib
    /opt/oracle/product/10.2.0/db_1/lib//libcore10.a(lcd.o)(.text+0xb71): In function `lcdprm':
    : warning: the `gets' function is dangerous and should not be used.
    mv -f /opt/oracle/product/10.2.0/db_1/bin/oracle /opt/oracle/product/10.2.0/db_1/bin/oracleO
    mv /opt/oracle/product/10.2.0/db_1/rdbms/lib/oracle /opt/oracle/product/10.2.0/db_1/bin/oracle
    chmod 6751 /opt/oracle/product/10.2.0/db_1/bin/oracle
    [oracle@my_server lib]$ rpm -qa | grep libaio
    libaio-0.3.105-2
    [oracle@my_server lib]$ cd $ORACLE_HOME/bin
    [oracle@my_server bin]$ ldd oracle
            libskgxp10.so => /opt/oracle/product/10.2.0/db_1/lib/libskgxp10.so (0x0000002a95557000)
            libhasgen10.so => /opt/oracle/product/10.2.0/db_1/lib/libhasgen10.so (0x0000002a95682000)
            libskgxn2.so => /opt/oracle/product/10.2.0/db_1/lib/libskgxn2.so (0x0000002a95875000)
            libocr10.so => /opt/oracle/product/10.2.0/db_1/lib/libocr10.so (0x0000002a95977000)
            libocrb10.so => /opt/oracle/product/10.2.0/db_1/lib/libocrb10.so (0x0000002a95adc000)
            libocrutl10.so => /opt/oracle/product/10.2.0/db_1/lib/libocrutl10.so (0x0000002a95c18000)
            libjox10.so => /opt/oracle/product/10.2.0/db_1/lib/libjox10.so (0x0000002a95d8d000)
            libclsra10.so => /opt/oracle/product/10.2.0/db_1/lib/libclsra10.so (0x0000002a96858000)
            libdbcfg10.so => /opt/oracle/product/10.2.0/db_1/lib/libdbcfg10.so (0x0000002a96960000)
            libnnz10.so => /opt/oracle/product/10.2.0/db_1/lib/libnnz10.so (0x0000002a96a7d000)
            libaio.so.1 => /usr/lib64/libaio.so.1 (0x0000002a96f41000)
            libdl.so.2 => /lib64/libdl.so.2 (0x0000003a9a500000)
            libm.so.6 => /lib64/tls/libm.so.6 (0x0000003a9a300000)
            libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x0000003a9ab00000)
            libnsl.so.1 => /lib64/libnsl.so.1 (0x0000003aa1e00000)
            libc.so.6 => /lib64/tls/libc.so.6 (0x0000003a9a000000)
            /lib64/ld-linux-x86-64.so.2 (0x0000003a99e00000)
    

    Теперь мне кажется, что можно было и не устанавливать старую версию. Скорее всего, когда мы делали Relinking, у нас были проблемы с символическими ссылками: где-то неправильно указали пути.

    Проблема вторая.

    Сервер у нас имеет 32G оперативной памяти. Если выделить памяти для оракла 8 G , то инсталляцию можно продолжать, но что это за работа при существующих 32 G.

    В файле /etc/sysctl.conf стояли следующие установки:

    kernel.shmall = 2097152
    kernel.shmmax = 17179869184
    

    Так как kernel.shmall меряется в страницах, а 2097152*4096 выйдет как раз 8 G, то видно тут и зарыта собака.

    После того как установили

    kernel.shmall = 6291456
    kernel.shmmax = 25769803776  
    
    Удалось дальше продолжить инсталляцию экземпляра.

    On Linux systems, along with setting kernel.shmmax, users with configurations over 8GB may need to set the kernel.shmall parameter. The value is in KBytes and should be equal to ceil(SHMMAX/PAGE_SIZE). Page size is generally 4K on x86 and 16K on Itanium systems. For example, for a 64GB data store on Itanium, you need not only kernel.shmmax=68719476736 but also kernel.shmall=4194304

3 комментария

Прокоментировать

kitpes
10 июня 2008 г. в 13:44

Столкнулся с той же проблемой (первая из описанных). Есть по этому поводу нота на металинке Note:365416.1. Там есть про симв. ссылку типа
$cd $ORACLE_HOME/rdbms/lib
$ln -s /usr/lib/libaio.so.1 skgaio.o
Правильнее на 64 битах
$ln -s /usr/lib64/libaio.so.1 skgaio.o

Я боролся несколько часов пока не снес оба пакета (libaio, libaio-devel) и не установил снова. После этого все как по маслу.

mesier
5 марта 2009 г. в 12:17

Ставил Oracle 10.2.0.1 на RHEL 4.7 64bit (скачал с сайта oracle.com). Тоже столкнулся с первой проблемой.. Помогло тупо снести libaio и заново поставить libaio и libaio-devel (обе 64 bit).

Maximus
17 марта 2009 г. в 17:04

Не знаю как для 64bit, а вот для 32bit RHEL, это делать не надо, в ORACLE 10g Release 2 (10.2) это уже включено и выполнять не нужно!

 

Новый комментарий

Я не спамер: введите суму 5+9



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум