最近兩天在虛拟機上搞Oracle 12.2的安裝,安裝的過程挺順利的。但虛拟機重新開機之後就無法連接配接資料庫,執行sqlplus / as sysdba報錯ORA-12547: TNS:lost contact
<a href="https://s4.51cto.com/wyfs02/M02/9B/16/wKiom1ld6_fgZdSHAAAkhJKCzpM710.png" target="_blank"></a>
為什麼呢?安裝完後測試都好好的,怎麼重新開機之後會這樣呢。在網上找了很多方法來處理:
網上給出的解決思路如下:
<code>1、檢視作業系統核心參數是否無誤 </code>
<code>[oracle@rhel7 database]$ </code><code>ulimit</code> <code>-a</code>
<code>core </code><code>file</code> <code>size (blocks, -c) 0</code>
<code>data seg size (kbytes, -d) unlimited</code>
<code>scheduling priority (-e) 0</code>
<code>file</code> <code>size (blocks, -f) unlimited</code>
<code>pending signals (-i) 15738</code>
<code>max locked memory (kbytes, -l) 64</code>
<code>max memory size (kbytes, -m) unlimited</code>
<code>open</code> <code>files (-n) 1024</code>
<code>pipe size (512 bytes, -p) 8</code>
<code>POSIX message queues (bytes, -q) 819200</code>
<code>real-</code><code>time</code> <code>priority (-r) 0</code>
<code>stack size (kbytes, -s) 10240</code>
<code>cpu </code><code>time</code> <code>(seconds, -t) unlimited</code>
<code>max user processes (-u) 2047</code>
<code>virtual memory (kbytes, -</code><code>v</code><code>) unlimited</code>
<code>file</code> <code>locks (-x) unlimited</code>
<code> </code>
<code>2、确認$ORACLE_HOME</code><code>/bin/oracle</code><code>檔案權限是否有問題 </code>
<code>(在rac下需要檢視$ORACLE_HOME</code><code>/bin/oracle</code><code>和$GRID_HOME</code><code>/bin/oracle</code><code>兩個檔案), </code>
<code>正确權限為: </code>
<code>[oracle@normal adump]$ ll $ORACLE_HOME</code><code>/bin/oracle</code>
<code>-rwsr-s--x 1 oracle oinstall 232399083 Aug 28 17:23 </code><code>/u01/app/oracle/product/11</code><code>.2.0</code><code>/db_1/bin/oracle</code>
<code>如果權限不對 </code>
<code>chmod</code> <code>6751 $ORACLE_HOME</code><code>/bin/oracle</code>
<code>3、檢查一下環境變量 </code>
<code>echo</code> <code>$ORACLE_HOME </code>
<code>echo</code> <code>$ORACLE_SID </code>
<code>echo</code> <code>$LD_LIBRARY_PATH --注意:不同的作業系統此環境變量會不同 </code>
<code>echo</code> <code>$PATH </code>
<code>4、檢查$ORACLE_HOME</code><code>/bin/oracle</code> <code>和 $ORACLE_HOME</code><code>/rdbms/lib/config</code><code>.o 的檔案大小是否為0, </code>
<code>如果大小為0,需要重新編譯oracle軟體: </code>
<code>[oracle@normal backup]$ relink all </code>
<code>writing relink log to: </code><code>/u01/app/oracle/product/11</code><code>.2.0</code><code>/db_1/install/relink</code><code>.log </code>
<code>5、使用作業系統跟蹤指令跟蹤sqlplus連接配接過程,進而觀察跟蹤檔案。 </code>
<code>ltrace -f -o </code><code>/tmp/sqlplus</code><code>.log sqlplus / as sysdba</code>
<code>或truss指令</code>
按照上面的五個步驟都做了一遍還是一直報錯。
最後仔細檢查了一下核心配置和oracle使用者的limit參數配置,發現limits.conf中有一個參數配置的值太小,我配置的是:
oracle hard stack 1024
而官方文檔中建議的是10240。
這才想起來,當時安裝Oracle時偷懶沒有配置核心參數和limits.conf檔案,而是使用fix.sh腳本修改的,修改完後發現有些配置沒有寫到配置檔案裡,就又手動把漏掉的配置寫了進去,結果還寫錯了,最終導緻了上面的錯誤的出現。
修改limits.conf檔案後重新使用oracle使用者登入,不再報錯。
<a href="https://s3.51cto.com/wyfs02/M01/9B/16/wKioL1ld8ZvD6ONGAAAfcO3i0I0823.png" target="_blank"></a>
本文轉自hbxztc 51CTO部落格,原文連結:http://blog.51cto.com/hbxztc/1945049,如需轉載請自行聯系原作者