天天看點

ORA-12547: TNS:lost contact報錯的處理方法

最近兩天在虛拟機上搞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,如需轉載請自行聯系原作者