Oracle网络配置管理

24 篇文章 0 订阅
15 篇文章 1 订阅

Oracle的网络连接

无论使用应用程序还是sqlplus连接远端数据库,都必须建立客户端与数据库之间的连接。

oracle提供了Oracle  Net Service组件,方便地配置和管理网络连接。

Oracle  Net Service组成:

  1. Oracle Net
  2. Oracle Net Lisners
  3. Oracle  Connection Listeners
  4. Oracle Net Configuration Assistant
  5. Oracle Net Manager

Oracle Net组件必须在服务器端和客户端都安装,它负责客户机与服务器之间连接的初始化、建立及维护工作。

Oracle网络连接流程描述:

  1. 客户端发起连接。确定服务器、监听端口、协议、数据库服务名。
  2. 客户端一旦与监听器建立连接,会在客户端生成用户进程,同时监听器会判断客户端所请求的服务名是否为自己所管理的服务名。(如果客户端传过来的连接字符串不包含服务器名,会报错,如果请求的服务名是自己管理的,监听器就会在数据库服务器上创建服务器进程。)
  3. 监听器在创建服务器进程以后,会将用户进程与服务器进程建立连接,之后,监听器退出与客户端的连接。
  4. 服务器进程根据用户进程提供的用户名和密码到数据字典中判断是否正确。
  5. 如果用户名密码不匹配则报错,如果匹配则分配PGA,并生成SESSION。

服务端监听器配置

无论是共享服务器连接还是专有服务器连接,数据库服务器端都必须配置监听。

监听程序即 Oracle Net Service,由一个oracle文件管理,该文件名为listener.ora,该文件的默认位置为$ORACLE_HOME/network/admin目录

oracle监听程序只运行在数据库服务器上,完成客户连接请求作用。

oracle使用lsnrctl实用程序完成监听程序的配置和管理

  • 查看监听配置信息

下面操作可以看到:

  1. 监听器为:LISTENER
  2. 协议为:TCP
  3. 主机:oracle
  4. 端口:1521

可以使用NETCA配置监听器,也可以通过编辑listener.ora来配置监听器

[root@oracle ~]# cd $ORACLE_HOME/network/admin
[root@oracle admin]# ls
listener2004056PM5343.bak  listener.ora  samples  shrept.lst  tnsnames.ora
[root@oracle admin]# cat listener.ora 
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle
  • 新配置一个监听(vim编辑listener.ora)

# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
    )
  )

ADR_BASE_LISTENER = /u01/app/oracle

LISTENER1 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
    )
  )
  • 启动新配置的监听

lsnrctl start:开启监听

lsnrctl stop:关闭监听

lsnrctl status:查看监听状态

如果lsnrctl start 不指定监听器,则开启默认LISTENER

监听的开启需要一定的时间

[root@oracle admin]# lsnrctl stop

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 09-4月 -2020 01:03:41

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

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
命令执行成功
[root@oracle admin]# lsnrctl start LISTENER1

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 09-4月 -2020 01:03:56

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

启动/u01/app/oracle/product/11.2.0/db_1/bin/tnslsnr: 请稍候...

TNSLSNR for Linux: Version 11.2.0.4.0 - Production
系统参数文件为/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
写入/u01/app/oracle/diag/tnslsnr/oracle/listener1/alert/log.xml的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER1
版本                      TNSLSNR for Linux: Version 11.2.0.4.0 - Production
启动日期                  09-4月 -2020 01:03:56
正常运行时间              0 天 0 小时 0 分 0 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
监听程序日志文件          /u01/app/oracle/diag/tnslsnr/oracle/listener1/alert/log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
监听程序不支持服务
命令执行成功
[root@oracle admin]# lsnrctl status;

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 09-4月 -2020 01:04:54

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

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
LISTENER 的 STATUS
------------------------
别名                      LISTENER1
版本                      TNSLSNR for Linux: Version 11.2.0.4.0 - Production
启动日期                  09-4月 -2020 01:03:56
正常运行时间              0 天 0 小时 0 分 58 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
监听程序日志文件          /u01/app/oracle/diag/tnslsnr/oracle/listener1/alert/log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
服务摘要..
服务 "tiqs" 包含 1 个实例。
  实例 "tiqs", 状态 READY, 包含此服务的 1 个处理程序...
服务 "tiqsXDB" 包含 1 个实例。
  实例 "tiqs", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功

数据库动态注册监听器

  • 查看当前数据库的服务名

下面的操作看到,当前服务器得到服务名为tiqs

SQL> show parameter service_name

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
service_names                        string                            tiqs
  • 查看当前数据库参数local_listener的值

下面的操作可以看到当前该参数为空,没有设置动态注册监听器的信息。

SQL> show parameter local_listener

NAME                                 TYPE                              VALUE
------------------------------------ --------------------------------- ------------------------------
local_listener                       string
  • 修改local_listener动态注册oracle数据库

下面的操作一旦修改,立刻完成

SQL> alter system set local_listener='(address_list=(address=(protocol=tcp)(host=oracle)(port=1521)))';

系统已更改。

SQL> show parameter local_listener;

NAME                                 TYPE
------------------------------------ ---------------------------------
VALUE
------------------------------
local_listener                       string
(address_list=(address=(protoc
ol=tcp)(host=oracle)(port=1521
)))

sqlplus从客户端连接到数据库服务器时,虽然监听已启动,但是作为客户端还是需要有自己的配置。

在客户端需要修改tnsnames.ora

  • 配置tnsnames.ora文件

[root@oracle admin]# vim tnsnames.ora 
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

TIQS =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.137.200)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = tiqs)
    )
  )             
  • 测试客户端到监听器是否通畅

下面的操作证明了,客户端到监听器是通畅的,但是还是不能够保证数据库的连接已经成功,因为如果数据库未启动,监听启动了一样可以ping得通。

[root@oracle admin]# tnsping oracle

TNS Ping Utility for Linux: Version 11.2.0.4.0 - Production on 09-4月 -2020 01:21:03

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

已使用的参数文件:

已使用 HOSTNAME 适配器来解析别名
尝试连接 (DESCRIPTION=(CONNECT_DATA=(SERVICE_NAME=))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.137.200)(PORT=1521)))
OK (0 毫秒)

监听程序管理

oracle使用lsnrctl实用程序来管理和维护监听。

  • 查看监听管理指令

[root@oracle admin]# lsnrctl help

LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 09-4月 -2020 01:24:52

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

以下操作可用
星号 (*) 表示修改符或扩展命令: 

start               stop                status              
services            version             reload              
save_config         trace               spawn               
change_password     quit                exit                
set*                show*               

上面的操作可以看到很多监听可以使用的操作,下面是几个常用的监听指令介绍:

  1. lsnrctl start:启动监听,默认启动LISTENER,如果不是默认监听则需要自己指定启动的监听器名字
    [root@oracle admin]# lsnrctl start LISTENER1
    
    LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 09-4月 -2020 01:03:56
    
    Copyright (c) 1991, 2013, Oracle.  All rights reserved.
    
    启动/u01/app/oracle/product/11.2.0/db_1/bin/tnslsnr: 请稍候...
    
    TNSLSNR for Linux: Version 11.2.0.4.0 - Production
    系统参数文件为/u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
    写入/u01/app/oracle/diag/tnslsnr/oracle/listener1/alert/log.xml的日志信息
    监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
    
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
    LISTENER 的 STATUS
    ------------------------
    别名                      LISTENER1
    版本                      TNSLSNR for Linux: Version 11.2.0.4.0 - Production
    启动日期                  09-4月 -2020 01:03:56
    正常运行时间              0 天 0 小时 0 分 0 秒
    跟踪级别                  off
    安全性                    ON: Local OS Authentication
    SNMP                      OFF
    监听程序参数文件          /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
    监听程序日志文件          /u01/app/oracle/diag/tnslsnr/oracle/listener1/alert/log.xml
    监听端点概要...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521)))
    监听程序不支持服务
    命令执行成功

     

  2. lsnrctl stop:关闭监听,如果不是默认监听则需要指定监听器的名字
    [root@oracle admin]# lsnrctl stop
    
    LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 09-4月 -2020 01:03:41
    
    Copyright (c) 1991, 2013, Oracle.  All rights reserved.
    
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
    命令执行成功

     

  3. lsnrctl service:查看监听为连接请求监控的服务内容
    [root@oracle admin]# lsnrctl service
    
    LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 09-4月 -2020 01:32:31
    
    Copyright (c) 1991, 2013, Oracle.  All rights reserved.
    
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
    服务摘要..
    服务 "tiqs" 包含 1 个实例。
      实例 "tiqs", 状态 READY, 包含此服务的 1 个处理程序...
        处理程序:
          "DEDICATED" 已建立:0 已拒绝:0 状态:ready
             LOCAL SERVER
    服务 "tiqsXDB" 包含 1 个实例。
      实例 "tiqs", 状态 READY, 包含此服务的 1 个处理程序...
        处理程序:
          "D000" 已建立:0 已被拒绝:0 当前: 0 最大: 1022 状态: ready
             DISPATCHER <machine: oracle, pid: 13804>
             (ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=34116))
    命令执行成功
  4. lsnrctl reload:允许重载监听程序,如监听文件更新,可以用该指令使得修改生效,在重载过程中已经建立连接的客户机可以保持连接。
    [root@oracle admin]# lsnrctl reload
    
    LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 09-4月 -2020 01:36:12
    
    Copyright (c) 1991, 2013, Oracle.  All rights reserved.
    
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521)))
    命令执行成功

     

  5. lsnrctl set:设置监听管理密码,防止未授权而操作监听器

客户端配置

  • 本地命名

本地命名可以参考上面的配置     tnsnames.ora文件    部分

  • 简单命名

简单命名网络连接是最简洁的连接方法,在配置方面要求很少,并且甚至不需要配置TCP/IP环境下的tnsnames.ora。

客户机只需要主机名或IP地址,端口号,以及数据库的服务名即可连接到数据库服务器。

oracle数据服务器支持的两种连接方式

oracle数据服务器提供了两种数据库连接的方式,一种是专有连接方式,另一种是共享连接的方式。

  • 服务器进程

两种不同的连接方式分别对应了两种oracle服务器,专有服务器和共享服务器

  • 共享连接(略)

  • 专有连接(略)

数据库驻留连接池(略)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值