建立与Oracle实例的连接&&服务器进程

一、建立与Oracle实例的连接

Oracle实例是用Oracle的STARTUP命令启动的,它的启动就意味着SGA(系统全局区)的所有内存结构都已生成的,所有必需的后台(如5个必需的后台进程:SMON、PMON、DBWR、LGWR、CKPT)进程都已在内存中运行。

用户在向Oracle数据库发出SQL命令之前必须与实例建立连接。用户启动一个工具如SQL*Plus,该工具或应用程序就被作为一个用户进程来执行。

注意:用户进程是不能直接访问数据库的。用户进程是运行在客户端的。

在专用连接的情况下(即默认情况下),当一个用户登陆Oracle服务器时如果登陆成功Oracle就在服务器所运行的计算机上创建一个服务器进程在这个种连接下该服务器进程只能为该用户进程提供服务用户进程与服务器进程是一对一的关系。用户进程向服务器进程发请求,服务器进程对数据库进行实际的操作并把所得的结果返回给用户进程。

一个用户每次登陆Oracle服务器,如果成功,该用户就与Oracle服务器建立了连接,而这种连接的状态被称为会话,一个会话始于用户成功地登陆Oracle服务器,终止于用户退出或非正常终止连接。一个数据库用户可能同时有多个会话存在,即用相同的用户名和密码同时登陆多次。

注意:虽然连接与会话都与用户进程紧密相关,但是这两者之间还是有很大的不同。连接是指一个用户进程与一个Oracle数据库实例之间的通信路径,而会话代表的是一个当前用户登陆该数据库实例的状态。
二、服务器进程

当Oracle创建一个服务器进程的同时要为该服务器进程分配一个内存区,该内存区称为程序全局区(PGA)。与SGA不同,PGA是一个私有的内存区,不能共享,且只属于一个服务器进程。它随着服务器进程的创建而被分配,随着服务器进程的终止而被回收。

在专用服务器的配置下,程序全局区PGA主要包括了:

1.排序区(sort area):用于处理SQL语句所需的排序。
2.Cursor状态区(cursor state):用于指示会话当前所使用的SQL语句的处理状态。
3.会话信息区(session information):包括了会话的用户权限和优化统计信息。
4.堆栈区(stack space):包括了其他的会话变量。
如果是共享服务器进程或多程序的配置,以上这些结构除了堆栈区以外大部分都将存在于SGA中。如果有large pool,它们就会被存在于large pool中,否则它们就会被存在于共享池中。
注意:Cursor是Current set of rows的缩写。引入Cursor这一数据结构的目的就是为了减少I/O----将磁盘操作变成内存操作。当要对一个或者几个表中的一批数据进行反复的处理时,为了避免重复地访问这些表(访问硬盘),Oracle可以将这批数据一次性装入内存。而这些数据行被称为 活动集(Active set),程序可以利用这个指针来处理活动集中的所有数据行,就不需要重复地访问硬盘了。

在这里插入图片描述
借鉴于《Oracle数据库管理》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

偷偷学习被我发现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值