Oracle 的网络配置

普通网络应用中会涉及3种进程:服务器端监听进程、服务器端服务进程、客户端进程。

1、服务器启动监听进程,在一个固定IP地址和端口上监听请求。

2、一个用户进程向监听进程发起请求。

3、监听进程收到请求后,立刻派生一个服务进程。(创建或从进程池选取)

4、监听进程把请求转发给派生出的服务进程。监听进程退出该请求活动。

NET8协议

Oracle提供了一个网络互连服务,叫做Oracle Net Service,叫做NET8服务。

它实现了OSI中的上三层。其中Oracle客户端的OCI(Oracle call Interface)和服务器端的OPI(Oracle Program Interface)组成了会话层。这一层用来维护客户端服务器之间的完整SQL会话:

1、解析SQL语句,进行语法分析

2、为SQL语句申请并分配Cursor

3、为SQL语句提供绑定变量

4、从服务器的数据字典中获得记录集的元数据信息

5、执行SQL语句

6、返回结果

7、关闭Cursor

NET8由3个组件构成:Net Interface、Routing/Naming/Auth和TNS(Transparent Network Substrate),Net Interface进行数据传输,RNA和TNS透明支持底层协议。

Oracle网络配置支持多种底层协议,包括TCP、TCPS、PIPE、SDP(Sockets Direct Protocol),NET8悉数支持这些协议。

有两种连接方式:专有模式(Dedicated Server)和共享模式(Shared Server)

专有模式为每个用户连接启动一个单独进程(影子进程)。共享模式是多个用户连接共享一个进程。

服务器配置:

静态注册

$ORACLE_HOME/network/admin/listener.ora

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS =

(PROTOCOL = TCP)

(HOST= ORAServer)

(PORT = 1521)

(QUEUESIZE=20)(监听等待队列,默认为5)

)

)

)

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = ORCL)

(ORACLE_HOME = /oracle/product/10.2.0/)

(SID_NAME = ORCL)

)

)

动态注册:(推荐使用)

首先要在参数文件中设置两个参数:

SERVICE_NAME和INSTANCE_NAME(SID)

如果没有定义SERVICE_NAME参数,则DB_NAME和DB_DOMAIN会组成一个全局数据库名称,注册到监听器里。

PMON会自动定期向监听进程注册、更新信息

也可以强制:

SQL>alter system register;

动态配置结果准确,推荐使用。而且在RAC环境中,动态注册还包括每个实例的负载。这也是RAC可以实现负载均衡和故障转移的基础。

$lsnrctl status

READY:实例可以接受连接。

BLOCKED:实例目前不能接受连接。

UNKNOWN:静态注册,状态未知。

客户端配置:

客户端要连接到服务器,需要提供连接描述符,包括:

服务器网络地址、端口号;数据库服务名称。

$ORACLE_HOME/network/admin/tnsnames.ora

mydb = (连接标识符)

(DESCRIPTION = (连接描述符)

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

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = orcl)

)

)

一共有4中连接方式:

Local Naming:利用tnsnames.ora完成翻译过程。

Easy Connect Naming:不需要配置文件。Oracle 10g, 11g才可以支持。

External Naming:在网络上集中记录连接信息。

Directory Naming:在LDAP目录中保存这些信息。

tnsnames.ora也可以通过$TNS_ADMIN来指定目录

查找顺序:

$TNS_ADMIN

/var/opt/oracle

$ORACLE_HOME/network/admin


你可能感兴趣的:(oracle,网络配置,NET8)