关于Oracle使用SQL/Plus或者PL/SQL连接失败的使用若干经验

来源:互联网 发布:淘宝上的白菜价在哪里 编辑:程序博客网 时间:2024/06/06 09:31

关于Oracle使用SQL/Plus或者PL/SQL连接失败的使用若干经验

网上常见解决方法前篇一律,都是检查核对tnsnames.ora,listener.ora,sqlnet.ora,在这里你将看到每种错误的排查方法,以减少你时间在网上查找各种坑抑或不是坑。。。

 

常见错误

(1)、提示无监听程序

 

检查监听状态,cmdà lsnrctl status,查看是否正常

 

说明是监听程序没有启动,也可以查询服务(services.msc)是否运行正常,检查..\ product\11.2.0\dbhome_1\NETWORK\ADMIN目录下的listener.ora文件格式是否正确,注意空格、换行符等特殊字符的影响,正确格式为

SID_LIST_LISTENER =

 (SID_LIST =

   (SID_DESC =

     (SID_NAME = CLRExtProc)

     (ORACLE_HOME = F:\app\LincWoodz\product\11.2.0\dbhome_1)

     (PROGRAM = extproc)

      (ENVS ="EXTPROC_DLLS=ONLY:F:\app\LincWoodz\product\11.2.0\dbhome_1\bin\oraclr11.dll")

    )

   (SID_DESC =

     (GLOBAL_DBNAME = orcl)

     (ORACLE_HOME = F:\app\LincWoodz\product\11.2.0\dbhome_1)

     (SID_NAME = ORCL)

    )

  )

 

LISTENER =

 (DESCRIPTION_LIST =

   (DESCRIPTION =

     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))

    )

   (DESCRIPTION =

     (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

    )

  )

 

ADR_BASE_LISTENER = F:\app\LincWoodz

 

请注意红色字体关键位置。

检查无误后使用cmdàlsnrctl start启动,检查是否启动正常,正常应含有至少两个实例服务,如下截图红色线框内

 

(2)、ora-12518 TNS: 监听程序无法分发客户机连接,此情况一般是实例服务oracleserviceorcl没有启动造成,使用cmdànet start oracleserviceorcl 启动实例服务

(3)、ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务(最常见错误)

A:先检查tnsnames.ora文件中的配置是否正确,如下

ORCL =

 (DESCRIPTION =

   (ADDRESS_LIST =

     (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT=1521))

    )

   (CONNECT_DATA =

     (SERVER = DEDICATED)

     (SERVICE_NAME = orcl)

    )

  )

 

如果和listener.ora中配置不一致,请修改。若修改一致后还是无法连接,提示相同错误,请使用lsnrctl status检查监听是否启动正常,如果启动正常,如果如下情况:

特别注意检服务摘要只有CLRExtProc一个实例,而没有用户自己实例(orcl),检查oracleserviceorcl实例服务是否正运行,如果正在运行,但是用lsnrctl status查看时没有注册该实例时,手动设置监听和实例服务的关系,设置前你再次检查监听和实例服务是否正常运行,设置过程如下:

 

 

检查orcl服务设置是否正确(如果是IP、计算机名,127 IP地址检查方法一样),然后选择

在右侧下拉列表选择数据库服务,设置orcl实例服务和监听的对应关系,

 

设置完成后请重新连接,一般至此可完成,如果依然无法连接,请重启监听和实例服务。

添加之后listener.ora文件中会增加如下红色部分:

SID_LIST_LISTENER =

 (SID_LIST =

    (SID_DESC =

      (GLOBAL_DBNAME =orcl)

      (ORACLE_HOME =F:\app\LincWoodz\product\11.2.0\dbhome_1)

      (SID_NAME = ORCL)

    )

   (SID_DESC =

     (PROGRAM = extproc)

     (SID_NAME = CLRExtProc)

     (ORACLE_HOME = F:\app\LincWoodz\product\11.2.0\dbhome_1)

    )

  )

 

(4)、ORA-01031: insufficient privileges 使用sqlplus / as sysdba 连接是提示无效权限

此时

 

系统验证失败,将sqlnet.ora中参数改为NONE à NTS活着ALL,改All需要重启计算机,否则会提示,SQLNET.AUTHENTICATION_SERVICES= (NTS)

此时如果不知道sys密码也是重新生成密码校验文件,格式:

以sqlplus/nolog输入orapwd file=%oracle_home%/database/PWD+sid.ora password=sys

 (这里无法显示图片,需要的童鞋可以下载资源搜索题目标题)

 

--愿你好运!            ---繁星守护

原创粉丝点击