tnsnames.ora配置小结

tnsnames.ora配置小结

oracle网络配置

三个配置文件listener.ora、sqlnet.ora、tnsnames.ora ,都是放在

$ORACLE_HOME/network/admin目录下。

1. sqlnet.ora—–作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串。

例如我们客户端输入

sqlplus sys/oracle@orcl

假如我的sqlnet.ora是下面这个样子

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME)

那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上

GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名

如果我是这个样子

NAMES.DIRECTORY_PATH= (TNSNAMES)

那么客户端就只会从tnsnames.ora查找orcl的记录,括号中还有其他选项,如LDAP等并不常用。

2. Tnsnames.ora——这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应,只有当sqlnet.ora中类似

NAMES.DIRECTORY_PATH= (TNSNAMES) 这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。

PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。HOST:数据库侦听所在的机器的机器名或IP地址,数据库侦听一般与数据库在同一个机器上,所以当我说数据库侦听所在的机器一般也是指数据库所在的机器。在UNIX或WINDOWS下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名,或通过ipconfig(for WINDOWS) or ifconfig(for UNIX)命令得到IP地址。需要注意的是,不管用机器名或IP地址,在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名,否则需要在hosts文件中加入数据库侦听所在的机器的机器名的解析。PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。

SERVICE_NAME:在服务器端,用system用户登陆后,sqlplus> show parameter service_name命令察看。

ORCL 对应的本机,SALES对应的另外一个IP地址,里边还定义了使用主用服务器还是共享服务器模式进行连接

#你所要连接的时候输入得TNSNAME

ORCL =

(DESCRIPTION =

(ADDRESS_LIST =

#下面是这个TNSNAME对应的主机,端口,协议

(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

)

(CONNECT_DATA =

#使用专用服务器模式去连接需要跟服务器的模式匹配,如果没有就根据服务器的模式自动调节

(SERVER = DEDICATED)

#对应service_name,SQLPLUS>;show parameter service_name; 进行查看(SERVICE_NAME = orcl)

)

)

#下面这个类似

SALES =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.188.219)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = sales)

)

)

注意:如果数据库服务器用MTS,客户端程序需要用database link时最好明确指明客户端用dedicated直连方式,不然会遇到很多跟分布式环境有关的ORACLE BUG。一般情况下数据库服务器用直接的连接会好一些,除非你的实时数据库连接数接近1000。

3. listener.ora——listener监听器进程的配置文件

关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。

Listener.ora文件的例子

#listener.ora Network Configuration File:

#E:/oracle/product/10.1.0/Db_2/NETWORK/ADMIN/listener.ora

# Generated by Oracle configuration tools.

#下面定义LISTENER进程为哪个实例提供服务这里是ORCL,并且它对应的

ORACLE_HOME和GLOBAL_DBNAME 其中GLOBAL_DBNAME不是必需的除非

#使用HOSTNAME做数据库连接

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = boway)

(ORACLE_HOME = E:/oracle/product/10.1.0/Db_2)

(SID_NAME = ORCL)

)

)

#监听器的名字,一台数据库可以有不止一个监听器

#再向下面是监听器监听的协议,ip,端口等,这里使用的tcp1521端口,并且使#用的是主机名

LISTENER =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))

)

上面的例子是一个最简单的例子,但也是最普遍的。一个listener进程为一个instance(SID)提供服务。

监听器的操作命令

$ORACLE_HOME/bin/lsnrctl start,其他诸如stop,status等。具体敲完一个lsnrctl后看帮助。上面说到的三个文件都可以通过图形的配置工具来完成配置

$ORACLE_HOME/netca 向导形式的

$ORACLE_HOME/netmgr

本人比较习惯netmgr,

profile 配置的是sqlnet.ora也就是名称解析的方式

service name 配置的是tnsnames.ora文件

listeners配置的是listener.ora文件,即监听器进程

具体的配置可以尝试一下然后来看一下配置文件。

这样一来总体结构就有了,是

当你输入sqlplus sys/oracle@orcl的时候

1.查询sqlnet.ora看看名称的解析方式,发现是TNSNAME

2.则查询tnsnames.ora文件,从里边找orcl的记录,并且找到主机名,端口和

service_name

3.如果listener进程没有问题的话,建立与listener进程的连接。

4.根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process。5.这时候网络连接已经建立,listener进程的历史使命也就完成了。

#—————

几种连接用到的命令形式

1.sqlplus / as sysdba 这是典型的操作系统认证,不需要listener进程

2.sqlplus sys/oracle 这种连接方式只能连接本机数据库,同样不需要listener进程

3.sqlplus sys/oracle@orcl这种方式需要listener进程处于可用状态。最普遍的通过网络连接。

以上连接方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,普通用户因为是数据库认证,所以数据库必需处于open状态。

init.ora中的Remote_Login_Passwordfile对身份验证的影响

三个可选值:

NONE:默认值,指示Oracle系统不使用密码文件,通过操作系统进行身份验证的特权用户拥有SYSORA和SYSOPER权限

EXCLUSIVE:

1.表示只有一个数据库实例可以使用密码文件

2.允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户

SHARED:

1.表示可以有多个数据库实例可以使用密码文件

2.不允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户

所以,如果要以操作系统身份登录,Remote_Login_Passwordfile应该设置为NONE 当登录用户不是ORA_DBA组和ORA_OPER组成员时,登录数据库需要在Oracle中创建当前操作系统用户相同的用户名,如果当前用户是域用户,则名称

为:domainname/yourname,如果是本地计算机用户,则名称为:computername/yourname 创建方法:

create "domainname/yourname" identified externally;

操作系统,修改HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE/HOME0下面添加AUTH_PREFIX_DOMAIN,值设为FALSE,在创建Oracle用户时可以忽略掉域名

这种方式下,init.ora中有一个参数将影响数据库如何匹配一个windows用户和Oracle 用户os_authent_prefix = ""

缺省为空,Oracle8i以前,无该参数,而使用OPS$作为用户名前缀.(Oracle用户名最大长度限制为30个字符)

关于域名(主机名)解析

/etc/hosts (UNIX)

或者windows/hosts(WIN98) winnt/system32/drivers/etc/hosts (WIN2000)

客户端需要写入数据库服务器IP地址和主机名的对应关系。

127.0.0.1 localhost

192.168.0.35 oracledb oracledb

192.168.0.45 tomcat tomcat

202.84.10.193 bj_db bj_db

有些时候我们配置好第一步后,tnsping 数据库服务器别名显示是成功的,

但是sqlplus username/password@servicename不通,jdbc thin link 也不通的时候,

一定不要忘了在客户端做这一步,原因可能是DNS服务器里没有设置这个服务器IP 地址和主机名的对应关系。

如果同时有私有IP和Internet上公有IP,私有IP写在前面,公有IP写在后面。

编辑前最好留一个备份,增加一行时也最好用复制粘贴,避免编辑hosts时空格或者tab字符错误。

UNIX下ORACLE多数据库的环境,OS客户端需要配置下面两个环境变量ORACLE_SID=appdb;export ORACLE_SID

TWO_TASK=appdb;export TWO_TASK

来指定默认的目标数据库

#————-

平时排错可能会用到的

1.lsnrctl status查看服务器端listener进程的状态

LSNRCTL>; help

The following operations are available

An asterisk (*) denotes a modifier or extended command:

start stop status

services version reload

save_config trace change_password

quit exit set*

show*

LSNRCTL>; status

:em11:

2.tnsping 查看客户端sqlnet.ora和tnsname.ora文件的配置正确与否,及对应的服务器的listener进程的状态。

C:/>tnsping orcl

TNS Ping Utility for 32-bit Windows: Version 10.1.0.2.0 – Production on 16-8月–

2005 09:36:08

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

Used parameter files:

E:/oracle/product/10.1.0/Db_2/network/admin/sqlnet.ora

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)

(HOST = 127.0.0.1)(PORT = 1521))) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_

NAME = orcl)))

OK (20 msec)

3.

SQL>;show sga 查看instance是否已经启动

SQL>; select open_mode from v$database; 查看数据库是打开还是mount状态。OPEN_MODE

———-

READ WRITE

使用hostname访问数据库而不是tnsname的例子

使用tnsname访问数据库是默认的方式,但是也带来点问题,那就是客户端都是需要配置tnsnames.ora文件的。如果你的数据库服务器地址发生改变,就需要重新编辑客户端这个文件。通过hostname访问数据库就没有了这个麻烦。

需要修改

服务器端listener.ora

#监听器的配置文件listener.ora

#使用host naming则不再需要tnsname.ora文件做本地解析

# listener.ora Network Configuration File:

d:/oracle/product/10.1.0/db_1/NETWORK/ADMIN/listener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

# (SID_NAME = PLSExtProc)

(SID_NAME = orcl)

(GLOBAL_DBNAME = boway)

(ORACLE_HOME = d:/oracle/product/10.1.0/db_1)

# (PROGRAM = extproc)

)

)

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))

)

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = boway)(PORT = 1521))

)

)

客户端sqlnet.ora 如果确认不会使用TNSNAME访问的话,可以去掉TNSNAMES

# sqlnet.ora Network Configuration File:

d:/oracle/product/10.1.0/db_1/NETWORK/ADMIN/sqlnet.ora

# Generated by Oracle configuration tools.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (HOSTNAME)

Tnsnames.ora文件不需要配置,删除也无所谓。

下面就是网络和操作系统的配置问题了,怎么样能够解析我的主机名的问题了

可以通过下面的方式连接

sqlplus sys/oracle@boway

这样的话,会连接boway这台服务器,并且listener来确定你所要连接的service_name 常见故障解决办法:

TNS-12154 (ORA-12154):TNS:could not resolve service name

该错误表示用于连接的网络服务名在tnsnames.ora文件中不存在,如上面的tnsnames.ora 中的网络服务名只有test,假如用户在连接时用sqlplus system/manager@test1则就会给出TNS-12154错误。

要注意的是,有时即使在tnsnames.ora文件中有相应的网络服务名,可是用该网络服务名

连接时还会出错,出现这种情况的典型配置如下(在客户端的机器上):

sqlnet.ora文件:

NAMES.DIRECTORY_PATH = (TNSNAMES, ….)

NAMES.DEFAULT_DOMAIN = https://www.360docs.net/doc/c419079970.html,

tnsnames.ora文件:

test =

(DESCRIPTION=

(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT=1521))

)

(CONNECT_DATA=(SERVICE_NAME=https://www.360docs.net/doc/c419079970.html,)

)

)

sql*plus运行基本机理:

在用户输入sqlplus system/manager@test后,sqlplus程序会自动到sqlnet.ora文件中找NAMES.DEFAULT_DOMAIN参数,假如该参数存在,则将该参数中的值取出,加到网络服务名的后面,即此例中你的输入由sqlplus system/manager@test自动变为sqlplus system/manager@https://www.360docs.net/doc/c419079970.html,,然后再到tnsnames.ora文件中找https://www.360docs.net/doc/c419079970.html,网络服务名,这当然找不到了,因为该文件中只有test网络服务名,所以报错。解决的办法就是将sqlnet.ora文件中的NAMES.DEFAULT_DOMAIN参数注释掉即可,如

#NAMES.DEFAULT_DOMAIN = https://www.360docs.net/doc/c419079970.html,。假如NAMES.DEFAULT_DOMAIN参数不存在,则sqlplus程序会直接到tnsnames.ora文件中找test网络服务名,然后取出其中的host,port,tcp,service_name,利用这些信息将连接请求发送到正确的数据库服务器上。

另外原则上tnsnames.ora中的配置不区分大小写,但是我的确遇到区分大小写的情况,所以最好将使用的网络服务与tnsnames.ora中配置的完全一样。

ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect Descriptor. 该错误表示能在tnsnames.ora中找到网络服务名,但是在tnsnames.ora中指定的SERVICE_NAME与服务器端的SERVICE_NAME不一致。解决的办法是修改tnsnames.ora中的SERVICE_NAME。

易混淆术语介绍:

Db_name:对一个数据库(Oracle database)的唯一标识,该数据库为Oracle database。这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。为了解决这种情况,引入了Db_domain参数,这样在数据库的标识是由Db_name和Db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。这类似于互连网上的机器名的管理。我们将Db_name和Db_domain两个参数用‘.‘连

接起来,表示一个数据库,并将该数据库的名称称为Global_name,即它扩展了Db_name。Db_name参数只能由字母、数字、‘_‘、‘#‘、‘$‘组成,而且最多8个字符。

Db_domain:定义一个数据库所在的域,该域的命名同互联网的‘域‘没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。当然为了管理方便,可以将其等于互联网的域。

Global_name:对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法命令数据库。该值是在创建数据库是决定的,缺省值为Db_name. Db_domain。在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值,如果要修改Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO 命令进行修改,然后修改相应参数。

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)。是客户端程序访问数据库时所需要,屏蔽了客户端如何连接到服务器端的细节,实现了数据库的位置透明的特性。

如何利用配置的网络服务名连接到数据库:

用sqlplus程序通过test网络服务名进行测试,如sqlplus system/manager@test。如果不能连接到数据库,则在tnsname.ora文件中的test网络服务名(net service)后面加上Oracle数据库的DB_Domain参数值,通过用sqlplus> show parameter db_domain命令察看。此处db_domain参数值为https://www.360docs.net/doc/c419079970.html,,将其加到网络服务名后面,修改后的tnsname.ora中关于该网络服务名的内容为:

应该改为:

如何利用配置的网络服务名连接到数据库:

用sqlplus程序通过test网络服务名进行测试,如sqlplus system/manager@test。如果不能连接到数据库,则在tnsname.ora文件中的test网络服务名(net service)后面加上sqlnet.ora文件中NAMES.DEFAULT_DOMAIN参数的值,此处我的参数值为https://www.360docs.net/doc/c419079970.html,,将其加到网络服务名后面,修改后的tnsname.ora中关于该网络服务名的内容为:

什么情况下会引起oracle自动设置NAMES.DEFAULT_DOMAIN参数?

出现这种情况的典型环境为windows的客户端的‗我得电脑à属性à计算机名à更改à其它…à此计算机的主DNS后缀‘中设置了‗primary dns suffix‘,因为在这种情况下安装客户端

时,会在sqlnet.ora文件中自动设置NAMES.DEFAULT_DOMAIN参数,或许当把计算机加入域中安装oracle客户端时也会出现这种情况,有条件的话大家可以试一下。

我在设置oracle的客户端时一般手工修改tnsnames.ora文件,但是还有许多人喜欢用图形工具配置,该图形工具最终还是修改tnsnames.ora文件,但是它有时会引起其它的问题:在用oracle的图形配置软件‘net assistant‘或‗Net Configuration Assistant‘配置网络服务名时,假如已经设置了‗primary dns suffix‘,但是在图形配置软件中写的网络服务名的名字中没有‗primary dns suffix‘,如只是写了test,则图形配置软件会自动在后面加上‗primary dns suffix‘,使之变为https://www.360docs.net/doc/c419079970.html,,并存在tnsnames.ora中,而不管你的sqlnet.ora文件中是否有NAMES.DEFAULT_DOMAIN参数。此时,用图形工具进行测试连接是通过的,但是假如此时sqlnet.ora文件中没有NAMES.DEFAULT_DOMAIN参数,则你在使用网络服务名时应该使用在tnsnames.ora中的https://www.360docs.net/doc/c419079970.html,,而不是你在图形配置软件中键入的test。解决的办法为:

可以在sqlnet.ora文件中设置NAMES.DEFAULT_DOMAIN= https://www.360docs.net/doc/c419079970.html,,这时你可以用test或https://www.360docs.net/doc/c419079970.html,连接数据库

在sqlnet.ora文件中不设置NAMES.DEFAULT_DOMAIN参数,在tnsnames.ora文件中将https://www.360docs.net/doc/c419079970.html,中的https://www.360docs.net/doc/c419079970.html,去掉,这时你可以用test连接数据库

listener.ora、tnsnames.ora和sqlnet.ora这3个文件是关系oracle网络配置的3个主要文件,其中listener.ora是和数据库服务器端相关,而tnsnames.ora和sqlnet.ora这2个文件不仅仅关系到服务器端,主要的还是和客户端关系紧密。

检查客户端oracle网络的时候可以先检查sqlnet.ora文件:

# SQLNET.ORA Network Configuration File:

$ORACLE_HOME/NETWORK/ADMIN/sqlnet.ora

# Generated by Oracle configuration tools.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES)

##NAMES.DEFAULT_DOMAIN = https://www.360docs.net/doc/c419079970.html,

上面的sqlnet.ora文件说明:

SQLNET.AUTHENTICATION_SERVICES= (NTS)——这个表示采用os认证,在数据库服务器上,可以利用sqlplus ―/ as sysdba‖。一般这个配置在windows上是ok的,在unix环境下可能会有问题,一般在unix下可以去掉这个配置。

NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES)——表示将首先利用tnsnames进行解析;如果tnsnames解析不到,将使用hostname解析;如果hostname 解析不到,将采用onames进行解析。

被注释掉的NAMES.DEFAULT_DOMAIN = https://www.360docs.net/doc/c419079970.html,——表示采用默认的domain name为https://www.360docs.net/doc/c419079970.html,,在tnsnames.ora中如果配置对应的解析,如果原来的别名oralocal,那么,当启用这个参数后,在tnsnames中的配置要改成https://www.360docs.net/doc/c419079970.html,。在使用tnsping时或者sqlplus登录时,只需写前面的别名,系统会自动加上后面的domain name 来进行解析。

检查完毕sqlnet.ora,一般都会发现是使用tnsname来解析别名的,那么,tnsnames.ora 中可以有哪些配置种类呢?

# TNSNAMES.ORA Network Configuration File:

$ORACLE_HOME/NETWORK/ADMIN/tnsnames.ora

# Generated by Oracle configuration tools.

###### 一般的配置##################################

ORALOCAL =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = oralocal)

)

)

###### 这样也行,用SID=oralocal ###########################

ORALOCAL_2 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SID = oralocal)

###### RAC的配置(3节点rac) ############################### ORALOCAL =

(DESCRIPTION =

(load_balance = yes)

(failover = on)

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.3)(PORT = 1521)) )

(CONNECT_DATA =

(SERVICE_NAME = oralocal)

(SERVER = DEDICATED)

(failover_mode=(type=select)(method=basic)(retries=20)(delay=20)) )

)

ORALOCAL_NODE1 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521)) )

(CONNECT_DATA =

(SERVICE_NAME = oralocal)

(INSTANCE_NAME = oralocal_node1)

)

)

ORALOCAL_NODE2=

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521)) )

(CONNECT_DATA =

(SERVICE_NAME = oralocal)

(INSTANCE_NAME = oralocal_node2)

)

ORALOCAL_NODE3 =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.3)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = oralocal)

(INSTANCE_NAME = oralocal_node3)

)

)

)

###### DATA GUARD配置(primary库和standby库都需要配置)############## standby =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.2)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER=DEDICATED)

(SERVICE_NAME = oralocal)

)

)

primary =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.1)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER=DEDICATED)

(SERVICE_NAME = oralocal)

)

)

另外需要注意的2点情况:

(1)如果tnsnames中的service_name配置错误,配置成了instance_name了,这个时候会发生tnsping能通,但是sqlplus连接不上的奇怪情况。报错ORA-12514: TNS:listener could not resolve SERVICE_NAME given in connect descriptor。这个时候查错的时候,需要检查对应的service_name。

(2)如果远程数据库是rac,而且本地客户端端远程数据库处于不同的网段,通过公网链接,rac对外的ip映射只有一个,即只映射到一个节点。请注意在客户端配置tnsnames的时候按照单机的情况来配置。呵呵,dba不仅仅要学习oracle,了解一些网络的知识,特别是自己系统的网络架构,也是需要的。

Oracle网络配置用到的sqlnet.ora,tnsnames.ora,listener.ora文件

注:文章内容由网络及相关书籍整理而来,如此只为共享知识,给予帮助。

listener.ora、tnsnames.ora和sqlnet.ora这3个文件是关系oracle网络配置的3个主要文件,都是放在$ORACLE_HOME/network/admin目录下。其中listener.ora是和数据库服务器端相关,而tnsnames.ora和sqlnet.ora这2个文件不仅仅关系到服务器端,主要的还是和客户端关系紧密。

一、客户端设置

1.sqlnet.ora

通过这个文件来决定怎样找一个连接中出现的连接字符串

示例文件:

# sqlnet.ora Network Configuration File:

F:/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora

# Generated by Oracle configuration tools.

# This file is actually generated by netca. But if customers choose to

# install "Software Only", this file wont exist and without the native

# authentication, they will not be able to connect to the database on NT.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME, ONAMES, EZCONNECT)

#NAMES.DEFAULT_DOMAIN = https://www.360docs.net/doc/c419079970.html,

内容说明:

SQLNET.AUTHENTICATION_SERVICES= (NTS)——这个表示采用OS认证,在数据库服务器上,可以利用sqlplus / as sysdba。一般这个配置在windows上是ok的,在unix环境下可能会有问题,一般在unix下可以去掉这个配置。

NAMES.DIRECTORY_PATH= (TNSNAMES, HOSTNAME, ONAMES)——表示将首先利用tnsnames进行解析;如果tnsnames解析不到,将使用hostname解析;如果hostname 解析不到,将采用onames进行解析;最后使用EZCONNECT解析。例如我们客户端输入:sqlplus zidi/zidi@changbai,那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的IP地址然后去连接这个IP上global_name=changbai这个实例,当然我这里orcl并不是一个主机名。

被注释掉的NAMES.DEFAULT_DOMAIN = https://www.360docs.net/doc/c419079970.html,——表示采用默认的域名为https://www.360docs.net/doc/c419079970.html,,在tnsnames.ora中如果配置对应的解析,如果原来的数据库别名是oralocal(即网络服务名),那么,当启用这个参数后,在tnsnames中的配置要改成https://www.360docs.net/doc/c419079970.html,。在使用tnsping时或者sqlplus登录时,只需写前面的别名,系统会自动加上后面的域名来进行解析。

2.tnsnames.ora

这个文件放在客户端机器上,记录客户端访问数据库的本地配置,其实就是定义网络服务,只有当sqlnet.ora中有―NAMES.DIRECTORY_PATH= (TNSNAMES)‖这样的字样时,也就是客户端解析连接字符串的顺序中有TNSNAMES时,才会尝试使用这个文件。

示例文件:

# tnsnames.ora Network Configuration File:

F:/oracle/product/10.2.0/db_1/NETWORK/ADMIN/tnsnames.ora

# Generated by Oracle configuration tools.

HUINAMN =网路服务名

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 108.108.108.108)(PORT = 1521))访问

数据库使用的协议,数据库计算机的主机名或IP地址,数据库的端口号)

(CONNECT_DATA =

(SID = HN)数据库实例名,前提是所连接的数据库是Oracle8或更低版本

)

)

CHANGBAI =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 208.208.208.208)(PORT = 1521)) )

(CONNECT_DATA =

(SERVICE_NAME = CB)数据库服务名,即全局数据库名

)

)

ORCL =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)使用专用服务器模式去连接,这需要跟服务器的模式匹配,如果没有就根据服务器的模式自动调节

(SERVICE_NAME = orcl)

)

)

二、服务器端设置

listener.ora

它是listener监听器进程的配置文件。关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。

示例文件:

# listener.ora Network Configuration File:

F:/oracle/product/10.2.0/db_1/network/admin/listener.ora

# Generated by Oracle configuration tools.

SID_LIST_LISTENER =这里定义LISTENER进程为哪个实例提供服务

(SID_LIST =

(SID_DESC =

(SID_NAME = PLSExtProc)

(ORACLE_HOME = F:/oracle/product/10.2.0/db_1)

(PROGRAM = extproc)

)

)

LISTENER =监听器的名字,一台数据库可以有不止一个监听器

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))监听器监听的协议,IP,端口等

(ADDRESS = (PROTOCOL = TCP)(HOST = dabeng)(PORT = 1521))

)

)

上面的例子是一个最简单的例子,但也是最普遍的。一个listener进程为一个数据库实例(SID)提供服务。

三、总结

上面说到的三个文件都可以通过图形的配置工具来完成配置:Database Configuration Assistant,Net Configuration Assistant

具体的配置可以尝试一下,然后来看一下配置文件,这样一来总体结构就有了,是当你输入sqlplus zidi/zidi@changbai的时候

1. 查询sqlnet.ora看看名称的解析方式,发现是TNSNAME

2. 则查询tnsnames.ora文件,从里边找orcl的记录,并且找到主机名,端口和service_name

3. 如果listener进程没有问题的话,建立与listener进程的连接。

4. 根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的server process。

5. 这时候网络连接已经建立,listener进程的历史使命也就完成了。

换个角度理解:

changbai是我们连接远端数据库用到的服务命名,但是最终必须转化为

host:port:servide_name这样的连接字串,而这个转化可以理解为是翻译的过程,而要想翻译成功,则必须选择好翻译方法,那么sqlnet.ora就是我们用来选择翻译方法的,其中的NAMES.DIRECTORY_PATH= (TNSNAMES) 就是我们选择的命名解析方法; tnsnames.ora是翻译方法中的一种——本地命名解析方法的配置文件,就好像我们选择了查字典方法,这个文件就是我们的字典一样里面存放着所有服务命名对应的连接字串;至于listener.ora则是负责接受我们请求的负责任人——连接地址配置文件,里面包括了连接负责人的连接地址,也放着经过他允许可以连接的数据库信息。这样就构成了Oracle的网络架构。

DataGuard配置说明

Oracle Data Guard配置 同一操作系统平台的单机普通存储数据库的Data Guard配置 操作系统:Windows 2003 Server 主数据库名称:dgmain 备数据库名称:dgstand 1.启动主数据库的强制日志记录功能,避免Nologging子句的影响 ALTER DATABASE FORCE LOGGING; 2.配置日志传递的安全认证 一般情况,设定remote_login_passwordfile=exclusive,并且配置tnsnames.ora即可 3.配置主数据库的初始化参数 #主库作为主数据库的配置: DB_NAME=dgmain#主备数据库必须相同 DB_UNIQUE_NAME=DGMAIN#主备数据库不能相同 LOG_ARCHIVE_CONFIG='DG_CONFIG=(DGMAIN,DGSTAND)''#DataGuard专用配置,主备数据库相同 control_files='E:\Oracle\oradata\DGMAIN\control01.ctl','E:\Ora cle\oradata\DGMAIN\control02.ctl','E:\Oracle\oradata\DGMAIN\contro l03.ctl'#控制文件 LOG_ARCHIVE_DEST_1='LOCATION=E:\Oracle\oradata\DGMAIN\ARCH\ VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DGMAIN'#主数据库归档地址 LOG_ARCHIVE_DEST_2='SERVICE=DGSTAND ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DGSTAND'#备用数据库归档地址,由该配置指定向备用数据库写归档日志

Oracle10g数据库透明网关连接sqlserver2005配置说明文档

Oracle 10g透明网关连接Sql Server 2005 配置说明 (一) 环境如下: ORACLE 10g 安装在:172.64.8.139 的window server 2003 SqlServer 2005安装在:172.64.8.142 (二) :下载透明网关 10g下,透明网管是一个单独组件,可以到oracle官方网站下载 https://www.360docs.net/doc/c419079970.html,/technology/software/products/database/oracle10g/htdocs/10201winso ft.html,然后搜索10201_gateways_win32.zip,即可下载。这个安装包有300M。(三) 安装透明网关: 注意:安装之前要必须要将原有的数据库服务器启动起来,不然会重复安装 OraTg10g_home1数据库软件,这样就会有2个数据库软件。 1、下载10201_gateways_win32.zip插件,并解压。 2、进入10201_gateways_win32文件夹,点击setup.exe。 3、点击下一步选择安装的路径,路径是D:\oracle\product\10.2.0\db_1文件夹(这里是 我的oracel的安装路径,根据自己机器的路径修改)。

4、点击下一步,选择Oracle Transparent Gateway for Microsoft SQL Server 10.2.0.1.0, 点击下一步.

5、填写SQL服务器名和SQL数据库名

6、点击安装,安装完成之后会在D:\oracle\product\10.2.0\db_1文件下多出一个文件夹 tg4msql,即安装成功。 (四) 配置: 1. 在Oracle的D:\oracle\product\10. 2.0\db_1\tg4msql\admin目录下,打开inittg4msql.ora, 添加配置如图:注意红色部分 2、配置Oracle的D:\oracle\product\10.2.0\db_1\network\admin目录下的listener.ora。

ORA-12154

ORA-12154: TNS: 无法解析指定的连接标识符 相信使用过Oracle数据库的人一定碰到过“ORA-12154: TNS: 无法解析指定的连接标识符”错误,我在此做一个小小的总结。 在程序中连接Oracle数据库的方式与其他常用数据库,如:MySql,Sql Server不同,这些数据库可以通过直接指定IP的方式连接,但是Oracle则需要通过Oracle客户端配置网络服务名的方式来连接。否则就会出现“ORA-12154: TNS: 无法解析指定的连接标识符”。配置Oracle客户端详细步骤如下: 安装好Oracle客户端之后,在开始菜单中依次找到“Oracle - OraClient10g_home1—>配置和移植工具—>Net Manager”并打开(Win7,Win8用户如果没有取得Administrator账号登陆需要以管理员方式运行),依次展开“Oracle Net 配置—>本地—>服务命名”点击左侧“加号”配置新的网络服务

最后,点击“下一步”完成即可,如果不知道或者忘记Oracle服务名可以通过查看服务获得,比如我这里配置的主机名是我本机,在我的电脑服务中找到oracle相关的服务 通过上面的服务名称,可以看出我安装的服务名就是“ORCL”,或者在服务端通过SQL Plus 使用sys账号登陆,输入命令 show parameter service_name查看。 OracleDBConsoleORCL是Oracle网页端管理工具的服务,访问地址一般为 “http://127.0.0.1:1158/em/console/logon/logon”,如果不习惯用这个来管理数据库可以不用启动。 OracleJobSchedulerORCL是管理Oracle中计划任务的,一般不用启动。OracleOraDb10g_home1iSQL*Plus是SQL Plus的服务,如果不习惯在命令行下面操作数据库,可以不用启动。 OracleServiceORCL,OracleOraDb10g_home1TNSListener都需要开启,前者是主服务,后者是监听服务。 当在Oracle客户端中配置好Net Manager中配置好服务后就可以通过我们配置的网络服务名访问Oracle数据库了,此配置实质想

Oracle RAC+ASM+DataGuard配置实验记录+常见问题

Oracle RAC+ASM+DataGuard配置实验记录+常见问题 Oracle RAC+ASM+DataGuard配置实验记录+常见问题 1、环境规划: ---RAC环境介绍(primary database) rac1 rac2 ______________________________________________________ public ip 192.168.110.11 192.168.110.12 ______________________________________________________ virtual ip 192.168.110.21 192.168.110.22 _____________________________________________________ instance racdb1 racdb2 ______________________________________________________ db_name racdb _______________________________________________________ storage mode ASM __________________________________________________ ---单机环境介绍(standby database) 数据文件可放至本地,也可以放至ASM上,本实验中先放至本地实验 _____________________________________________________________________ _____ ip 192.168.110.11 192.168.110.12 _____________________________________________________________________ ______ instance 192.168.110.13(rac3) _____________________________________________________________________ ______ storage mode /oradata/racdb _____________________________________________________________________ ______ ----hosts文件 #Public Network - (eth0) 192.168.110.11 rac1

oracle免安装客户端配置

1、下载instantclient-basic-win32-11.2.0.1.0.zip 2、解压instantclient-basic-win32-11.2.0.1.0.zip任意目录, 我的解压目录E:\instantclient-basic-win32-11.2.0.1.0\instantclient_11_2 3、新建文件夹NETWORK(也可以不建,看自己喜欢),并新建文件sqlnet.ora 以及tnsnames.ora sqlnet.ora文件配置内容: SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT) tnsnames.ora文件配置内容: ORCL216 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.199.185.216)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) 4、配置环境变量 变量名称:TNS_ADMIN 变量值(我的解压目录): E:\instantclient-basic-win32-11.2.0.1.0\instantclient_11_2\NETWORK --查编码格式语句 select * from NLS_DATABASE_PARAMETERS T where t.PARAMETER = 'NLS_CHARACTERSET'; 变量名称:NLS_LANG 变量值(我的解压目录):SIMPLIFIED CHINESE_CHINA.ZHS16GBK(服务器编码格式)5、安装PL/SQL 6、配置PL/SQL的perference,设置完成就可连接数据库了

操作Oracle空间数据的原理以及配置方法

直接使用SQL操作Oracle空间数据的原理以及配 置方法 原理 从ArcSDE9.2 for oracle开始,提供了使用直接调用SQL来操作空间数据的方法,但是得进行配置才能使用,而且空间数据的存储方式只能是ST_GEOMETRY才支持直接SQL。 由于这些空间操作的函数都是GIS的核心算法,并且这些算法都是非常消耗CPU的算法,所以ESRI是以动态库而不是PL/SQL(适用于批量数据处理)的方式提供的这部分函数,然后在oracle中使用C的external procedure对动态库进行调用。 调用的结构图如下所示: 调用过程如下: 1. 用户进程执行SQL,在sqlplus执行select sde.st_astext(shape) from sde.test,在数据库中调用的顺序是: 上述三个对象的定义如下

sde.astext: CREATE OR REPLACE PACKAGE BODY "SDE"."ST_GEOMETRY_OPERATORS" IS --st_Astext Function st_astext_f(prim SDE.st_geometry) Return clob IS spref SDE.spx_util.spatial_ref_record_t; temp varchar2(1); text_clob clob := empty_clob(); rc number; Begin If prim IS NULL THEN Return NULL; End If; If prim.numpts = 0 and prim.entity = 0 Then text_clob := 'EMPTY'; return(text_clob); End If; spref.srid := prim.srid; rc := SDE.st_spref_util.select_spref(spref);

Oracle数据库中主要配置文件

Oracle数据库中主要配置文件 Oracle 主要配置文件: 数据库实例初始化文件initSID.ora,监听配置文件listener.ora,sqlnet.ora 文件,tnsnames.ora 文件 1.2 Oracle 主要配置文件介绍 1.2.3 数据库实例初始化文件initSID.ora 每个数据库实例都有一个初始化参数文件其缺省存放的路径为 $ORACLE_BASE/admin//pfile 其名称为init.ora 如cams 实 例对应的参数文件为initcams.ora 缺省存放路径为 $ORACLE_BASE/admin/cams/pfile 即/u01/app/oracle/admin/cams/pfile 但在CAMS 应用中initcams.ora 的存放路径为 /u02/app/oracle/admin/cams/pfile 这是基于数据与应用程序分开存放更好地 保护数据考虑的尤其在CAMS 双机应用模式下能够保证数据的一致性 具体的修改操作可参考Linux与Oracle 安装手册 初始化参数文件是一个包含实例配置参数的文本文件这些参数被设置为特 定的值用于初始化Oracle 实例的多数内存和进程设置以下是一些主要参 数的说明 1 实例的数据库名称 2 实例名称

3 数据库控制文件的名称和位置 4 调度作业队列的SNP 进程的数量以及SNP 进程觉醒时间间隔秒 5 存储追踪和告警文件的路径 user_dump_dest 指定记录Oracle 用户进程产生的追踪和告警信息的文件的 存放路径background_dump_dest 指定记录Oracle 后台进程产生的追踪和 告警信息的文件的存放路径core_dump_dest指定Oracle运行所产生的coredump 信息的文件的存放路径. 6 UTL_FILE_DIR 参数 UTL_FILE_DIR 参数指定一个或多个目录用于Oracle 应用的文件I/O 如备 份数据到文件在CAMS 系统中将该值设置为* 表示可供Oracle 应 用进行文件I/O操作的目录为任意目录因此只要空间允许可以将备份数 据存放到任意目录下 1.2.4 监听配置文件

配置ORACLE共享服务器

配置ORACLE共享服务器 1、独占服务器(dedicated server) 每一个session单独分配一个server process,直到用户断开连接,才释放该进程所占用的资源。而大多数时候session都是idle的,所以存在占用资源的情况。 在有些情况下,必须使用独占服务器模式: ? Connect as sysdba ? Submitting batch job 2、共享服务器(Shared server) 多个用户连接共享一个服务器。用户进程和服务进程的连接必须通过适配器来实现。 共享服务器(Shared Server) 1、将Oracle 配置为共享服务器 通过设置数据库初始化参数可以启动共享服务器。共享服务器需要启动Oracle Net Services 监听进程。必须要设置的参数有两个DISPATCHERS ,SHARED_SERVERS。 与共享服务器相关的初始化参数以及动态性能表,可以见下表的描述。 参数说明 必须设置的参数 DISPATCHERS 在共享服务器体系结构中配置调度程序进程。 SHARED_SERVERS 指定启动实例时可以创建的共享服务器进程的数目。 可选的参数,若不指定,ORACLE使用默认值。 MAX_DISPATCHERS 指定同时运行的调度程序进程的最大数目。 MAX_ SHARED_SERVERS 指定可以同时运行的共享服务器进程的最大数目。 CIRCUITS 指定进出网络会话时可以利用的虚拟回路的总数。 SHARED_SERVER_SESSIONS 指定用户会话允许的共享服务器的总数。设置这个参数可以为专用服务器保留用户会话。 共享服务器影响的其他初始化参数可以按需要进行调整 LARGE_POOL_SIZE 指定大型存储池堆分配的字节大小。共享服务器也许会将默认值设置为很高的值,这样会导致在性能或启动数据库方面出现问题。 SESSIONS 指定系统可以创建的会话的最大数目。对于共享服务器也许需要进行调整。减去 shared_server_sessions,就是可以给独占服务器的session数量。 监视性能的视图 V$DISPATCHER 提供有关调度程序进程的信息。包括姓名、网址,状态,各种使用统计表和索引号码。V$DISPATCHER_RATE 提供调度程序进程的速率统计表。 V$QUEUE 包含有关共享服务器消息队列的信息。 V$SHARED_SERVER 包含有关共享服务器进程的信息。 V$CIRCUIT 包含有关虚拟回路的信息。这些虚拟回路是一些通过调度程序和服务器连接到数据库的用户连接。

oracle简易客户端配置

1.去oracle下载instantclient_11_2是一个压缩文件,解压之后的文件夹叫:D:\instantclient_11_ 2.放在你喜欢的目录即可.例如:D:\instantclient_11_2 2.在D:\instantclient_11_2目录下新建目录network,在network目录下再新建admin目录,在admin目录下新建文件tnsnames.ora,使用文本编辑器. 3、添加一个环境变量,名为TNS_ADMIN,值为tnsnames.ora文件所在路径。比如:D:\instantclient_11_2\network\admin 4、设置ORACLE的语言,添加环境变量NLS_LANG ,值为SIMPLIFIED CHINESE_CHINA.ZHS16GBK 如果不清楚远程数据库的ORACLE 语言,可以ssh或者telnet到远程机器,在命令界面输入,用命令行连接到数据库。select * from nls_instance_parameters; 查看NLS_LANGUAGE 的值 NLS_LANGUAGE NLS_TERRITORY 5、下载并安装PL.SQL.Developer配置应用 配置tools->preferences->connection Oracle Home D:\instantclient_11_2 OCI library D:\instantclient_11_2\oci.dll 中文的PL/SQL Developer就是 工具-->首选项-->连接 Oracle主目录 D:\instantclient_11_2 OCI库 D:\instantclient_11_2\oci.dll 6、关闭PL/SQL Developer,重起Developer. 主机名就会出现在PL/SQL Developer的列表里,输入用户名密码,就可以登录远程oracle 11g数据库了。

Oracle监听配置文件

Oracle监听配置文件 最近看到好多人说到tns或者数据库不能登录等问题,就索性总结了下面的文档。 首先来说Oracle的网络结构,往复杂处说能加上加密、LDAP等等。这里不做讨论,重点放在基本的网络结构也就是我们最常用的这种情况。 三个配置文件 重点:三个文件的作用和使用。 listener.ora、sqlnet.ora、tnsnames.ora,都是放在$ORACLE_HOME\network\admin 目录下。 sqlnet.ora 作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串。 例如我们客户端输入sqlplus sys/oracle@orcl 假如我的sq14lnet.ora是下面这个样子: SQLNET.AUTHENTICATION_SERVICES= (NTS) NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME) 那么,客户端就会首先在tnsnames.ora文件中找orcl的记录。如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名 如果我是这个样子: NAMES.DIRECTORY_PATH= (TNSNAMES) 那么客户端就只会从tnsnames.ora查找orcl的记录。括号中还有其他选项,如LDAP等并不常用。 附注:没有SQLNET.AUTHENTICATION_SERVICES= (NTS)这条语句,用户登录时就不经过OS认证,而需要通过用户名/密码认证登录。 #------------------------ Tnsnames.ora——客户端 这个文件类似于unix 的hosts文件,提供的tnsname到主机名或者ip的对应。只有当sqlnet.ora中类似NAMES.DIRECTORY_PATH= (TNSNAMES)这样,也就是客户端解析连接字符串的顺序中有TNSNAMES时,才会尝试使用这个文件。 例子中有两个,ORCL对应的本机,SALES对应的另外一个IP地址,里边还定义了使

tnsnames.ora 写法

tnsnames.ora 是Oracle数据库中的一个配置文件,它用于定义数据库服务的位置区域和名称,客户端连接数据库时会使用 tnsnames.ora 文件中定义的信息来定位数据库服务。正确的编写和维护tnsnames.ora 文件对于数据库连接的正常运行至关重要,因此需要遵循一定的规范和写法。 1. 文件位置和命名 tnsnames.ora 文件通常位于 $ORACLE_HOME/network/admin 目录下,其中 $ORACLE_HOME 为Oracle软件的安装目录。文件名必须严格为 tnsnames.ora,大小写敏感。 2. 文件格式 tnsnames.ora 文件采用文本格式进行编辑,可以使用任何文本编辑器进行修改。每个数据库服务的定义应该按照以下格式进行编写: ``` <服务名> = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = <主机名>)(PORT = <端口号>)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = <服务名>)

) ) ``` 在上述示例中,<服务名> 为该数据库服务的名称,<主机名> 为数据库服务器的主机位置区域,<端口号> 为数据库监听的端口号,<服务名> 为数据库的服务名或者SID。 3. 服务名 在 tnsnames.ora 文件中定义的服务名应该具有一定的可识别性和描 述性,以方便数据库管理员和开发人员识别和使用。通常建议使用数 据库实例的名称或者与业务相关的名称作为服务名。 4. 主机名和端口号 在定义数据库服务时,必须准确填写数据库服务器的主机名和监听端 口号。这些信息由数据库管理员在部署数据库时进行配置,需要与实 际的数据库服务器配置保持一致。 5. 服务名与实例名 在 tnsnames.ora 文件中,需要明确区分服务名和数据库实例名。服 务名是客户端连接数据库时使用的名称,而数据库实例名是数据库服 务器上实际运行的数据库实例的名称,它们并不总是一一对应的关系。对于RAC集群环境或者使用服务名称连接的情况,服务名与实例名可

PLSQL安装配置常见问题

1.PLSQL的数据库连接配置 两种方式: (1)配置文件tnsnames.ora 文件路径:C:\app\Administrator\product\11.1.0\client_1\Network\Admin\Sample 配置格式:重点关注,HOST、PORT和SERVICE_NAME 174= (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.45.7.174)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = cc) ) ) (2)直接按照如下方式配置即可:10.45.7.174:1521/cc,即IP:PORT/SERVICE_NAME

2.PLSQL与ORACLE语言的配置 (1)PLSQL报错信息 (2)直接修改一下本机电脑的环境变量即可: win7路径:右击桌面“计算机”,选择“属性”->高级系统设置->高级,右下方有个“环境变量” 直接修改或添加: 变量:NLS_LANG 取值:SIMPLIFIED CHINESE_CHINA.AL32UTF8 AL32UTF8和上述的报错的Data Character Set一致即可

3.如何设置PLSQL登录密码自动保存 a.路径: (1)菜单:工具->首选项; (2)如下图: b.设置 然后,选择下方的“应用”->确定,一般要先在PLSQL单独执行一下,才会记录对应的用户和密码。

4.如何将PLSQL界面展示设置为英语 路径:Tools ->preferences->User Interface -> Appearance -> Language

tns协议适配器错误

tns协议适配器错误 TNS协议适配器错误。 TNS协议适配器错误是在使用Oracle数据库时经常遇到的一个问题,它可能导致数据库连接失败,影响系统正常运行。本文将介绍TNS协议适配器错误的常见 原因和解决方法,希望能帮助大家更好地应对这一问题。 首先,TNS协议适配器错误通常是由于网络连接问题引起的。当客户端尝试连 接到Oracle数据库时,如果网络不稳定或者配置不正确,就有可能出现TNS协议 适配器错误。此外,数据库服务器的监听程序未启动或者监听程序配置错误也可能导致这一问题的出现。 要解决TNS协议适配器错误,首先需要确保网络连接稳定,可以尝试使用 ping命令测试与数据库服务器的网络连通性。如果网络连接正常,就需要检查客户端的TNSNAMES.ORA文件是否配置正确,其中包括数据库的主机名、端口号、 服务名等信息。如果配置错误,就需要及时修改并重新连接数据库。 另外,还需要检查数据库服务器的监听程序是否启动,可以使用lsnrctl status 命令来查看监听程序的状态。如果监听程序未启动,就需要使用lsnrctl start命令来启动监听程序;如果监听程序配置错误,就需要修改LISTENER.ORA文件并重启 监听程序。 除了以上方法,还可以尝试使用SQLPlus工具来连接数据库,如果连接成功, 就说明数据库服务器正常运行,问题可能出在客户端的配置上;如果连接仍然失败,就需要进一步检查数据库服务器的配置和网络连接。 总的来说,TNS协议适配器错误是一个比较常见的数据库连接问题,通常是由 于网络连接或者配置错误引起的。解决这一问题的关键是要仔细检查网络连接和配置信息,确保其正确无误。希望本文介绍的方法能帮助大家更好地解决TNS协议 适配器错误,保障系统的正常运行。

oracle tns12592解决方法

oracle tns12592解决方法 【最新版2篇】 篇1 目录 I.引言 A.介绍Oracle TNS12592错误的概念 B.为什么需要解决该错误 C.本文将介绍如何解决该错误 II.解决方法 A.确认网络配置是否正确 B.检查防火墙设置是否允许Oracle访问网络 C.确认Oracle客户端是否正确安装和配置 D.确认Oracle服务是否已启动 E.更新Oracle客户端和服务器软件 F.重新安装Oracle客户端和服务器软件 III.结论 A.总结本文中提到的解决方法 B.强调解决Oracle TNS12592错误的重要性 C.总结全文 篇1正文 Oracle TNS12592错误是一种常见的网络连接错误,通常出现在连接到Oracle数据库时。该错误指示Oracle无法建立与服务器的网络连接。要解决该错误,可以按照以下步骤进行操作: A.确认网络配置是否正确

检查网络配置是否正确,包括IP地址、子网掩码、网关和DNS服务器等。确保这些配置与Oracle服务器相匹配。 B.检查防火墙设置是否允许Oracle访问网络 检查防火墙设置,确保Oracle客户端被允许访问网络。检查防火墙规则,确保Oracle客户端的端口(如1521)被允许通过。 C.确认Oracle客户端是否正确安装和配置 确保已正确安装和配置了Oracle客户端。检查客户端的安装路径和配置文件,确保它们没有被意外更改或删除。 D.确认Oracle服务是否已启动 确保Oracle服务已启动。检查服务器的服务列表,确保Oracle服务已启用并正在运行。 E.更新Oracle客户端和服务器软件 定期更新Oracle客户端和服务器软件,以确保使用的是最新版本的软件。 篇2 目录 I.Oracle TNS12592错误概述 II.解决方法 A.配置文件修改 B.操作系统设置 C.数据库配置 D.客户端配置 篇2正文 Oracle TNS12592错误是Oracle网络服务在使用过程中常见的错误之一,它表示TNS无法连接到数据库服务器。以下是解决该错误的步骤:

oracle11客户端以及plsql连接配置

本案例使用的是oracle11g数据库,安装个客户端访问服务器. 到oracle官方下载: (中文) 下载下列几个压宿文件 oracleDBinstantclient-basic-win32-11.1.0.7.0.zip 这是最核心的包 instantclient-jdbc-win32-11.1.0.7.0.zip包含JDBC Driver的包 instantclient-sqlplus-win32-11.1.0.7.0.zip 最简单的SQLPLUS包 我把文件解压到了d盘,d:\oracleclient11g下面 最后的文件结构应该如下: 接下来,配置tnsnames.ora,如果本机上没有安装oracle,可以从安装了oracle 的机上拷贝一个(tnsnames.ora文件在% ORACLE_HOME%\network\admin下)放在上面的目录d:\oracleclient11g下。 oracledata = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.112)(PORT = 1521))

) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) 再就是:添加一个环境变量,名为TNS_ADMIN,值为tnsnames.ora文件所在路径(如:d:\oracleclient11g),这是为了能够找到上面说的tnsnames.ora。如果本机上安装了ORACLE,并且设置了ORACLE_HOME环境变量,那么会自动 在%ORACLE_HOME%/network/admin/位置查找tnsnames.ora文件。 最后,可选,设置ORACLE的语言,添加注册表项:“NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK”,位于 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE。如果本机没有安装ORACLE,在H_L_M\SOFTWARE\下是没有"ORACLE"这一项的,需要手动创建,然后再 在ORACLE项下创建键NLS_LANG,键值为:SIMPLIFIED CHINESE_CHINA.ZHS16GBK 下面开始设置plsql 第一,下载并安装PL.SQL.Developer配置应用 配置tools->preferences->connection 找到等号左侧参数填写等号右侧对应的内容 Oracle Home=D:\oracleclient11g

Oracle数据库监听器(LISTENER)和本地服务名(Tnsname)配置

Oracle数据库监听器(LISTENER)和本地服务名(Tnsname)配置 分类:Oracle 基础知识2009-11-24 10:12 8315人阅读评论(7) 收藏举报 一、监听器(LISTENER) 监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。 二、本地服务名(Tnsname) Oracle客户端与服务器端的连接是通过客户端发出连接请求,由服务器端监听器对客户端连接请求进行合法检查,如果连接请求有效,则进行连接,否则拒绝该连接。 本地服务名是Oracle客户端网络配置的一种,另外还有Oracle名字服务器(Oracle Names Server)等。Oracle常用的客户端配置就是采用的本地服务名,本文中介绍的也主要是基于本地服务名的配置。 三、Oracle网络连接配置方法 配置Oracle服务器端与客户端都可以在其自带的图形化Oracle网络管理器(Oracle Net Manager)里完成(强烈建议在这个图形化的工具下完成Oracle 服务端或客户端的配置)。在Windows下,点击“开始/程序/Oracle - OraHome92/Configuration and Migration Tools/Net Manager”启动Oracle网络管理器工具,在Linux/Unix下,利用netmgr命令来启动图形化Oracle网络管理器,如: $ netmgr Windows下启动Net Manager图形窗口如下图示:

相关主题
相关文档
最新文档