【Oracle 客户端连接数据库过程解析】

文章目录

    • 一、开篇
    • 二、Oracle客户端简介
    • 三、连接过程解析

一、开篇

Oracle数据库以其卓越的性能和稳定性赢得了众多企业的信赖。作为开发者或数据库管理员,理解Oracle客户端如何与数据库建立连接,是确保系统正常运行的关键。

二、Oracle客户端简介

首先,我们要了解什么是Oracle客户端。简单来说,它是用户与Oracle数据库交互的接口,提供了一系列工具和库,使用户能够轻松地连接到数据库,并执行各种操作。

重客户端模式:PLSQL、DEVELOPER、TOAD、以及非服务器本地的SQLPLUS。
轻客户端模式:JDBC、ODBC这种连接驱动去连接数据库。
本地客户端(服务端的本地客户端): SQLPLUS

三、连接过程解析

在这里插入图片描述

在 Oracle 数据库中,LREG(Listener Registration)进程是一个后台进程,负责向监听器注册数据库实例信息。当数据库实例启动时,它会通过LREG 进程将自己的信息注入(或者注册)到监听器中,以使客户端能够连接到它。

下面是大致的注入过程:

  • 数据库实例启动: 数据库实例启动后会创建 LREG 进程,该进程负责与监听器进行通信。

  • LREG 进程与监听器建立连接:LREG 进程通过网络连接与监听器建立通信渠道。

  • 注册数据库实例信息:LREG 进程将数据库实例的相关信息(如服务名、主机名、端口号等)发送给监听器。

  • 监听器接收实例信息:监听器接收到 LREG 进程发送的数据库实例信息。

  • 监听器更新信息:监听器将接收到的数据库实例信息更新到自己的注册表中,以便将来的连接请求能够正确路由到相应的数据库实例。

Oracle客户端连接数据库过程:
1.客户端输入ORACLE的连接串,产生连接请求
客户端将提供的连接串进行解析并提取连接信息,包括主机名、端口号、服务名等。

2.监听器将收到的客户端请求发送给会话区监听器内部会将客户端发送的请求传递到会话区

3.会话区验证请求是否合法
验证客户端连接请求的合法性,包括检查客户端的IP地址、端口号,并进行连接权限的验证。

4.建立连接(SERVERPROCESS)
会话区验证请求成功,将与前台进程(SERVERPROCESS)建立通信。

5.SERVERPROCESS将验证结果传递给监听器

6.监听器返回验证结果给客户端

7.客户端与SERVERPROCESS生成会话信息
SERVERPROCESS前台进程与客户端之间建立会话。

扩展:
1.ORACLE产生会话用的是什么连接协议:IPC协议(TCP/IP协议精简后的协议)
2.栈区:程序生成区或变量操作区。

SELECT * FROM TAB WHERE COL1=&a;

&a代表绑定变量。所有的变量都在这个区中进行赋值或更改。
3.会话区(会话全局区)
会话信息缓存区(会话记录区):这里记录当前连接会话的信息

4.私有 SQL 区
私有 SQL 区是指每个会话(Session)在内存中分配的用于执行 SQL 语句的空间

5.运行区: 持久区产生的执行计划将在这个区域中进行运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/180426.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P6入门:项目初始化11-项目详情之计算Calculations

前言 使用项目详细信息查看和编辑有关所选项目的详细信息,在项目创建完成后,初始化项目是一项非常重要的工作,涉及需要设置的内容包括项目名,ID,责任人,日历,预算,资金,分类码等等&…

11.10~11.15置信区间,均值、方差假设检验,正态,t,卡方,F分布,第一第二类错误

置信度,置信区间 给定一个置信度,就可以算出一个置信区间。 如果给的置信度越大,那么阿尔法就越小 给的置信度越小,那么α就越大,那么 考虑精确性,希望区间长度尽可能小,所以是取正态的中间…

笔试面试相关记录(13)

(1)一个链表,当一个结点为偶数,且它前面的结点为奇数时,将这个节点合并到前面的结点中,一直执行这个操作,知道没有满足条件的结点时。 输入如下:{2,3,4,1,2,2,3} 输出:…

python3.8 安装 ssl 模块 和 _ctypes 模块

这文章目录 前情提要安装 openssl-1.1.1重新编译安装 python3.8-rpath 编译选项介绍python3.8 跟 python3.10 的区别那要怎么解决这个问题呢,我想到有四种解决方案: 前情提要 我在之前给 python3.10 安装 ssl 模块后以为该步骤 “对于 python3.6、pytho…

【Android 标题文字居中 快速实现】

背景: Android App系统默认setTitle左起展示(图左),IOS App默认居中展示(图右)。现在美工设计 在Android中标题同样居中显示。 解决: 方案一:(传统方式,比较繁琐) 设置ToolBar样式,内嵌TextView来展示,具…

STM32 独立看门狗

目录 1.独立看门狗介绍 2.独立看门狗本质 3.独立看门狗框图​编辑 4.独立看门狗时钟 5.预分频寄存器(IWDG_PR)​编辑 6.重装载寄存器(IWDG_RLR) 7.键寄存器(IWDG_KR) 8.独立看门狗实验和代码示例 9.独立看门狗和窗口看门狗的异同点 …

OPPO Watch纯手机开启远程ADB调试

Wear OS手表中,我们可以直接在开发者设置中打开WiFi调试。但是这在OPPO等魔改Android系统中不再奏效。 需要什么?? 手表一台手机一个OTG转接头一个手表充电器一个 演示设备 手机: OPPO Find X手表: OPPO Watch 1代 …

WPF xaml Command用法介绍

WPF (Windows Presentation Foundation) 中的命令设计模式是一种用于分离用户界面逻辑和业务逻辑的方法。在WPF中,这种模式通过命令接口(如 ICommand)实现,使得用户界面组件(如按钮、菜单项等)可以触发不直…

zabbix中监控数据,报错返回给钉钉查看

### 在钉钉中创建群聊(同组的同学创建一个群聊),在群里面添加自定义机器人 1.通过自定义webhook接入自定义服务 webhook:记住webhook的地址 安全设置:设置加签,只有信息内容包含签才会被机器人发送。 2.配置钉钉告警脚本 #### **安…

Linux系统编程——进程中vfork函数

函数原型 pid_t vfork(void);//pid_t是无符号整型 所需头文件 #include <sys/types.h> #include <unistd.h> 功能 vfork() 函数和 fork() 函数一样都是在已有的进程中创建一个新的进程&#xff0c;但它们创建的子进程是有区别的。 返回值 成功子进程中返回 …

操作符——C语言初阶

一.算数操作符&#xff1a; - * / % 、-、*、/这四个运算符均可用于整数及浮点数的运算。 当使用/运算符时&#xff0c;如果两个操作数均为整型&#xff0c;那么执行整数除法&#xff0c;运算结果也为整型&#xff1b;如果两个操作数至少一个为浮…

C语言每日一题(29)合并两个有序链表

力扣网 21合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 思路分析 最基本的一种思路就是&#xff0c;遍历两个链表&#xff0c;将对应结点的值进行比较&#xff0c;题目要求是要升序排…