zoukankan      html  css  js  c++  java
  • oracle 使用问题

    12541:

    典型的listener.ora 文件内容:

    SID_LIST_LISTENER =   (注册到监听器的service name所在区域)
      (SID_LIST =
        (SID_DESC =       (对外部过程调用的服务名)
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /u01/product/oracle)
          (PROGRAM = extproc)
        )
      )

    LISTENER =     (监听名称)
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = xxxx)(PORT = 1521))
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))   (对外部过程调用的监听信息)
        )
      )

    -- 备注 --  
         默认安装时,会安装一个PL/SQL外部程序(ExtProc)条目在listener.ora中,
    是oracle为调用外部程序默认配置的监听,它的名字通常是ExtProc或PLSExtProc,
    但一般不会使用它。可以直接从listener.ora中将这项移除,因为对ExtProc已经有多
    种攻击手段了,在不使用外部程序时,oracle也是建议删除的。
      PLSExtProc是pl/sql external procdure的意思,就是在pl/sql中调用外部语句,
    如c、java写的过程。现在,Oracle已经全面支持JAVA了,这东西也就过时了,之所以
    继续保留是考虑到兼容以前老版本的数据库。
      有时可能会在多个数据库实例之间拷贝listener.ora,检查拷贝来的文件中是否
    含有不需要的服务,确保只留下的确需要的服务项目,减少监听器受攻击的面。

    --》修改

    (SID_NAME = orcl)
          (GLOBAL_DBNAME = ORCL)

    去(PROGRAM = extproc)

    第一种、解决方案如下:

    listener.ora是服务器端的配置oracle的文件。

    后来将listener.ora的这一行注释掉,就行了,, (PROGRAM = extproc)
    修改为:
    SID_LIST_LISTENER =
      (SID_LIST =
      (SID_DESC =
      (SID_NAME = prod)
      (ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)
    # (PROGRAM = extproc)
      )
      )

    LISTENER =
      (DESCRIPTION_LIST =
      (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1522))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
      )
      )

    第二种、解决方案如下:

    参考:https://forums.oracle.com/forums/message.jspa?messageID=693607

    整理如下:

    客户端的配置文件sqlnet.ora中配置如下:

    将#SQLNET.AUTHENTICATION_SERVICES= (NTS)注释掉,改成如下即可!

    如下:
    SQLNET.AUTHENTICATION_SERVICES= (NONE)

    同时修改监听器配置文件,具体做法是: 在oracle安装目录下搜索listener.ora文件,一般在$/NETWORK/ADMIN目录下,把主机名用ip地址代替,例如(ADDRESS = (PROTOCOL = TCP)(HOST = HBONLINE1)(PORT = 1523))改为(ADDRESS = (PROTOCOL = TCP)(HOST = 168.168.168.42)(PORT = 1523))。

    第三种、解决方案如下:

    如果你以上使用的是plsql developer工具或者是toad工具,应该以上的操作就绝对可以解决你的问题,

    但是如果你使用的是 navicat工具,以上怕是还不能解决你的问题。具体的如果在navicat工具上使用就是如下的问题:

    Oracle基本是默认安装,安装过程没出现过任何异常
    Oracle开启了两个服务:OracleServiceORCL和OracleOraDb11g_home1TNSListener
    Navicat一直都连接不上本地的Oracle
    网上搜了一大堆资料,大都是改那3个配置文件的
    最终还是没能解决这个问题

    最终的问题是:

    Navicat主机那里如果填本机IP地址(192.168.18.8),错误代码是:ORA-12541:TNS:no listener
    如果填localhost,错误代码是:ORA-28547:connection to server failed,probable Oracle Net admin error
    tnsping localhost 是通的,tnsping 192.168.18.8 则出错 TNS-12541: TNS: 无监听程序

    解决的方案是:

    oci.dll的版本不对 从 http://www.oracle.com/technology/software/tech/oci/instantclient/index.html 下载client里面很多,根据你的版本来下,我下载的是instantclient_11_2。
    在navicat的 工具-选项-其他-OCI ,选择刚下的client中的 oci.dll
    设置环境变量:
    1)在环境变量PATH中开头增加C:Instantclient10_2;
    2)增加用户环境变量SQLPATH,值为C:Instantclient10_2
    3)增加用户环境变量NLS_LANG,值为AMERICAN_AMERICA.UTF8
    选择 Basic 连接,就大概能连接上了

    以上的操作可以通过如下进行排查:

    1、首先确认你的数据库已经启动了,可以用net start OracleServiceORCL
    2、其次确认你的侦听启动了否,用lsnrctl status查看,如果没有启动,用lsnrctl start启动。
    3、以上启动后,直接打开sqlplus,输入用户名密码,无需输入服务名,直接登录即可。
  • 相关阅读:
    一个FLAG #03# 蛇形填数
    一个FLAG #02# 逆序输出
    一个FLAG #01# 重学C/C++以及算法
    MAVLink笔记 #01# 维基百科翻(译)
    编译原理 #04# 中缀表达式转化为四元式(JavaScript实现)
    Java开发:手机电话号码校验
    解决java poi循环遍历行getLastRowNum出现不准确的问题
    Redis的安装和简单测试
    JS解析xml字符串,并把xml展示在HTML页面上
    解决cxf+springmvc发布的webservice,缺少types,portType和message标签的问题
  • 原文地址:https://www.cnblogs.com/fibonaccixue/p/6443386.html
Copyright © 2011-2022 走看看