关于oracle11g简单的网络配置

来源:互联网 发布:永恒之塔模拟器源码 编辑:程序博客网 时间:2024/06/16 13:15

    大家在学习oracle的时候,网络配置和os认证一般很困扰,下面来介绍下关于oracle的网络配置。

    我的服务器是在虚拟机里,客户端是在我的电脑上。我的oracle服务器基本信息:

数据库名:orcl3939    ip:178.3.601.172           虚拟机名: localhost.localdomain           数据库全局名:orcl3939.localdomain

客户端是从oracle官网上下载的win64_11gR2_client,第三方工具使用的是PL/SQL DEVELOPER

下面介绍一下网络配置方面的一些名词:

Global_name对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name. Db_domain。

DB_NAME:    
DB_NAME概念相比于INSTANCE_NAME要重要的多,它决定实例将挂在的数据文件。它出现在数据文件,控制文件,日志文件中。在参数文件中也出现,且必须出现。这个参数涉及到系统的物理文件。
SERVICE_NAME和GLOBAL_DBNAME
 这两个参数之所以放在一起讲,是因为他们往往是成对出现的。SERVICE_NAME出现在Tnsnames.ora文件中,是客户端要请求的服务名。
Service_name该参数是oracle8i新引进的。在8i以前,我们用SID来表示标识数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多个网络服务名,设置繁琐。为了方便并行环境中的设置,引进了Service_name参数,该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。该参数的缺省值为Db_name. Db_domain,即等于Global_name。一个数据库可以对应多个Service_name,以便实现更灵活的配置。该参数与SID没有直接关系,即不必Service name 必须与SID一样。
Net service name网络服务名,又可以称为数据库别名(database alias)。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。

ORACLE_SID(INSTANCE_NAME):(ORACLE SYSTEM IDENTIFIER)
以环境变量的形式出现的。
Oracle实例是由SGA和一组后台进程组成的,实例的创建和启动需要一个参数文件,而参数文件的名称就是由ORACLE_SID决定的。对于init文件,缺省的文件名称是init<ORACLE_SID>.ora,对于spfile文件,缺省的文件名称是spfile<ORACLE_SID>.ora
设置不同的ORACLE_SID值,就可以默认使用不同的参数文件启动不同的数据库实例。
另外,ORACLE_SID的作用远远不是作为一个实例入口这么简单的,在实例启动后,实例名称INSTANCE_NAME也是从ORACLE_SID得到的。
ORACLE_SID参数,这个参数是操作系统中用到的,它是描述我们要默认连接的数据库实例.
instance_name是oracle数据库参数。而ORACLE_SID是操作系统的环境变量,ORACLE_SID必须与instance_name的值一致.
INSTANCE_NAME:
实例名称,这是Oracle实例的名字,用来区分不通的实例。在Oracle9i之前,该名字存储在两个地方:参数文件和数据库的内部视图(V$INSTANCE).
而在Oracle10g之后的版本中,该名字不再出现在参数文件中,而是动态从系统中获得,默认是取自ORACLE_SID。
INSTANCE_NAME的作用除了区别不同实例之外,在监听器动态注册时,还会用于向监听器注册。比如instance_name=kanon,监听中将动态注册Instance "kanon",status READY信息。
   因为我的服务器是在安装在虚拟机linux下的,所以虚拟机的网络配置也很重要,虚拟机选择桥接连接模式,自动获取ip(在虚拟网络编辑器里一定要主要网卡的选择,这个可能造成你网连不通),vim  /etc/sysconfig/network-ig/network-scripts/ifcfg-eth0(注意红颜色部分)
TYPE=Ethernet
DEVICE=eth0
HWADDR=00:50:56:34:9c:ed
BOOTPROTO=dhcp
ONBOOT=yes
USERCTL=no
IPV6INIT=no
PEERDNS=yes
CHANNEL=自动
MODE=Auto
SECURITYMODE=off
RATE=auto
这一切弄好后,可以ifconfig或者在我电脑上ping 178.3.601.172
来自 172.18.112.178 的回复: 字节=32 时间=3ms TTL=64
来自 172.18.112.178 的回复: 字节=32 时间<1ms TTL=64
来自 172.18.112.178 的回复: 字节=32 时间<1ms TTL=64
来自 172.18.112.178 的回复: 字节=32 时间<1ms TTL=64
172.18.112.178 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 3ms,平均 = 0ms
看到了吧,虚拟机和电脑网络是通的。


服务器的网络配置:

服务器端的配置是配置监听,也就是配置../dbhome/network/admit/listener.org

默认的监听是listener,我加了一个监听(listener1):

                            

LISTENER1 =

  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1522))
    )
  )          

[oracle@localhost ~]$ lsnrctl start listener1;


LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 17-12月-2014 13:11:24


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


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


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


正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost.localdomain)(PORT=1522)))
LISTENER 的 STATUS
------------------------
别名                      listener1
版本                      TNSLSNR for Linux: Version 11.2.0.1.0 - Production
启动日期                  17-12月-2014 13:11:27
正常运行时间              0 天 0 小时 0 分 5 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序参数文件          /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
监听程序日志文件          /u01/app/oracle/diag/tnslsnr/localhost/listener1/alert/log.xml
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost.localdomain)(PORT=1522)))
监听程序不支持服务
命令执行成功


   我所加的监听listener1是动态注册,我们也可以静态注册。如下:

              LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
    )
  )
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = orcl3939)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
        (GLOBAL_DBNAME = orcl3939.localdomain)
    )
)

以上所涉及到的名词不在赘述,开头已经介绍。

我们来启动静态监听listener:

 [oracle@localhost ~]$ lsnrctl start listener;


LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 17-12月-2014 13:18:15


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


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


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


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

此时oracle的服务器端已经配置好了,那我们再配置客户端。



客户端的网络配置:

客户端的配置,推荐用oracle net mananger配置其实就是配置服务命名和监听,oracle把很多东西都包装在服务命名中,服务命名此时就是一个数据库,可以这么理解。

首先我们手动配置:

手动配置tns:

F:\product\11.2.0\client\network\admin下配置tnsnames.ora文件:

JINGTAI(很多人都问,这里要填什么,你填什么都可以) =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 178.3.601.172 )(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl3939.localdomain)
    )
  )

   手动配置listener:

woo =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 178.3.601.172)(PORT = 1521))
  )


SID_LIST_888 =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl3939.localdomain)
      (SID_NAME = orcl3939)
    )
  )

      到这里我们手动配置客户端就OK了,下面我们介绍利用oracle net mananger来配置。


利用oracle net mananger:

在oracle net mananger 里新建一个服务命名wo(你写啥都可以):

 这里的主机名:填写服务器所在的ip地址

 服务名:填写全局数据库名

 端口号:和你tns中对应配置的相同。

接下来我们来配置一些监听:

新建一个监听woo(你写啥都行):

监听位置里对应的主机写ip.

数据库服务里的oracle主目录是可选的。

接下来我们可以tnsping wo:

C:\Users\Administrator>tnsping wo
TNS Ping Utility for 32-bit Windows: Version 11.2.0.1.0 - Production on 17-12月-
2014 13:48:44
Copyright (c) 1997, 2010, Oracle.  All rights reserved.
已使用的参数文件:
F:\app\Administrator\product\11.2.0\client\network\admin\sqlnet.ora

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

测试结果:



已经ok啦。

此时我们打开第三方工具pl/sql developer时:


以上就是比较基本的oracle客户端连接服务器端的网络配置,希望对大家有用。

  

                     


0 0