Oracle配置文件

在oracle安装目录$HOME/network/admin下,,经常看到sqlnet.ora tnsnames.ora listener.ora这三个文件,除了tnsnames.ora,其他两个文件详细的用途很多人都不太了解。

1. sqlnet.ora 用在oracle client端,用于配置连接服务端oracle的相关参数.

2. tnsnames.ora 用在oracle client端,用户配置连接数据库的别名参数,就像系统中的hosts文件一样。

3. listener.ora 用在oracle server端,配置oracle服务端程序的监听办法,比如限制某些ip等参数。

在安装目录$HOME/network/admin/samples下,会看到如上上个文件的示例文件,里面会有相关参数的说明和用法,如果遇到什么问题,大家可以对照这些示例文件中相关参数的说明进行解决。

如果连接数据库出了什么问题,在保证网络出正常,没有防火墙干扰的情况下,查找问题的步骤是:

1)在客户端顺序检查sqlnet.ora,tnsnames.ora是有问题。

2)在服务器端检查listener.ora配置,并且保证监听程序启动,数据库服务加载。

1. 认识sqlnet.ora

下面只讲述几个常用参数配置,详细的资料,大家可以查看示例sqlnet.ora得到。

sqlnet.ora可以删除,这样在oracle客户端连接数据库的时候,默认采用tnsnames.ora中的配置。

1).NAMES.DEFAULT_DOMAIN

域名domain定义,在你用sqlplus访问数据库的时候,会在tns别名后面加上".domain"

示例:

sqlnet.ora中:

NAMES.DEFAULT_DOMAIN=com

tnsnames.ora中的tns定义如下:

local_dev =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = linuxdb)

)

)

在客户端执行命令:sqlplus username/[email protected]_dev[/email]的时候,会出现如下错误信息:

"ORA-12154: TNS: 无法处理服务名"或者"ORA-12154: TNS:could not resolve service name"这样的错误信息。

因为sqlplus username/[email protected]_dev[/email]的时候,将tns别名“local_dev”转换成了“local_dev.com”,所以local_dev.com在tnsnames.ora中找不到,就报错了。

修改tnsnames.ora中的定义如下:

local_dev.com =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = linuxdb)

)

)

再执行sqlplus [email=username/[email protected]_dev]username/[email protected]_dev[/email],连接成功。

2)NAMES.DIRECTORY_PATH

定义了在客户端连接数据库时,采用什么样的匹配方式。

示例

sqlnet.ora内容如下:

NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)

那么在客户端执行sqlplus  username/[email protected]_dev[/email]连接数据库的时

首先采用tnsnames.ora的别名配置连接数据库,若连不上再采用ONAMES进行解析,最后采用主机名进行解析。

ONAMES表示Oracle使用自己的名称服务器(Oracle Name Server)来解析,目前Oracle建议使用轻量目录访问协议LDAP来取代ONAMES;

HOSTNAME表示使用host文件,DNS,NIS等来解析;

3)SQLNET.AUTHENTICATION_SERVICES

定义登录数据库的认证方式。

NONE表示Oracle数据库身份验证,NTS表示操作系统身份验证,两种方式可以并用。

可以设置成SQLNET.AUTHENTICATION_SERVICES=(NONE,NTS)先后顺序表明验证的优先方式。

示例

sqlnet.ora内容如下:

SQLNET.AUTHENTICATION_SERVICES=(NONE)

在命令行上执行如下命令:

sqlplus "/ as sysdba"时,执行失败。

提示错误信息ORA-01031: insufficient privileges

这个参数默认没有设置。

2. 认识tnsnames.ora

提供了客户端连接某个数据库的详细信息,主机地址,端口,数据库实例名等。

下面给出一个示例来说明问题:

local_dev =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = linuxdb)

)

)

PROTOCOL参数一般是TCP,可以根据服务器情况选择一种配置方式。

HOST 一般是ip地址,也可以是主机名,这个主机名字只要能用ping hostname通就行,一般在客户端系统的host文件上配好主机名和ip地址的映射关系。PORT 标准是1521,根据服务器端的监听端口而定。SERVICE_NAME 就是数据库的服务名,用system用户登陆后,sqlplus> show parameter service_name命令查看。

3. 认识listener.ora

tnslsnr进程是监听、并接受远程连接数据库请求的监听进程,listener.ora是tnslsnr进程的配置文件,监听的参数都是从该配置文件中读取。

该文件位于服务端,如果只安装oracle客户端,一般不存在这个文件。

如果你只需要在本地连接数据库,不接受远程连接,那么也不需要启动tnslsnr进程,也不需要去维护listener.ora文件。

启动监听进程的命令,在命令模式下,执行lsnrctl start命令就启动了监听进程tnslsnr。

监听可以有多个,也就是说,可以同时监听多个oracle实例,可以在listener.ora中定义多个监听器进行监听。

下面给出一个简单的示例

listener.ora中的内容:

LISTENER_CSB =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.70.9.14)(PORT = 1621))

)

)

)

SID_LIST_LISTENER_CSB =

(SID_LIST =

(SID_DESC =

(ORACLE_HOME = /u02/oracle/app/oracle/product/10.2.0/db)

(SID_NAME = zjdevcsb)

)

)

#############################################

LISTENER_CSA =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

)

)

SID_LIST_LISTENER_CSA =

(SID_LIST =

(SID_DESC =

(ORACLE_HOME = /u02/oracle/app/oracle/product/10.2.0/db)

(SID_NAME = zjdevcsa)

)

)

在上面:

1). LISTENER_CSB,LISTENER_CSA定义了监听器的两个监听名字,和这两个监听器监听的参数:ip,port等。

2). SID_LIST_LISTENER_CSB,SID_LIST_LISTENER_CSA定义了两个监听服务,服务名字格式SID_LIST_<lsnrname>,lsnrname就是上面两个监听器的名字,指定了这个服务将会接受的服务将提交给那个监听器;监听的实例名zjdevcsb,zjdevcsa是在tnsnames.ora中需要指定的SERVICE_NAME参数对应。

时间: 2024-08-02 19:58:13

Oracle配置文件的相关文章

Oracle配置文件tnsnames.ora新增链接后连接报错:ORA-12154: TNS:无法解析指定的标识符

另一个空格引发的血案竟然也被我碰到了:在tnsnames. ora文件中新加了一个配置,该配置估计当时是拷的别人的直接粘贴上去的,然后发现用pl/sql连接就一直报错了,后面排除了用户名和密码问题和后,仔细看了该文件才发现新加的配置第一行WLF前多了个不起眼的空格: WLF= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONTENT_DATA = (S

Navicat for Oracle 连接 Oracle 11G 操作流程

Navicat for Oracle 连接 Oracle 11G 操作流程 1 更改Oracle配置文件 在安装完Oracle 11g之后,需要更改C:\Oracle安装基目录\product\11.2.0\dbhome_1\NETWORK\ADMIN下的listener.ora和tnsnames.ora两个文件.记得,要先将这两个文件备份.然后参考下图,将每个文件中的localhost改为Oracle安装计算机的计算机名. 最后,在Windows的运行中,输入services.msc,进入系统

使用PL/SQL客户端连接远程oracle数据库

一直以来使用sql develope连接数据库,只要写上ip,用户名,密码,sid等就能连接,后来发现使用PL/SQL连接远程oracle数据库怎么连啊? 这里使用了修改oracle配置文件的方式: 配置文件路径为    D:\app\huyueyang\product\11.1.0\db_1\NETWORK\ADMIN 修改下面的tnsnames.ora,这个是你配置连接的配置文件,安装时候一般会有个默认的orcl实例 如: orcl= (DESCRIPTION = (ADDRESS = (P

sqlserver2008r2 链接服务器到oracle 11g

首先 我的sqlserver 2008 r2 和oracle11g安装在同一台电脑上 下面记一下配置的方法: 1. 配置odbc   安装完成oracle后  在驱动程序中会有 oracle in oradb11g_home1这个驱动程序  如下图: 然后 在 用户DSN 中添加数据源  配置如下: 然后保存. 2. 在sqlserver中 打开访问接口, 再双击打开oracledb.oracle  ,在动态参数和允许进程内 前面打勾,然后保存.    如下图: 3.新建链接服务器,如下图: 双

oracle session和process的关系

什么是session 通俗来讲,session 是通信双方从开始通信到通信结束期间的一个上下文(context).这个上下文是一段位于服务器端的内存:记录了本次连接的客户端机器.通过哪个应用程序.哪个用户在登录等信息[在pl/sql developer中,通过Tools-->Sessions可以查看当前数据库的session].session 是和connection同时建立的,两者是对同一件事情不同层次的描述.简单讲,connection是物理上的客户机同服务器段的通信链路,session是逻

Oracle OCM甲骨文认证大师

为了方便初学者学习oracle ,后面会根据下面这个目录更新ocm相关资料,尽情关注.(纯粹个人学习整理,不要用于商业用途.) (1)oracle数据库软件安装部署和升级 1.ocm考试介绍和课程介绍 ocm考试流程简介 ocm考试大纲介绍 课程安排介绍 2.安装和升级数据库软件 安装VMware10 安装部署oracle linux5.4 安装部署oracle11.2.0.3.0 区分PSU/CPU/SPU 升级oracle到11.2.0.3.14 手工创建数据库 3.SQL/plus 工具使

关于安装Oracle 11.2.0.1 RAC的笔记

这是第一次安装RAC,参考了国外一位大神的安装文档,在安装过程中,也遇到了一些问题,从网上查了相关问题的解决方法,在此感谢. 操作系统是 Oracle Enterprise Linux 5,两个节点 rac1和rac2,网卡eth0作为public,eth1作为private,假设之前已添加一块20G容量的共享磁盘. 关于Oracle Enterprise Linux 下载,可以在https://edelivery.oracle.com/osdc/faces/Home.jspx登陆后下载. 主机

ORACLE查看并修改session和连接最大数

第一步,在cmd命令行,输入sqlplus 第二步,根据提示输入用户名与密码 1. 查看processes和sessions参数 SQL> show parameter processes NAME                                  TYPE         VALUE db_writer_processes                  integer     1 gcs_server_processes                 integer   

Web项目从Oracle转为Mysql,fluentnhibernate-1.0和NHibernate2.1.0升级到NHibernate3.3的注意事项

1.Oracel数据库没有字段自增长属性,要实现自增长通常是通过查询序列或者触发器来实现的. 设置自增长主键 alter table SUB_SUBSCRIPTION add primary key(ID); alter table SUB_SUBSCRIPTION modify column ID int(11) NOT NULL AUTO_INCREMENT; 2.MySQL如何获取行号 MySQL中没有直接获取行号的函数,但是可以自己创建一个函数. -- 创建行号函数 CREATE FUN