达梦数据库小技巧

一: 时间类型TIMESTAMP使用

1.1 建表

CREATE TABLE "TEST"."TIMESTAMP_T"
(
"ID" INT IDENTITY(1, 1) NOT NULL,
"NUM" INT,
"REV_TIME" TIMESTAMP(6),
CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;

1.2 插入

insert TEST.TIMESTAMP_T(NUM,REV_TIME) values 
(3,FROM_UNIXTIME(1707034197,'YYYY-MM-DD HH24:MI:SS')),
(3,FROM_UNIXTIME(1707034197,'YYYY-MM-DD HH24:MI:SS')),
(4,FROM_UNIXTIME(1720080515,'YYYY-MM-DD HH24:MI:SS'));
COMMIT;

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/06945ab7b10347b3ba2676e3178999c8.png

1.3按时间戳查询,返回某一列不重复的值

SELECT DISTINCT NUM
FROM TEST.TIMESTAMP_T
WHERE UNIX_TIMESTAMP(REV_TIME) < 1720080515;

在这里插入图片描述

二:存储过程创建和调用

2.1建表

CREATE TABLE "TEST"."PROCEDURE_T"
(
"ID" INT IDENTITY(1, 1) NOT NULL,
"INFO" VARCHAR(255) NOT NULL,
CLUSTER PRIMARY KEY("ID")) STORAGE(ON "MAIN", CLUSTERBTR) ;

2.2 创建存储过程,循环100插入拼接字符串

CREATE OR REPLACE PROCEDURE TEST.CREATE_UUID() AS
a INT:=0;
BEGIN
	LOOP
		a:=a+1;
		IF a>=100 THEN
			EXIT;
		END IF;
		INSERT INTO TEST.PROCEDURE_T (INFO)
        VALUES (CONCAT('AAAAA', LPAD(CAST(a AS VARCHAR2(5)), 5, '0')));
	END LOOP;
	COMMIT;
END;

2.3调用存储过程

CALL TEST.CREATE_UUID();

三:查看arch归档日志

一、查看当前数据库是否开启归档
  select arch_mode from v$database;

二、查询有哪些归档日志
  SELECT NAME , FIRST_TIME , NEXT_TIME , FIRST_CHANGE# , NEXT_CHANGE# FROM V$ARCHIVED_LOG;

 三、查看RLOG_APPEND_LOGIC参数值
  目前 DBMS_LOGMNR 只支持对归档日志进行分析,配置归档后,还需要将 dm.ini 中的RLOG_APPEND_LOGIC 选项置为 12。
  SELECT NAME , FIRST_TIME , NEXT_TIME , FIRST_CHANGE# , NEXT_CHANGE# FROM V$ARCHIVED_LOG ORDER by FIRST_TIME desc;

四、修改RLOG_APPEND_LOGIC参数为1  
  alter system set 'RLOG_APPEND_LOGIC'=1 both;
  select * from v$dm_ini where para_name ='RLOG_APPEND_LOGIC';

五、重启数据库服务
	重启后会创建一个新的归档日志,用新的归档日志去分析才有效。RLOG_APPEND_LOGIC参数默认值是0,这就意味着,想利用DBMS_LOGMNR包分析归档日志去定位误删除的表,前提是已经提前设置RLOG_APPEND_LOGIC=1。

六、再次查看归档日志
  SELECT NAME , FIRST_TIME , NEXT_TIME , FIRST_CHANGE# , NEXT_CHANGE# FROM V$ARCHIVED_LOG;

八、分析归档日志 

  1) 查询有哪些归档日志
    SELECT NAME , FIRST_TIME , NEXT_TIME , FIRST_CHANGE# , NEXT_CHANGE# FROM V$ARCHIVED_LOG;
  2) 添加一个或多个需要分析的归档日志文件
    DBMS_LOGMNR.ADD_LOGFILE('E:\dmdbms\data\DAMENG3\arch\ARCHIVE_LOCAL1_0x606C7ADA[0]_2021-07-20_18-18-14.log')
    如要 看通过ADD_LOGFILE添加的归档日志文件,可以通过动态视图V$LOGMNR_LOGS 进行查询,如下:
    SELECT LOW_SCN, NEXT_SCN, LOW_TIME, HIGH_TIME, LOG_ID, FILENAME FROM V$LOGMNR_LOGS;
  3)启动归档日志文件分析
    DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2128 , STARTTIME=>TO_DATE('2021-03-04 17:36:00','YYYY-MM-DD HH24:MI:SS') ,     ENDTIME=>TO_DATE('2021-07-21 17:36:02','YYYY-MM-DD HH24:MI:SS'));
    如要查看归档日志文件的分析结果,可以通过动态视图 V$LOGMNR_CONTENTS 进行查询,如下:
    SELECT OPERATION_CODE , SCN, SQL_REDO , TIMESTAMP ,SEG_OWNER, TABLE_NAME FROM V$LOGMNR_CONTENTS ;
  4)终止归档日志文件分析
    DBMS_LOGMNR.END_LOGMNR();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值