oracle 学习笔记 (ORACLE NET )

别人的笔记,写的不错,收录下.[@more@]

CHAPTER 1 Networking Overview
1. 网络结构


BS结构
CS结构

架构
Client -à Server 2层
Client -à Middle tier -à Server 3层

特点
客户端和服务器端使用相同的网络协议
客户端可以为瘦客户端或PC



中间层实现负载均衡,一台可面对多台服务器。作用是在client和server中起到一个翻译的作用,比如两端的网络协议不同等



服务器端存储真实数据

举例

ie -à iis(web server) -à database server

2. oracle网络方案 --- connectivity连接

oracle net services特点:

a. 使得client和server的连接与网络协议无关,oracle net services使用API针对不同协议提供不同的适配器,因此只要物理上可以连通,那么oracle实现连接不存在问题。

b. 使得client和server的连接与所在平台无关

c. 提高了GUI图形用户界面工具简化管理且有多种配置选项 (tnsnames.ora)

d. 提供了跟踪和诊断工具,且有最基本的安全保证

oracle的连接还可使用IIOP/HTTP协议实现,比如使用isqlplus 在web上直接连oracle server。因此在使用isqlplus时,需要输入的连接串名不是tnsnames.ora中配置的name servers而是指定服务器上监听到的instance name

HTTP:HYPERTEXT TRANSFER PROTOCOL

IIOP:INTERNET INTER-ORB PROTOCOL

3. oracle网络方案 --- Directory Services

Directory naming 目录命名:是使支持足LDAP协议的目录服务器来为网络命名的一种方法。它要求服务器端有兼容LDAP的目录服务器,客户端也要有LDAP的相关配置。

目录服务:就是OID(oracle internet directory).是兼容了LDAP的目录服务。集成在oracle9i,简化了网络管理,且提供了安全可依赖的目录结构

LDAP:Lightweight Directory Access Protocol 轻量级目录访问协议

4. oracle网络方案 --- scalability可量测性

法一:使用oracle shared server,以前称为:MTS多线程服务器。这个是针对系统资源有限仍可支持过多用户访问的方法,即多个用户共享同一个服务器进程,多个连接被一个适配器路由,提高了资源的利用率,降低了用户的使用效果

法二:使用CM(connection manager),就是所谓的中间服务器,oracle缺省是不安装的,若要使用需要增加额外的组件。CM的优点是:a.多功,即多个用户连接转化为一个连接访问数据库

b.使得client和server可以跨协议连接,即连接与协议无关

c.可以设置网络限制,控制可以访问数据库的用户有哪些


在1成功连接CM产生到server的2后,client产生的所有对 server的访问,通过CM的全部使用2。有效的降低了数据库的连接数

5. oracle网络方案 --- Advanced Security

条件:

在client和server端都要安装 Advanced Security组件

特点:

A.加密传输数据:client -à data -à 加密 -à network transfer -à 解密 -à 服务器

B.授权用户访问:通过第三方的设备和SSL(Secure Sockets Layer)确定用户的访问权限

C.数据完整性:在网络传输过程保证数据的完整性

Oracle的普通安全保证来自于:oracle net and firewalls。放火墙有2种,一种是基于供应商的防火墙,条件是需要使用CM(connect manager),另外一种是stateful packet的防火墙

6. oracle网络方案 --- accessibility

不同数据库系统间的访问:使用透明网关,实现在不同数据库系统下,用户可以无缝透明的相互访问

外部程序的访问:

A. oracle的监听器可以监听外部程序的呼叫,在listen.ora文件中,”KEY = EXTPROC”来实现oracle服务

器对外部程序呼叫的监听。如果客户端需要调用外部程序,也需要开启监听

B. PLSQL可以调用外部程序3GL(第三代编程语言),比如JAVA等

知识点:

Oracle net services / IIOP and HTTP connectivity / oracle internet directory

oracle shared server / connection manager / oracle advanced security

heterogeneous services

CHAPTER 2 Basic Oracle Net Architecture
1. oracle的连接类型有2种:

client-server application:可使用任意网络协议

web application connection:使用TCP/IP协议

2. Client-Server Application Connection:No Middle-Tier


Forms/sqlplus 发出命令,用OCI(oracle调用接口)传给TTC

TTC(two tasks command)完成字符集和数据类型的转换,传到oracle net

Oracle net对刚才的命令打成逻辑包,传到OPS

OPS为协议适配器,将刚才的逻辑包转化为物理包,通过网络协议船给server

上面图执行的顺序是个U型,由client到server,再由server到client

3. Web Application Connections有2种实现方法:

A. 使用web server作为中间层与JDBC oracle call interface驱动或瘦JDBC配置

B. 直接连接database server,通过IIOP或HTTP协议。比如isqlplus等

4. Web Application Connection:


JAVA Application Client
JAVA Applet Client

这个与client-server application connection几乎一样,只是把SQLPLUS工具改为了JAVA工具放在中间层,而用户使用是从WEB上调JAVA。而在JAVA与数据库连接中需要一个JDBC接口

相对于oracle server而言,middle-tier为一个client端,因此连接方式很多,比如TCP/IP等。中间层的作用就是:翻译,负载均衡,网关

5. Web Application Connection:No Middle-Tier


使用该类连接方式的条件是:服务器端必须支持HTTP和IIOP。即在数据库上启动相应的服务

该类连接典型的例子就是:isqlplus

使用isqlplus

在Windows上:启动ORACLE的HTTP服务

在Linux上:启动isqlplus服务,即敲入:[oracle@sating bin]$isqlplusctl start

然后在web browser上敲入地址:http://数据库服务器IP:isqlplus的端口号/isqlplus

eg. http://10.1.8.177:5560/isqlplus

注:isqlplus的端口号可以在$ORACLE_HOME/install/portlist.ini中查看到,该文件是oracle提供的所有默认端口号的列表,isqlplus默认是:5560

CHAPTER 3 Basic Oracle Net Server-Side Configuration
1. sqlnet.ora:网络配置概要文件,在服务器端和客户端都有

tnsnames.ora:以local name本地命名方式实现数据库连接时,在客户端存在的用来解析service_name的文件

listener.ora:是个耳朵的功能,监听客户端的连接请求,在服务器端存在的,记录 server端登记的service_name

2. 监听的实现方式

当client端发出一个连接请求,且client发送的service_name和server端登记的service_name匹配时,listener会根据情况实现2种监听方式:

A. 启动一个独占服务器进程process “Bequeath Session”


B. 把该连接重定向到一个已经启动了的process,(该process在DB启动时启动),常用于MTS

“Redirect Session”


A,B两种方式的第1步和client端配置的命名方法有关,常用的都是服务名service_name解析,。A类从第4步开始通讯,B类从第5步开始通讯。

3. 配置listerner:静态配置法 或 动态配置法


static service configuration
Dynamic service configuration

特点
A. 应用与8和更早的版本

B. 需要服务器端有listener.ora文件

C. 需要OEM和其他一些oracle提供的配置工具
A. 不需要服务器端有listener.ora文件

B. 该类监听使用PMON进程监控进程,

C. 参数instance_name和service_name必须指定

4. 静态配置法的listener.ora文件

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

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

(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = BOSS)

(ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1)

(SID_NAME = BOSS)

)

)

---LISTENER为oracle默认的监听名称

–--HOST为主机名,如果使用的是TCP/IP协议,也可写服务器IP地址

---PORT=1521是oracle默认分配的标准监听器的端口号,也可使用别的端口号

---SID_LIST_LISTENER代表名为LISTENER的监听器所服务的DB,可同时服务多个DB

---GLOBAL_DBNAME的值可以任意定,因为它是作为别名存在的,代表服务器端的service_name,只要client端在配置tnsnames.ora中service_name的值是这个listener上的global_name的值,连通就没问题。一般写 SID.DOMAINNAME。但ORACLE_HOME和ORACLE_SID必须写准确信息

---ORACLE_HOME就是ORACLE_SID指定DB的$ORACLE_HOME参数值

5. 动态配置listener

步骤一:输入lsnrctl,查看输出的缺省监听名。(如果要查看非缺省监听器的状况命令是:lsnrctl+监听器名)

STATUS of the LISTENER

------------------------

Alias LISTENER

步骤二:A. 如果缺省的监听器名为:LISTENER,则确定参数service_name和instance_name设置了正确的值

B. 如果缺省的监听器名不为:LISTENER,则不但要确定参数service_name和instance_name设置了正确的值,还要指定local_listener参数。如果当前是共享服务器,还需要指定参数dispatchers

步骤三:重起数据库即可

注意:

A. 此时没有listener.ora文件,也没有手动输入lsnrctl start,因为oracle在启动时通过PMON直接启动监听器,可使用lsnrctl status查看监听器的状况

B. 在client端配置相应的tnsnames.ora,此时service_name为server端指定的参数service_name的值

C. service_name和instance_name可以任意指定,但必须这2个参数的值相同。在连接时tnsnames.ora,中service_name给相应值即可

D. 无论动态注册还是静态注册,client端都需要有相应的内容记录在tnsnames.ora中

E. 动态注册,在数据库启动后每一分钟注册一次

6. listener的注意事项

A. listener只在发出连接时有用,一旦连接上了,就不再起任何作用,此时client-server的连接只和服务器分配的process有关。

B. 一个listener可以服务多个DB。多个listener也可以服务一个DB,此时起到负载均衡的作用当一个listener忙的时候可使用另外一个

C. 在oracle网络这一块,有2个别名,可任意给值。一个就是listener.ora中的global_name,只要与tnsnames.ora中的service_name值相同即可。另外一个就是tnsnames.ora中指定的连接串的串名,只要在连接数据库时@后写该串名即可(eg.sqlplus s/s@satingphoenix)。

D. listener.ora文件只在启动listener时有用,一旦启动后,删除该文件也不影响oracle的连接,但无法重起listener

E. 静态配置监听器需要在数据库启动后,手工启动监听器,数据库关闭时,手动关闭监听器

动态配置监听器,在数据库启动时自动启动监听器,数据库关闭时自动关闭监听器

7. JVM:JAVA的虚拟机

8. LSNRCTL命令

LSNRCTL>help

LSNRCTL>show + 参数名

LSNRCTL>set + 参数名 + 值

总结:

监听的实现方式有2种,一个是有监听启动独立进程,另一种是有监听使用共享进程

监听的配置方法有2种,一个是有动态配置,使用参数service_name和instance_name来解析服务名,使用PMON

进程管理监听进程。另一个是静态配置,使用listener.ora文件配置监听,其中的global_name来用于解析服

务名,需要DBA手动开启和关闭监听进程

CHAPTER 4 Basic Oracle Net Client-Side Configuration
1. 客户端的网络配置有很多方法,常见的有2种配置方法:host naming 和 local service name(tnsnames)。当前客户端可使用的方法,定义在sqlnet.ora中 ”name.directory_path = (HOSTNAME,TNSNAMES)”


Host naming
Local service name(tnsnames)

区别
主机名解析法,在server端实现解析
本地服务器名解析法,在client端实现解析

实现条件
A.client端和server端的连接协议为TCP/IP,且端口号为1521

B.主机名是通过DNS或者是客户端上/etc/hosts文件中记录的服务器IP地址来解析的

C.不可使用CM和一些oracle的高级安全设置



连接
conn s/s@”主机名”
Conn s/s@在tnsnames.ora中配的串名

要求
A. 在客户端和服务器端的sqlnet.ora中指明解析方法为name.directory_path = (HOSTNAME)

B. client端不需要tnsnames.ora文件,但需要在/etc/hosts文件中写请IP和主机名的对应关系

C. server端的listner.ora文件中,必须指明主机名 (global_dbname = 主机名)


A. 在客户端和服务器端的sqlnet.ora中指明解析方法为name.directory_path = (TNSNAMES)

B. client端需要tnsnames.ora文件,该文件中service_name需要与server端的listener.ora中的global_name相对应,因为是根据这个名字进行的解析。而连接串名可自己定义

C. 补充,在oracle 8前,tnsnames.ora中的service_name为DB_SID

D. Tnsname.ora中配置的端口需要与server端的listener.ora中一致

总结:

oracle的网络配置策略需要从3个方面进行定义,首先确定监听是静态的还是动态的,其次确定命名的解析方法是主机名解析方法还是本地解析方法,如果是本地解析方法需要再去配置本地解析的命名文件(tnsnames.ora)

CHAPTER 5 Usage And Configuration Of The Oracle Shared Server
1. oracle shared server在9I前被叫做MTS,多线程服务器。作用是在同等的资源下,支持更多的并发访问

2. 独占服务器模式 与 共享服务器模式比较


共享服务器模式 shared server
独占服务器模式 dedicated server

连接方式
User process -à dispatcher

-à shared server process

-à SGA + background process

Oracle服务器通过dispatcher调配器为用户进程分配一个共享的服务器进程
User process -à server process

-à SGA + background process

Oracle服务器为每个用户连接分配一个专用的服务器进程

SGA


shared pool and other memory structure

+ user session data

+ cursor state
shared pool and other memory structure

用户连接的数据保存在PGA中

PGA
statck space

用户连接的数据保存在SGA中,因此该模式需要更大的SGA内存
statck space

+ user session data

+ cursor state

3. 共享服务器模式优点:

减低访问instance的进程数量,增加用户的并发数,使数据库服务器负载均衡,减少空间的服务器进程,减少内存的消耗和系统负担

4. connecting


1发出connect连接请求到listener,listener确定连接是否合法

2listener返回关于dispatcher的信息,指明那个dispatcher是可使用的

3连接dispatcher,只有再由dispatcher分配shared server process

注意:若listener为配置为共享服务器模式,但没有启动dispatcher,则连接失败。

5. Processing a request


1连接到空闲的dispatcher

2由dispatcher把command放到请求队列里,等待空闲的server process

3command被空闲的server process 接受并处理

4把处理结果传给响应队列

5响应队列再传给空闲的dispatcher

6dispatcher把结果返回给用户

注意:请求队列对于server process是共享的

响应队列对于server process是独占的

6. 配置共享服务器

服务器端:定义dispatchers和shared_servers参数

SQL>alter system set

dispatchers=’(PROTOCOL=TCP)(SERVICE=SS)(PROTOCOL=TCP)(DISPATCHERS=2)’;

为service_name=’SS’的监听服务启动2个可以使用TCP/IP协议连接的dispatchers

SQL>alter system set dispatchers=’(PROTOCOL=TCP)(DISPATCHERS=2)’;

为所有监听服务启动2个可以使用TCP/IP协议连接的dispatchers

SQL>alter system set shared_server=6;

为共享服务器分配6个shared server processes

客户端:修改tnsnames.ora的连接解析方式

当用户使用SS连接串连接时,使用的是共享服务器进程

当用户使用SATING连接串连接时,使用的是独占服务器进程

这样,一个service_name,根据tnsnames.ora中的解析方式不同,所使用的服务器使用方式也不一样

SS =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVER = SHARED)

(SERVICE_NAME = ss)

)

)

SATING =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = ss)

)

)

7. server端还有一些其他的参数可以设定

max_dispatchers:最多的dispatchers数量,上面dispatchers参数设定的是启动了多少dispatchers,如果max_dispatchers为5,那么最多可启动4个,若试图启动5个则报错ORA-00112

max_shared_server

circuits:内路和外路可使用的网络连接的总共虚拟路线的条数

shared_server_sessions:作为共享服务器方式连接上的session的最大数,

参数sessions - 参数shared_sever_sessions = 可以独占方式登陆的总session数

相关的一些参数:

large_pool_size:在共享服务器中,独立分配出的一块内存区域

session:控制可用独占方式登陆的session数量

8. 查看登记到listeners的dispatchers的情况:lsnrctl service

9. 可查看的数据字典

v$circuuit
有几个共享服务器的连接,该view就有几条记录

v$shared_server
v$dispatcher

v$shared_server_monitor
v$queue

v$queue
v$session

4. 注意:

A.共享服务器模式和独占服务器模式是可以同时存在的

B.在使用as sysdba选项连接数据库服务器时,只能使用独占服务器模式登陆

C.S001,S002… … 代表shared server processes。 D001,D002… … 代表着dispatchers

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yefengmeander/archive/2009/04/25/4122078.aspx

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/3907/viewspace-1024479/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/3907/viewspace-1024479/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle是一种关系型数据库管理系统,广泛用于企业级应用程序中。学习Oracle需要全面了解其结构、基本概念和操作技巧。 首先,了解Oracle数据库的体系结构非常重要。Oracle数据库由实例和数据库组成。实例是数据库在内存中的运行实体,数据库是磁盘上存储数据的地方。了解实例和数据库之间的关系以及它们各自的功能对于后续学习非常重要。 其次,掌握SQL语言对于学习Oracle至关重要。SQL是结构化查询语言的缩写,用于与数据库进行交互。学习SQL语言,包括基本的SELECT、INSERT、UPDATE和DELETE语句,以及高级的聚合函数、连接查询和子查询等操作,可以帮助我们有效地访问和操作Oracle数据库。 此外,熟悉Oracle数据库的基本概念也是学习的关键。如表、视图、索引、约束、触发器等一系列数据库对象的使用和管理,以及事务的概念和ACID特性的重要性等。 了解Oracle的性能调优也是学习Oracle的必备知识之一。通过优化查询、索引和存储结构等手段来提高数据库的性能可以使数据库系统更加高效地运行。 最后,了解Oracle的高级特性和功能也是学习的重点。如分区表、数据泵、分布式数据库、备份和恢复等高级功能,在复杂的企业级环境中能够更好地应对各种需求。 总之,学习Oracle需要综合掌握数据库的结构、SQL语言、基本概念、性能调优和高级特性等。通过理论学习和实践操作相结合,逐步积累经验,才能够成为熟练的Oracle数据库管理员或开发人员。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值