ORACLE网络配置大全没有比这个更详细的【weber出品】

一、起篇

  现在怎么说也是互联网时代,数据库也要联网,很多朋友学习Oracle的时候无外乎搭建的是以下两种学习环境:

  1、直接在windows环境下安装Oracle后直接sqlplus连接。

  2、在windows中安装虚拟机中VMware,安装Linux操作系统+Oracle。

  3、或者其他服务器上搭建。

第一种还好,基本上不需要网络配置,学习起来也简单。但是如果你想要在其他电脑上访问你自己电脑的数据库的时候麻烦就来了。或第二种你在windows中连接VMware虚拟机中的数据库。你安装好了客户端却不知道如何连接,我也是经过一段时间摸索,然后将这些经验分享给大家

二、客户端到服务器端的连接过程

  首先,客户端发出请求---》监听器捕捉客户端发出的请求---》将请求发送给Oracle---》Oracle启动服务器进程---》对客户端的请求进行验证(密码是否正确,是否有权限)---》建立session---》监听结束,客户端与服务器端建立联系后就不再需要监听器了

三、服务器端的配置

监听配置:

创建监听:

[[email protected] ~]# su - oracle
[[email protected] ~]$ cd $ORACLE_HOME/network/admin
[[email protected] admin]$ ls
listener.ora  samples  shrept.lst  tnsnames.ora

如果不存在listener.ora,先创建

使用netca创建
listener.ora的内容如下:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/10.2.0/db_1)
      (PROGRAM = extproc)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = hndx)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

监听控制工具:lsnrctl

[[email protected] admin]$ lsnrctl

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 01-APR-2013 14:16:24

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

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> help

start--启动监听
stop--关闭监听
status--查看监听的状态
reload-->当监听配置文件发生了改变,使用reload进行重新加载,这个不是先stop再start,而是不中断业务重新加载配置文件

服务名注册:静态注册和动态注册

服务名:从客户端连接oracle,要与oracle的实例进行连接,服务名是对实例名的封装,我们可以通过服务名连接到某个实例

动态注册:PMON每隔一段时间,将参数service_names的值动态的注册到监听器中,状态为READY

SQL> alter system register;--手工触发PMON进行动态注册

SQL> alter system set service_names=‘orcl‘,‘hndx‘;

System altered.

SQL> show parameter service_name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
service_names                        string      orcl, hndx

这个时候可以查询一下状态了:

[[email protected] ~]$ lsnrctl status

LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 01-APR-2013 14:24:37

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hndx)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date                01-APR-2013 14:21:59
Uptime                    0 days 0 hr. 2 min. 38 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/10.2.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=hndx)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC0)))
Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "hndx" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orclXDB" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl_XPT" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully

静态注册:编辑listener.ora的内容:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = /u01/app/oracle/10.2.0/db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/10.2.0/db_1)
      (GLOBAL_DBNAME = www)--www就是静态注册的服务名
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = hndx)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

静态注册于动态注册的区别

动态注册:是由PMON进行注册的,PMON--只有实例启动的时候才能进行动态注册,当数据库关闭的时候,动态注册连接不了oracle

静态注册:如果数据是关闭的,通过sys也可以登录数据库

四、客户端的配置

1. 配置连接方法:

简易连接
本地连接

简易连接:使用netca->选择第二项-->选择轻松连接--完成后,生成sqlnet.ora里如下的内容:

NAMES.DIRECTORY_PATH= (EZCONNECT)

发出简易连接:sqlplus scott/[email protected]:1521/orcl--orcl是监听器中的静态注册或者动态注册的服务名
当发出以上的连接时,oracle首先读取sqlnet.ora里的解析方法EZCONNECT,如果存在就可以解析
然后向主机ip地址为192.168.0.5的1521端口发起连接

本地连接:使用netca->选择第二项-->本地命名--完成后,生成sqlnet.ora里如下的内容:

NAMES.DIRECTORY_PATH= (EZCONNECT, TNSNAMES)

TNSNAMES--就是本地连接的解析方法

创建一个连接符:使用netca->选择第三项-->本地网络服务名配置-->添加-->输入监听器中的服务名-->....->输入一个网络服务名
生成tnsname.ora里如下的内容:

HNDX =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.5)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

测试hndx的连通性:

C:\Users\oracle>tnsping hndx

TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 01-4月 -2013 14:48:26

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

已使用的参数文件:
D:\app\oracle\product\11.2.0\dbhome_1\network\admin\sqlnet.ora

已使用 TNSNAMES 适配器来解析别名
  尝试连接 (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.5)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = o
  OK (20 毫秒)

tnsping:不检查服务名

C:\Users\oracle>sqlplus scott/[email protected]

以上的连接过程:首先读sqlnet.ora文件,看是否有TNSNAMES,如果有对hndx进行解析,然后再去tnsname.ora里找hndx,通过hndx进行连接

五、连接方式

有两种连接方式:

1. 专用连接

专用连接的特点:

专用连接:默认的连接方式,一个用户进程对应一个服务器进程用户进程退出,服务器进程也退出,释放所有的资源
用户进程与服务器进程是一对一的关系

2. 共享连接

共享服务器模式:用户进程与服务器进程是多对多的关系,多个服务器进程会处理多个用户进程

查看连接方式:

select server from v$session where sid=(select distinct sid from v$mystat);

专用连接中,用户进程没有发出命令,服务器进程处于空闲状态,资源一直占用,共享模式中,
只要是服务器进程空闲,就可以处理其他用户发出的命令,因此服务器进程的数量减少,对资源的
利用更加高效,占用的PGA减少,可以支持更多的用户

共享连接的工作过程
共享连接模式下,需要配置多个名为dispatcher的组件,dispatcher作为用户进程和服务器进程之间的
协调者,负责将用户进程的请求传递给服务器进程,并将服务器进程得到结果返回给用户PMON定期
将每个dispatcher的地址、以及工作负载注册到监听器里面,当用户进程连接监听器时,监听器会选择
一个负载最低的dispatcher,并把该dispatcher的地址返回给用户进程,用户进程和dispatcher进程建立
连接,用户进程在session的整个生命期间,所连接的dispatcher不会发生改变

共享连接的具体步骤如下:

1、用户进程连接到监听器
2、监听器根据注册的各个dispatcher的负载情况,选择一个负载最低的dispatcher,并将其地址返回给用户进程
3、用户进程根据监听器返回的dispatcher地址,连接到该dispatcher
4、dispatcher接收到用户进程发出的请求以后,会将该请求放入请求队列,该队列位于SGA中,请求队列被所有的dispatcher所共享
5、在服务器进程中,最空闲的服务器进程会从请求队列中按照先进先出的原则,挑选一个请求进行处理
6、服务器进程处理请求后,得到的结果放入响应队列,Oracle为每个dispatcher分配一个对应的响应队列
7、dispatcher到相应的队列中取出结果,返回给用户进程

注意:

1、专用连接中,用户进程和服务器进程一一对应,用户进程对应的PGA被服务器进程独享
2、共享连接中,多个服务器进程会处理多个用户请求,用户的PGA就需要在不同的服务器
进程之间共享,PGA中的UGA部分就会被放入到SGA中,如果配置了large pool,则UGA会
在large pool里分配,没有配置large pool,那么UGA就放在shared pool里面

配置共享连接

配置共享连接时,包含以下几个方面:

1、配置dispatcher进程的数量

 show parameter dispatcher

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dispatchers                          string      (PROTOCOL=TCP) (SERVICE=orclXD
                                                 B)

alter system set dispatchers=‘(PROTOCOL=TCP) (dispatchers=3)‘;

表示启动三个dispatcher,以tcp协议进行连接。可以通过max_dispatchers参数定义数据库里最多
可以同时启动多少个dispatchers,如;

alter system set max_dispatchers=5;

服务器进程

通过设置shared_servers来配置服务器进程,如:

alter system set shared_servers=5;

服务器进程可以根据需要动态生成。如果将shared_servers设置为0,则服务器进程一旦使用完毕就会被删除。
我们应该建立较少的服务器进程,如果不够用的话,则让系统根据负载自动创建额外的服务器进程。能够自动
同时创建的服务器进程个数有参数max_shared_servers决定。如:

alter system set max_shared_servers=20;

这时数据库默认会有5个服务器进程运行,当数据库负载增加,需要额外的服务器进程时,则会自动创建服务器
进程,最多有20个服务器进程。而当数据库负载下降时,也会自动删除服务器进程,直到剩下5个服务器进程。

共享连接的session个数

参数shared_server_sessions说明同时可以进行共享连接的session的个数。
能够同时使用专用连接的session个数等于参数sessions减去shared_server_sessions的值。

alter system set shared_server_sessions=5;

在服务器端配置了共享连接以后,还需要在客户端的tnsnames.ora文件里指明,要采用共享连接方式进行连接,如:

orcl =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.20)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
      (SERVER = shared)    --------如果是专用的话是:SERVER=DEDICATED
    )
  )

当我们以orcl作为客户端的连接字符串连接到数据库以后,可以用如下方式显示服务名的详细信息,从而验证是否成功建立共享连接;

共享连接的限制

有些操作不能再共享连接下完成。
启动关闭数据库实例
创建表空间和数据文件
维护表和索引等数据库管理的工作。

共享连接适用于单纯的OLTP应用。对于需要扫描大量数据,运行时间较长的操作,不适合采用共享连接,例 如备份恢复

六、设置默认端口后

如果如果监听的端口号不是1521,动态注册不成功,如何解决?

listener.ora中的内容:

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

发现端口号为1522,动态注册不成功:

sqlplus / as sysdba

alter system register;

lsnrctl status

Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

发现没有动态服务名

解决方法:

cd $ORACLE_HOME/network/admin
vi tnsname.ora

tt =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1522))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

sqlplus / as sysdba

alter system set local_listener=tt;

alter system register;

Services Summary...
Service "PLSExtProc" has 1 instance(s).
  Instance "PLSExtProc", status UNKNOWN, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 3 handler(s) for this service...
Service "orcl_XPT" has 1 instance(s).
  Instance "orcl", status READY, has 3 handler(s) for this service...

发现动态注册已成功
时间: 2024-11-07 13:37:38

ORACLE网络配置大全没有比这个更详细的【weber出品】的相关文章

9、oracle网络配置

oracle网络配置: 1.监听的相关概念 路径: $ORACLE_HOME/network/admin/listener.ora $ORACLE_HOME/network/admin/sqlnet.ora $ORACLE_HOME/network/admin/samples/tnsnames.ora tnsping orcl 请求服务名 用户进程 名词解析(user process)----请求连接请求-----listener-服务进程(server process) 配置和管理 oracl

Linux下安装Oracle网络配置检查未执行

问题描述 如图: 完整描述: Checking Network Configuration requirements ... Actual Result: Unknown Host Exception has Occurred :Linux-PC: Linux-PC. Check complete. The overall result of this check is: Not executed <<<< Recommendation: Oracle supports insta

oracle 网络配置(1)

网络: 服务器端:一定要启动监听程序无配置启动监听程序:rm -f $ORACLE_HOME/network/admin/listener.ora查看监听状态:lsnrctl status启动监听:lsnrctl start 客户端:使用服务命名(网络连接字符串)cat /etc/hosts------------------------------------------------------------# Do not remove the following line, or vario

oracle网络配置

listener.ora # listener.ora Network Configuration File: D:\ora\huangwei\product\11.2.0\dbhome_1\network\admin\listener.ora# Generated by Oracle configuration tools. --配置静态注册监听器SID_LIST_LISTENER =  (SID_LIST =    (SID_DESC =      (SID_NAME = CLRExtPro

ORACLE创建OEM是老爱报的错误【weber出品】

还是采用静默安装,手工建库完成后.在安装的OEM的时候一直报这个错误.这里稍微记载以下解决方案: Database connection through listener failed. Fix the error and run EM Configuration Assistant again. Some of the possible reasons may be: 1) Listener port 1521 provided is incorrect. Provide the correc

oracle系列(三)oracle的配置与管理

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 前言:我们前面学习了安装oracle以及创建数据库,如果想要将客户端与服务器连接起来,这就需要学习数据库的连接配置.在数据库的启动过程中需要打开控制文件,并利用控制文件打开数据文件.重做日志文件,从而打开数据库.本次文档给大家介绍连接配置,此外还有日志文件的原理及操作,以及如何使用和操作数据字典视图. 一.Oracle客户端与服务器端的通

oracle的环境配置-网络配置的方法

网络配置的方法: 1.tnsname客户端--A 直接修改文件                              B 通过客户端工具"网络配置助手"--win端直接打开调用Linux端,netca命令调出配置工具 2.监听器配置--服务器端 客户端配置监听服务室没有任何意义的,因为客户端没有oracle server 监听器配置文件:/u01/oracle/product/10.2.0/db_1/network/admin/listener.ora [[email protec

安装Oracle数据库时出现网络配置需求检查失败

错误提示: 正在检查网络配置需求...  检查完毕.此次检查的整体结果为: 失败 <<<< 问题: 安装检測到系统的主 IP 地址是 DHCP 分配的地址. 提示方法:将 Microsoft LoopBack Adapter 配置为系统的主网络适配器. 解决方法: 控制面板->加入硬件->是,(win7及之后没有加入硬件这个选项了,能够在cmd中输入然后输入hdwwiz.exe 就能够打开加入硬件了)我也经连接了此硬件->加入新硬件设备->安装我手动列表选择

Oracle 11g 安装过程中“检查网络配置要求 未执行”解决方法

正在检查网络配置要求... 检查完成.此次检查的总体结果为: 未执行 网上查了一下,很多朋友都遇到这个问题而无从下手,其实解决起来很容易的. 只需要在 Windows XP 中安装 Microsoft LoopBack Adapter[Microsoft 环回适配器]就可以了. Microsoft 环回适配器是一种可用于在虚拟网络环境中进行测试的工具,在这样的环境中无法访问网络.另外,如果存在与网络适配器或网络适配器驱动程序的冲突,则必须使用环回适配器.可以将网络客户端.协议和其他网络配置项目绑