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

Oracle LogMiner分析归档日志

目录:

    • Oracle LogMiner分析归档日志
      • 一、准备测试环境
        • 1、开启数据库归档日志
        • 2、打开数据库最小附加日志
        • 3、设置当前session时间日期格式
      • 二、创建测试数据
        • 1、创建数据
        • 2、数据落盘
      • 三、日志发掘测试
        • 挖掘在上次归档的Redo Log File
          • 1.确定最近归档的Redo Log File
          • 2.指定要分析的Redo Log File的文件
          • 3.启动LogMiner
          • 4.查询V$LOGMNR_CONTENTS 视图
          • 5.其他常用查询sql
          • 6.结束LogMiner会话

Oracle LogMiner分析归档日志

Oracle LogMiner是Oracle数据库的一部分,使您能够通过SQL接口查询在线和存档的重做日志文件。重做日志文件包含有关数据库上活动历史记录的信息。

参考官方文档:Using LogMiner to Analyze Redo Log Files (oracle.com)

一、准备测试环境

  • 该测试环境为Oracle19c单实例
  • 该文章仅分析了redo log file被归档后归档日志
  • 该文章后续会继续补充挖掘其他信息示例

1、开启数据库归档日志

--关闭所有节点
shutdown immediate;--启动一个节点至mount状态
startup mount;--修改数据库为archivelog mode
alter database archivelog;--查看数据库归档状态
archive log list;--打开当前实例数据库
alter database open;--启动其他节点数据库
startup;

2、打开数据库最小附加日志

在生成LogMiner分析的日志文件之前,必须启用附加日志记录。

启用附加日志记录时,需要在重做流中记录附加信息,以使重做日志文件中的信息更加详细。所以必须至少启用最少的补充日志记录

执行以下SQL:

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

确认是否启用:

SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;

如果查询返回值“YES”或“IMPLICIT”,则启用最小补充日志记录。参见“Supplemental Logging”有关附加日志记录的完整信息。

3、设置当前session时间日期格式

以下示例可能需要SCN或时间范围来挖掘日志信息,所有最好提前设置当前session时间日期输出格式

SQL>  ALTER SESSION SET NLS_DATE_FORMAT = 'yyyy-mm-dd hh24:mi:ss';

二、创建测试数据

1、创建数据

--使用普通用户shuaige创建测试数据
--创建测试表
SHUAIGE@orcl> 
CREATE TABLE shuaige.test_tab
(ID number(32),NAME1 varchar2(30),NAME2 varchar2(30),NAME3 varchar2(30),ins_time date DEFAULT SYSDATE
)
tablespace shuaige_dat;Table created.--添加表注释
SHUAIGE@orcl> COMMENT ON TABLE shuaige.test_tab IS '测试表';Comment created.--添加主键和索引
SHUAIGE@orcl> 
alter table test_tab add constraint shuaige.pk_test_tab primary key(ID)
using index3  tablespace shuaige_dat;Table altered.--创建更新数据时间触发器
SHUAIGE@orcl> 
CREATE TRIGGER shuaige.test_tab_triggerbefore  INSERT OR UPDATE ON shuaige.test_tab
FOR EACH ROW
BEGINIF UPDATING then:NEW.INS_TIME := SYSDATE;END IF;
END;9  /Trigger created.--批量插入数据
SHUAIGE@orcl> 
beginfor i in 1 .. 10 loopINSERT INTO "SHUAIGE"."TEST_TAB" ("ID", "NAME1", "NAME2", "NAME3")VALUES (i, 'name1_'|| i, 'name2_' || i, 'name3_' || i);end loop;
end;
/SHUAIGE@orcl> commit;Commit complete.

2、数据落盘

将redo log中的数据归档,否则数据没有落盘,日志挖掘结果会未空

--切换至SYS用户执行
SYS@orcl> alter system switch logfile;System altered.

三、日志发掘测试

挖掘在上次归档的Redo Log File

检查数据库修改历史的最简单方法是在源数据库中进行挖掘,并使用online catalog来翻译重做redo log files。此示例演示如何使用 LogMiner 进行最简单的分析。

此示例查找数据库生成的最后归档重做日志中包含的所有修改(假设该数据库不是 Oracle Real Application Clusters (Oracle RAC)数据库)。

1.确定最近归档的Redo Log File

此示例假设知道要挖掘最近归档的Redo Log File

SYS@orcl> 
SELECT NAME FROM V$ARCHIVED_LOG2  WHERE FIRST_TIME = (SELECT MAX(FIRST_TIME) FROM V$ARCHIVED_LOG);NAME
--------------------------------------------------------------------------------------
/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_21_1130854043.dbf
2.指定要分析的Redo Log File的文件

指定步骤1中查询返回的重做日志文件。该列表将包含一个重做日志文件。

SYS@orcl> 
EXECUTE DBMS_LOGMNR.ADD_LOGFILE( -LOGFILENAME => '/u01/app/oracle/product/19.3.0/dbhome_1/dbs/arch1_21_1130854043.dbf', -OPTIONS => DBMS_LOGMNR.NEW);PL/SQL procedure successfully completed.SYS@orcl>
3.启动LogMiner

启动 LogMiner 并指定要使用的字典,或添加其他条件

SYS@orcl> 
EXECUTE DBMS_LOGMNR.START_LOGMNR(-OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);PL/SQL procedure successfully completed.

若想分组DML语句提交事务,使用如下示例:

EXECUTE DBMS_LOGMNR.START_LOGMNR( -OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + -DBMS_LOGMNR.COMMITTED_DATA_ONLY); 

若想格式化输出SQL,使用如下示例:

EXECUTE DBMS_LOGMNR.START_LOGMNR(-OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + -DBMS_LOGMNR.COMMITTED_DATA_ONLY + -DBMS_LOGMNR.PRINT_PRETTY_SQL);

若想按时间范围过滤输出,使用如下示例:

EXECUTE DBMS_LOGMNR.START_LOGMNR(-STARTTIME => '2023-03-10 09:00:00', -ENDTIME   => '2023-03-10 11:00:00', -OPTIONS   => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + -DBMS_LOGMNR.COMMITTED_DATA_ONLY + -DBMS_LOGMNR.PRINT_PRETTY_SQL);
4.查询V$LOGMNR_CONTENTS 视图

输出按照 DML 语句的执行顺序显示它们; 因此事务可能相互交错。

该示例截取了与手动创建测试表和数据部分返回值内容

SYS@orcl> select username,scn,timestamp,sql_redo from v$logmnr_contents where username = 'SHUAIGE';USERNAME
------------------------------------------------------------------------------------------------------------------------SCN TIMESTAMP
---------- -------------------
SQL_REDO
------------------------------------------------------------------------------------------------------------------------SHUAIGE4989509 2023-03-10 10:36:38
CREATE TABLE test_tab
(ID number(32),NAME1 varchar2(30),NAME2 varchar2(30),NAME3 varchar2(30),ins_time date DEFAULT SYSDATE
)
tablespace shuaige_dat;SHUAIGE4989558 2023-03-10 10:37:00
COMMENT ON TABLE test_tab IS '测试表';SHUAIGE4989561 2023-03-10 10:37:00
commit;SHUAIGE4989580 2023-03-10 10:37:05
set transaction read write;SHUAIGE4989584 2023-03-10 10:37:05
CREATE UNIQUE INDEX "SHUAIGE"."PK_TEST_TAB" on "SHUAIGE"."TEST_TAB"("ID")tablespace shuaige_dat NOPARALLEL;SHUAIGE4989588 2023-03-10 10:37:05
alter table test_tab add constraint pk_test_tab primary key(ID)
using index
tablespace shuaige_dat;SHUAIGE4989591 2023-03-10 10:37:05
set transaction read write;SHUAIGE4989592 2023-03-10 10:37:05
commit;SHUAIGE4989593 2023-03-10 10:37:05
set transaction read write;SHUAIGE4989595 2023-03-10 10:37:05
commit;SHUAIGE4989634 2023-03-10 10:37:17
CREATE TRIGGER test_tab_triggerbefore  INSERT OR UPDATE ON test_tab
FOR EACH ROW
BEGINIF UPDATING then:NEW.INS_TIME := SYSDATE;END IF;
END;;SHUAIGE4989654 2023-03-10 10:37:21
set transaction read write;SHUAIGE4989655 2023-03-10 10:37:21
commit;SHUAIGE4989657 2023-03-10 10:37:21
set transaction read write;SHUAIGE4989657 2023-03-10 10:37:21
insert into "SHUAIGE"."TEST_TAB"("ID","NAME1","NAME2","NAME3","INS_TIME") values ('1','name1_1','name2_1','name3_1',TO_D
ATE('2023-03-10 10:37:21', 'YYYY-MM-DD HH24:MI:SS'));SHUAIGE4989657 2023-03-10 10:37:21
insert into "SHUAIGE"."TEST_TAB"("ID","NAME1","NAME2","NAME3","INS_TIME") values ('2','name1_2','name2_2','name3_2',TO_D
ATE('2023-03-10 10:37:21', 'YYYY-MM-DD HH24:MI:SS'));SHUAIGE4989657 2023-03-10 10:37:21
insert into "SHUAIGE"."TEST_TAB"("ID","NAME1","NAME2","NAME3","INS_TIME") values ('3','name1_3','name2_3','name3_3',TO_D
ATE('2023-03-10 10:37:21', 'YYYY-MM-DD HH24:MI:SS'));SHUAIGE4989657 2023-03-10 10:37:21
insert into "SHUAIGE"."TEST_TAB"("ID","NAME1","NAME2","NAME3","INS_TIME") values ('4','name1_4','name2_4','name3_4',TO_D
ATE('2023-03-10 10:37:21', 'YYYY-MM-DD HH24:MI:SS'));SHUAIGE4989657 2023-03-10 10:37:21
insert into "SHUAIGE"."TEST_TAB"("ID","NAME1","NAME2","NAME3","INS_TIME") values ('5','name1_5','name2_5','name3_5',TO_D
ATE('2023-03-10 10:37:21', 'YYYY-MM-DD HH24:MI:SS'));SHUAIGE4989657 2023-03-10 10:37:21
insert into "SHUAIGE"."TEST_TAB"("ID","NAME1","NAME2","NAME3","INS_TIME") values ('6','name1_6','name2_6','name3_6',TO_D
ATE('2023-03-10 10:37:21', 'YYYY-MM-DD HH24:MI:SS'));SHUAIGE4989657 2023-03-10 10:37:21
insert into "SHUAIGE"."TEST_TAB"("ID","NAME1","NAME2","NAME3","INS_TIME") values ('7','name1_7','name2_7','name3_7',TO_D
ATE('2023-03-10 10:37:21', 'YYYY-MM-DD HH24:MI:SS'));SHUAIGE4989657 2023-03-10 10:37:21
insert into "SHUAIGE"."TEST_TAB"("ID","NAME1","NAME2","NAME3","INS_TIME") values ('8','name1_8','name2_8','name3_8',TO_D
ATE('2023-03-10 10:37:21', 'YYYY-MM-DD HH24:MI:SS'));SHUAIGE4989657 2023-03-10 10:37:21
insert into "SHUAIGE"."TEST_TAB"("ID","NAME1","NAME2","NAME3","INS_TIME") values ('9','name1_9','name2_9','name3_9',TO_D
ATE('2023-03-10 10:37:21', 'YYYY-MM-DD HH24:MI:SS'));SHUAIGE4989657 2023-03-10 10:37:21
insert into "SHUAIGE"."TEST_TAB"("ID","NAME1","NAME2","NAME3","INS_TIME") values ('10','name1_10','name2_10','name3_10',
TO_DATE('2023-03-10 10:37:21', 'YYYY-MM-DD HH24:MI:SS'));SHUAIGE4989658 2023-03-10 10:37:21
commit;
5.其他常用查询sql
--查询用户名、SCN号、时间戳、SQL_REDO语句(按用户名)
select username,scn,timestamp,sql_redo FROM V$LOGMNR_CONTENTS WHERE username = 'SHUAIGE';--查询用户名、SCN号、时间戳、SQL_REDO语句(按表名)
select username,scn,timestamp,sql_redo FROM V$LOGMNR_CONTENTS where  seg_name='TEST_TAB';--查询用户名、SCN号、时间戳、SQL_REDO语句(按时间戳)
select username,scn,timestamp,sql_redo FROM V$LOGMNR_CONTENTS where timestamp > to_date('2023-03-10 08:00:00','yyyy-mm-dd hh24:mi:ss');----------------------------------------------------------------------------------------------
--官方方式在V$LOGMNR_CONTENT视图查询SQ_REDO语句和XID
SELECT username AS USR, (XIDUSN || '.' || XIDSLT || '.' ||  XIDSQN) AS XID, SQL_REDO FROM V$LOGMNR_CONTENTS;--官方方式在V$LOGMNR_CONTENT视图查询SQL_REDO、SQL_UNDO语句和XID
SELECT username AS USR, (XIDUSN || '.' || XIDSLT || '.' ||  XIDSQN) AS XID, SQL_REDO, SQL_UNDOFROM V$LOGMNR_CONTENTS;

若添加sql_undo字段,查询结果将把undo表空间的回滚语句抓出来,如果是误操作,可以根据该sql恢复数据

6.结束LogMiner会话
SYS@orcl> EXECUTE DBMS_LOGMNR.END_LOGMNR();PL/SQL procedure successfully completed.SYS@orcl> 

相关文章:

Oracle LogMiner分析归档日志

目录:Oracle LogMiner分析归档日志一、准备测试环境1、开启数据库归档日志2、打开数据库最小附加日志3、设置当前session时间日期格式二、创建测试数据1、创建数据2、数据落盘三、日志发掘测试挖掘在上次归档的Redo Log File1.确定最近归档的Redo Log File2.指定要分…...

趣味三角——第15章——傅里叶定理

第15章 傅里叶定理(Fourier’s Theorem) Fourier, not being noble, could not enter the artillery, although he was a second Newton. (傅立叶出生并不高贵,因此按当时的惯例进不了炮兵部队,虽然他是第二个牛顿。) —Franois Jean Dominique Arag…...

市场营销的核心是什么?

之所以写下「市场营销的核心是什么?」这篇文章,是因为这几天刚读完了《经理人参阅:市场营销》这本书。作为一个有着近十年工作经验的市场营销从业人员,看完这本书也产生了很多新的想法,也想记录一下,遂成此…...

c/cpp - 多线程/进程 多进程

c/cpp - 多线程/进程 多进程多进程创建多进程进程等待多进程 宏观上 两个进程完全并发的 父子进程具有互相独立的进程空间 父进程结束&#xff0c;不影响子进程的执行 创建多进程 #include <sys/types.h> #include <unistd.h> #include <stdio.h>int main()…...

MySQL必知必会 | 存储过程、游标、触发器

使用存储过程 存储过程 简单来说就是为了以后的使用而保存的一条或多条MySQL语句的集合。 我觉得就是封装了一组sql语句 为什么需要存储过程&#xff08;简单来说就是&#xff0c;简单、安全、高性能 通过把处理封装在容易使用的单元中&#xff0c;简化复杂操作所有开发人员…...

优化Facebook广告ROI的数据驱动方法:从投放到运营

“投放广告并不是最终的目的&#xff0c;关键在于如何最大程度地利用数据驱动的方法来提高广告投放的回报率&#xff08;ROI&#xff09;”Facebook广告是现代数字营销中最为常见和重要的广告形式之一。但是&#xff0c;要让Facebook广告真正发挥作用&#xff0c;需要通过数据驱…...

动态规划入门经典问题讲解

最近开始接触动态规划问题&#xff0c;以下浅谈&#xff08;或回顾&#xff09;一下这些问题的求解过程。解题思路对于动态规划问题&#xff0c;由于最终问题的求解需要以同类子问题作为基础&#xff0c;故需要定义一个dp数组&#xff08;一维或二维&#xff09;来记录问题求解…...

快速入门深度学习1(用时1h)

速通《动手学深度学习》1写在最前面0.内容与结构1.深度学习简介1.1 问题引入1.2 思路&#xff1a;逆向思考1.3 跳过1.4 特点1.5 小结2.预备知识&#xff08;MXNet版本&#xff0c;学错了。。。。&#xff09;2.1 获取和运行本书的代码2.2 数据操作2.2.1 略过2.2.2 小结2.3 自动…...

PaddleOCR关键信息抽取(KIE)的训练(SER训练和RE训练)错误汇总

1.SER训练报错: SystemError: (Fatal) Blocking queue is killed because the data reader raises an exception 1.1.问题描述 在执行训练任务的时候报错 单卡训练 python3 tools/train.py -c train_data/my_data/ser_vi_layoutxlm_xfund_zh.yml错误信息如下&#xff1a; T…...

信息收集之搜索引擎

Google Hacking 也可以用百度&#xff0c;不过谷歌的搜索引擎更强大 site 功能&#xff1a;搜索指定域名的网页内容&#xff0c;可以用来搜索子域名、跟此域名相关的内容 示例&#xff1a; site:zhihu.com 搜索跟zhihu.com相关的网页“web安全” site:zhihu.com 搜索zhihu…...

Flutter(四)布局类组件

目录布局类组件简介布局原理与约束线性布局&#xff08;Row和Column&#xff09;弹性布局流式布局&#xff08;Wrap、Flow&#xff09;层叠布局&#xff08;Stack、Positioned&#xff09;对齐与相对定位&#xff08;Align&#xff09;Align和Stack对比Center组件LayoutBuilder…...

【黑马】Java基础从入门到起飞目录合集

视频链接&#xff1a; Java入门到起飞&#xff08;上部&#xff09;&#xff1a;BV17F411T7AoJava入门到起飞&#xff08;下部&#xff09;&#xff1a;BV1yW4y1Y7Ms 学习时间&#xff1a; 2023/02/01 —— 2023/03/09断断续续的学习&#xff0c;历时大概37天&#xff0c;完结撒…...

PMP考前冲刺3.10 | 2023新征程,一举拿证

题目1-2&#xff1a;1.在最近的一次耗时四周的迭代中&#xff0c;赫克托尔所在的敏捷团队刚完成了10 个用户故事点的开发、测试和发布&#xff0c;那么团队的速度是&#xff1f;A. 10B. 4C. 5D.402.产品负责人奥佩&#xff0c;倾向于在短周期内看到工作产品的新版本&#xff0c…...

JavaScript Math常用方法

math是JavaScript的一个内置对象&#xff0c;它提供了一些数学属性和方法&#xff0c;可以对数字进行计算&#xff08;用于Number类型&#xff09;。 math和其他全局对象不同&#xff0c;它不是一个构造器&#xff0c;math的所有方法和属性都是静态的&#xff0c;直接使用并传入…...

【C++】模板进阶

文章目录一、非类型模板参数1、非类型模板参数2、C11 中的 array 类二、模板的特化1、模板特化的概念2、函数模板特化3、类模板特化3.1 全特化3.2 偏特化三、模板的分离编译四、模板总结一、非类型模板参数 1、非类型模板参数 模板参数分为类型形参与非类型形参&#xff0c;类…...

三板斧解决leetcode的链表题

在《波奇学单链表》中我们提到单链表的两个特点单向性。头节点尾节点的特殊性导致分类讨论的情况。如何看单链表&#xff1f;让我们简化成下图cur表示当前节点&#xff0c;下图表示cur移动&#xff0c;圆圈表示值用哨兵卫节点(新的头节点)和把尾节点看成NULL来把头尾节点一般化…...

全生命周期的云原生安全框架

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/129423036 一、全生命周期的云原生安全框架 如图所示&#xff1a; 二、框架说明 在上图中&#xff0c;我们从两个维度描述各个安全机制&#xff0c;横轴是开发和运营阶段&#xff0c;细分为编码、测试…...

【本地网站上线】ubuntu搭建web站点,并内网穿透发布公网访问

【本地网站上线】ubuntu搭建web站点&#xff0c;并内网穿透发布公网访问前言1. 本地环境服务搭建2. 局域网测试访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问4. 配置固定二级子域名4.1 保留一个二级子域名4.2 配置二级子域名4.3 测试访问公网固定二级子…...

电脑怎么重装系统?教你轻松掌握这些方法

重新安装计算机系统有两种原因&#xff1a;一种是计算机系统可以正常使用&#xff0c;但是电脑比较卡&#xff0c;为了提高它的运行速度&#xff0c;所以想要通过重新安装系统来解决这个问题;另一种原因是计算机系统文件丢失&#xff0c;系统出现蓝屏&#xff0c;或者黑屏的情况…...

leetcode-每日一题-2379(简单,字符串)

久违的简单题......给你一个长度为 n 下标从 0 开始的字符串 blocks &#xff0c;blocks[i] 要么是 W 要么是 B &#xff0c;表示第 i 块的颜色。字符 W 和 B 分别表示白色和黑色。给你一个整数 k &#xff0c;表示想要 连续 黑色块的数目。每一次操作中&#xff0c;你可以选择…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...