【Oracle篇】rman时间点异机恢复:从RAC环境到单机测试环境的转移(第六篇,总共八篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨

💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️

💖💖💖大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注💖💖💖

    今天是端午假期后的第一天,拖着疲惫的身体,开始了新的一周工作。博主在端午期间去了天津,吹了天津的海风,吃了大众推荐的top1饭馆,游览了天津方特世界,确实不虚此行。不知道各位小伙伴都去哪里潇洒了,有没有玩的开心,即使不开心也要收收心,开始新的一周工作。那么今天作为oracle rman的第六篇,也是非常重要的一篇,所以各位该玩玩,该学习就要学习,那么让我们开始今天的内容——rman时间点异机恢复:从单机环境到单机测试环境的转移。 

   在第四、五篇文章中主要是介绍了rman全库异机恢复,也就是说恢复的数据文件和归档备份片都是最后备份的时间点的,那么 如果在实例上drop了一张表、delete数据,或者truncate清空了整张表,这时需要通过rman的备份恢复出来的话,就不能使用最新的数据文件和归档备份片了,那么就只能使用drop、delete、truncate之前的数据文件和归档的备份片。

PS小提示:

    数据被误drop、delete、truncate的话,通过RMAN定点(时间点)恢复只是其中的一个办法。rman作为物理工具,需要将误操作的恢复的话,只能是将rman的备份片全部异机恢复出来之后,然后再通过数据泵的方式导入到生产环境中,所以对于误drop、delete、truncate的话建议rman作为最后的恢复手段,首先先通过其他的方式先恢复出来,毕竟是需要快速的将数据恢复出来,所以那种时间最短就选那种喽,下面列出了对于误drop、delete、truncate操作后有哪些恢复方式,小伙伴可以自行参考哦,也列出了对应恢复方式的我的博客跳转地址。

分类

drop

Truncate

Delete

是否删除表结构

删除表结构及其表上的约束,且依赖于该表的存储过程和函数等将变为INVALID 状态

只删除数据。不删除表的定义、约束、触发器和索引

SQL 命令类型

DDL 语句,隐式提交,不能对TRUNCATE 和

DROP 使用ROLLBACK 命令(不可回滚)

DML 语句,事务提交(COMMIT)之后才生效,可以使用ROLLBACK 语句撤销未提交的事务(可回滚)

删除的数据是否放入回滚(ROLLBACK SEGMENT)

高水位是否下降

日志的产生

少量(ddl语句操作的信息,数据不产生undo日志)

少量(ddl语句操作的信息,数据不产生undo日志)

大量undo日志

是否可以对视图进行操作

级联删除

不能drop一个带有enable外键的表

不能truncate一个带有enable外键的表,会报错ora-02266

可以delete一个带有enable外键的表

执行速度

DROP>TRUNCATE>DELETE

DROP和TRUNCATE是在底层修改了数据字典,所以无论是大表还是小表执行都非常快

而DELETE 是需要读取数据到Undo,所以对于大表进行DELETE全表操作将会非常慢

安全性

DROP 和TRUNCATE 在无备份的情况下需谨慎

使用方面

想删除部分数据行只能用DELETE 且带上WHERE 子句;想删除表数据及其结构则使用DROP;想保留表结构而将所有数据删除则使用TRUNCATE

恢复方法

闪回数据库

闪回drop(回收站)

RMAN备份

DUL工具等

闪回数据库

RMAN备份

DUL工具等

闪回数据库

闪回查询

闪回表

LogMiner日志挖掘

RMAN备份

DUL工具等

     

恢复方法博客跳转地址:

1. 《LogMiner日志挖掘》跳转链接👉Oracle篇—logminer日志挖掘恢复误操作数据_oracle 日志挖掘-CSDN博客👈

2. 《flashback闪回(包括了闪回数据库、闪回drop、闪回查询、闪回表、闪回归档五大功能)》,关于flashback闪回,博主目前还没有写哦😯,先记录到这里,等不久写了之后,就会在这里完善啦

3. 《RMAN备份》,那么不用再跳转了,就是这篇文章了😁

    在企业的数据库运维过程中,备份和恢复是密不可分的两个环节。备份提供了数据安全的保障,而恢复则是确保在数据丢失或系统崩溃时能够迅速恢复业务运行的关键。特别是rman时间点异机恢复的过程中,恢复流程的正确性和高效性更是至关重要。

    本文将详细介绍 如何使用RMAN定点(时间点)恢复从RAC环境的备份片中恢复数据到单机环境 。我们将从恢复前的准备工作讲起,涵盖恢复步骤的每一个环节,包括恢复控制文件、数据文件、参数文件、归档等关键组件。同时,我们还将讨论在恢复过程中可能遇到的问题和解决方案,以确保整个恢复过程的顺利进行。

    然而,RMAN所涉及的内容之广、之深,使得难以在单篇文章中全面涵盖。所以我将理论、命令、备份策略、异机恢复、坏块处理等分成八篇文章去讲,即使分为八篇也有不少内容没有涵盖到,所以这八篇文章都是精华,看完这八篇就可以解决95%以上的RMAN相关工作内容了。八篇文章的内容分别如下:

  • 第一篇:rman物理备份工具的基础理论概述
  • 第二篇:rman工具实用指南:常用命令详解与实践
  • 第三篇:rman标准化全库备份策略:完整备份or增量备份
  • 第四篇:rman全库异机恢复:从RAC环境到单机测试环境的转移
  • 第五篇:rman全库异机恢复:从单机环境到RAC测试环境的转移
  • 第六篇:rman时间点异机恢复:从RAC环境到单机测试环境的转移(当前篇)
  • 第七篇:Oracle数据库物理坏块处理:rman修复坏块实践与案例分析
  • 第八篇:逻辑备份工具expdp(exp)/impdp(imp)和物理备份工具rman的区别和各自的使用场景总汇

                      

恢复所使用的rman备份片:

 在上篇文章中, 我们都知道了rman有完整备份or增量备份,所以通过那种备份都可以实现全库的异机恢复 ,但是我的建议使用rman完整备份+归档备份即可 ,而不建议使用rman基本增量备份+rman差异增量备份+归档备份(为什么使用完整备份可以参考上篇文章的原因哦,我有详细介绍,直通车👉【Oracle篇】rman标准化全库备份策略:完整备份or增量备份(第三篇,总共八篇)_rman增量备份-CSDN博客👈),所以这篇文章所使用的rman备份片为rman完整备份+归档备份。

       

So without further ado, let's start today's recovery!!!💫

           

两个不同的时间进行全库备份。包括数据文件、控制文件、参数文件、归档。备份策略参考👉【Oracle篇】rman标准化全库备份策略:完整备份or增量备份(第三篇,总共八篇)_rman增量备份-CSDN博客👈

17点00分

[oracle@rac1 full]$ sqlplus user/123456
SQL> create table ceshi (id number);
SQL> insert into ceshi values (1);
SQL> commit;

17点20分 

[oracle@rac1 full]$ sqlplus itpux/123456
SQL> drop table ceshi;


              

               

RAC源机:

一、恢复删除表之前的数据库。oracle在recover时只能设置时间向前恢复,不能向后恢复,在恢复删除表之前的数据库需要用到有这个表数据的备份片,因为在恢复文件时,oracle会根据控制文件就近恢复记录在内的所有数据文件,如果备份片之间有数据文件差异并且需要在特定时间点恢复时就要特别注意需不需要新加的数据文件,和删除表之前和之后是一个道理,所以需要1679、1680、1681、1682数据文件,1683控制文件,1684参数文件,1685、1686、1687归档。

      

二、通过nfs或者scp到目标FS数据库。源库和异机的备份片的路径要一致,不然报找不到备份片。如果路径不一致可以通过catalog将未识别的RMAN备份集注册到控制文件:

scp拷贝到FS异机的/backup/full目录下:

           

          

FS异机:

一、FS已经安装好了一套单机,与源库实例名可以保持一致,也可以不一致。进行还原文件。

(1)定义一个空实例的SID名,启动到nomount状态

注意:db_unique_name、service_names、instance_name不会涉及在控制文件里,但db_name会涉及到控制文件和数据文件头部中。所以db_name进行异机迁移,不管迁移到FS还是迁移到rac环境,db_name是不能变的。想要变动db_name就只能通过expdp这种逻辑迁移等。

[oracle@11g dbs]$ vi /oracle/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora
*.db_name='orcl'
*.instance_name='orcl'[oracle@11g ~]$ export ORACLE_SID=orcl
SQL> startup nomount

           

(2)还原参数文件

[oracle@rac1 ~]$ rman target /
run {
ALLOCATE CHANNEL ch00 TYPE disk;
restore spfile to '/oracle/app/oracle/product/11.2.0/db_1/dbs/spfileorcl.ora' from '/backup/full/orcl_spfile_1407_1_1158599197';
release channel ch00;
}SQL> create pfile='/oracle/app/oracle/product/11.2.0/db_1/dbs/pfileorcl.ora' from spfile='/oracle/app/oracle/product/11.2.0/db_1/dbs/spfileorcl.ora';[oracle@11g dbs]$ vi /oracle/app/oracle/product/11.2.0/db_1/dbs/pfileorcl.ora
*.audit_file_dest='/oracle/app/oracle/admin/orcl/adump'
*.audit_trail='NONE'
*.compatible='11.2.0.4.0'
*.db_block_size=8192
*.db_domain=''
*.db_files=8192
*.db_name='orcl'
*.instance_name='orcl'
*.diagnostic_dest='/oracle/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.log_archive_format='%t_%s_%r.arc'
*.memory_target=2306867200
*.remote_login_passwordfile='exclusive'
*.log_archive_dest_1='location=/oracle/app/oracle/product/11.2.0/db_1/dbs/arch'SQL> create spfile='/oracle/app/oracle/product/11.2.0/db_1/dbs/spfileorcl.ora' from pfile='/oracle/app/oracle/product/11.2.0/db_1/dbs/pfileorcl.ora';
SQL> shutdown immediate
SQL> startup nomount
SQL> show parameter spfile

            

(3)还原控制文件

[oracle@lf ~]$ rman target /
run {
ALLOCATE CHANNEL ch00 TYPE disk;
restore controlfile to '/oracle/app/oracle/oradata/orcl/control.ctl' from '/backup/full/orcl_ctl_1406_1_1158599194';
release channel ch00;
}修改控制文件的参数,启动至mount状态:
SQL> show parameter control
SQL> alter system set control_files='/oracle/app/oracle/oradata/orcl/control.ctl' scope=spfile;  
SQL> shutdown immediate
SQL> startup mount
SQL> show parameter control   

          

(4)重命名redo日志组

注意:1)通过rman定义set newname for logfile设置路径失败,所以只能在sqlplus中重命名redo日志组。12c版本之后可能支持了在rman中定义set newname for logfile(待验证)

          2)只进行重命名redo日志组操作,先不进行删除和重建redo日志组,如果同时进行重建redo日志组,就会导致在后续追归档日志阶段不能应用归档日志(执行recover database using backup controlfile until cancel;命令,报错ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below ORACLE)

           3)先还原数据文件然后再重命名redo日志组,可能会导致v$logfile里面日志组的路径全部直接成为了+ASM磁盘组没有具体路径的情况,比如:全部都成了+DATA这样,这样的话部分日志组因为当前在用删除不了,并且重命名redo日志组是需要具体路径的,但是都变成了+DATA就没有办法识别到是哪一个日志组。所以先进行redo日志组的重命名,然后再进行数据文件还原,就可以避免这个问题。

SQL> select * from v$logfile;         ---重做日志组
SQL> select * from v$standby_log;    ---镜像日志组(dg)

SQL> 
alter database rename file '+DATA/orcl/onlinelog/group_1.266.1140875825' to '/oracle/app/oracle/oradata/orcl/redo1.log';
alter database rename file '+DATA/orcl/onlinelog/group_2.257.1140875825' to '/oracle/app/oracle/oradata/orcl/redo2.log';
alter database rename file '+DATA/orcl/onlinelog/group_3.275.1140875827' to '/oracle/app/oracle/oradata/orcl/redo3.log';
alter database rename file '+DATA/orcl/onlinelog/group_4.276.1140875827' to '/oracle/app/oracle/oradata/orcl/redo4.log';
alter database rename file '+DATA/orcl/onlinelog/group_5.281.1140882455' to '/oracle/app/oracle/oradata/orcl/redo5.log';
alter database rename file '+DATA/orcl/onlinelog/group_6.293.1140883981' to '/oracle/app/oracle/oradata/orcl/redo6.log';
alter database rename file '+DATA/orcl/onlinelog/group_7.294.1140883981' to '/oracle/app/oracle/oradata/orcl/redo7.log';
alter database rename file '+DATA/orcl/onlinelog/group_8.295.1140883981' to '/oracle/app/oracle/oradata/orcl/redo8.log';

                  

(5)还原数据文件

注意:rman备份记录在控制文件中,启动到mount状态时,就可以查到rman的备份信息。在恢复数据文件时,会自动找备份片的位置进行恢复,所以源库和异机的备份片的路径要一致,不然报找不到备份片。如果路径不一致可以通过catalog将未识别的RMAN备份集注册到控制文件。

RMAN> CATALOG START WITH '/backup/full';   ---注册目录(多用于批量注册归档,也可以用于注册备份片)
RMAN> report schema;                    ---显示实例的信息。根据数据文件和临时文件ID恢复

RMAN>
run {
ALLOCATE CHANNEL ch00 TYPE disk;
ALLOCATE CHANNEL ch01 TYPE disk;
###还原数据文件到新的路径
set newname for datafile 1 to '/oracle/app/oracle/oradata/orcl/system.259.1140874089';
set newname for datafile 2 to '/oracle/app/oracle/oradata/orcl/sysaux.260.1140874091';
set newname for datafile 3 to '/oracle/app/oracle/oradata/orcl/undotbs1.261.1140874091';
set newname for datafile 4 to '/oracle/app/oracle/oradata/orcl/undotbs2.263.1140874093';
set newname for datafile 5 to '/oracle/app/oracle/oradata/orcl/users.264.1140874093';
set newname for datafile 6 to '/oracle/app/oracle/oradata/orcl/itpux.277.1140877153';
set newname for datafile 7 to '/oracle/app/oracle/oradata/orcl/liu.472.1158545801';
set newname for datafile 8 to '/oracle/app/oracle/oradata/orcl/liu.427.1153721763';
###还原临时文件到新的路径
set newname for tempfile 1 to '/oracle/app/oracle/oradata/orcl/temp.262.1140874091';
###自动全库恢复。restore database会导致所有文件覆盖还原所以谨慎,restore datafile是指定单个文件从rman中还原。
restore database;           
###将已发出SET NEWNAME for DATAFILE命令的所有数据文件切换为其新名称。如果是asm管理的文件可能在设置路径时出现问题,导致控制文件的路径和物理路径不对应。所以建议源库为asm转文件系统时不设置这个参数,手动注册和通知控制文件路径catalog datafilecopy和switch datafile。
switch datafile all;  
release channel ch00;
release channel ch01;
}

                  

(6)查看数据文件头部和控制文件头部还原的时间

SQL> select name from v$datafile;
SQL> SELECT FILE#,to_char(checkpoint_change#,'999999999999') ,TO_CHAR(CHECKPOINT_TIME,'YYYY-MM-DD HH24:MI:SS') CPTIME FROM v$datafile_header;       ---数据文件头部

SQL> SELECT FILE#,to_char(checkpoint_change#,'999999999999'),TO_CHAR(CHECKPOINT_TIME,'YYYY-MM-DD HH24:MI:SS') CPTIME FROM V$DATAFILE;            ---控制文件头部

               

二、恢复数据

(1)还原归档

注意:先执行一遍recover database using backup controlfile until cancel;和v$datafile_header、V$DATAFILE就会输出当前恢复的SCN时间,然后根据时间再决定恢复几天的归档,或者也会显示从那个归档开始恢复,确定了开始恢复的归档号之后,就按照序列号恢复RESTORE ARCHIVELOG sequence,恢复到最新的序列号通过list backup查看最后一个备份的归档号。

RMAN>
run{
ALLOCATE CHANNEL ch00 TYPE disk;
set archivelog destination to '/backup/arch';
restore archivelog from time 'sysdate-10';
release channel ch00;
}      ---如果恢复报错no backup of archived log,根据序列号恢复RESTORE ARCHIVELOG sequence BETWEEN 5877 AND 5971 thread 2; 

             

(2)追归档日志(设置恢复归档日志的时间点,设置的时间略微高出还原的时间点,因为在recover时只能设置时间向前恢复,不能向后恢复。时间设置为还原点之后,drop表之前)

SQL> set logsource /backup/arch;   ---set logsource +路径:设置的是数据库读取归档的路径,默认的读取的路径是archive log list,如果通过rman恢复的是其他路径,那么就需要重新设置一下读取归档的路径。SQL> recover database until time '2024-01-18 17:18:00' using backup controlfile until cancel;
auto
SQL> recover database until time '2024-01-18 17:18:00' using backup controlfile until cancel; 
Cancel
SQL> SELECT FILE#,to_char(checkpoint_change#,'999999999999') ,TO_CHAR(CHECKPOINT_TIME,'YYYY-MM-DD HH24:MI:SS') CPTIME FROM v$datafile_header;       ---数据文件头部

SQL> SELECT FILE#,to_char(checkpoint_change#,'999999999999'),TO_CHAR(CHECKPOINT_TIME,'YYYY-MM-DD HH24:MI:SS') CPTIME FROM V$DATAFILE;            ---控制文件头部

                        

(3)删除不必要的redo日志组

SQL> select * from v$logfile;         ---重做日志组
SQL> select * from v$standby_log;    ---镜像日志组(dg)

SQL> 
alter database drop logfile group 5;
alter database drop logfile group 6;
alter database drop logfile group 7;
alter database drop logfile group 8;  

           

(4)重建临时文件

SQL> shutdown immediate
SQL> startup
SQL> alter database open resetlogs; 
SQL> select * from v$tablespace;        ---表空间中有temp表空间但是告警日志中显示需要重建信息的temp数据文件

temp临时文件的路径还是+ASM磁盘组,所以新增一个临时文件,然后删除临时文件为1的+ASM磁盘组的临时文件:
SQL> select * from v$tempfile;    

SQL> alter tablespace temp add tempfile '/oracle/app/oracle/oradata/orcl/temp.dbf' size 31G autoextend off;
SQL> alter tablespace temp drop tempfile 1;
注意:如果删除临时文件失败,需要先删除临时表空间,然后重建。

                 

(5)禁用重做日志线程2。因为原先是rac环境,所以每个实例都是独立的redo线程,现在恢复到单机只需要1个redo线程,单机只会在线程1的日志组来回切换

SQL> select * from v$logfile;         ---重做日志组
SQL> select * from v$standby_log;    ---镜像日志组(dg)
SQL> select * from v$log;           ---rac环境下有多个线程的重做日志组,所以在单机环境下重做日志只保留线程1

SQL> alter database disable thread 2;   ---禁用重做日志线程2
SQL> 
alter database drop logfile group 3;
alter database drop logfile group 4;

                         

(6)删除UNDOTBS2表空间(undo同redo一样是分线程的)

SQL> drop tablespace UNDOTBS2 including contents and datafiles;

             

三、启动单机数据库

SQL> shutdown immediate
SQL> startup   

                 

四、物理迁移完成查看状态

(1)通过rman恢复的实例是和生产环境一模一样的,所以只需要做后续参数部分的优化

参数优化参考RAC环境的配置即可😄

                

(2)检查实例情况

数据库文件和undo:
set linesize 500 
set pagesize 99
col file_name for a70 
col file_id for 9999999 
col status for a10 
col ts_name for a25 
col cur_mb for 99999 
col max_mb for 99999
select status, file_id, file_name, tablespace_name ts_name,blocks/128 tolal_mb, maxblocks/128 max_mb,AUTOEXTENSIBLE from dba_data_files order by file_name;temp临时表空间:
select username,temporary_tablespace from dba_users;
set linesize 230
col file_name for a65
select  FILE_ID,FILE_NAME,TABLESPACE_NAME,bytes/1024/1024 tolal_mb,status,AUTOEXTENSIBLE,MAXBYTES/1024/1024 max_mb from dba_temp_files;redo重做日志:
set linesize 230
col member for a50
select * from v$logfile;
select * from v$log;查看数据库实例的状态和模式:
select  instance_name , status  from  v$instance ;
select  name, open_mode  from  v$database ;

     

五、验证数据是否恢复

[oracle@11g dbs]$ sqlplus user/123456
SYS@orcl> select * from ceshi;    ---通过之前的备份恢复数据

                 

六、将数据恢复到生产库 

少量数据的方式:

SYS@orcl> select 'insert into ceshi values (' || id || ');' from ceshi;

             

大量数据的方式:

exp/imp或者expdp/impdp


    各位经过第四、第五、第六篇文章,关于RMAN恢复的篇章至此圆满结束。这些精心挑选的案例不仅涵盖了多种恢复场景,而且都极具实用性和可操作性。希望能为各位在恢复工作中提供有力的支持和指导。

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

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

相关文章

谷歌AI助力软件工程的进展及未来展望

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

OpenAI 宕机事件:GPT 停摆的影响与应对

引言 2024年6月4日,OpenAI 的 GPT 模型发生了一次全球性的宕机,持续时间长达8小时。此次宕机不仅影响了OpenAI自家的服务,还导致大量用户涌向竞争对手平台,如Claude和Gemini,结果也导致这些平台出现故障。这次事件的广…

在 Word 中,如何有效调整文字与下划线之间的距离

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 如果你在使用 Word 时,希望调整文字和下划线之间的距离,让它们看起来更加美观,可以按照以下步骤操作: 1. 在你想要加下划线的文字前后各加一个空格&…

在windows10 安装子系统linux(WSL安装方式)

在 windows 10 平台采用了WSL安装方式安装linux子系统 1 查找自己想要安装的linux子系统 wsl --list --online 2 在线安装 个人用Debian比较多,这里选择Debian,如下图: wsl --install -d Debian 安装过程中有一步要求输入用户名与密码&…

使用Vue CLI在其他磁盘创建项目出现错误及解决

Vue CLI是Vue.js官方推出的脚手架工具,可以帮我们快速的创建Vue项目框架。 我们创建Vue项目时一般默认都是在C盘,但由于某些因素我们需要在其他磁盘上创建Vue项目。 通过“winr”打开终端时默认位置都是C盘,但是Vue CLI不接受绝对路径作为参…

802.11漫游流程简单解析与笔记_Part3

原定计划在Part3分析ns3的Roaming流程抓包,但ns3并不支持漫游: 看过Part1的应该都知道,标准关联流程是auth*2 associate*2 key*4,但ns3里面没有与auth有关的部分,third脚本里面有cap字段,但无auth也无key&a…

LabVIEW图像采集处理项目中相机选择与应用

在LabVIEW图像采集处理项目中,选择合适的相机是确保项目成功的关键。本文将详细探讨相机选择时需要关注的参数、黑白相机与彩色相机的区别及其适用场合,帮助工程师和开发者做出明智的选择。 相机选择时需要关注的参数 1. 分辨率 定义:分辨率…

HDFS 读写数据流程

优质博文:IT-BLOG-CN 一、HDFS 写数据流程 HDFS 文件写入流程图如下:三个模块(客户端、NameNode、DataNode) 【1】校验: 客户端通过 DistributedFileSystem 模块向 NameNode 请求上传文件,NameNode 会检…

视频点播系统的设计

管理员账户功能包括:系统首页,个人中心,管理员管理,客服聊天管理,基础数据管理,论坛管理,公告管理 前台账户功能包括:系统首页,个人中心,论坛,视…

pdf压缩到指定大小的简单方法

压缩PDF文件是许多人在日常工作和学习中经常需要面对的问题。PDF文件因其跨平台、易阅读的特性而广受欢迎,但有时候文件体积过大,会给传输和存储带来不便。因此,学会如何有效地压缩PDF文件,就显得尤为重要。本文将详细介绍几种常见…

视频、图片、音频资源抓取(支持视频号),免安装,可批量,双端可用!

今天分享一款比较好用资源嗅探软件,这个嗅探工具可以下载视频号,界面干净,可以内容预览和批量下载,看到这里你是不是想用它爬很多不得了的东西。这款软件无需安装,打开即用。同时他支持windows系统和Mac系统,是一款不可…

跃入AI新纪元:亚马逊云科技LLM全景培训,解锁AI构建者之路

亲爱的技术爱好者们,你是否也对大语言模型(LLM)的神奇魅力所吸引,渴望深入探索其背后的技术奥秘?今天,我要为大家推荐一份超级硬核的学习资源——亚马逊云科技 对话AI 构建者:从基础到应用的LLM…

【Vue】图形验证码功能

说明: 图形验证码,本质就是一个请求回来的图片用户将来输入图形验证码,用于强制人机交互,可以抵御机器自动化攻击 (例如:避免批量请求获取短信) 需求: 动态将请求回来的 base64 图片,解析渲染…

stm32MP135裸机编程:启动流程分析

0 参考资料 轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf STM32MP135AD数据手册.pdf1 stm32MP135裸机启动流程分析 1.1 启动方式 stm32MP135支持8种启动方式: 注: UART和USB启动并不是指通过UART/USB加载程序,而是通过UA…

【文末附gpt升级秘笈】AI热潮降温与AGI场景普及的局限性

AI热潮降温与AGI场景普及的局限性 摘要: 随着人工智能(AI)技术的迅猛发展,AI热一度席卷全球,引发了广泛的关注和讨论。然而,近期一些学者和行业专家对AI的发展前景提出了质疑,认为AI热潮将逐渐…

1.VMware软件的安装与虚拟机的创建

1. VMware软件的安装 1.1 为什么需要虚拟机 嵌入式Linux开发需要在Linux系统下运行,我们选择Ubuntu。   1、双系统安装     有问题,一次只能使用一个系统。Ubuntu基本只做编译用。双系统安装不能同时运行Windows和Linux。   2、虚拟机软件   …

Qt设置进程环境变量

目的 最近遇上了设置环境变量的问题,看似是小问题,想解决好,实在是一件不容易的事。 看看当时,我遇到这些问题的无奈: 首先说,是在windows进行环境变量的设置,如果在Linux那肯定是简单了。 一般来说,首先是设置系统的环境变量,这条路,是一条复杂的路,首先得写一个…

时间处理基础:Rust 的 chrono 库教程

在开发过程中,我们经常有对时间和日期处理的需求。不论是日历应用、日程安排、还是时间戳记录,准确的时间数据处理都是必不可少的。Rust 社区提供的 chrono 库以其强大的功能和灵活的接口,在 Rust 开发者中广受欢迎。本文将简单介绍 chrono 库…

C++ | Leetcode C++题解之第143题重排链表

题目: 题解: class Solution { public:void reorderList(ListNode* head) {if (head nullptr) {return;}ListNode* mid middleNode(head);ListNode* l1 head;ListNode* l2 mid->next;mid->next nullptr;l2 reverseList(l2);mergeList(l1, l…

腾讯云大数据ES Serverless

Elasticsearch:日志和搜索场景首选解决方案。 技术特点:分布式、全文搜索和数据分析引擎,可以对海量数据进行准实时地存储、搜索和统计分析。 ES的技术栈一共包含四个组件: 其中最核心的是Elasticsearch,可用于数据…