大家在学习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))
)
)
[[email protected] ~]$ 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:
[[email protected] ~]$ 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客户端连接服务器端的网络配置,希望对大家有用。