首页 > 数据库 >成为MySQL DBA后,再看ORACLE数据库(八、进程、连接与会话)

成为MySQL DBA后,再看ORACLE数据库(八、进程、连接与会话)

时间:2024-06-12 21:44:23浏览次数:13  
标签:后台 DBA 数据库 process session MySQL ORACLE 进程

不同于MySQL的单进程多线程架构,ORACLE是多进程架构。一个ORACLE实例主要有以下三类进程:1.后台进程,这些进程随数据库启动而启动,用于完成数据库的各种后台任务;2.服务器进程(server process),这些进程一般由客户端的请求产生,根据客户端的请求完成工作;3.从属进程,这些进程类似后台进程,它们代表后台进程或服务器进程执行一些额外的工作。

一、后台进程

在操作系统上ps -ef | grep ora可以看到ORACLE的很多后台进程比如ora_pmon_orcl、ora_dbw0_orcl等,这些都是Oracle的后台进程,一般常见的后台进程有以下几个:

ARCn 归档进程,用于将redolog写到归档日志。
CJQ0 作业队列协调程序进程。
CKPT 检查点进程,将检查点信息写入控制文件和数据文件头。
DBRM 数据库资源管理器进程,设置资源计划以及执行其它资源管理器任务。
DBWn 数据写进程,将缓冲区高速缓存中的数据写入数据文件。
DIA0 诊断进程,负责检测挂起和解决死锁,触发DIAG以执行诊断任务。
DIAG 诊断捕获进程。
FBDA 闪回数据归档进程。
LGWR 日志写进程,将日志缓冲区写出到重做日志中。
MMAN 内存管理器进程。
PMON 进程监视器进程,并恢复失败的进程资源。
SMON 系统监视器进程
Pnnn 并行查询从属进程,负责并行查询操作
ASMB ASM后台进程
GMON ASM磁盘组监视器进程
RMSn RAC管理进程
DMON dataguard代理监视器进程

在ORACLE中可以通过v$bgprocess视图查询关于后台进程的信息。其中PADDR列代表进程的内存地址,没有启动的后台进程PADDR列为00。

二、服务器进程

服务器进程是指当用户连接到Oracle服务器时,在Oracle服务器上会启动一个与用户进程对应的进程来为用户进程服务。执行命令ps -ef | grep oracleorcl可以看到当前有2个服务器进程,LOCAL为yes或no代表了是否为本地连接。

在ORACLE中,一般通过v$process视图查询进程信息,当然这个视图也包括了后台进程。v$process的查询输出中,spid列代表的就是操作系统上的进程号,通过spid可以将进程从操作系统到数据库关联起来。addr字段代表的是进程的地址,进程的状态等信息在内存中记录,这个addr记录的正是这样的内存地址信息。在v$session视图中记录的paddr对应的就是v$process.addr,通过两者关联,可以向数据库进一步深入。background列标识是否为后台进程,系统后台进程为1,非后台进程为null。

 三、连接与会话

在ORACLE中,连接并不完全等价于会话,下图说明了ORACLE中连接与会话的关系:

在ORACLE中,通过v$session视图查询会话信息,其中sid为会话的id号,serial#为会话的序列号,和sid一起来标识唯一一个会话。status代表会话的状态,状态为active表示当前正在执行sql语句,为inactive表示等待执行的状态,为killed表示终止。

以下是常用会话管理的sql语句,其中杀会话一般要加上immediate参数,这样才能够立即释放会话所持有的资源。此外,也可以找到对应操作系统的spid,kill对应的进程,kill前需要谨慎确认。

#查询当前用户连接信息
select s.osuser os_user_name, p.program oracle_process, status session_status,s.terminal terminal, s.program program,
s.username user_name, s.fixed_table_sequence activity_meter, s.sid, s.serial# serial_num from v$session s, v$process p
where s.paddr=p.addr and s.type = 'USER' order by s.username, s.osuser;
#查询会话对应的OS进程号
select b.sid, b.serial#, c.spid from v$session b, v$process c where b.paddr = c.addr;
#杀会话
alter system kill session 'sid,serial#' immediate;

在ORACLE中对连接数限制的参数主要由processes和sessions完成,其中processes参数限制了能够连接到SGA的操作系统进程数,包括所有的后台进程与服务器进程。而sessions参数限制了一个实例中允许的会话数,即能同时登录到数据库的并发用户数。sessions的值是根据processes的值计算得到的,所以一般情况下只需要设置processes的值即可:sessions = (1.5 * processes) + 22。sessions这种参数在ORACLE中也称为推导参数,通常不需要修改,如果强制修改,那么修改值会覆盖推导值。

 

标签:后台,DBA,数据库,process,session,MySQL,ORACLE,进程
From: https://www.cnblogs.com/coygfly/p/18244651

相关文章

  • Navicat的使用、PDManer、PyMySQL(连接数据库、执行SQL语句、结果获取、插入数据、删
    【一】Navicat的使用【1】连接数据库打开Navicat,找到连接选项输入连接参数测试参数【2】创建数据库新建数据库输入数据库参数新建表并设置主键修改表字段【3】导出SQL文件【4】备份数据库【5】视图展示会展示当前数据库下的所有表模型......
  • MYSQL——分组
    MYSQL——分组groupby的含义:将查询结果按照1个或多个字段进分组,字段值相同的为组。理解:按照表中数据的某个属性或多个属性将数据归类分成类,按照类别查询出来,这些分类就是分组查询。groupby可于单个字段分组,也可于多个字段分组。......
  • 解决本地机器连接虚拟机中MySQL数据库的问题指南
    在很多开发场景下,我们需在本地电脑通过应用程序或管理工具访问部署在虚拟机里的MySQL数据库,这对于项目测试、调试极其重要。默认配置下,MySQL可能仅接受源自虚拟机本身的连接请求。以下是详细步骤,指导你调整MySQL设置,实现本地到虚拟机MySQL数据库的无缝连接。第一步:登录MySQ......
  • linux mysql麒麟系统部署
    1、安装mysqlapt-getinstallmysql-servermysql-common2、取消大小写敏感 (1)、先删除mysql数据库rm-rf/var/lib/mysql (2)、设置my.cnf[mysqld]lower-case-table-names=1 (3)、初始化数据库,取消大小写敏感mysqld--initialize--user=mysql--lower-case-tab......
  • mysql数据库修改配置文件后无法启动服务问题排查
    windowsserver 报错现象:本地计算机上的MySQL8.0服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止。 MySQL服务无法启动。服务没有报告任何错误。 故障原因:经多方排查最终确认是配置文件存储编码错误导致服务无法初始化。处理过程:1、   本地环境检......
  • Unix socket lock file is empty /var/run/mysqld/mysqld.sock.lock
    介绍当使用MySQL数据库时,有时候会遇到一个错误信息,提示“Unixsocketlockfileisempty:/var/run/mysqld/mysqld.sock.lock.”这个错误一般是由于MySQL服务器无法启动造成的。在本文中,我们将探讨这个错误的原因和解决方案。错误原因/var/run/mysqld/mysqld.sock.lock......
  • MySQL
    MySQL一、MySQL简介1.1MySQL组成和常用工具1.1.1客户端程序mysql:交互式或非交互式的CLI工具mysqldump:备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中mysqladmin:基于mysql协议管理mysqldmysqlimport:数据导入工......
  • MySQL 8.3.0 主从热备
    IP角色版本192.168.140.153主8.3.0192.168.140.159从8.3.0一、准备环境1、卸载mariadbrpm-qa|grepmariadbrpm-emariadb-libs--nodeps2、安装依赖yum-yinstallperl二、安装MySQL1、下载安装包wgethttps://downloads.mysql.com/archives/get/p/23/file/mysq......
  • Mariadb版本的JDBC驱动,连接云上Mysql出现连接超时
    记录一下一个小问题的解决,Mariadb驱动连接云上Mysql的时候,如果频繁连接偶尔出现读取超时的现象。通过分析报错的堆栈发现,在 org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol#postConnectionQueries这个方法里面有一个判断,usePipelineAuth默认为true,导致设置sock......
  • 【MySQL随缘更】存储过程
    文章目录一、存储过程概述1.1、什么是存储过程1.2、存储过程特点1.3、存储过程优缺点二、存储过程创建2.1、创建格式2.2、变量2.3、变量作用域三、存储过程参数3.1、in3.2、out3.3、inout四、存储过程条件4.1、if…else…endif4.2、if…elseif…else…endif4.3、cas......