云服务器绑定主机名的正确姿势
一直以来,我在做方案的时候,都不推荐在云服务器上安装oracle。可随着宣传的深入,偏偏就有人要这样干,前天,就有要求我在某度云安装oracle rac集群;我确实不知道怎么解决共享存储及多网卡。
一个很久不理我的家伙,突然给我电话,说安装在阿里云服务器上的oracle,执行netca失效,需要我帮忙。很佩服那些程序员,居然能在云服务器成功安装oracle。好奇心驱使我去要了系统权限,爬上去看看究竟。
先看看oracle实例是否正常,按一下步骤进行:
1、 检查进程: ps auxww|grep ora ,还好进程都有;
2、 检查实例是否正常,也没问题,截图如下:
3、 分别检查oracle实例日志和监听器日志,也没什么收获;
4、 检查系统日志,未见明显异常;
5、 检查系统资源,发现交换分区太小,不过既然能正常安装oracle,应该也影响不大;另外同一个系统上还运行了java和memcached,担心占用资源过多,一概给停止了(反正是未上线的系统,随便杀);
6、 以oracle用户执行 lsnrctl stat,输出一半就卡住了,耐着性子等了一会而,结果如下:
[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数据库暴露在公网上,也是一个隐患。