Oracle数据库 利用RMAN备份

news2024/9/21 10:09:43

利用RMAN备份讨论

运用RMAN进行备份

运用RMAN进行还原与恢复

RMAN的日常管理

RMAN的恢复目录

一、RMAN的概念与体系结构

Recovery Manager(RMAN)是一种用于备份(backup)、还原(restore)和恢复(recover)

数据库的 Oracle 工具。RMAN只能用于ORACLE8或更高的版本中。它能够备份整个数据

库或数据库部件,如表空间、数据文件、控制文件、归档文件以及Spfile参数文件。RMAN

也允许您进行增量数据块级别的备份,增量RMAN备份是时间和空间有效的,因为他们只备份自上次备份以来有变化的那些数据块。而且,通过RMAN提供的接口,第三方的备份与恢复软件如veritas将提供更强大的备份与恢复的管理功能。

通过RMAN,也提供了其它更多功能,如数据库的克隆、采用RMAN建立备用数据库、利用RMAN备份与移动裸设备(RAW)上的文件等工作将变得更方便简单。RMAN通过增强的自动配置与管理功能,以及特有的块级别的恢复,将使备份与恢复工作变得更加快捷与完美。RMAN有如下特征特性:

·自动的备份与恢复

·方便的备份归档日志

·自动检测新的数据文件

·支持增量备份

·最大限度的减少备份与恢复的错误

·减少恢复的时间

·在热备份中不会产生额外的redo日志

·腐烂数据块的自动检测

·并行的备份与恢复操作

·在线备份时,表空间不用置于备份模式

可以看到,在以上的一些特性中,显示了RMAN强大的功能与好处,以上功能的实现,是因为RMAN是块级别的备份与恢复,备份与恢复发生在数据库块级别,可以通过比较数据块而获得一致性的数据块,可以避免备份没有用过的块,可以检验块是否腐烂等块级别的问题。

RMAN的体系结构可以用如下图表示:

RMAN 的体系结构

对于组成以上RMAN 的结构,说明如下:

1、RMAN 工具

也就是RMAN 命令,起源于Oracle 版本8,一般位于$ORACLE_HOME/bin 目录下,

可以通过运行rman这个命令来启动RMAN 工具,用于备份与恢复的接口。

2、服务进程

RMAN 的服务进程是一个后台进程,用于与RMAN工具与数据库之间的通信,也用于

RMAN 工具与磁盘/磁带等I/O 设置之间的通信,服务进程负责备份与恢复的所有工作,在

如下情况将产生一个服务进程

·当连接到目标数据库

·分配一个新的通道

3、通道

通道是服务进程与I/O 设备之前读写的途径,一个通道将对应一个服务进程,在分配通道时,需要考虑I/O 设备的类型,I/O 并发处理的能力,I/O 设备能创建的文件的大小,数据库文件最大的读速率,最大的打开文件数目等因素

4、目标数据库

就是RMAN 进行备份与恢复的数据库,RMAN 可以备份除了联机日志,pfile,密码文件之外的数据文件,控制文件,归档日志,spfile

5、恢复目录

用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库上,利用恢复目录可以同时管理多个目标数据库,存储更多的备份信息,可以存储备份脚本。如果不采用恢复目录,可以采用控制文件来代替恢复目录,oracle 9i因为控制文件自动备份的功能,利用控制文件很大程度上可以取代恢复目录。

6、媒体管理层

Media Management Layer (MML)是第三方工具或软件,用于管理对磁带的读写与文件的跟踪管理。如果你想直接通过RMAN 备份到磁带上,就必须配置媒体管理层,媒体管理层的工具如备份软件可以调用RMAN 来进行备份与恢复。

7、备份,备份集与备份片

当发出backup命令的时候,RMAN 将创建一个完成的备份,包含一个到多个备份集,备份集是一个逻辑结构,包含一组的物理文件。这些物理文件就是对应的备份片。备份片是最基本的物理结构,可以产生在磁盘或者磁带上,可以包含目标数据库的数据文件,控制文件,归档日志与spfile文件。

备份集与备份片有如下规定

一个数据文件不能跨越一个备份集,但是能跨越备份片数据文件,控制文件能保存在同样的备份集上,但是不能与归档日志保存在同样的备份集上

二、启动与运行RMAN

2.1 运行要求

1、进程与内存要求

更多的进程的需要

大池的分配

2、基本环境变量需求

ORACLE_SID, ORACLE_HOME, PATH, NLS_LANG, 如果用到了基于时间的备份与恢复,需要另外设置NLS_DATE_FORMAT

3、权限要求

需要SYSDBA系统权限如果是本地,可以采用OS认证,远程需要采用密码文件认证

4、版本要求

RMAN 工具版本与目标数据库必须是同一个版本,如果使用了恢复目录,还需要注意

·创建RMAN 恢复目录的脚本版本必须等于或大于恢复目录所在数据库的版本

·创建RMAN 恢复目录的脚本版本必须等于或大于目标数据库的版本

2.2 基本运行方法

默认是nocatalog,不使用恢复目录,使用命令rman即可进入RMAN 的命令行界面,

[oracle@db oracle]$ $ORACLE_HOME/bin/rman

Recovery Manager: Release 9.2.0.4.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

RMAN>

连接目标数据库,可以用如下类似命令

RMAN>Connect target /

2.3怎么样运行RMAN 命令

1、单个执行

RMAN>backup database;

2、运行一个命令块

RMAN> run {

2> copy datafile 10 to

3> '/oracle/prod/backup/prod_10.dbf';

4> }

3、运行脚本

$ rman TARGET / @backup_db.rman

RMAN> @backup_db.rman

RMAN> RUN { @backup_db.rman }

运行存储在恢复目录中的脚本

RMAN> RUN { EXECUTE SCRIPT backup_whole_db };

4、SHELL脚本,如果在cron中执行,注意设置正确的环境变量在脚本中

[oracle@db worksh]$ more rmanback.sh

#!/bin/ksh

#set env

export ORACLE_HOME=/opt/oracle/product/9.2

export ORACLE_SID=test

export NLS_LANG="AMERICAN_AMERICA.zhs16gbk"

export PATH=$PATH:$ORACLE_HOME/bin

echo "-----------------------------start-----------------------------";date

#backup start

$ORACLE_HOME/bin/rman <<EOF

connect target

delete noprompt obsolete;

backup database format '/netappdata1/rmanback/tbdb2/%U_%s.bak' filesperset = 2;

exit;

EOF

echo "------------------------------end------------------------------";date

三、RMAN的自动配置

Oracle可以配置一些参数如通道,备份保持策略等信息,通过一次设定可以多次使用,

而且,设置中的信息不影响脚本中的重新设置。RMAN 默认的配置参数,通过show all 就

可以看出来。

RMAN> show all;

RMAN configuration parameters are:

CONFIGURE RETENTION POLICY TO REDUNDANCY 1;

CONFIGURE BACKUP OPTIMIZATION OFF;

CONFIGURE DEFAULT DEVICE TYPE TO DISK;

CONFIGURE CONTROLFILE AUTOBACKUP OFF;

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR TYPE DISK TO '%F';

CONFIGURE DEVICE TYPE DISK PARALLELISM 1;

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1;

CONFIGURE MAXSETSIZE TO UNLIMITED;

CONFIGURE SNAPSHOT CONTROLFILE NAME TO

'/u01/app/oracle/product/9.0.2/dbs/snapcf_U02.f';

3.1 备份策略保持

分为两个保持策略,一个是时间策略,决定至少有一个备份能恢复到指定的日期,一个

冗余策略,规定至少有几个冗余的备份。

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 5 DAYS;

CONFIGURE RETENTION POLICY TO REDUNDANCY 5;

CONFIGURE RETENTION POLICY TO NONE;

在第一个策略中,是保证至少有一个备份能恢复到Sysdate-5 的时间点上,之前的备份将标记为Obsolete。第二个策略中说明至少需要有三个冗余的备份存在,如果多余三个备份以上的备份将标记为冗余。NONE 可以把使备份保持策略失效,Clear 将恢复默认的保持策略。

3.2通道配置与自动通道分配

通过CONFIGURE 配置自动分配的通道,而且可以通过数字来指定不同的通道分配情况。

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/U01/ORACLE/BACKUP/%U‘

CONFIGURE CHANNEL n DEVICE TYPE DISK FORMAT '/U01/ORACLE/BACKUP/%U‘

当然,也可以在运行块中,手工指定通道分配,这样的话,将取代默认的通道分配。

Run{

allocate channel cq type disk format='/u01/backup/%u.bak'

……

}

7

以下是通道的一些特性

读的速率限制

Allocate channel …… rate = integer

最大备份片大小限制

Allocate channel …… maxpiecesize = integer

最大并发打开文件数(默认16)

Allocate channel …… maxopenfile = integer

3.3控制文件自动备份

从9i开始,可以配置控制文件的自动备份,但是这个设置在备用数据库上是失效的。通过如下的命令,可以设置控制文件的自动备份

CONFIGURE CONTROLFILE AUTOBACKUP ON;

对于没有恢复目录的备份策略来说,这个特性是特别有效的,控制文件的自动备份发生在任何backup或者copy命令之后,或者任何数据库的结构改变之后。可以用如下的配置指定控制文件的备份路径与格式

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR TYPE DISK TO '%F';

在备份期间,将产生一个控制文件的快照,用于控制文件的读一致性,这个快照可以通过如下配置

CONFIGURE SNAPSHOT CONTROLFILE NAME TO

'/u01/app/oracle/product/9.0.2/dbs/snapcf_U02.f';

3.4设置并行备份

RMAN支持并行备份与恢复,也可以在配置中指定默认的并行程度。如

CONFIGURE DEVICE TYPE DISK PARALLELISM 4;

指定在以后的备份与恢复中,将采用并行度为4,同时开启4个通道进行备份与恢复,当然也可以在run的运行块中指定通道来决定备份与恢复的并行程度。

并行的数目决定了开启通道的个数。如果指定了通道配置,将采用指定的通道,如果没有指定通道,将采用默认通道配置。

3.5配置默认IO 设备类型

IO 设备类型可以是磁盘或者磁带,在默认的情况下是磁盘,可以通过如下的命令进行重新

配置。

CONFIGURE DEFAULT DEVICE TYPE TO DISK;

CONFIGURE DEFAULT DEVICE TYPE TO SBT;

注意,如果换了一种IO设备,相应的配置也需要做修改,如

RMAN> CONFIGURE DEVICE TYPE SBT PARALLELISM 2;

3.6配置多个备份的拷贝数目

如果觉得单个备份集不放心,可以设置多个备份集的拷贝,如

CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;

CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;

如果指定了多个拷贝,可以在通道配置或者备份配置中指定多个拷贝地点

CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/backup/%U', '/u02/backup/%U';

RMAN>backup datafile n format '/u01/backup/%U', '/u02/backup/%U';

3.7备份优化

可以在配置中设置备份的优化,如

CONFIGURE BACKUP OPTIMIZATION ON;

如果优化设置打开,将对备份的数据文件、归档日志或备份集运行一个优化算法。同样的DBID,检查点SCN,ResetlogSCN 与时间

正常离线,只读或正常关闭的文件

归档日志同样的线程,序列号RESETLOG SCN 与时间

3.8备份文件的格式

备份文件可以自定义各种各样的格式,如下

%c 备份片的拷贝数

%d 数据库名称

%D 位于该月中的第几天 (DD)

%M 位于该年中的第几月 (MM)

%F 一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,

其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD 为日期,QQ 是一个1-256 的序

%n 数据库名称,向右填补到最大八个字符

%u 一个八个字符的名称代表备份集与创建时间

%p 该备份集中的备份片号,从1 开始到创建的文件数

%U 一个唯一的文件名,代表%u_%p_%c

%s 备份集的号

%t 备份集时间戳

%T 年月日格式(YYYYMMDD)

四、用RMAN备份

RMAN可以用来备份主或备用数据库,如表空间、数据文件、归档日志、控制文件、服务

器文件与备份集。

4.1文件拷贝

原始文件的拷贝,有点类似于OS热备份,可以拷贝整个数据文件到另外一个地点,但

是结果仅仅只能写入到硬盘,而且单独的文件是分开的。

一个文件拷贝的例子

run {

allocate channel d1 type disk;

allocate channel d2 type disk;

allocate channel d3 type disk;

copy # first

datafile 1 to '$HOME/prd1.dbf',

datafile 2 to '$HOME/prd2.dbf';

copy # second

datafile 3 to '$HOME/prd3.dbf';

sql 'alter system archive log current';

}

4.2备份与备份集

RMAN 的常规备份是产生只有RMAN 才能识别的备份集,所以,除了copy 命令之外

的其他备份,都是RMAN 产生的备份集以及对应的备份片。

一个备份数据库的例子,开启两个通道,将数据库备份到磁带

run {

allocate channel t1 type 'SBT_TAPE';

allocate channel t2 type 'SBT_TAPE';

backup

filesperset 2

format 'df_%t_%s_%p'

database;

}

RMAN 也可以实现多个镜相的备份

Run{

allocate channel d1 type disk;

allocate channel d2 type disk;

allocate channel d3 type disk;

SET BACKUP COPIES 3;

BACKUP DATAFILE 7 FORMAT '/tmp/%U','?/oradata/%U','?/%U';

};

以下是常见的备份归档的例子

RMAN>sql ‘alter system archive log current’;

RMAN>backup archivelog all delete input;

RMAN> backup archivelog from time '01-jan-00' until time '30-jun-00';

RMAN> backup archivelog like 'oracle/arc/dest/log%';

RMAN> backup archivelog all;

RMAN> backup archivelog from logseq 20 until logseq 50 thread 1;

RMAN> backup archivelog from scn 1 until scn 9999;

在RAC环境中,因为数据库是共享的,所以可以连接到一个实例就可以备份整个数据库,但是,因为归档日志可以备份在本地,所以RAC归档日志的备份就变的复杂一些,我们可以通过连接到两个实例的通道来备份两个实例的归档日志。

run{

ALLOCATE CHANNEL node_c1 DEVICE TYPE DISK CONNECT 'sys/pass@dbin1';

ALLOCATE CHANNEL node_c2 DEVICE TYPE DISK CONNECT 'sys/pass@dbin2';

sql 'ALTER SYSTEM ARCHIVE LOG CURRENT';

backup archivelog all delete input format '/u01/dbbak/%U_%s.bak' filesperset =5;

}

4.3 常见备份参数

1、Keep参数可以长期的保持特殊的备份或者拷贝,让它们不受默认备份保持策略的影响,

RMAN> BACKUP DATABASE KEEP UNTIL TIME

2> "to_date('31-MAR-2002','DD_MM_YYYY)" nologs;

RMAN> BACKUP TABLESPACE SAMPLE KEEP FOREVER NOLOGS;

其中NOLOGS 表示可以不保留该备份以来的归档日志,默认是LOGS,表示保留该备份以

来的参数,如果想让该备份永久有效,可以使用FOREVER参数。

2、Tag参数指明了备份集的标志,可以达到30 个字符长度,如

RMAN> BACKUP DEVICE TYPE DISK DATAFILE 1 TAG

2> "wkly_bkup";

在Oracle 92 版本以后,RMAN 自动提供一个TAG,格式为TAGYYYYMMDDTHHMMSS

如TAG20020208T133437,通过备份标志TAG,也可以很方便的从备份集进行恢复,如

Restore database from tag=’tag name’

4.4增量备份

在说明增量备份之前,首先要理解差异增量与累计增量备份,以及增量备份的备份与恢复原理。差异增量,是默认的增量备份方式。

累计增量备份

可以看到,差异增量是备份上级或同级备份以来变化的块,累计增量是备份上级备份以来变化的块。累计增量增加了备份的时间,但是因为恢复的时候,需要从更少的备份集中恢复数据,所以,为了减少恢复的时候,累计增量备份将比差异增量备份更有效。Oracle 版本10在增量备份上做了很大的改进,可以使增量备份变成真正意义的增量,因为通过特有的增量日志,使得RMAN 没有必要去比较数据库的每一个数据块,当然,代价就是日志的IO 与磁盘空间付出,完全还是不适合OLTP系统。另外,版本10 通过备份的合并,使增量备份的结果可以合并在一起,而完全的减少了恢复时间。增量备份都需要一个基础,比如0 级备份就是所有增量的基础备份,0级备份与全备份的不同就是0 级备份可以作为其它增量备份的基础备份而全备份是不可以的,是否选择增量备份作为你的备份策略。

以下是零级备份的例子

backup incremental level 0 database;

一级差异增量例子

backup incremental level 1 database;

一级累计增量例子

backup incremental level 1 cumulative database;

4.5备份检查

我们可以通过Validate命令来检查是否能备份,如数据文件是否存在,是否存在坏块不能被备份,如:

BACKUP VALIDATE DATABASE;

BACKUP VALIDATE DATABASE ARCHIVELOG ALL;

4.6重新启动备份

对于异常结束了的备份,很多人可能不想再重新开始备份了吧,特别是备份到90%以

上,因为异常原因终止了该备份,那怎么办呢?RMAN 提供一个重新开始备份的方法,通

过简单的命令,你就可以只备份那不到10%的数据了。

RMAN> BACKUP NOT BACKED UP SINCE TIME 'SYSDATE-14'

2> DATABASE PLUS ARCHIVELOG;

4.7 RMAN 动态性能视图

以下是与RMAN 备份有关系的一些动态性能视图,信息是从控制文件中获取的。

V$ARCHIVED_LOG

V$BACKUP_CORRUPTION

V$COPY_CORRUPTION

V$BACKUP_DATAFILE

V$BACKUP_REDOLOG

V$BACKUP_SET

V$BACKUP_PIECE

V$BACKUP_DEVICE

V$CONTROLFILE_RECORD_SECTION

这里还有一个视图,可以大致的监控到RMAN备份进行的程度。如通过如下的SQL脚本,

将获得备份的进度。

SQL> SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,

2 ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"

3 FROM V$SESSION_LONGOPS

4 WHERE OPNAME LIKE 'RMAN%'

5 AND OPNAME NOT LIKE '%aggregate%'

6 AND TOTALWORK != 0

7 AND SOFAR <> TOTALWORK;

SID SERIAL# CONTEXT SOFAR TOTAL WORK %_COMPLETE

--- ------- ------- ------- --------- ----------

13 75 1 9470 15360 61.65

12 81 1 15871 28160 56.36

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

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

相关文章

重磅|国家能源局开展配电网安全风险管控重点行动

据国家能源局3月21日消息&#xff0c;为紧扣新形势下电力保供和转型目标&#xff0c;聚焦配电网安全运行、供电保障、防灾减灾和坚强可靠等方面安全风险&#xff0c;推动解决城乡配电网发展薄弱等问题&#xff0c;全面提升配电网供电保障和综合承载能力&#xff0c;国家能源局决…

Linux东方通下载及使用

解压文件 mkdir /usr/local/java 加压包拖进去 vi /etc/profile 复制路径修改路径 export JAVA_HOME/usr/local/java/jdk1.8.0_151 export CLASSPATH.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH$PATH:${JAVA_HOME}/bin 进入…

✅让我们用AI制作一个漂亮的头像吧

头像 头像是指在互联网上用于代表个人或实体的图像。在社区中&#xff0c;头像通常用于标识和区分用户&#xff0c;是用户身份的象征。 社区的头像有多种意义&#xff0c;不限于以下几点: 身份标识&#xff1a;社区头像可以让用户在互联网上更好地代表自己&#xff0c;帮助用…

Mamba 基础讲解【SSM,LSSL,S4,S5,Mamba】

文章目录 Mamba的提出动机TransformerRNN Mama的提出背景状态空间模型 (The State Space Model, SSM)线性状态空间层 (Linear State-Space Layer, LSSL)结构化序列空间模型 &#xff08;Structured State Spaces for Sequences, S4&#xff09; Mamba的介绍Mamba的特性一&#…

java分割等和子集(力扣Leetcode416)

分割等和子集 力扣原题链接 给你一个只包含正整数的非空数组nums。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] …

外包干了6天,技术明显进步。。。

我是一名大专生&#xff0c;自19年通过校招进入湖南某软件公司以来&#xff0c;便扎根于功能测试岗位&#xff0c;一晃便是近四年的光阴。今年8月&#xff0c;我如梦初醒&#xff0c;意识到长时间待在舒适的环境中&#xff0c;已让我变得不思进取&#xff0c;技术停滞不前。更令…

面试算法-73-二叉树的最小深度

题目 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明&#xff1a;叶子节点是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;2 解 class Solu…

TC(totalCommander)配置快捷键

totalCommander 是一个非常流行的资源管理工具&#xff0c;如果我们有一些便捷的脚本&#xff0c;那么如何在totalCommander 中通过快捷键快速的调用/运行这个脚本呢&#xff1f;本文本就以 ssh工具 python脚本 为例&#xff0c;说明如何在totalCommander中配置快捷键&#xff…

如何使用好用便签管理生活内容或工作事项?

在快节奏的现代生活中&#xff0c;我们常常被各种琐事和工作压力所困扰&#xff0c;仿佛身陷一片混沌之中&#xff0c;焦虑不已。面对这些繁杂的事项&#xff0c;我们往往感到无从下手&#xff0c;甚至有时会忘记一些重要的事情。然而&#xff0c;自从我发现了敬业签这个神奇的…

openEuler 22.03(华为欧拉)一键安装 Oracle 19C RAC(19.22) 数据库

前言 Oracle 一键安装脚本&#xff0c;演示 openEuler 22.03 一键安装 Oracle 19C RAC 过程&#xff08;全程无需人工干预&#xff09;&#xff1a;&#xff08;脚本包括 ORALCE PSU/OJVM 等补丁自动安装&#xff09; ⭐️ 脚本下载地址&#xff1a;Shell脚本安装Oracle数据库…

[HackMyVM]靶场 Nebula

kali:192.168.56.104 靶机:192.168.56.125 端口扫描 # nmap 192.168.56.125 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-22 12:35 CST Nmap scan report for 192.168.56.125 Host is up (0.00051s latency). Not shown: 998 filtered tcp ports (no-response) …

【爬取网易财经文章】

引言 在信息爆炸的时代&#xff0c;获取实时的财经资讯对于投资者和金融从业者来说至关重要。然而&#xff0c;手动浏览网页收集财经文章耗时费力&#xff0c;为了解决这一问题&#xff0c;本文将介绍如何使用Python编写一个爬虫程序来自动爬取网易财经下关于财经的文章 1. 爬…

从IO操作与多线程的思考到Redis-6.0

IO操作->线程阻塞->释放CPU资源->多线程技术提升CPU利用率 在没有涉及磁盘操作和网络请求的程序中&#xff0c;通常不会出现线程等待状态。线程等待状态通常是由于线程需要等待某些事件的发生&#xff0c;比如I/O操作完成、网络请求返回等。如果程序只是进行计算或者简…

Unity多人游戏基础知识总结

作者简介: 高科,先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C++,go等语言开发经验,mysql,mongo,redis等数据库,设计模式和网络库开发经验,对战棋类,回合制,moba类页游,手游有丰富的架构设计和开发经验。 (谢谢你的关注…

制作一个RISC-V的操作系统六-bootstrap program(risv 引导程序)

文章目录 硬件基本概念qemu-virt地址映射系统引导CSR![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/86461c434e7f4b1b982afba7fad0256c.png)machine模式下的csr对应的csr指令csrrwcsrrs mhartid引导程序做的事情判断当前hart是不是第一个hart初始化栈跳转到c语言的…

ETCD跨城容灾与异地多活网络故障的相关表现分析

ETCD跨城容灾与异地多活网络故障的相关表现分析 1. 网络架构2. 单个网络中断-跟leader区中断2.1. 网络中断2.2. 网络恢复 3. 单个网络中断-跟非leader区中断4. 两个网络中断-leader区中断5. 两个网络中断-非leader区中断6. 两个网络中断-非leader区中断7. 总结8. 参考文档 etcd…

国内ip切换是否合规?

在网络使用中&#xff0c;IP地址切换是一种常见的行为&#xff0c;可以用于实现隐私保护、访问地域限制内容等目的。然而&#xff0c;对于国内用户来说&#xff0c;IP地址切换是否合规一直是一个备受关注的话题。在中国&#xff0c;网络管理严格&#xff0c;一些IP切换行为可能…

ArtDD 一键下载 掘金、CSDN、开源中国、博客园文章 文章的Chrome 插件

有想一键下载博客园、掘金、CSDN、开源中国等博客自己的文章到本地的可以使用这个插件 插件会根据当前页面链接自动分辨出文章所属平台&#xff0c;可能有些文章详情链接是不支持的&#xff0c;例如博客园存在很多个版本的文章详情页链接格式&#xff0c;想要支持所有的链接是…

MySQL Workbench连接云服务器内网数据库

在项目上遇到一个问题&#xff0c;生产环境是Centos&#xff0c;分配了两台云服务器&#xff0c;一台应用服务&#xff0c;一台数据库服务&#xff0c;应用服务与数据库服务采用内网连接。我作为开发和运维方&#xff0c;有权限直接访问应用服务&#xff0c;但是数据库服务器需…

vivado 增量实施

增量实施 增量实现是指增量编译的实现阶段设计流程&#xff1a; •通过重用参考设计中的先前布局和布线&#xff0c;保持QoR的可预测性。 •加快地点和路线的编制时间或尝试最后一英里的计时关闭。 下图提供了增量实现设计流程图。该图还说明了增量合成流程。有关增量的更多…