学习数据库的时候,由于数据库只建了一个库,而且只是本机访问,所以没有对listener.ora与tnsname.ora这两个文件进行过多设置,但是实际中要区分客户端与服务器端,相互之间的访问就存在微妙的关系了,处理不好又是一件头疼的事情。。而且Oracle中的名字比较多。。

  首先要清楚listener.ora是存在于服务端的针对客户端访问数据库的,tnsnames.ora是针对于客户端的网络访问的,而且本地访问不需要监听器的。。

1.本地连接不需要listener

C:\Windows\system32>lsnrctl stop         //关闭监听

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-MAR-2016 22:36:34

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.32.1)(PORT=1521)))
The command completed successfully C:\Windows\system32>sqlplus root/root //可以注意到这里是能够访问的 SQL*Plus: Release 11.2.0.1.0 Production on Sat Mar 26 22:41:52 2016 Copyright (c) 1982, 2010, Oracle. All rights reserved. Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options C:\Windows\system32>sqlplus root/root@wang   //但是@service_name后,就不走本地连接了,因为监听器没起,也起不来了 SQL*Plus: Release 11.2.0.1.0 Production on Sat Mar 26 22:42:10 2016 Copyright (c) 1982, 2010, Oracle. All rights reserved. ERROR:              
ORA-12541: TNS:no listener        //报错 没有监听

  2.先看一下两个文件的部分内容

listener.ora

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = e:\oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:e:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
#(SID_DESC = #####这一部分是静态注册手动添加内容,比动态注册稳定,相对于网络访问比较稳定,建议配置
                        ###因为再刚起服务器的时候,由于延迟,数据库可能还没有连接监听器,造成客户端不能访问数据库。。。
# (SID_NAME = wang)#数据库实例名字
#(ORACLE_HOME = e:\oracle\product\11.2.0\dbhome_1)
#(GLOBAL_DBNAME = wang)#数据库名
#)
) LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.32.1)(PORT = 1521))#网络监听地址要对应于tnsnames中的地址
)

  tnsnames.ora

WANG =   #网络服务域名,就是在root/root@后的字符串,这里可以随便起名不区分大小写,只要对应即可
(DESCRIPTION =
#(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.108)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.32.1)(PORT = 1521))
#(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = wang)#网络服务名 这里不可以随便起名字,必须对应数据库中的service_names
)
) LISTENER_WANG =
#(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.108)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.32.1)(PORT = 1521))
#(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)

  再看一下数据库的各种名字

Connected.
SQL> show parameter name NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert string
db_name string wang --数据库名字 对应于sid
db_unique_name string wang
global_names boolean FALSE
instance_name string wang --库实例名
lock_name_space string
log_file_name_convert string
service_names string wang --网络服务名

 3.这里是刚刚启动监听服务

C:\Windows\system32>lsnrctl start       ####启动监听服务

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-MAR-2016 23:08:27

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

Starting tnslsnr: please wait...

TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
System parameter file is e:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
Log messages written to e:\oracle\diag\tnslsnr\xx\listener\alert\log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.32.1)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.32.1)(PORT=1521)))
STATUS of the LISTENER ###监听服务现在的一些状态
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
Start Date 26-MAR-2016 23:08:30
Uptime 0 days 0 hr. 0 min. 3 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File e:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File e:\oracle\diag\tnslsnr\xx\listener\alert\log.xml
Listening Endpoints Summary... #######这里注意到 监听器还没有注册到wang数据库实例,所以静态注册实例是很有必要的,正如上方listener文件注释处
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.32.1)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully C:\Windows\System32\drivers>sqlplus root/root@wang ######可以注意到现在网络访问时出现问题,报错了,因为上边service_name还没有注册到监听器中 SQL*Plus: Release 11.2.0.1.0 Production on Sat Mar 26 23:08:36 2016 Copyright (c) 1982, 2010, Oracle. All rights reserved. ERROR:
ORA-12514: TNS:listener does not currently know of service requested in connect
descriptor Enter user-name:

  4.稍等一会,数据库才把实例信息注册到监听器,可以使用网路服务访问数据库了。。

C:\Windows\system32>lsnrctl status   #####查看监听器的状态

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-MAR-2016 23:18:58

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.32.1)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production
Start Date 26-MAR-2016 23:08:30
Uptime 0 days 0 hr. 10 min. 29 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File e:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora
Listener Log File e:\oracle\diag\tnslsnr\xx\listener\alert\log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.32.1)(PORT=1521)))
Services Summary...
Service "CLRExtProc" has 1 instance(s).
Instance "CLRExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "wang" has 1 instance(s). #####这里可以注意到数据库实例已经建立监听了
Instance "wang", status READY, has 1 handler(s) for this service...
Service "wangXDB" has 1 instance(s).
Instance "wang", status READY, has 1 handler(s) for this service...
The command completed successfully C:\Windows\System32\drivers>tnsping wang ######而且tnsping也能ping通数据库了。。。。 TNS Ping Utility for 64-bit Windows: Version 11.2.0.1.0 - Production on 26-MAR-2016 23:16:26 Copyright (c) 1997, 2010, Oracle. All rights reserved. Used parameter files:
e:\oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.32.1)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = wang)))
OK (10 msec)

  总结一下

      第一尽量使用静态注册的方式

          

############类似于上方listener.ora添加这一段信息,稳定
(SID_DESC =
(SID_NAME = baiwang)
(ORACLE_HOME = e:\oracle\product\11.2.0\dbhome_1)
(GLOBAL_DBNAME = wang)
)

      第二网络配置要一致,尽量使用ip,不要使用主机名,因为解析也需要时间;

      第三可以实现多ip地址配置,访问同一数据库

Oracle数据库中的几个名字及监听的配置问题的更多相关文章

  1. Oracle数据库相关问题之ORA-12541:TNS:无监听程序

    在用PL/SQL Developer等客户端工具连接oracle服务器时出现ORA-12541:TNS:无监听程序的错误,如下图: 发现原来是oracle的监听没有启动,重启监听后就连接成功了,下面跟 ...

  2. Oracle 数据库,远程访问 ora-12541:TNS:无监听程序

    1.修改网络连接IPV4设置为固定IP IP地址:192.168.100.8子网掩码:255.255.255.0默认网关:192.168.100.1首选DNS:192.168.100.1 2.修改.. ...

  3. oracle数据库开启的时候 是先开监听还是先开主服务,关数据库的时候呢???

    启动的时候无所谓先后,关闭的话 1.首先是关闭监听(让远程客户端无法再连进来):2.发出一个系统检查点,让数据文件和控制文件的系统修改号统一:(alter system checkpoint;)3.s ...

  4. Oracle数据库服务器更改计算机名称,导致监听服务打不开解决办法

    1.修改listener.ora和tnsnames.ora文件 文件路径为:C:\Oracle\Instanclient_11_2\network\admin # listener.ora Netwo ...

  5. oracle数据库中提供的5种约束

    约束作用:用来保持数据的完整性,防止无效数据进入到数据库中.oracle数据库中提供的5种约束,都是限定某个列或者列的组合的.1.主键约束(PRIMARY KEY):在一个表中能唯一的标识一行.主键可 ...

  6. 如何将dmp文件导入到oracle数据库中

    如何将dmp文件导入到oracle数据库中 1.首先,我们可以先建立自己的一个用户表空间,创建表空间的格式如下: CREATE TABLESPACE certification(表空间的名字) DAT ...

  7. 将Oracle数据库中的数据写入Excel

    将Oracle数据库中的数据写入Excel 1.准备工作 Oracle数据库"TBYZB_FIELD_PRESSURE"表中数据如图: Excel模板(201512.xls): 2 ...

  8. --关于null在oracle数据库中是否参与计算,进行验证,

    --关于null在oracle数据库中是否参与计算,进行验证,with td as (select null id,1 name from dual ),td1 as ( select null id ...

  9. Oracle数据库中SYS、SYSTEM、DBSNMP、SYSMAN四用户的区别

    [转]   SYS.SYSTEM.DBSNMP. Oracle 数据库中 SYS.SYSTEM.DBSNMP.SYSMAN 四用户的区别 用户: SYS 用户: SYS,默认密码为 CHANGE_ON ...

随机推荐

  1. C#程序集引入无效的解决方法

    在项目类库中已经引用了相关了类库,生成解决方案也没问题,但是到了后置代码,通过using引用其他类库的时候,再生成解决方案或者生成单个类库,就会报“未能找到类型或命名空间“xxx"(是否缺少 ...

  2. TreeView 的简单实用

    TreeView组件是由多个类来定义的,TreeView组件是由命名空间"System.Windows.Forms"中的"TreeView"类来定义的,而其中的 ...

  3. javascript中if条件

    1.布尔变量 true/false 2.数字非0.非NaN/0.NaN 3.对象非null/null.nudefined 4.字符串非空串/空串 if(!!str){ //do something } ...

  4. 【CS Round #44 (Div. 2 only) D】Count Squares

    [链接]点击打开链接 [题意] 给你一个0..n和0..m的区域. 你可以选定其中的4个点,然后组成一个正方形. 问你可以圈出多少个正方形. (正方形的边不一定和坐标轴平行) [题解] 首先,考虑只和 ...

  5. COCOS学习笔记--持续动作ActionInterval

    上一篇博客介绍了即时动作ActionInstant.与即时动作相对的是持续动作ActionInterval. 顾名思义,持续动作就是须要一段时间来持续运行的动作,而且在有限时间内改变运行对象的一些属性 ...

  6. Ubuntu 12.04 64bit GCC交叉编译器制作 原创

                                                                                                        ...

  7. Android 6.0 扫描不到 Ble 设备需开启位置权限

    Android 6.0 扫描不到 Ble 设备需开启位置权限 之前做 Ble 开发都是在 Android 6.0 系统以下的版本中进行测试的,今天使用 Android 6.0 的设备测试的时候,发现扫 ...

  8. sprinng in action 第四版第六章中的ValidationMessages.properties不起作用

    文件名必须是ValidationMessages.properties,必须放在类的根目录下

  9. HDU 2587 - 很O_O的汉诺塔

    看题传送门 吐槽题目 叫什么很O_O的汉诺塔我还@.@呢. 本来是想过一段时间在来写题解的,不过有人找我要. 本来排名是第8的.然后搞了半天,弄到了第五.不过代码最短~ 截止目前就9个ID过,小小的成 ...

  10. UIActionSheet上加入UIPickerView iOS8替换方案

    此套替换方案採用"UIView+动画"方式实现(将UIActionSheet替换为UIView) 界面层级例如以下: 第一层:view(这一层充满整个屏幕,初始化时颜色为透明.us ...