ORACLE安装后配置PLSQL

本人在使用oracle的时候,常常发现plsql连不上oracle的时候。有的本机不能连,有的远程不能连,时常捉摸不透问题到底出在哪儿,一会儿实例名,一会儿服务名,一会儿说缺少监听,一会说解析不了服务,又有时候发现ip能连,localhost不能连,问题颇多。这几天弄了几台虚拟机专门安装oracle,了解了一些皮毛,记录下来。

本人主要论述ORACLE后,如何配置实现PLSQL访问的问题。

一 基本说明

1 操作系统是win7。

2 oracle是11g2R。

3 plsql是免安装版本,内含简约版oracle客户端instantclient。

4 需要安装的是oracle数据库,oracle客户端和plsql都不需要安装。

二 基本配置

1 我们安装好oracle以后,安装目录一般类似这个结构F:\app\Think\product\11.2.0\dbhome_1(本文以此为例)。这个时候,默认会有一个实例orcl,服务名一般为ORCL。

2 plsql免安装版解压后,目录D:\install\PLSQL,目录结构如下:

    D:\install\PLSQL
        |-- instantclient_11_2
            |-- tnsnames.ora
        |-- PLSQL Developer
        |-- readme.txt

三 配置

1 修改F:\app\Think\product\11.2.0\dbhome_1\NETWORK\ADMIN下面listener.ora和tnsnames.ora

1.1 listener.ora内容如下:

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST =
计算机名)(PORT = 1521))
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (ORACLE_HOME = F:\app\Think\product\11.2.0\dbhome_1)
      (SID_NAME = ORCL)
    )
  )
ADR_BASE_LISTENER = F:\app\Think

1.2 tnsnames.ora内容如下:

tns =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = WIN-I9IGNNTD71I)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )

1.3 配置环境变量

NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK
    TNS_ADMIN = F:\app\Think\product\11.2.0\dbhome_1\NETWORK\ADMIN

1.4 重启OracleOraDb11g_home1TNSListener和OracleServiceORCL服务

1.5 使用plsql连接,输入用户名、密码,选择tns选项,选择normal,连接。

三 lsnrctl status的作用

1 我们经过以上步骤后,一般能够连接上。不过也经常出现各种错误提示,比如监听程序无法识别连接描述符中请求的服务、监听程序无法识别连接描述符中请求的SID等。这时候我们在命令行中输入lsnrctl status查看结果LISTENER 的 STATUS:

------------------------
别名                      LISTENER
版本                      TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Produ
ction
启动日期                  27-9月 -2016 19:42:43
正常运行时间              0 天 0 小时 3 分 41 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          F:\app\Think\product\11.2.0\dbhome_1\network\admin\lis
tener.ora
监听程序日志文件          f:\app\think\diag\tnslsnr\swxx_dyl\listener\alert\log.
xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=swxx_dyl)(PORT=1521)))
服务摘要..
服务 "ORCL" 包含 2 个实例。
  实例 "ORCL", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
服务 "orclXDB" 包含 1 个实例。
  实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功

如果能看到服务摘要下面的内容,说明监听已经启动,并且已经监听了一些服务和实例。以上就表示监听了两个服务:一服务名ORCL带俩实例ORCL和orcl。二服务名orclXDB带实例orcl。这个时候我们看一看tnsnames.ora看一看CONNECT_DATA这个节点的内容,这里可以配置成SERVICE_NAME=服务名或者SID=实例名的形式,服务名或者实例名要在上面status的列表中有才行。这里尤其注意服务名和实例名不是大小写敏感的。比如这个例子,我在tnsnames.ora配置成SERVICE_NAME=oRclXdb也是可以的。

如果服务摘要下面的内容没有服务列表,那么说明问题正出在这里。首先我们看一看监听程序参数文件,看看这个文件的内容是不是和我上面的配置一样。如果监听程序参数文件的位置不是F:\app\Think\product\11.2.0\dbhome_1\listeners.ora,我们查看一下环境变量TNS_ADMIN设置是否正确。

四 listeners.ora和tnsnames.ora

1 oracle加载的listerers.ora的位置首先是取环境变量TNS_ADMIN位置下的同名文件,如果没有环境变量TNS_ADMIN,取F:\app\Think\product\11.2.0\dbhome_1\listeners.ora。它的配置主要是HOST和SID_NAME。HOST可以是计算机名/ip/localhost/127.0.0.1,个人觉得配置计算机名更通用,本机plsql中可以使用计算机名/ip/localhost/127.0.0.1:port/SID来访问。SID_NAME不能用SID或者SERVICE_NAME取代(注意这里是SID_LIST_LISTENER)。SID_NAME的值要用实例名,可以连上sqlplus后使用select instance_name from v$instance查看实例名,一般为orcl。

2 tnsnames.ora主要是plsql使用,它的实际位置请参阅五他的主要配置也是HOST和SERVICE_NAME。这里本机访问HOST能使用哪些值取决于listneers.ora的HOST值。SERVICE_NAME=服务名可以换成SID=实例名(注意单实例环境下),这里实例名和服务名也不分大小写。

五 plsql配置说明

plsql需要配置两个东西oci.dll位置和tnsnames.ora位置,这两个地方都在plsql的工具-->首选项中配置。

1 oci.dll在OCI库内配置,找到D:\install\PLSQL\instantclient_11_2\oci.dll。

2 tnsnames.ora,在ORACLE主目录中配置tnsnames.ora的位置。这里要留意一下,如果这里为空,系统寻找环境变量TNS_ADMIN下面的tnsnames.ora配置,如果环境变量TNS_ADMIN没有配置,就寻找F:\app\Think\product\11.2.0\dbhome_1\NETWORK\ADMIN下面的tnsnames.ora。

六 一些注意事项

1 修改文件后,一般需要重启服务。

2 要找到正确位置的listeners.ora和tnsnames.ora再修改。

3 以lsnrctl status是否能展示服务列表为分水岭,不能的话,说明服务端还没配好,要找到服务端的listeners.ora到底在哪,内容到底有没有问题;能展示服务列表的话,可以在plsql中直接用地址字符串来实验。本机的话,地址字符串是localhost/127.0.0.1/ip/计算机名:1521/SID,注意SID要在lsnrctl status服务列表的实例名称中。

你可能感兴趣的:(ORACLE安装后配置PLSQL)