1、 第一次接触Linux系统,同事已经把oracle11g安装到linux服务器上,但是我的电脑却没办法telnet通linux服务器的1521端口。
问了同事才知道,需要把/app/oracle_11g/dbhome_1/network/admin/下的listener.ora和tnsnames.ora文件中的host地址(127.0.0.1或localhost)修改为服务器的IP地址。
2、 修改完以后,发现端口通了,但是PLSQL还是访问不了,提示错误信息:ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务,只好上网查询原因,看到下面这篇博客,就解决了我的问题:
在Windows系统上用pl/sql工具想要连接Linux上安装的Oracle数据库,遇到了这个错误后,上网一搜,开始修改listener.ora,却怎么也不行
然后才发现自己修改的Windows本机上的listener.ora(貌似网上文章也没人提醒),自然就不行了,连接Linux上的数据库的话自然得修改Linux上的listener.ora
ADR_BASE_LISTENER = /app/oracle
修改完毕后重启服务
$lsnrctl stop
$lsnrctl start
3、这时再用plsql访问,提示的错误信息变成了:ORA-01034:ORACLE not available,再上网查询各种解决方案,无非都是说oracle没启动,或者连接词写错类的问题,但是我查看oracle的监听及启动状态都是正常的,并没有网上说的那些情况,最后终于还是找到了问题的症结,操作如下:
由于实例已经在启动的状态,这时候考虑到实例注册的问题
SQL> show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string
发现local_listener没有值。。。。。
设置local_listener参数
SQL> alter system set local_listener='(ADDRESS =(PROTOCOL=TCP)(HOST=10.201.1.134)(PORT=1521)(SID=siebtest))';
System altered.
SQL> alter system register;
System altered.
以上操作完成后,我windows机器上的PLSQL终于可以连上LINUX服务器上的oracle数据库了。
然后用数据泵导入数据库数据,总是提示没有监听,或者监听不存在,最后是在listener.ora文件末尾添加上这样一行语句:
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF
完美解决,数据正常导入。