达梦数据库系列—33.日志总结

目录

1、SQL日志

SQL 日志开启

SQL日志分析

2、Redo日志

3、归档日志

联机配置归档

手动配置归档

归档信息的查看

清理归档日志

4、闪回

查看闪回功能状态

开启闪回

闪回查询

5、其他事件日志

数据库实例日志

DMAP进程日志

数据库备份日志

dmwatcher日志

dmmonitor日志

DSC集群日志

DSC的CSS日志

DSC的ASM 集群日志


1、SQL日志

用户在 dm.ini 中配置 SVR_LOG 参数后就会打开 SQL 日志。

SQL 日志文件是一个纯文本文件。命名格式为“dmsql_实例名[_模式名][_用户名][_日期_时间].log”。当 sqllog.ini 中存在多个有效模式名时,日志文件名中会添加“_模式名”,否则不添加;当 sqllog.ini 参数 PART_STOR=1 时,日志文件名中会添加“_用户名”,否则不添加;当 sqllog.ini 参数 SWITCH_MODE 不为 0 时,日志文件名中会添加“_日期_时间”,否则不添加。

SQL 日志文件缺省生成在 DM 安装目录的 log 子目录下面,管理员可通过 sqllog.ini 参数 FILE_PATH 设置其生成路径。

SQL 日志内容包含系统各会话执行的 SQL 语句、参数信息、错误信息等。跟踪日志主要用于分析错误和分析性能问题,基于跟踪日志可以对系统运行状态有一个分析,比如,可以挑出系统现在执行速度较慢的 SQL 语句,进而对其进行优化。

系统中 SQL 日志的缓存是分块循环使用,管理员可根据系统执行的语句情况及压力情况设置恰当的日志缓存块大小及预留的缓冲块个数。当预留块不足以记录系统产生的任务时,系统会分配新的用后即弃的缓存块,但是总的空间大小由 sqllog.ini 参数 BUF_TOTAL_SIZE 控制,管理员可根据实际情况进行设置。

打开 SQL 日志会影响系统的性能,因此一般在需要查错和调优的时候才会打开。缺省情况下系统是关闭 SQL 日志的。若用户需要打开 SQL 日志,同时对日志的实时性并没有严格的要求,又希望系统性能好,此时可以从两方面进行改进:一设置 sqllog.ini 参数 SQL_TRACE_MASK 和 MIN_EXEC_TIME 只记录关注的相关记录,减少日志总量;二设置 sqllog.ini 参数 ASYNC_FLUSH 打开 SQL 日志异步刷盘提高系统性能。

用户可以调用系统过程 SP_SET_SQLLOG_INI()或SP_DELETE_SQLLOG_INI_MODE()来动态修改 sqllog.ini 文件的内容,修改后可以调用系统过程 SP_REFRESH_SVR_LOG_CONFIG()更新内存中对应的参数值,以使所做的修改生效。利用动态视图 V$DM_SQLLOG_INI 可以查询 sqllog.ini 文件中的 SQL 日志配置参数,利用动态视图 V$DM_SQLLOG_CONFIG 可以查询内存中的 SQL 日志配置参数。

SQL 日志开启

注意 

  1. 如果需要开启 SQL 日志,则必须配置日志切换模式 SWITCH_MODE 和 FILE_NUM,防止日志无限增长导致磁盘撑爆;
    (2)同步日志会影响系统效率,生产环境建议设置为异步日志;
    (3)在设置 SQL 过滤规则 SQL_TRACE_MASK 时,建议只设置需要记录的 SQL 掩码,生产环境不要直接设成 1。

创建 SQL 日志存放目录

su - dmdba

mkdir -p /dm/log/logcommit

检查 SVR_LOG 参数

select * from v$parameter where name like 'SVR_LOG';

修改实例路径下 sqllog.ini 文件

如下:设置 sql 日志为异步,按照文件大小进行切换,每个 1024M,20 个文件循环写。

cd /dm/data/DAMENG

vi sqllog.ini

BUF_TOTAL_SIZE = 10240 #SQLs Log Buffer Total Size(K)(1024~1024000)

BUF_SIZE = 1024 #SQLs Log Buffer Size(K)(50~409600)

BUF_KEEP_CNT = 6 #SQLs Log buffer keeped count(1~100)

[SLOG_ALL]

FILE_PATH = /dm/log/logcommit  #sql 日志生成路径

PART_STOR = 0

SWITCH_MODE = 2

SWITCH_LIMIT = 1024  #每个日志文件 1024M

ASYNC_FLUSH = 1

FILE_NUM = 20  #循环收集 20 个可以根据实际情况做调整

ITEMS = 0

SQL_TRACE_MASK = 1

MIN_EXEC_TIME = 0

USER_MODE = 0

USERS =

EXECTIME_PREC_FLAG = 0

    

    [SLOG_ERROR]

    SQL_TRACE_MASK = 23

    FILE_PATH      = ../log

    

    [SLOG_DDL]

    SQL_TRACE_MASK = 3

    

    [SLOG_LONG_SQL]

    SQL_TRACE_MASK = 25

    MIN_EXEC_TIME = 60000

执行调用存储过程生效配置文件,并开启 SQLLOG 日志。

SP_REFRESH_SVR_LOG_CONFIG();

sp_set_para_value(1,'SVR_LOG',1);

--检查 SVR_LOG 参数。

select * from v$parameter where name like 'SVR_LOG';

检查日志生成情况

ls  /data/log/logcommit

SQL日志分析

SQL 日志记录了数据库服务器从客户端接收到的 SQL 请求语句,包括 SQL 语句对应的时间戳、用户名、事务号、SQL 文本和执行时间等信息。举例说明:

2022-03-23 15:04:06.926 (EP[0] sess:0000000059587140 thrd:6956 user:SYSDBA trxid:2574604 stmt:00000000595AB938 appname:manager.exe ip:127.0.0.1) [SEL] select COMMENT$ from SYS.SYSCOLUMNCOMMENTS where SCHNAME='SYSDBA' and TVNAME='T11' and COLNAME='STRIP' EXECTIME: 0(ms).

该条信息解读如下:

  • 2022-03-23 15:04:06.926 表示该条 SQL 被记录下来的时间;
  • sess:0000000059587140 表示该 SQL 对应的 session_id 为 0000000059587140;
  • thrd:6956 表示该 SQL 对应的线程 id 为 6956;
  • user:SYSDBA 表示执行该 SQL 时所使用的的数据库登录用户为 SYSDBA;
  • trxid:2574604 表示该 SQL 对应事务的 trx_id 为 2574604;
  • stmt:00000000595AB938 表示该 SQL 对应的会话句柄号为 00000000595AB938;
  • appname:manager.exe 表示发出该 SQL 请求对应的应用名称,如果为 NULL 表示应用代码中没有填充应用名称值;
  • ip:127.0.0.1 表示发出该 SQL 请求的客户端机器的 IP 地址;
  • [SEL] 表示该 SQL 所属类型,SEL 表示该 SQL 为查询语句;
  • select COMMENT$ from SYS.SYSCOLUMNCOMMENTS where SCHNAME='SYSDBA' and TVNAME='T11' and COLNAME='STRIP' 表示该 SQL 对应的 SQL 语句完整文本信息;
  • EXECTIME: 0(ms)表示该 SQL 的执行耗时;

此外,达梦提供达梦 SQL 日志分析工具 DMLOG。该工具通过分析数据库的 SQL 日志文件,直观地反映 SQL 执行情况。

2、Redo日志

重做日志(即 REDO 日志)指在 DM 数据库中添加、删除、修改对象,或者改变数据,DM 都会按照特定的格式,将这些操作执行的结果写入到当前的重做日志文件中。每个 DM 数据库实例必须至少有 2 个重做日志文件,默认两个日志文件为 DAMENG01.log、DAMENG02.log,这两个文件循环使用。

添加日志文件

ALTER DATABASE ADD LOGFILE 'd:\DAMENG03.log' size 128;

扩展日志文件

ALTER DATABASE RESIZE LOGFILE 'd:\DAMENG03.log' to 256;

查看日志文件

select group_id,

       file_id,

       path,

       create_time,

       round(rlog_size/1024/1024,2) as "RLOG_SIZE(MB)"

  from v$rlogfile;

SELECT

        A.FILE_ID    ,

        A.PATH       ,

        A.CLIENT_PATH,

        A.RLOG_SIZE  ,

        B.FREE_SPACE ,

        B.TOTAL_SPACE,

        B.CUR_FILE

from

        (

                select * from V$RLOGFILE where true

        )  A,

        (

                select * from V$RLOG where true

        )  B;

redo文件损坏解决

  1. 创建临时实例
  2. 将创建好的REDO LOG文件复制到旧环境中
  3. 使用dmmdf工具修改redo日志的db_magic的值,两个文件都要改,保持和源库一样。

查看:

dmmdf type=1 file=SYSTEM.DBF

修改:

dmmdf type=2 file=DAMENG02.log

  1. 修改PSEG_RECV参数,默认为3,修改为0,表示跳过回滚活动事务和PURGE已经提交事务的步骤。
  2. 启动故障实例
  3. 导出数据,重新导入新实例

3、归档日志

联机配置归档

修改数据库为MOUNT状态,并开启归档模式

ALTER DATABASE MOUNT;

ALTER DATABASE ARCHIVELOG;

配置本地归档

ALTER DATABASE ADD ARCHIVELOG 'DEST = /dmdata/dameng/arch_dsc0, TYPE = local, FILE_SIZE = 1024,SPACE_LIMIT = 2048,ARCH_FLUSH_BUF_SIZE=16,HANG_FLAG=1';

修改数据库为OPEN状态

ALTER DATABASE OPEN;

手动配置归档

  1. 手动编辑 dmarch.ini 文件

dmarch.ini 文件内容如下:

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = d:\dm_arch\arch

ARCH_FILE_SIZE = 1024

ARCH_SPACE_LIMIT = 2048

  1. 编辑 dm.ini 文件,设置参数 ARCH_INI=1,保存;
  2. 重启数据库实例,数据库已运行于归档模式。

归档信息的查看

配置信息查看:

select arch_name,

       arch_type,

       arch_dest,

       arch_file_size,

       arch_space_limit,

       arch_is_valid,

       arch_incoming_path,

       arch_curr_dest

  from V$DM_ARCH_INI;

归档日志文件的查看:

select * from V$ARCHIVED_LOG ORDER BY FIRST_CHANGE# DESC;

--V$ARCH_FILE中的CLSN和monitor中的CLSN比较可以判断归档是否应用。

select * from V$ARCH_FILE;

清理归档日志

1、通过参数清理

ARCH_SPACE_LIMIT:Redo日志归档空间限制,当同一节点的本地归档文件或远程归档文件达到限制值时,系统自动删除最早生成的归档日志文件。

0表示无空间限制,可手动修改dmarch.ini中ARCH_SPACE_LIMIT参数,也可sql执行。

alter database modify archivelog 'DEST=/data/dmarch, TYPE=LOCAL, FILE_SIZE=128, SPACE_LIMIT=1024';

ARCH_RESERVE_TIME:归档日志保留时间,单位分钟,只对远程归档和本地归档有效,服务器每隔5分钟检查是否存在超过保留时间的归档并删除。默认为0,表示不删除归档。

2、通过存储过程函数清理

SF_ARCHIVELOG_DELETE_BEFORE_TIME

SF_ARCHIVELOG_DELETE_BEFORE_LSN

例:

删除三天之前的归档日志:

SELECT SF_ARCHIVELOG_DELETE_BEFORE_TIME(SYSDATE - 3);

删除 LSN 值小于 95560 的归档日志文件:

SELECT SF_ARCHIVELOG_DELETE_BEFORE_LSN(95560);

4、闪回

查看闪回功能状态

SELECT name,

       TYPE,

       VALUE,

       sys_value,

       file_value

  FROM v$parameter

 WHERE name LIKE '%FLASHBACK%';

或者

SHOW PARAMETER FLASH

SQL> SHOW PARAMETER FLASH

行号     PARA_NAME        PARA_VALUE

---------- ---------------- ----------

1          ENABLE_FLASHBACK 0

开启闪回

alter system set 'enable_flashback'=1 both;

或者

SP_SET_PARA_VALUE (1, 'ENABLE_FLASHBACK', 1);

//scope 为 1 表示 dm.ini 文件和内存参数都修改,不需要重启服务器。

//scope 为 2 表示只修改 dm.ini 文件,服务器重启后生效。

//value: 设置的值。

由于回滚段默认每秒种都会自动清理,所以需要延长回滚记录的保留时间,单位是秒。回滚段参数太大容易引发回滚段膨胀,这里设置为 1200s。

ALTER SYSTEM SET 'undo_retention'=1200 BOTH;

SELECT name,

       TYPE,

       VALUE,

       sys_value,

       file_value

  FROM v$parameter

 WHERE name = 'UNDO_RETENTION';

闪回查询

timestamp查询

SELECT *

  FROM dmhr.city

  WHEN TIMESTAMP '2020-11-03 09:56:06'

  WHERE city_id='CD';

按事务ID查询

使用 versions_endtrxid 伪列查询事务 id 号

SELECT versions_endtrxid, *

  FROM dmhr.job VERSIONS BETWEEN TIMESTAMP '2020-11-03 10:30:00' AND SYSDATE

 WHERE JOB_ID = 22;

SELECT * FROM dmhr.job WHEN TRXID 58519 WHERE JOB_ID=22;

闪回事务查询

SELECT commit_trxid, operation,table_name,undo_sql FROM V$FLASHBACK_TRX_INFO;

5、其他事件日志

数据库实例日志

一般默认命名为 “dm_实例名称_月份.log”。例如数据库实例日志 “dm_DMSERVER_202203.log”。记录了数据库服务启动、刷检查点、写归档、刷盘等。

DMAP进程日志

命名方式为 “dm_DMAP_日期.log”。例如 DMAP 进程日志 “dm_dmap_202407.log”。记录 DMAP 进程运行情况。

数据库备份日志

命名格式为 “dm_BAKES_日期.log”。例如数据库备份日志 “dm_DMSERVER_202203.log”。记录数据库备份的过程信息,判断备份是否完成的日志。

dmwatcher日志

配置文件dmwatcher.ini

[GRP1]

DW_TYPE = GLOBAL ##全局守护类型

DW_MODE = AUTO ##自动切换模式

DW_ERROR_TIME = 10 ##远程守护进程故障认定时间

INST_RECOVER_TIME = 60 ##主库守护进程启动恢复的间隔时间

INST_ERROR_TIME = 10 ##本地实例故障认定时间

INST_OGUID = 453331 ##守护系统唯一OGUID值

INST_INI = /dm/data/DAMENG/dm.ini ##dm.ini配置文件路径

INST_AUTO_RESTART = 0 ##打开实例的自动启动功能

INST_STARTUP_CMD = /dm/bin/dmserver ##命令行方式启动

RLOG_SEND_THRESHOLD = 0 ##指定主库发送日志到备库的时间阈值,默认关闭

RLOG_APPLY_THRESHOLD = 0 ##指定备库重演日志的时间阈值,默认关闭

dmmonitor日志

配置文件dmmonitor.ini

MON_DW_CONFIRM = 1 ##确认监视器模式

MON_LOG_PATH = /dm/data/log ##监视器日志文件存放路径

MON_LOG_INTERVAL = 60 ##每隔60s定时记录系统信息到日志文件

MON_LOG_FILE_SIZE = 32 ##每个日志文件最大32M

MON_LOG_SPACE_LIMIT = 0 ##不限定日志文件总占用空间

[GRP1]

MON_INST_OGUID = 453331 ##组GRP1的唯一OGUID值

##以下配置为监视器到组GRP1的守护进程的连接信息,以“IP:PORT”的形式配置

##IP对应dmmal.ini中的MAL_HOST,PORT对应dmmal.ini中的MAL_DW_PORT

MON_DW_IP = 192.168.169.131:52141

MON_DW_IP = 192.168.169.132:52142

DSC集群日志

例:dm_DSC01_202407.log

事件日志信息格式为:时间 + 日志类型(INFO/WARNING/ERROR/FATAL)+ 进程(database)+ 进程 ID(P 开头)+ 线程(dm_sql_thd/main_thread 等)+ 日志内容。

DSC的CSS日志

例如:dm_CSS1_202212.log

DMCSS 日志是数据库集群监控进程的运行日志,DMCSS 事件日志信息格式为:时间 + 日志类型(INFO/WARNING/ERROR/FATAL)+ 进程(dmcss)+ 进程 ID(P 开头)+ 线程 ID(T 开头)+ 日志内容。

DSC的ASM 集群日志

例如:dm_ASM1_202212.log

DMASM 日志是 DM 分布式文件系统的运行日志,DMASM 事件日志信息格式为:时间 + 日志类型(INFO/WARNING/ERROR/FATAL)+ 进程(dmasmsvr)+ 进程 ID(P 开头)+ 线程 ID(T 开头)+ 日志内容。

达梦技术社区:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

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

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

相关文章

【STM32本科毕业设计】基于STM32的多功能MP3播放器设计

目录 一. 概述二. 系统硬件设计2.1 整体设计思路2.2 硬件器件的选择2.2.1 MP3解码芯片选择 2.2.2 收音机芯片选择2.2.3 温度传感器选择2.2.4 彩灯驱动芯片选择2.2.5 音效处理芯片选择2.2.6 EEPROM芯片选择2.2.7 功率放大芯片选择2.2.8 电源芯片选择2.2.9 人机交互设备选择 2.3 …

Django学习第一天(如何创建和运行app)

前置知识: URL组成部分详解: 一个url由以下几部分组成: scheme://host:port/path/?query-stringxxx#anchor scheme:代表的是访问的协议,一般为http或者ftp等 host:主机名,域名,…

Spring Security学习笔记(二)Spring Security认证和鉴权

前言:本系列博客基于Spring Boot 2.6.x依赖的Spring Security5.6.x版本 上一篇博客介绍了Spring Security的整体架构,本篇博客要讲的是Spring Security的认证和鉴权两个重要的机制。 UsernamePasswordAuthenticationFilter和BasicAuthenticationFilter是…

【JVM基础05】——组成-能不能解释一下方法区?

目录 1- 引言:方法区概述1-1 方法区是什么?(What)1-2 为什么用方法区?方法区的作用 (Why) 2- ⭐核心:详解方法区(How)2-1 能不能解释一下方法区?2-2 元空间内存溢出问题2-3 什么是常量池?2-4 运行时常量池 …

SAP PP学习笔记31 - 计划运行的步骤2 - Scheduling(日程计算),BOM Explosion(BOM展开)

上一章讲了计划运行的5大步骤中的前两步,计算净需求和计算批量大小。 SAP PP学习笔记30 - 计划运行的步骤1 - Net requirements calculation 计算净需求(主要讲了安全库存要素),Lot-size calculation 计算批量大小-CSDN博客 本章继续讲计划运行的后面几…

360:从安全卫士到智能生活——一个科技巨头的成长之路

自2005年成立以来,360公司,全称北京奇虎科技有限公司,已经成为中国乃至全球科技领域的一股不可忽视的力量。从最初的互联网安全服务提供商,到如今涉足智能硬件、云计算、大数据、人工智能等领域的多元化科技公司,360的…

**卷积神经网络典型CNN**

LeNet:最早用于数字识别的CNN AlexNet:2012年ILSVRC比赛冠军,远超第二名的CNN,比LeNet更深,用多层小卷积叠加来替换单个的大卷积 ZF Net:2013ILSVRC冠军 GoogleNet:2014ILSVRC冠军 VGGNet&a…

Unity UGUI 之 自动布局组件

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本,请注意分别 1.什么是自动布局组件…

【Node.js入门精要】从零开始的开发之旅

说明文档:Node.js 教程_w3cschool 概念 Node.js 是一个开源、跨平台的 JavaScript 运行时环境,基于 Chrome 的 V8 引擎构建,专为构建高性能和可扩展的网络应用程序而设计的服务端语言。它采用事件驱动、非阻塞 I/O 模型,能够处理大…

GB28181摄像头管理平台WVP视频平台SQL注入漏洞复现 [附POC]

文章目录 GB28181摄像头管理平台WVP视频平台SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 GB28181摄像头管理平台WVP视频平台SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内…

Unity UGUI 之 Mask

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本,请注意分别 1.什么是遮罩 遮罩是一…

运算符 、、|、|| 、短路符【|| 、】<< 、>>

》》》&&是逻辑与运算符,|| 是逻辑或运算符 !是逻辑非运算符 逻辑与运算符:全为真(1)即结果为真(1),一个为假即全为假(0) 逻辑或运算符:…

shell循环语句

一, 循环语句 1.for循环语句 读取不同的变量值,用来逐个执行同一组命令 格式 for 变量名 in 取值列表 do 命令序列 done 1.1 列表循环 [rootlocalhost /home]# vim demo32.sh #!/bin/bash for i in {a..c} doecho $i done ~ [rootlocalhost /ho…

数据结构·AVL树

1. AVL树的概念 二叉搜索树虽可以缩短查找的效率,但如果存数据时接近有序,二叉搜索将退化为单支树,此时查找元素效率相当于在顺序表中查找,效率低下。因此两位俄罗斯数学家 G.M.Adelson-Velskii 和E.M.Landis 在1962年发明了一种解…

Pytorch深度学习实践(5)逻辑回归

逻辑回归 逻辑回归主要是解决分类问题 回归任务:结果是一个连续的实数分类任务:结果是一个离散的值 分类任务不能直接使用回归去预测,比如在手写识别中(识别手写 0 − − 9 0 -- 9 0−−9),因为各个类别…

了解Java虚拟机(JVM)

前言👀~ 上一章我们介绍网络原理相关的知识点,今天我们浅浅来了解一下java虚拟机JVM JVM( Java Virtual Machine ) JVM内存区域划分 方法区/元数据区(线程共享) 堆(线程共享) 虚…

iOS object-C 解答算法:找到所有数组中消失的数字(leetCode-448)

找到所有数组中消失的数字(leetCode-448) 题目如下图:(也可以到leetCode上看完整题目,题号448) 光看题看可能有点难以理解,我们结合示例1来理解一下这道题. 有8个整数的数组 nums [4,3,2,7,8,2,3,1], 求在闭区间[1,8]范围内(即1,2,3,4,5,6,7,8)的数字,哪几个没有出现在数组 …

Spring Boot的Web开发

目录 Spring Boot的Web开发 1.静态资源映射规则 第一种静态资源映射规则 2.enjoy模板引擎 3.springMVC 3.1请求处理 RequestMapping DeleteMapping 删除 PutMapping 修改 GetMapping 查询 PostMapping 新增 3.2参数绑定 一.支持数据类型: 3.3常用注解 一.Request…

网闸(Network Gatekeeper或Security Gateway)

本心、输入输出、结果 文章目录 网闸(Network Gatekeeper或Security Gateway)前言网闸主要功能网闸工作原理网闸使用场景网闸网闸(Network Gatekeeper或Security Gateway) 编辑 | 简简单单 Online zuozuo 地址 | https://blog.csdn.net/qq_15071263 如果觉得本文对你有帮助…

c++如何理解多态与虚函数

目录 **前言****1. 何为多态**1.1 **编译时多态**1.1.1 函数重载1.1.2 模板 **1.2 运行时多态****1.2.1 虚函数****1.2.2 为什么要用父类指针去调用子类函数** **2. 注意****2.1 基类的析构函数应写为虚函数****2.2 构造函数不能设为虚函数** **本文参考** 前言 在学习 c 的虚…