Oracle RMAN 备份恢复

Oracle RMAN 备份恢复

1.什么是RMAN

RMAN在数据库服务器的帮助下实现数据库文件、控制文件、数据库文件和控制文件的映像副本,以及归档日志文件,数据库服务器参数文件的备份。RMAN也允许使用脚本文件实现数据的备份与恢复,而且这些脚本保存在数据库内,而不需要编写基于OS的脚本文件。RMAN备份的文件自动保存在一个系统指定的目录下,文件的名称也由RMAN自己维护。当实现数据库恢复操作时,恢复指令简洁,RMAN自动寻找需要的文件实现数据恢复。减少了传统的导出程序中人为错误的发生。

2.RMAN有什么优点

· 支持增量备份:RMAN采用备份级别实现增量备份,在一个完整备份的基础上,采用增量备份,和传统的备份方式相比,减少了备份的数据量。

· 自动管理备份文件:RMAN备份的数据是RMAN自动管理的,包括文件名字,备份文件存储目录,以及识别最近的备份文件,搜索恢复时需要的表空间、模式或数据文件等备份文件。

· 自动化备份与恢复:在备份和恢复操作时,使用简单的指令就可以实现备份与恢复,且执行过程完全由RMAN自己维护。

· 不产生重复信息:使用RMAN的联机备份不产生重做信息。

· 恢复目录:RMAN的自动化备份与恢复功能应该归功于恢复目录的使用,RMAN直接在其中保存了备份和恢复脚本。

· 支持映像复制:使用RMAN也可以实现映像复制,映像是以操作系统上的文件格式存在,这种复制方式类似于用户管理的联机备份方式。

· 新块的比较特性:这是RMAN支持增量备份的基础,该特性使得备份时,跳过数据文件中从未使用过的数据块的备份,备份数据量的减少直接导致了备份存储空间需求和备份时间的较少。

· 备份的数据文件压缩处理:RMAN提供了一个参数说明是否对文件进行压缩,压缩的备份文件以二进制格式存在,可以减少占用的存储空间。

· 备份文件有效性检查功能:在恢复前往往需要验证备份文件的有效性。

3.快闪恢复区

快闪恢复区是存储与备份和恢复数据文件以及相关信息的存储区。快闪恢复区保存了每个数据文件的备份、增量备份、控制文件备份以及归档重做日志备份。Oracle也允许在快闪恢复区中保存联机重做日志的冗余副本以及当前控制文件的冗余副本,还有Oracle中闪回特性中的闪回日志也保存在快闪恢复区中。

· 快闪恢复区的优点:实现了备份文件的自动管理,是备份和恢复数据库更简单,并且可以几种管理磁盘空间,但要求恢复区的空间足够大,以容纳备份的数据。

4.相关参数设置

查看快闪恢复区的参数信息:

SQL> show parameter db_recovery_file_dest;

修改快闪恢复区的参数:

SQL> alter system set db_recovery_file_dest_size=2G

查看快闪恢复区的位置以及空间使用信息:

SQL> select name, space_limit, space_used, number_of_files from v$recovery_file_dest;

解决快闪恢复区的空间不足问题:

Method1:SQL> alter system set db_recovery_file_dest_size=4G
Method2:SQL> alter system set db_reocvery_file = '/u01/backup'

5.RMAN相关参数配置

rman配置参数RMAN configuration parameters for database with db_unique_name PROD are:① 保留策略(窗口时间、冗余级别)CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;② 备份优化CONFIGURE BACKUP OPTIMIZATION ON;③ 默认设备类型CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default④ 自动备份策略CONFIGURE CONTROLFILE AUTOBACKUP ON;⑤ 自动备份路径CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/home/oracle/backup/control/%F';⑥ 备份级并行度CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default⑦ 备份映像路径CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default⑧ 归档日志文件路径CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default⑨ 配置通道CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT  '/home/oracle/backup/%d_%T_%U.bak';CONFIGURE MAXSETSIZE TO UNLIMITED; # defaultCONFIGURE ENCRYPTION FOR DATABASE OFF; # defaultCONFIGURE ENCRYPTION ALGORITHM 'AES128'; # defaultCONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # defaultCONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # defaultCONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/19.3.0/dbhome_1/dbs/snapcf_PROD.f'; # default

实践环节

1.快闪恢复区

【1】无启用快闪恢复区时,要指定路径,下面以备份控制文件为例:
RMAN> connect target /
RMAN> backup current controlfile format '/u01/app/oracle/backup_ctl_%u.dbf';【2】启用快闪恢复区时,无需指定路径,下面以备份控制文件为例:
RMAN> connect target /
RMAN> backup current controlfile;【3】压缩备份数据库
RMAN> connect target
RMAN> backup as compressed backupset database;

2.联机备份

RMAN联机备份需要的准备工作:SQL>shutdown immediate;
SQL>startup mount;
SQL>alter database archivelog;
SQL>archive log list;

联机备份整个数据库·

RMAN> backup as compress backupset database plus archivelog delete all input;

觉得速度太慢了,怎么办?可以配多几个通道

RMAN> run {allocate channel ch1 device type disk;allocate channel ch2 device type disk;backup as backupset format '/u01/backup/%U'(datafile 1,4 channel ch1)(datafile 2,3,5 channel ch2);sql 'alter system archive log current';
}

3.备份语句

备份语句:
备份数据库:backup database;
备份表空间:backup tablespace users;
备份数据文件:
mkdir /u01/app
backup as backupset datafile 1 format '/u01/backup/datafile_1_%U';
备份控制文件:backup current controlfile;

4.增量备份

RMAN增量备份:
0级备份
RMAN> backup incremental level 0 database;
1级备份
RMAN> backup incremental level 1 database;

5.快速增量备份

快速增量备份:前提:开启块跟踪
SQL> alter database enable block change tracking using file '/u01/app/oracle/oradata/chtrack.log';检查:查看是否开启了快跟踪
SQL> select filename, status, bytes from v$block_change_tracking更改:更改块跟踪文件的存储位置
SQL> alter database rename file '/u01/app/oracle/oradata/chtrack.log' to '/u01/app/oracle/oradata/chtrack1.log';设定:禁用快跟踪特性
SQL> alter database disable block change tracking;

6.在映像副本上应用增量备份

RMAN> run {backup incremental level 1 for recover of copy with tag 'incr_copy_backup' database;recover copy of database with tag 'incr_copy_backup'
}
第一次执行:
语句1表示生成级别为1的tag值为incr_copy_backup,针对整个数据库并且应用于增量备份的映像副本。
语句2由于没有增量备份,因此不会执行,也不会报错。第二次执行:
由于有了第一次的0级备份,因此会生成一个1级别的增量备份,执行第二条语句时,会将第一条语句生成的增量备份应用到第一次所生成的映像副本上,以后的每一次都会生成一个增量备份,并将生成的增量备份应用到映像副本上。若需要恢复,先恢复映像副本,然后再应用最近一次增量备份以来的所有归档日志,就可以实现数据库的完全恢复。

创建和维护恢复目录

恢复目录保存了RMAN信息库的信息,Oracle建议使用恢复目录保存RMAN信息库,再信息库中保存了数据文件备份集或映像复制。表空间和数据文件信息以及RMAN的配置信息,使用恢复目录RMAN在一定条件下读取目标库的控制文件来更新恢复目录中保存的关于控制文件、数据文件等信息。

Step1:创建一个表空间(prod数据库)
SQL> create tablespace rcat_tbs temporary datafile '/u01/app/oracle/oradata/rcat_tbs01.dbf' size  100m;Step2:创建恢复目录用户
SQL> create user rcat_owner identified by oracle default tablespace rcat_tbs temporary tablespace temp;
SQL> alter user rcat_owner quota unlimited on rcat_tbs;Step3:为恢复目录用户授权
SQL> grant recovery_catalog_owner to rcat_owner;
SQL> grant connect, resource to rcat_owner;Step4:连接到目录数据库并创建恢复目录
[oracle@ocm ~]$ rman catalog rcat_owner/oracle@prod
RMAN> create catalog tablespace rcat_tbs;Step5:在恢复目录中注册目标数据库
[oracle@ocm ~]$ rman target system/oracle@oracle catalog rcat_owner/oracle@prod
RMAN> register database;
RMAN> resync catalog;

RMAN脚本管理

Step1:创建RMAN备份脚本
RMAN> create script rman_backup {sql 'alter system checkpoint';backup database format'/u01/backup/offline_backup/back_%u.dbf';backup current controlfile format'/u01/backup/offline_backup/back_ctl_%u.dbf';
}Step2:执行脚本
RMAN> run {execute script rman_backup;}Step3:调用操作系统文件执行RMAN指令
[oracle@ocm ~]$ rman target system/oracle@oracle catalog rcat_owner/oracle@prod cmdfile 'rman_backup.rcv'Step4:将脚本文件转换为操作系统文件RMAN> print script rman_backup to file 'rman_backup.txt';

RMAN非归档模式下的完全恢复

1、控制文件、数据文件、重做日志文件丢失的恢复

SQL> startup mount;[oracle@ocm ~]$ rman target system/oracle
RMAN> backup as compressed backupset database;
SQL> create table test1 as select * from dba_segments;

2.模拟删除所有控制文件、数据文件、重做日志文件

[oracle@ocm ~]$ rm -rf u01/app/oracle/oradata/orcl/*.*恢复控制文件:
RMAN> restore controlfile from '/u01/app/c-201919196718-20190401'
启动数据库到mount状态:
SQL> alter database mount;
恢复数据库
RMAN> restore database;
RMAN> recover database noredo;
检验:创建的表是否存在
SQL> select count(*) from test1;
注意:此时表的数据已经全部丢失。也就是说自上次备份以来的所有数据全部丢失。

3、只有数据文件丢失

模拟丢失数据文件
[oracle@ocm ~]$ rm -rf users01.dbf
SQL> startup;  //报错
使用RMAN恢复该数据文件
RMAN> restore datafile 4;
恢复数据文件
RMAN> recover datafile 4;【注】以上过程没有覆盖日志文件,当日志文件被覆盖之时,需要使用一下命令实现不完全恢复。
RMAN> recover datafile 4 until cancel;
根据提示,直接输入cancel,在介质恢复完成后,使用resetlogs打开数据库。

4、联机重做日志文件和数据文件损坏的恢复

模拟丢失日志文件和数据文件
[oracle@ocm ~]$ rm -rf *.dbf
[oracle@ocm ~]$ rm -rf *.log
SQL> startup force    //开启到mount状态
RMAN> restore database;
RMAN> recover database until cancel;
SQL> alter database open resetlogs;
问:数据文件如何恢复到其他磁盘目录下?
RMAN> run {set newname for datafile '/u01/app/oracle/oradata/orcl/system01.dbf' to '/u02/app/oracle/oradata/orcl/system01.dbf';set newname for datafile '/u01/app/oracle/oradata/orcl/users01.dbf' to '/u02/app/oracle/oradata/orcl/users01.dbf';restore database from tag = TAG20180401t131419;switch datafile all;
}

RMAN归档模式下的完全恢复

1、丢失一个系统表空间对应的数据文件的恢复

需求:先为system表空间添加一个数据文件system02.dbf,存放至/newdata/orcl目录下,文件大小100m,使用sys用户在system表空间上创建表t1,表内容和u01用户的 t1表一致。故障模拟:system02.dbf数据文件丢失请解决故障,并找回sys.t1表SQL> alter tablespace system add datafile '/newdata/orcl/system02.dbf' size 100m;
SQL> create table t1 tablespace system as select * from u01.t1;
[oracle@orcl orcl]$ rm system02.dbf
SQL> startup force(报错)
RMAN> run {
sql 'alter database datafile 7 offline';
restore tablespace system;
recover tablespace system;
sql ' alter database datafile 7 online';
sql ' alter database open';
}

2、丢失一个非系统表空间的数据文件的恢复

问题描述:u01用户在data01表空间上创建一张t2表,表内容和u01用户的t1表一致故障模拟:data01.dbf数据文件丢失请解决故障,并找回u01.t2SQL> conn u01/oracle;
SQL> create table t2 tablespace data01 as select * from t1;[oracle@orcl orcl]$ rm data01*.dbf
SQL> conn as sysdba
SQL> alter system flush buffer_cache;
SQL> conn u01/oracle
SQL> select * from t2;(报错)RMAN> run {
sql 'alter database datafile 5,6 offline';
restore tablespace data01;
recover tablespace data01;
sql 'alter database datafile 5,6 online';
}

3、丢失一个非系统表空间的数据文件的恢复

问题描述:u01用户在data01表空间上创建一张t3表,表内容和u01用户的t1表一致故障模拟:data01.dbf数据文件丢失,并且由于磁盘损坏,原路径已经不能恢复,文件需要恢复至其他路径(自拟)请解决故障,并找回u01.t3SQL> conn u01/oracle;SQL> create table t3 tablespace data01 as select * from t1;[oracle@orcl orcl]$ rm data01*.dbfSQL> conn as sysdbaSQL> alter system flush buffer_cache;SQL> conn u01/oracleSQL> select * from t3;(报错)RMAN> run {
sql 'alter database datafile 5,6 offline';
set newname for datafile 5 to ‘/newdata/orcl/data01/data01a.dbf’;
set newname for datafile 6 to ‘/newdata/orcl/data01/data01b.dbf’;
restore tablespace data01;
switch datafile all;
recover tablespace data01;
sql 'alter database datafile 5,6 online';
}

4、丢失多个数据文件的恢复

问题描述:自行在system,data01表空间上模拟数据故障模拟:system01.dbf,data01.dbf,temp1表空间对应的数据文件丢失请解决故障,并找回丢失的数据(请在第一时间恢复数据库对外服务提供,并且确保所有文件状态正常)SQL> create table data tablespace system as select * from u01.t1;SQL> create table data2 tablespace data01 as select * from u01.t1;[oracle@orcl orcl]$ rm system01.dbf[oracle@orcl orcl]$ rm temp01.dbf[oracle@orcl data01]$ rm data01a.dbfSQL> alter system flush buffer_cache;SQL> select * from data; (强制弹出nolog)[oracle@orcl dbs]$ kill -9 26993[oracle@orcl dbs]$ sqlplus as sysdbaSQL> startup mount;[oracle@orcl ~]$ rman target /
RMAN> run {
sql 'alter database datafile 1,3,5 offline';
restore database;
recover database;
sql 'alter database datafile 1,3,5 online';
sql 'alter database open';
}

5、丢失没有备份的数据文件的恢复

问题描述:在备份后创建新表空间data02,对应数据文件/newdata/orcl/data02.dbf,数据文件大小20m在该表空间上自行创建表,模拟数据故障模拟:data02.dbf丢失请解决故障,并找回丢失的数据      SQL> create tablespace data02 datafile '/newdata/orcl/data02.dbf' size 20m;SQL> create table test(id int) tablespace data02;SQL> insert into test values(1);[oracle@orcl orcl]$ rm data02.dbf切换一个会话,然后刷新,查询报错
SQL> alter system flush buffer_cache;RMAN> run {
sql 'alter database datafile 7 offline';
restore datafile 7;
recover datafile 7;
sql 'alter database datafile 7 online';
}

6、丢失所有日志文件的恢复

故障模拟:丢失所有联机在线日志
请解决故障,并确保数据库恢复正常服务。
SQL> select * from v$logfile;SQL> select * from v$log;        当前日志组为1[oracle@orcl orcl]$ rm redo*SQL> alter system switch logfile;SQL>       数据库夯住了SQL> select * from v$log;        当前日志组为3SQL> alter database clear unarchived logfile group 1;SQL> alter database clear unarchived logfile group 2;SQL> shutdown immediate;SQL> startup mount;SQL> recover database until cancel;SQL> alter database open resetlogs;

7、丢失所有控制文件和spfile的恢复

故障模拟:删除所有控制文件和spfile    
请解决故障,并确保数据库恢复正常服务。
1.catalog模式下同时丢失所有控制文件和参数文件:
SQL> select dbid from v$database;DBID
----------
1528042952SQL> show parameter control;SQL> show parameter spfile;[oracle@orcl dbs]$ rm spfileorcl.ora[oracle@orcl orcl]$ rm ora_control*SQL> startup force;
RMAN> run {
2> set dbid=1528042952;
3> restore spfile from autobackup;
4> shutdown immediate;
5> restore controlfile from autobackup;
6> startup mount;
7> recover database;
8> alter database open resetlogs;
9> }nocatalog模式下同时丢失所有控制文件和参数文件:SQL> select dbid from v$database;DBID
----------
1528042952SQL> show parameter control;SQL> show parameter spfile;[oracle@orcl dbs]$ rm spfileorcl.ora
[oracle@orcl orcl]$ rm ora_control*
SQL> startup force;
RMAN> run {
2> set dbid=1528042952;
3> restore spfile from '/newdata/orcl/backup/control/c-1528042952-20190218-09';
4> shutdown immediate;
5> restore controlfile from '/newdata/orcl/backup/control/c-1528042952-20190218-09';
6> startup mount;
7> recover database;
8> alter database open resetlogs;
9> }

8、基于时间点的不完全恢复

问题描述:u01用户在data02表空间上创建一张t4表,表内容和u01用户的t1表一致故障模拟:彻底删除t4表使用基于时间点的不完全恢复找回t4表,将数据库以open resetlogs方式打开。
SQL> conn u01/oracle
SQL> create table t4 tablespace data02 as select * from t1;
SQL> alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
SQL> select sysdate from dual;
SQL> drop table t4 purge;RMAN> run {
2> startup force mount;
3> set until time =”to_date(‘2019-02-19 12:42:02',’yyyy-mm-dd hh24:mi:ss’)";
4> restore database;
5> recover database;
6> sql 'alter database open resetlogs';
7> }

9、删除所有备份,重新对数据库做0级备份。

 RMAN> run {
2> delete backupset;
3> backup incremental level 0 database tag 'levle0' format '/newdata/orcl/backup/%U';
4> }

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

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

相关文章

CentOS 升级 Glibc-2.28

安装 glibc-2.28 # 下载并解压 glibc-2.28 $ wget https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz $ tar -xzvf glibc-2.28.tar.gz $ cd glibc-2.28 # 创建临时文件 $ mkdir build && cd build $ ../configure --prefix/usr --disable-profile --enable-add-ons --…

Springboot 使用小记-集成 MyBatis 单多数据源

文章目录 1.单数据源1.1 application.properties 配置参考1.2应用类参考配置 2.多数据源(主从)2.1 application.properteis 如下配置2.2 主从数据源的配置2.3 Mybatis 配置动态数据源2.4 动态数据源线程安全处理2.5 获取动态数据源2.6 AOP 配置,在 DAO 层切入&#…

QT获取当前路径方法

一、获取应用程序运行路径 假设当前运行的应用程序在 ...\build-qt_python-Desktop_Qt_5_12_10_MinGW_64_bit-Debug\debug下,我们需要获取...\build-qt_python-Desktop_Qt_5_12_10_MinGW_64_bit-Debug\debug这个路径, 可以使用QCoreApplication提供的…

Spring: Springboot 框架集成不同版本的spring redis

文章目录 一、集成不同版本的spring redis1、Spring Data Redis 1.x:2、Spring Data Redis 2.x:3、Spring Data Redis 3.x(Spring Boot 2.x): 二、springboot集成Spring Data Redis 2.x1、首先,确保在 pom.…

Vue:vue的安装与环境的搭建

文章目录 环境搭建安装node.js(比较简单)安装Vue脚手架初始化启动 环境搭建 安装node.js(比较简单) 首先要安装node.js,进入官网下载即可。 更改安装路径,保持默认配置,一直点击下一步安装即可…

Linux系统运维命令:查看cache里的URL,即查看系统访问了哪些包含http的url(使用grep结合awk,组合命令实现功能)

目 录 一、需求 二、解决方法 1、解决思路 2、命令 三、实例演示和命令解释 1、实例演示 2、命令解释 四、扩展 一、需求 想知道某台linux机器最近访问了哪些http的web地址,如何处理? 二、解决方法 1、解决思路 Linux系统访问外…

(undone) 如何计算 Hessian Matrix 海森矩阵 海塞矩阵

参考视频1:https://www.bilibili.com/video/BV1H64y1T7zQ/?spm_id_from333.337.search-card.all.click 参考视频2(正定矩阵):https://www.bilibili.com/video/BV1Ag411M76G/?spm_id_from333.337.search-card.all.click&vd_…

如何电脑录屏?教你3分钟快速掌握!

在当今数字化时代,电脑录屏已成为一项必不可少的技能。无论是录制游戏画面、线上课程还是软件演示,录屏都可以帮助用户更好地保存和分享信息。可是如何电脑录屏呢?在本文中,我们将介绍两种常用的电脑录屏方法,并分步骤…

【nvm切换node版本,发现npm无法使用,简单粗暴的解决方案】

nvm切换node版本,发现npm无法使用,简单粗暴的解决方案 使用了nvm切换指定node版本后,发现npm命令无法使用。 在nodejs官网找到这部分内容 找到需要安装的压缩包 把解压的文件放入到自己的nvm文件夹内 这部分是解压的nodejs 示例

HarmonyOS—低代码开发Demo示例

接下来为大家展示一个低代码开发的JS工程的Demo示例,使用低代码开发如下华为手机介绍列表的HarmonyOS应用/服务示例。 1.删除模板页面中的控件后,选中组件栏中的List组件,将其拖至中央画布区域,松开鼠标,实现一个List组…

从初步的需求收集到详细的规划和评估

综合需求分析建议 明确与细化用户故事 确保每个用户故事清晰、具体,包含角色、目标和成功标准。对用户故事进行优先级排序,以指导开发过程中的功能实现顺序。用户参与和原型制作 创建用户旅程图,以理解用户在使用产品或服务时的整体流程与体验。制作原型或草图,展示用户界面…

产品可靠性设计-浪涌防护设计中TVS选型与计算

产品可靠性设计-浪涌防护设计中TVS选型与计算 上一篇 有对产品浪涌和雷电脉冲的瞬态抑制方法和思路进行了分析,我们再对浪涌防护中TVS的能量计算方法举例给电子工程师们进行参考。 1)浪涌与EFT及在产品抗扰度测试时的问题及差异 EFT测试是一种高频的现…

Golang 关于 interface 接口的理解

package mainimport "fmt"// 定义一个存储器接口:支持mysql存储、redis存储 type StorageManager interface {insert(data string) int // 增加update(id int, data string) int // 更新 }// 实现一个Mysql存储器 type Mysql struct{}func (mysql…

Langchain-Chatchat:离线运行的大模型知识库 | 开源日报 No.182

chatchat-space/Langchain-Chatchat Stars: 22k License: Apache-2.0 基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现的开源、可离线部署的检索增强生成 (RAG) 大模型知识库项目。该项目是一个可以实现完全本地化推理的知识库增强方案,重点解决数据安全保护…

【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成

前端三件套是指在网页开发中常用的三种技术:HTML,CSS和JavaScript。它们分别负责网页的结构,样式和交互,是构建网页的基础。下面我们来简单介绍一下它们的作用和特点,并举一些例子。 1 HTML——描述页面结构 HTML&am…

投票项目_登录功能的版本迭代

V0版本: 实现最简单的登录,写个接口去数据库查有没有前端传来的账号和密码,查到且密码正确返回“登录成功”&#xff0c;其余情况统一返回“账号或密码错误”。 V1版本: 用session代替cookie 先导入依赖,将session加入到redis中 1.导入依赖 <dependency><groupId>…

智慧园区可视化的价值,不要再吐槽没啥用了。

2023-04-20 13:30贝格前端工场 提高园区运营效率&#xff1a;智慧园区可以通过物联网技术、大数据分析等手段&#xff0c;实现对园区内设施、设备、人员等的实时监控和管理&#xff0c;从而提高园区的运营效率&#xff0c;降低管理成本。 提升园区服务水平&#xff1a;智慧园区…

前端Vue项目无法启动服务,提示无 ‘dev‘ npm的脚本问题解决

目录 一、问题详情 二、问题解决 一、问题详情 上周还能运行的项目&#xff0c;今天突然无法执行了&#xff0c;连最基本的启动按钮也没有了&#xff0c;所有的项目本地都突然跑不起来了&#xff0c;附上截图。 二、问题解决 后来排查的根本原因有点奇葩&#xff0c;是因为…

C++面试 -操作系统-安全能力:死锁的危害、出现原因、解决方法

目录 死锁的危害 死锁出现的原因 死锁的解决方法 死锁是计算机科学中一个非常重要的概念&#xff0c;特别是在多线程、并发编程以及数据库管理系统等领域中。下面是关于死锁的危害、出现原因和解决方法的基础概述&#xff1a; 死锁的危害 资源浪费&#xff1a;死锁导致系统…

ABBYY FineReader16文档转换、PDF管理与文档比较功能介绍

ABBYY FineReader 16作为一款OCR和PDF一体化程序&#xff0c;其强大的功能使得文档处理变得简单高效。在众多功能中&#xff0c;文档转换、PDF管理和文档比较这三大功能尤为突出&#xff0c;成为了众多企业和个人用户的首选工具。 ABBYY Finereader 16-安装包下载如下&#xff…