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

news2025/2/26 4:31:00

💫《博主介绍》:✨又是一天没白过,我是奈斯,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.coloradmin.cn/o/1810369.html

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

相关文章

wordpress入门教程,wordpress快速入门,wordpress教程视频

WordPress是一款广受欢迎的开源博客平台和内容管理系统,自2003年诞生以来,它不断发展和完善,如今已成为互联网上众多网站、博客的首选构建工具。 1、搜索“方圆资源网官网” WordPress教程的资源非常丰富,只要找到合适的途径&…

2 程序的灵魂—算法-2.4 怎样表示一个算法-2.4.2 用流程图表示算法-【例 2.9】

将例 2.4 求 1-1/21/3-1/41/99-1/100 的算用流程图表示。 一个流程图包括: 1. 表示相应操作的框; 2. 带箭头的流程线; 3. 框内外必要的文字说明。

stm32MP135裸机编程:修改基于SD卡的FSBL-A用户程序引导程序(boot)

0 参考资料 轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf stm32mp135官方开发板原理图(mb1635-bdp-v1-0.zip) STM32Cube_FW_MP13_V1.0.0 STM32CubeIDE v1.15 1 为什么需要修改FSBL-A用户程序引导程序 FSBL-A用户程序引导程序的作用在《…

李廉洋:6.11黄金原油持续震荡上行,今日行情走势分析策略。

黄金消息面分析:上周黄金市场的走势受到了PCE通胀数据和美联储政策预期的显着影响。尽管市场对黄金的长期看涨情绪依然存在,但短期内金价的波动性预计将持续。4月份的PCE通胀数据显示价格压力有所降温,这一结果与分析师预期一致,但…

Cocos2dlua棋牌Lua解密

点击上方↑↑↑蓝字[协议分析与还原]关注我们 “ 介绍使用libcocos2dlua.so库的游戏的解密分析方法。” Cocos2dlua是一款流行的游戏引擎,常用于开发棋牌游戏。为了保护游戏代码,Cocos2dlua通常会对游戏脚本lua文件进行加密,生成Luac文件&…

html+CSS+js部分基础运用20

根据下方页面效果如图1所示&#xff0c;编写程序&#xff0c;代码放入图片下方表格内 图1.效果图 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible" conte…

WDF驱动开发-电源策略(三)

多组件设备的 KMDF 驱动程序只能将请求发送到处于活动状态的组件。 通常&#xff0c;驱动程序将 I/O 队列分配给组件或组件集。 首先考虑分配给单个组件的队列。 驱动程序在组件变为活动状态时启动队列&#xff0c;并在组件空闲时停止队列。 因此&#xff0c;当 KMDF 调用队列…

【Oracle生产运维】数据库服务器负载过高异常排查处理

说明 在Oracle数据库运维工作中&#xff0c;经常会遇到Oracle数据库服务器平均负载&#xff08;load average&#xff09;突然异常升高&#xff0c;如果放任不管&#xff0c;严重的情况下会出现数据库宕机、服务器重启等重大故障。因此&#xff0c;当发现数据库服务器平均负载…

2024年江苏三支一扶公告已出,招440人!

本次江苏省将招募440名高校毕业生&#xff0c;安排到乡镇&#xff08;街道&#xff09;从事支教、支农、支医、帮扶乡村振兴、水利、就业和社会保障服务工作&#xff08;以下简称“三支一扶”计划&#xff09;&#xff0c;服务期限为2年。 招募程序 招募工作按照个人报名、资格…

摩托罗拉手机在中国以外的市场复兴,在欧洲和美国大幅增长

摩托罗拉曾是全球手机行业的领导者&#xff0c;不过自从被诺基亚击败后&#xff0c;它就辗转被卖了又卖&#xff0c;曾经辉煌的品牌堕落了&#xff0c;让人颇为可惜&#xff0c;不过如今摩托罗拉手机似乎看到了复兴的希望&#xff0c;在中国以外的市场都取得了快速增长。 市调机…

GStreamer学习2.1----获取mp4中的图片

这里通过获取mp4中的图片例子来加深Gstreamer的理解&#xff0c;问问AI实现这样功能的命令&#xff0c; 得到 gst-launch-1.0 filesrc locationtest.mp4 ! qtdemux ! queue ! h264parse ! avdec_h264 ! videoconvert ! jpegenc ! multifilesink locationoutput_image_%03d.jp…

linux centos consul1.15.2一键安装部署

consul原理、作用、安装相关内容 一、理论部分二、安装下载版本地址三、安装consul服务 一、理论部分 1、consul的原理 Consul的原理及作用可以归纳为以下几点&#xff1a; ①、基于Gossip协议的通信&#xff1a;Consul使用了基于Gossip协议的Serf实现来进行通信。 Gossip协议…

【思考】Vue2响应丢失、$set

【思考】Vue2响应丢失、$set vue2响应丢失情况复现原因解决总结 vue2响应丢失情况复现 场景&#xff1a;直接通过数组下标去修改数组造成响应丢失 <template><div><p v-for"(item, index) in list" :key"index">{{item}}</p><…

《Brave New Words 》4.4 ​增加父母与孩子之间的连接点

Part IV Better Together 第四部分 携手共进 Increasing Points of Connection Between Parents and Their Kids 增加父母与孩子之间的连接点 From the moment I first used GPT-4 to the day our team concluded its hack-AI-thon, I found myself awed by its capabilities. …

设计模式-装饰器模式(结构型)

装饰器模式 装饰器模式是一种结构模式&#xff0c;通过装饰器模式可以在不改变原有类结构的情况下向一个新对象添加新功能&#xff0c;是现有类的包装。 图解 角色 抽象组件&#xff1a;定义组件的抽象方法具体组件&#xff1a;实现组件的抽象方法抽象装饰器&#xff1a;实现…

effective-C++ 条款6

&#x1f536;条款6——不能被拷贝的类  &#x1f536;delete 关键字能禁掉自动生成的函数  &#x1f531;让他的派生类不能被继承  &#x1f531;另一种实现派生类不能被拷贝的方法 条款6——不能被拷贝的类 1. delete 关键字能禁掉自动生成的函数 class Uncopy { publi…

【解决问题】QApplication: No such file or directory,C++ 使用Qt或项目未正确加载Cmake报错

运行环境&#xff1a; Clion编译&#xff0c;构建C工程项目报错QApplication: No such file or directory 问题描述 QApplication: No such file or directory 引用的#include <QApplication>飘红 解决方案 1、Qt没有安装正确&#xff0c;请使用对应版本的Qt。或编译…

Nodejs 第七十六章(MQ进阶)

MQ介绍和基本使用在上一章介绍过了&#xff0c;不再重复 消息&#xff1a;在RabbitMQ中&#xff0c;消息是传递的基本单元。它由消息体和可选的属性组成 生产者Producer&#xff1a;生产者是消息的发送方&#xff0c;它将消息发送到RabbitMQ的交换器&#xff08;Exchange&…

php 混合xml js,html 代码报错 ,结束标签关闭, short_open_tag 的作用,php关闭文件结束判断

结束标签关闭, short_open_tag 的作用&#xff0c;php关闭文件结束判断 有时候我们我们会将php&#xff0c;xml&#xff0c;js&#xff0c;html 混合编写 php文件只要开始标签而不要结尾标签? 混合代码看代码 直接运行 yntax error, unexpected version (T_STRING) in php…

【差分数组】1674. 使数组互补的最少操作次数

本文涉及知识点 差分数组 LeetCode1674. 使数组互补的最少操作次数 给你一个长度为 偶数 n 的整数数组 nums 和一个整数 limit 。每一次操作&#xff0c;你可以将 nums 中的任何整数替换为 1 到 limit 之间的另一个整数。 如果对于所有下标 i&#xff08;下标从 0 开始&…