雲服務器綁定主機名的正確姿式java
一直以來,我在作方案的時候,都不推薦在雲服務器上安裝oracle。可隨着宣傳的深刻,恰恰就有人要這樣幹,前天,就有要求我在某度雲安裝oracle rac集羣;我確實不知道怎麼解決共享存儲及多網卡。程序員
一個好久不理個人傢伙,忽然給我電話,說安裝在阿里雲服務器上的oracle,執行netca失效,須要我幫忙。很佩服那些程序員,竟然能在雲服務器成功安裝oracle。好奇心驅使我去要了系統權限,爬上去看看究竟。數據庫
先看看oracle實例是否正常,按一下步驟進行:服務器
一、 檢查進程: ps auxww|grep ora ,還好進程都有;網絡
二、 檢查實例是否正常,也沒問題,截圖以下:oracle
三、 分別檢查oracle實例日誌和監聽器日誌,也沒什麼收穫;tcp
四、 檢查系統日誌,未見明顯異常;ide
五、 檢查系統資源,發現交換分區過小,不過既然能正常安裝oracle,應該也影響不大;另外同一個系統上還運行了java和memcached,擔憂佔用資源過多,一律給中止了(反正是未上線的系統,隨便殺);memcached
六、 以oracle用戶執行 lsnrctl stat,輸出一半就卡住了,耐着性子等了一會而,結果以下:oop
[oracle@qhwy ~]$ lsnrctl stat LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 09-MAR-2018 22:33:50
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) TNS-12535: TNS:operation timed out TNS-12560: TNS:protocol adapter error TNS-00505: Operation timed out |
提示超時,手動啓動監聽器,也是同樣的輸出。
按照也有的經驗,查了好一通,仍是沒解決,那就網上搜一搜吧。運氣還算不錯,搜到一篇文章,正好瞧到有一行寫着netca啓動不了的問題,雲啓動不了可能與主機名有關。那好,就打開文件/etc/sysconfig/network及/etc/hosts瞧瞧,一眼就看出問題所在。
哥,阿里雲的服務器,使用的但是內網地址喲,不信你瞧:
[root@qhwy ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.144.28 netmask 255.255.240.0 broadcast 172.17.159.255 ether 00:16:3e:10:5c:61 txqueuelen 1000 (Ethernet) RX packets 5322360 bytes 6866094153 (6.3 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2929473 bytes 386359858 (368.4 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1 (Local Loopback) RX packets 381760 bytes 25954689 (24.7 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 381760 bytes 25954689 (24.7 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
把/etc/hosts文件的公網地址,改爲實際網絡監聽地址:
172.17.144.28 qhwy |
切換到oracle帳戶,再執行 lsnrctl start,故障排除。
不過,直接把oracle數據庫暴露在公網上,也是一個隱患。