当前位置: 首页 > news >正文

【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.运行区: 持久区产生的执行计划将在这个区域中进行运行

相关文章:

  • 若依启动步骤
  • 数据采集与大数据架构分享
  • Spring Boot - filter 的顺序
  • 三十分钟学会zookeeper
  • uniapp app tabbar 页面默认隐藏
  • 【【萌新的SOC学习之 VDMA 彩条显示实验之一】】
  • 配置Nginx服务器用于Web应用代理和SSL{仅配置文件}
  • Eclipse切换中文环境
  • 解决公网下,k8s calico master节点无法访问node节点创建的pod
  • java回调函数
  • 2023.11.14 hivesql的容器,数组与映射
  • WPF中有哪些布局方式和对齐方法
  • GCD:异步同步?串行并发?一文轻松拿捏!
  • leetcoe刷题日志-6N字形变换
  • VisualGDB 6.0 R2 Crack
  • 【React系列】如何构建React应用程序
  • Date型的使用
  • ES6简单总结(搭配简单的讲解和小案例)
  • git 常用命令
  • JavaScript DOM 10 - 滚动
  • MySQL几个简单SQL的优化
  • Mysql数据库的条件查询语句
  • MySQL用户中的%到底包不包括localhost?
  • spring boot下thymeleaf全局静态变量配置
  • vue 个人积累(使用工具,组件)
  • 和 || 运算
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 配置 PM2 实现代码自动发布
  • 前端技术周刊 2019-01-14:客户端存储
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • 阿里云ACE认证之理解CDN技术
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #QT(智能家居界面-界面切换)
  • #在 README.md 中生成项目目录结构
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (13)Hive调优——动态分区导致的小文件问题
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)Mysql的优化设置
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net MySql
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET大文件上传知识整理
  • .NET企业级应用架构设计系列之应用服务器
  • /dev/VolGroup00/LogVol00:unexpected inconsistency;run fsck manually
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @angular/cli项目构建--http(2)