oracle 监听详细设置+plsql监听配置

[size=small]
一、监控文件说明:
1.TNS的详细配置文件

TNS的配置文件包括服务器端和客户端两部分:
1)服务器端:listener.ora、sqlnet.ora和tnsnames.ora
如果通过OCM(Oracle Connection Manage)和域名服务管理客户端连接,服务器端可能还包括cman.ora等文件;

2.客户端:tnsnames.ora,sqlnet.ora

listener.ora:监听器配置文件,成功启动后是驻留在服务器端的一个服务。
监听器是用来侦听客户端的连接请求以及建立客户端和服务器端连接通道的一个服务程序。
默认情况下Oracle在1521端口上侦听客户端连接请求。

sqlnet.ora:用来管理和约束或限制tns连接的配置,通过在该文件中设置一些参数,可以管理TNS连接。根据参数作用的不同,需要分别在服务器和客户端配置.

tnsnames.ora:配置客户端到服务器端的连接服务,包括客户端要连接到的服务器和数据库的配置信息

3.TNS配置
可以通过Oracle Net Configuretion Assitant配置TNS,也可以手动配置。
首先在Oracle服务器端安装完成之后,应该先着手配置LISTENER,LISTENER是进行Oracle通讯的首要组件,紧接着在客户端安装Oracle client,同时配置tnsnames.ora文件

首先监听器包括两个部分:Oracle要监听的地址、端口、通讯协议;Oracle要监听的数据库实例,非RAC环境下,LISTENER只能监听本服务器的地址和实例,RAC环境下,LISTENER还可以监听远程服务器。每个数据库最少要配置一个监听器。(注:RAC环境,指的是Oracle服务器集群配置的环境)

LISTENER部分配置了Oracle要监听的地址和端口信息;
HOST参数可以是Oracle服务器主机名称,也可以是相应的IP地址。在一个多IP的服务器上可以配置listener同时监听多个地址,比如下面的配置:

LISTENER= (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.11)(PORT=1521)) (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.11) (PORT=1521))) )
或者可以配置多个监听器,分别监听不同的IP地址。

一般说的TNS配置其实就是对tnsnames.ora文件的配置,tnsnames.ora有客户端的配置,也有服务器端的配置。

tnsnames.ora也包括两部分,ADDRESS_LIST 部分包含了Oracle数据库服务器的监听地址信息,也就是要告诉TNS数据库可通过这个地址和CLIENT进行通讯;CONNECT_DATA 定义了CLIENT要连接的数据库,以及数据库的连接方式,(专用或共享)。

在一个多IP环境中,TNS也可以配置多个远程IP地址:
CGDB = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.55)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.56)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = CGDB) (SERVER = DEDICATED) ) )

sqlnet.ora是个很重要的配置,它可以控制和管理Oracle连接的属性,根据参数作用的不同决定在客户端配置还是在server端配置。sqlnet.ora的配置是全局性的,也就说sqlnet.ora的配置是对所有的连接起作用,如果想对某个特殊的连接或服务进行约束或限制,可以在TNS配置相应参数。

二、监听文件的位置:
Oracle所有的TNS配置文件的默认路径:$ORACLE_HOME/network/admin
$ORACLE_HOME/network/admin/listener.ora
$ORACLE_HOME/network/admin/tnsnames.ora

我的ORACLE_HOME=/u01/oracle
所以监听文件在/u01/oracle/network/admin/listener.ora

三、监听文件配置
vi listener.ora
tinadb =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.12.253)(PORT=1521))
)
)
SID_LIST_tinadb =
(SID_LIST =
(SID_DESC =
(SID_NAME = tinadb)
(ORACLE_HOME=/u01/oracle)
)
)
host 可以填写数据库所在主机的主机名或者ip
port 可以默认1521,也可以指定其他端口
listener_name 监听名我直接使用的数据库名,也可以指定成其他,例如tina_pri tina_dy
sid_name 必须跟实际数据库名保持一致

vi tnsnames.ora
tinadb_1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.12.253)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = tinadb)
)
)

四、启动监听
配置完成后:
监听器启动起来 $ lsnrctl start
停止监听器的命令为 $ lsnrctl stop
监测监听器当前状态的命令为 $ lsnrctl status
重新加载参数 $ lsnrctl reload

例如:
[oracle@oratest ~]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 10-DEC-2015 13:02:15
Copyright (c) 1991, 2011, Oracle. All rights reserved.
TNS-01106: Listener using listener name LISTENER has already been started

可以看到报错 LISTENER这个监听名已经启动

[oracle@oratest ~]$ lsnrctl stop

可以启动我们指定的监听名
[oracle@oratest admin]$ lsnrctl start tinadb

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 10-DEC-2015 13:49:06

Copyright (c) 1991, 2011, Oracle. All rights reserved.

Starting /u01/oracle/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /u01/oracle/network/admin/listener.ora
Log messages written to /u01/diag/tnslsnr/oratest/tinadb/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.12.253)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.12.253)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias tinadb
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date 10-DEC-2015 13:49:06
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/oracle/network/admin/listener.ora
Listener Log File /u01/diag/tnslsnr/oratest/tinadb/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.12.253)(PORT=1521)))
Services Summary...
Service "tinadb" has 1 instance(s).
Instance "tinadb", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

UNKNOWN 静态注册(修改文件listener.ora)
READY 动态注册 (如果在数据库实例启动后再启动监听器,Listener.ora文件中不需要配置相关的SID信息, PMON会自动对监测到的Service进行注册)

打开客户端plsql
username:sys
password:创建时指定的密码
database:192.168.12.253:1521/tinadb
connect as sysdba
注意:database 这里也可以填写你在客户端tnsnames.ora 里面配置的服务名tinadb_1


五、可能遇到的报错有:
1)ORA-12154:TNS:could not resolve the connect identifier specified
上面的文件内容没有配置正确

2)$ lsnrctl start 启动报错提示:
The listener supports no services
The command completed successfully
客户端连接会报错:
ORA-12170:TNS:Connect timeout occurred

方法一:
在listener.ora里面添加了一行 --我们之前已经添加了,不行
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = orcl)
)
)

方法二:
登录数据库:
$sqlplus / as sysdba --注册后发现依然不行
显示服务名:
SQL>show parameter service_names
强制注册服务:
SQL>alter system register;
查看监听状态:
$lsnrctl status

方法三: ---实际就是配置上面两个文件
后发现Oracle有个Net Manager可用:
Listeners->Database Services中配置要监听的SID及ORACLE_HOME,退出保存。

linux上面:
# xhost +
# su - oracle
[oracle@localhost ~]$ netmgr

方法四:
防火墙的原因
关闭防火墙 service iptables stop ---最终发现是这个问题

六、plsql配置远程数据库连接(即监听文件的配置)

---1.只安装oracle的一个客户端软件,不安装oracle整个软件

前期工作:
检查oracle服务器端监听是否正常工作及了解监听信息。

1.首先检查监听程序是否能正常启动
2.用 tnsping 服务名 ,来检查tnsnames.ora服务配置是否正确。
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.12.253)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED)
(SERVICE_NAME = tinadb)))
OK (10 msec)

PLSQL Developer设置说明:
1.安装PLSQL Developer
2.安装oracle instance client端。 ---这个是oracle的一个客户端
直接下载解压instanceclient-basic-nt-11.2.0.3.0.zip 到D盘instantclient_11_2目录即可。

3.启动PLSQL Developer ,选择cancle,no logged on。
4.选择tools》》preferences》》connection,在oracle home中输入安装好的oracle instance client目录,
在OCI LIBRARY中输入oracle instance client 的OCI.dll文件的具体路径

我的配置是:
ORACLE_HOME(empty is autodetect)
D:\instantclient_11_2

OCI library(empty is autodetect)
D:\instantclient_11_2\oci.dll

5.在oracle instance client根目录,如D:\data\database\instantclient-basic-nt-11.2.0.2.0\instantclient_11_2\中
建立tnsnames.ora名字解析文件,在其中输入对应的oracle服务器解析规则信息,可参考oracle服务器端的tnsnames.ora文件内容,如:
tinadb_1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.12.253)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = tinadb)
)
)

6.设置环境变量:
TNS_ADMIN=D:\instantclient_11_2(必须)
PATH=%PATH%;D:\instantclient_11_2(必须)
ORACLE_HOME=D:\instantclient_11_2(必须)
LD_LIBRARY_PATH=D:\instantclient_11_2(必须)
SQLPATH=D:\instantclient_11_2(可选)
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK(可选) --我的是AMERICAN_AMERICA.AL32UTF8

添加oracle语言环境变量,添加环境变量:
“NLS_LANG = SIMPLIFIED CHINESE_CHINA.AL32UTF8”,(CHINESE_CHINA.AL32UTF8 是ASCII编码类型,其它类型可自己到服务器看一下,
在服务器上输入命令:select userenv('language') from dual;)。
SQL> select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8

7.确定,重启程序

补充:
【通过DOS连接Oracle Server(当然可通过sqlplus)以下情况适用命令式连接远程的Oracle】
1 通过Net Configuration Assistant 配置本地的Listener
2 DOS> sqlplus/nolog
3 DOS> connect username/password@TNSName


----2.如果客户端这边已经安装了oracle软件,则直接指向oracle的home即可
plsql选择tools》》preferences》》connection,在oracle home中输入安装好的oracle instance client目录,
在OCI LIBRARY中输入oracle instance client 的OCI.dll文件的具体路径

我的配置是:
ORACLE_HOME(empty is autodetect)
D:\oracle11g\product\11.2.0\dbhome_1

OCI library(empty is autodetect)
D:\oracle11g\product\11.2.0\dbhome_1\bin\oci.dll

这时候只需要修改D:\oracle11g\product\11.2.0\dbhome_1\network\admin\tnsnames.ora里面添加一个配置即可。
tinadb_1 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.12.253)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = tinadb)
)
)

就可以直接通过以下信息连接到数据库
username:sys
password:创建时指定的密码tina
database:tinadb_1
connect as sysdba

命令行:
sqlplus system/tina@tinadb_1

[/size]

你可能感兴趣的:(oracle)