ROLL.DBF回滚表空间增长问题(达梦数据库)

环境介绍

  • 达梦数据库ROLL.DBF 在某些业务系统厂商使用时异常增长到TB问题分析定位;
  • 业务系统的INSERT , UPDATE , DELETE 操作都会占用回滚表空间,这类事务都存在可以回滚的情况;
  • 当表空间数据文件大小增长后,就算事务提交,数据文件不会自动变小,但里面的空闲比率会变大;
  • 下面介绍环境演练与总结的查询语句,提供问题分析方向;

1 环境搭建

1.1 创建表与测试数据

CREATE TABLE AT230828 (C1 INT);
TRUNCATE TABLE AT230828;

BEGIN
	FOR I IN 1..100000 LOOP
		INSERT INTO AT230828 VALUES(I);
	END LOOP;
END;
  • 在事务不提交的情况下,查询

1.2 查询待提交的数据量

SELECT * FROM V$TRX TR LEFT JOIN V$SESSIONS VS ON TR.SESS_ID=VS.SESS_ID 
WHERE TR.INS_CNT <>0 OR TR.DEL_CNT<>0 OR UPD_CNT <>0;
  • 结果集中 9,10,11 行/列 分别对应 数据插入,数据删除,数据更新未提交的数据量
  • 结果集中 25 行/列 对应当前事务正在执行的SQL语句
  • 结果集中 48 行/列 对应当前事务客户端 IP 地址
  • 结果集中 66 行/列 对应当前事务客户端使用的驱动版本号

在这里插入图片描述在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

1.3 查询回滚表空间使用情况

SELECT T.TOTAL_MB,T.TOTAL_MB-T.FREE_MB USE_MB,T.FREE_MB,R._USAGE,P.PAGE_USE_MB FROM
(
SELECT TOTAL_SIZE*(SELECT PAGE()/1024)/1024 TOTAL_MB,FREE_SIZE*(SELECT PAGE()/1024)/1024 FREE_MB FROM V$DATAFILE WHERE CLIENT_PATH='ROLL.DBF'
)T,
(
SELECT ROUND((1-(FREE_SIZE*1.0/TOTAL_SIZE*1.0))*100,3) ||'%' _USAGE FROM V$DATAFILE WHERE CLIENT_PATH='ROLL.DBF'
)R,
(
SELECT((SELECT SUM(N_USED_PAGES) FROM V$PSEG_ITEMS)* (SELECT PAGE()/1024))/1024 PAGE_USE_MB
)P
;

1.3.1 插入数据前查询结果

在这里插入图片描述

1.3.2 插入数据后未提交事务查询结果

在这里插入图片描述

1.3.3 插入数据后提交事务查询结果

在这里插入图片描述

1.4 定时自动查询并记录未提交事务

  • 创建表,创建代理环境,创建作业
--创建表
CREATE TABLE T_ROLL AS
(SELECT TR.ID,TR.NEXTID,TR.MIN_ACTIVE_ID,TR.STATUS,
TR.ISOLATION,TR.READ_ONLY,TR.SESS_SEQ,
TR.INS_CNT,TR.DEL_CNT,TR.UPD_CNT,TR.UPD_INS_CNT,UREC_SEQNO,
VS.THRD_ID,TR.SESS_ID,VS.SQL_TEXT,VS.STATE,VS.USER_NAME,
VS.CREATE_TIME,VS.CLNT_TYPE,VS.CLNT_IP,VS.LAST_RECV_TIME
FROM V$TRX TR LEFT JOIN V$SESSIONS VS ON TR.SESS_ID=VS.SESS_ID 
WHERE TR.INS_CNT <>0 OR TR.DEL_CNT<>0 OR UPD_CNT <>0);

--创建代理环境
SP_INIT_JOB_SYS(1);

--创建作业,每30分钟记录一次
call SP_CREATE_JOB('ROLL',1,0,'',0,0,'',0,'');
call SP_JOB_CONFIG_START('ROLL');
call SP_ADD_JOB_STEP('ROLL', 'ROLL', 0, 'INSERT INTO T_ROLL
(SELECT TR.ID,TR.NEXTID,TR.MIN_ACTIVE_ID,TR.STATUS,
TR.ISOLATION,TR.READ_ONLY,TR.SESS_SEQ,
TR.INS_CNT,TR.DEL_CNT,TR.UPD_CNT,TR.UPD_INS_CNT,UREC_SEQNO,
VS.THRD_ID,TR.SESS_ID,VS.SQL_TEXT,VS.STATE,VS.USER_NAME,
VS.CREATE_TIME,VS.CLNT_TYPE,VS.CLNT_IP,VS.LAST_RECV_TIME
FROM V$TRX TR LEFT JOIN V$SESSIONS VS ON TR.SESS_ID=VS.SESS_ID 
WHERE TR.INS_CNT <>0 OR TR.DEL_CNT<>0 OR UPD_CNT <>0);', 1, 1, 0, 0, NULL, 0);
call SP_ADD_JOB_SCHEDULE('ROLL', 'ROLL', 1, 1, 1, 0, 30, '00:00:00', '23:59:59', '2024-02-19 08:57:34', NULL, '');
call SP_JOB_CONFIG_COMMIT('ROLL');

--查询结果集
SELECT * FROM T_ROLL ORDER BY INS_CNT DESC;
SELECT * FROM T_ROLL ORDER BY DEL_CNT DESC;
SELECT * FROM T_ROLL ORDER BY UPD_CNT DESC;
SELECT * FROM T_ROLL ORDER BY UPD_INS_CNT DESC;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
达梦数据库中,可以使用以下语法来创建表空间: create tablespace 表空间名称 datafile '数据文件路径' size 大小; 例如,要创建一个名为tbs的表空间,数据文件路径为'/dm7/data/DAMENG/tbs.DBF',大小为200MB,可以使用以下语句: create tablespace tbs datafile '/dm7/data/DAMENG/tbs.DBF' size 200; 此外,还可以使用alter语句对表空间进行一些操作。比如,使用alter tablespace tbs rename datafile '旧文件路径' to '新文件路径'来更改表空间的数据文件路径,使用alter tablespace tbs add datafile '数据文件路径' size 大小;来追加数据文件到表空间中,使用alter tablespace tbs offline;将表空间设置为脱机状态,使用alter tablespace tbs online;将表空间设置为联机状态。还可以使用alter tablespace tbs datafile '数据文件路径' autoextend off;来关闭表空间的自动扩展功能,使用alter tablespace tbs datafile '数据文件路径' autoextend on NEXT 增量 MAXSIZE 最大大小;来设置表空间的自动扩展功能。 请注意,创建表空间时建议将数据文件放在单独的磁盘上,以提高性能和可用性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [达梦数据库创建表空间](https://blog.csdn.net/weixin_43389023/article/details/105475638)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [国产达梦数据库技术篇--操作表空间](https://blog.csdn.net/zhuc_dongyc/article/details/106358711)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值