PL/SQL连接Linux服务器Oracle遇到的问题总结

 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


找到/app/oracle/product/11.1.0/db_1/network/admin下listener.ora文件
# listener.ora Network Configuration File: /app/oracle/product/11.1.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /app/oracle

在文件末尾添加以下内容:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /app/oracle/product/11.1.0/db_1)        //oracle_home需修改成自己的路径
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (GLOBAL_DBNAME = ixdba)        //网络服务名
      (ORACLE_HOME = /app/oracle/product/11.1.0/db_1)        
      (SID_NAME = ixdba)            //服务名,即实例名
    )
  )


修改完毕后重启服务

$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


完美解决,数据正常导入。




你可能感兴趣的:(oracle)