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

Oracle 用户管理模式下的恢复案例-不完全恢复

1. 不完全恢复的几种常用方法

01. recover database using backup controlfile

        如果丢失当前控制文件,用冷备份的控制文件恢复的时候,用来告诉 oracle,不要以 controlfile 中的 scn 作为恢复的终点;

02. recover database until cancel

        如果丢失 current/active redo 的时候,手动指定终点。

recover database until cancel; --SQLPlus 使用 
recover database until time '2022-08-09:14:20:45' --SQLPlus 与 RMAN 都支持 
recover database unitl time '2022-08:14:20:45' using backup controlfile 
recover database until change 55555 --SQLPlus 使用 
recover database until scn 55555 --RMAN 使用 
recover database until sequence 20 --RMAN 使用 

03. recover database using backup controlfile until cancel;

        如果丢失当前 controlfile 并且 current/active redo 都丢失,会先去自动应用归档日志,可以实现最大的恢复;

04. recover database until cancel using backup controlfile;

        如果丢失当前 controlfile 并且 current/active redo 都丢失,以旧的 redo 中的 scn为恢复终点。因为没有应用归档日志,所以会丢失数据。

2. 实操 1 基于【until time】不完全恢复

说明:数据库需要在归档模式下面操作

        在数据库冷备份后,在表中插入一条数据,提交,记录当前数据库的时间,dorp掉表,删除数据库的dbf文件,控制文件和日志文件还在,然后把数据库冷备份拷贝过来,用recover database until time '2023-03-28 22:05:05';恢复数据库到插入数据之后,用 alter database open RESETLOGS;启动数据库,查询最后提交的数据没有丢失。

--先做冷备 
shutdown immediate; 
SQL> host rm -rf /backup/hfzcdb/*.* 
*/
SQL> host cp /oradata/hfzcdb/* /backup/hfzcdb/ --先做冷备 */ 
set time on; SYS@hfzcdb> shutdown immediate
SYS@hfzcdb> host cp /oradata/hfzcdb/* /backup/hfzcdb/
*/
SYS@hfzcdb> startup
ORACLE instance started.Total System Global Area 2466249672 bytes
Fixed Size                  8899528 bytes
Variable Size             671088640 bytes
Database Buffers         1778384896 bytes
Redo Buffers                7876608 bytes
Database mounted.
Database opened.
SYS@hfzcdb> set time on
22:02:35 SYS@hfzcdb> conn hfedu/hfedu123
Connected.
22:03:01 hfedu@hfzcdb> insert into hfedu3 values(44,'hfedu44');1 row created.22:03:22 hfedu@hfzcdb> commit;
22:04:38 hfedu@hfzcdb> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;TO_CHAR(SYSDATE,' yyyy-mm-dd hh24:mi:ss')  
-------------------
2023-03-28 22:05:0522:05:05 hfedu@hfzcdb> drop table hfedu3;Table dropped.22:05:28 hfedu@hfzcdb> select * from hfedu3;
select * from hfedu3
*
ERROR at line 1:
ORA-00942: table or view does not exist
22:05:33 hfedu@hfzcdb> conn / as sysdba
Connected.
22:05:41 SYS@hfzcdb> shutdown immedaite
SP2-0717: illegal SHUTDOWN option
22:05:54 SYS@hfzcdb> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
22:06:34 SYS@hfzcdb> host rm /oradata/hfzcdb/*.dbf    
*/22:07:06 SYS@hfzcdb> host cp /backup/hfzcdb/*.dbf /oradata/hfzcdb/
*/
22:08:45 SYS@hfzcdb> startup mount
ORACLE instance started.Total System Global Area 2466249672 bytes
Fixed Size                  8899528 bytes
Variable Size             671088640 bytes
Database Buffers         1778384896 bytes
Redo Buffers                7876608 bytes
Database mounted.
22:09:11 SYS@hfzcdb> select file#,checkpoint_change# from v$datafile;FILE# CHECKPOINT_CHANGE#
---------- ------------------
1            2136506
2            2136506
3            2136506
4            2136506
5            2136506
6            21365066 rows selected.22:09:14 SYS@hfzcdb> select file#,checkpoint_change# from v$datafile_header;FILE# CHECKPOINT_CHANGE#
---------- ------------------
1            2135155
2            2135155
3            2135155
4            2135155
5            2135155
6            21351556 rows selected.22:09:33 SYS@hfzcdb> recover database until time '2023-03-28 22:05:05';
Media recovery complete.
22:10:40 SYS@hfzcdb> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open22:10:53 SYS@hfzcdb> alter database open RESETLOGS;Database altered.22:11:21 SYS@hfzcdb> select *from hfedu.hfedu3;ID NAME
---------- ----------------------------------------
1 hfedu01
2 hfedu02
3 hfedu03
4 hfedu04
5 hfedu5
6 hfedu6
44 hfedu447 rows selected.22:11:41 SYS@hfzcdb>

3. 实操 2 基于【Until Cancel】不完全恢复

        在数据库冷备份后,在表中插入一条数据,把数据刷到日志文件,在checkpoint到数据文件,再插入一条,没有刷到日志文件,删除/oradata/hfzcdb/下面所有的数据包括控制文件和日志文件,再把之前冷备份的数据拷贝回来,把数据库启动到nomount状态,重建控制文件,使用recover database using backup controlfile until cancel; 在原来的控制文件基础上面恢复,实现最大的恢复,选择自动恢复,然后再alter database open RESETLOGS;数据库,数据能恢复到插入的第一条数据,第二条没有写入归档日志的,恢复不了。

hfeduSQL> conn hfedu/hfedu123
Connected.
hfedu@hfzcdb> select *from hfedu;ID NAME
---------- ----------------------------------------
1 hfedu01
55 hfedu05
66 hfedu06
77 hfedu07
88 hfedu08hfedu@hfzcdb> insert into hfedu values(99,'hfedu09');1 row created.hfedu@hfzcdb> commit;Commit complete.hfedu@hfzcdb> alter system switch logfile;System altered.hfedu@hfzcdb> alter system checkpoint;System altered.
-----------------------
[oracle@hfzcdb91:/archive/HFZCDB/archivelog/2023_12_25]$ll -lst
total 92196
416 -rw-r----- 1 oracle oinstall   422400 Dec 25 16:10 o1_mf_1_1_lrlg7o4n_.arc
396 -rw-r----- 1 oracle oinstall   405504 Dec 25 16:01 o1_mf_1_1_lrlfpvlc_.arc
16 -rw-r----- 1 oracle oinstall    15872 Dec 25 15:46 o1_mf_1_3_lrldszlc_.arc
28 -rw-r----- 1 oracle oinstall    26112 Dec 25 15:43 o1_mf_1_2_lrldo70m_.arc
1512 -rw-r----- 1 oracle oinstall  1544704 Dec 25 15:38 o1_mf_1_1_lrldbxly_.arc
89828 -rw-r----- 1 oracle oinstall 91983872 Dec 25 14:51 o1_mf_1_19_lrl9n0wk_.arc
[oracle@hfzcdb91:/archive/HFZCDB/archivelog/2023_12_25]$strings o1_mf_1_1_lrlg7o4n_.arc |grep hfedu09
hfedu09
-----------------------
hfedu@hfzcdb> insert into hfedu values(991,'hfedu091');1 row created.hfedu@hfzcdb> commit;Commit complete.hfedu@hfzcdb> alter system checkpoint;System altered.hfedu@hfzcdb> host ll /oradata/hfzcdb/**/
/bin/bash: ll: command not foundhfedu@hfzcdb> host ll /oradata/hfzcdb/
/bin/bash: ll: command not foundhfedu@hfzcdb> host ls /oradata/hfzcdb/
control01.ctl  hfedu01.dbf  redo02.log  sysaux01.dbf  temp01.dbf     users01.dbf
control02.ctl  redo01.log   redo03.log  system01.dbf  undotbs01.dbfhfedu@hfzcdb> host rm -f /oradata/hfzcdb/*
*/
hfedu@hfzcdb> conn / as sysdba
Connected.
SYS@hfzcdb> shutdown abort
ORACLE instance shut down.
SYS@hfzcdb> exit
Disconnected from Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
exit[oracle@hfzcdb91:/home/oracle]$sqlplus / as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Mon Dec 25 16:14:07 2023
Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle.  All rights reserved.Connected to an idle instance.hfeduSQL> host cp /backup/hfzcdb/*.dbf /oradata/hfzcdb/
*/
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "HFZCDB" RESETLOGS  ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 8192
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/oradata/hfzcdb/redo01.log'  SIZE 200M BLOCKSIZE 512,
GROUP 2 '/oradata/hfzcdb/redo02.log'  SIZE 200M BLOCKSIZE 512,
GROUP 3 '/oradata/hfzcdb/redo03.log'  SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'/oradata/hfzcdb/system01.dbf',
'/oradata/hfzcdb/sysaux01.dbf',
'/oradata/hfzcdb/undotbs01.dbf',
'/oradata/hfzcdb/users01.dbf',
'/oradata/hfzcdb/hfedu01.dbf'
CHARACTER SET AL32UTF8
;
ORACLE instance started.Total System Global Area 2466249672 bytes
Fixed Size                  8899528 bytes
Variable Size             671088640 bytes
Database Buffers         1778384896 bytes
Redo Buffers                7876608 bytes
hfeduSQL>   2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19
Control file created.hfeduSQL>  recover database using backup controlfile until cancel;
ORA-00279: change 1428569 generated at 12/25/2023 15:49:24 needed for thread 1
ORA-00289: suggestion : /archive/HFZCDB/archivelog/2023_12_25/o1_mf_1_4_%u_.arc
ORA-00280: change 1428569 for thread 1 is in sequence #4Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00283: recovery session canceled due to errors
ORA-19906: recovery target incarnation changed during recoveryORA-01112: media recovery not startedhfeduSQL>  recover database using backup controlfile until cancel;
ORA-00279: change 1428571 generated at 12/25/2023 16:05:05 needed for thread 1
ORA-00289: suggestion : /archive/HFZCDB/archivelog/2023_12_25/o1_mf_1_1_lrlg7o4n_.arc
ORA-00280: change 1428571 for thread 1 is in sequence #1Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/archive/HFZCDB/archivelog/2023_12_25/o1_mf_1_1_lrlg7o4n_.arc
ORA-00279: change 1429593 generated at 12/25/2023 16:10:29 needed for thread 1
ORA-00289: suggestion : /archive/HFZCDB/archivelog/2023_12_25/o1_mf_1_2_%u_.arc
ORA-00280: change 1429593 for thread 1 is in sequence #2
ORA-00278: log file '/archive/HFZCDB/archivelog/2023_12_25/o1_mf_1_1_lrlg7o4n_.arc' no longer needed for this recoverySpecify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
hfeduSQL> alter database open resetlogs;Database altered.hfeduSQL> alter database open RESETLOGS;hfeduSQL> select * from hfedu.hfedu;ID NAME
---------- ----------------------------------------99 hfedu09
1 hfedu01
55 hfedu05
66 hfedu06
77 hfedu07
88 hfedu086 rows selected.hfeduSQL>

4. 实操 3 基于【until scn】不完全恢复

        在数据库冷备份后,插入一条数据提交,并写到日志文件,checkpoint到数据文件,记录此时scn,然后再插入一条数据提交,再删除一条数据,提交,关闭数据库,把数据文件恢复到冷备份的时候,启动数据库到nomount状态,使用 recover database until change 2182325;恢复数据库,再用 alter database open resetlogs;启动数据库后,查询数据,发现数据是插入第一条数据的状态。

--先做冷备 
shutdown immediate;
SQL> host rm -rf /backup/hfzcdb/*.* */
SQL> host cp /oradata/hfzcdb/* /backup/hfzcdb/ --先做冷备 */ 
set time on; hfeduSQL> conn hfedu/hfedu123
Connected.
hfedu@hfzcdb>
hfedu@hfzcdb> insert into hfedu3 values(66,'hfedu66');1 row created.hfedu@hfzcdb> commit
2  ;Commit complete.hfedu@hfzcdb> alter system switch logfile;System altered.hfedu@hfzcdb> /System altered.hfedu@hfzcdb> /
/System altered.hfedu@hfzcdb>
System altered.hfedu@hfzcdb> hfedu@hfzcdb> alter system checkpoint
2  ;System altered.hfedu@hfzcdb> select current_scn from v$database;CURRENT_SCN
-----------
2182325hfedu@hfzcdb> alter system checkpoint
2  ;System altered.hfedu@hfzcdb> alter system checkpoint;System altered.hfedu@hfzcdb> select current_scn from v$database;CURRENT_SCN
-----------
2182335hfedu@hfzcdb> alter system checkpoint;System altered.hfedu@hfzcdb> select current_scn from v$database;CURRENT_SCN
-----------
2182342hfedu@hfzcdb> insert into hfedu3 values(77,'hfedu77');1 row created.hfedu@hfzcdb> commit
2  ;Commit complete.hfedu@hfzcdb> delete from hfedu where id=1;
delete from hfedu where id=1
*
ERROR at line 1:
ORA-00942: table or view does not existhfedu@hfzcdb> delete from hfedu3 where id=1;1 row deleted.hfedu@hfzcdb> commit
2  ;Commit complete.hfedu@hfzcdb> alter system checkpoint;System altered.hfedu@hfzcdb> select current_scn from v$database;CURRENT_SCN
-----------
2182385hfedu@hfzcdb> select * from hfedu.hfedu3;ID NAME
---------- ----------------------------------------
66 hfedu66
77 hfedu77
2 hfedu02
3 hfedu03
4 hfedu04
5 hfedu5
6 hfedu6
44 hfedu448 rows selected.hfedu@hfzcdb> conn / as sysdba
Connected.
SYS@hfzcdb> shutdown abort
ORACLE instance shut down.
SYS@hfzcdb> host cp /backup/hfzcdb/*.dbf /oradata/hfzcdb/   【覆盖现在日志,就和删除恢复一样】
*/
SYS@hfzcdb> startup nomount
ORACLE instance started.Total System Global Area 2466249672 bytes
Fixed Size                  8899528 bytes
Variable Size             671088640 bytes
Database Buffers         1778384896 bytes
Redo Buffers                7876608 bytes
SYS@hfzcdb> alter database mount
2  ;Database altered.SYS@hfzcdb> recover database until change 2182325;
ORA-00279: change 2135155 generated at 03/28/2023 22:00:32 needed for thread 1
ORA-00289: suggestion : /archive/HFZCDB/archivelog/2023_03_28/o1_mf_1_35_l25xd0yp_.arc
ORA-00280: change 2135155 for thread 1 is in sequence #35Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto
ORA-00279: change 2136023 generated at 03/28/2023 22:11:12 needed for thread 1
ORA-00289: suggestion : /archive/HFZCDB/archivelog/2023_03_29/o1_mf_1_1_l27n4015_.arc
ORA-00280: change 2136023 for thread 1 is in sequence #1
ORA-00278: log file '/archive/HFZCDB/archivelog/2023_03_28/o1_mf_1_35_l25xd0yp_.arc' no longer needed for this recoveryORA-00279: change 2177944 generated at 03/29/2023 15:15:29 needed for thread 1
ORA-00289: suggestion : /archive/HFZCDB/archivelog/2023_03_29/o1_mf_1_1_l27wtv68_.arc
ORA-00280: change 2177944 for thread 1 is in sequence #1ORA-00279: change 2182271 generated at 03/29/2023 16:14:19 needed for thread 1
ORA-00289: suggestion : /archive/HFZCDB/archivelog/2023_03_29/o1_mf_1_2_l27wv3w1_.arc
ORA-00280: change 2182271 for thread 1 is in sequence #2Log applied.
Media recovery complete.
SYS@hfzcdb> alter database open resetlogs;  【数据库只要是不完全恢复,都需要resetlogs】Database altered.SYS@hfzcdb> select * from hfedu.hfedu3;ID NAME
---------- ----------------------------------------
66 hfedu66
1 hfedu01
2 hfedu02
3 hfedu03
4 hfedu04
5 hfedu5
6 hfedu6
44 hfedu448 rows selected.SYS@hfzcdb>

相关文章:

Oracle 用户管理模式下的恢复案例-不完全恢复

1. 不完全恢复的几种常用方法 01. recover database using backup controlfile 如果丢失当前控制文件&#xff0c;用冷备份的控制文件恢复的时候&#xff0c;用来告诉 oracle&#xff0c;不要以 controlfile 中的 scn 作为恢复的终点&#xff1b; 02. recover database until …...

SharpDevelop IDE IViewContent.cs类

文件位置&#xff1a;IViewContent.cs /// <summary>/// IViewContent is the base interface for "windows" in the document area of SharpDevelop./// A view content is a view onto multiple files, or other content that opens like a document/// (e.…...

Unity RectTransUtility工具类

这个工具主要是用于动态生成UI的情况。项目中我们通过配置UI的锚点、位置以及大小(位置、大小都是通过蓝湖看到的)&#xff0c;然后通过代码动态生成UI。 大部分情况下只要合理设置锚点&#xff0c;那么生成出来的UI就已经满足了适配的要求。 using UnityEngine;public static…...

React性能优化

三个可以优化的地方 避免过度多次渲染 组件会在以下情况下重新渲染 注意&#xff1a;例如组件组合的形式&#xff0c;<Test><Counter></Counter></Test>,即使Test发生了重新渲染&#xff0c;Counter也不会重新渲染。另外使用React这样的库或框架时&a…...

前端开发流程实操:从概念到上线

在前端开发这个充满创意与技术挑战的领域&#xff0c;一个清晰的开发流程是确保项目顺利进行并达到预期效果的关键。 下面就和大家分享一下前端开发的实操流程。 一、项目启动与需求分析 前端开发不是孤立的&#xff0c;它是整个项目的一部分&#xff0c;所以首先要与项目团…...

Metasploit使用

最近在学Metasploit&#xff0c;Metasploit是一个免费的、可下载的渗透测试框架&#xff0c;通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击&#xff0c;是一个集成了渗透测试全流程的渗透工具。 图一 模块&#xff1a;模块组织按照不同的用途分为7种类型的模块 &am…...

Milvus向量数据库05-常见问题整理

Milvus向量数据库05-常见问题整理 1-什么是PipeLine 这张图展示了一个文档处理和搜索系统的架构&#xff0c;主要分为两个部分&#xff1a;Ingestion Pipeline&#xff08;摄取管道&#xff09;和 Search Pipeline&#xff08;搜索管道&#xff09;。下面是对图中各部分的详细…...

Ruby On Rails 笔记3——表的增删改查

1.Migration Migrations是一种便利的方法,能以重现的方式随时间推移改变数据库schema. 使用Ruby Domain Specific Language (DSL),因此你不用手写SQL,进而使你的schema和changes与数据库独立。 可以把每次migration看作是数据库的一个新“版本”。A schema开始时什么都没有…...

CSS3 动画详解,介绍、实现与应用场景详解

CSS3 动画概述 CSS3 动画是通过 CSS3 的新特性来实现元素的动态变化。与传统的 JavaScript 动画不同,CSS3 动画主要通过 CSS 属性的变化来实现动画效果,具有高效、轻量和易于实现的优点。CSS3 动画通常用于网页的动态交互效果、过渡效果、元素移动、缩放、旋转等场景。 一、…...

Winston-MySQL 使用文档

目录 简介 安装 配置 环境变量配置 日志级别和表配置 创建 Logger 实例 文件传输配置 控制台输出配置 完整代码 使用方法 记录信息日志 记录错误日志 记录警告日志 总结 简介 winston-mysql 是一个为 winston3.x 日志库设计的 MySQL 传输插件&#xff0c;允许你…...

java日期工具: 获取两个时间段的时间段值,Java获得两个日期之间的所有年、月份、日。

文章目录 日期字符串格式化获取两个日期之间的所有日期 (字符串格式)获取两个时间段的时间段值,Java获得两个日期之间的所有年、月份、日。生效时间需要大于当前时间结束时间的月份不能大于当前月份日期字符串格式化 /*** 日期字符串格式化** @param time* @param Format_int…...

【Rive】混合动画

1 混合动画简介 【Rive】动画 中介绍了 Rive 中动画的基础概念和一般动画的制作流程&#xff0c;本文将介绍混合动画的基础概念和一般制作流程。Unity 中混合动画介绍详见→ 【Unity3D】动画混合。 混合动画是指同一时刻多个动画按照一定比例同时执行&#xff0c;这些动画控制的…...

qt应用程序崩溃日志和转储dmp文件对于定位问题

qt应用程序崩溃日志和转储文件对于定位问题 一. DMP 文件包含的信息&#xff1a;二. 分析 DMP 文件的主要方法&#xff1a;三. 生成更详细的 DMP 文件&#xff1a;四. 分析 DMP 文件的注意事项&#xff1a;五. 实用建议&#xff1a;六. 实战 一. DMP 文件包含的信息&#xff1a…...

Mysql架构

连接层 最上层是一些客户端和连接服务&#xff0c;负责客户端的连接&#xff0c;验证账号密码等授权认证 服务层 主要完成大多数的核心服务功能&#xff0c;对sql进行解析&#xff0c;优化&#xff0c;调用函数&#xff0c;如果是查询操作&#xff0c;有没有缓存等操作操作。所…...

杂发单的单据类型一个参数的逻辑

【核准中可改】被产线滥用了。它们可以这样做&#xff0c;开立一张杂发单&#xff0c;打印出来交领导层签名。单据要交财务做核算的。然后去修改杂发单的材料。以为可以瞒天过海。2个仓库&#xff0c;一个中掉坑里&#xff0c;一个发现了它们的拙劣的手段&#xff0c;上报之后没…...

Linux系统 vim 编辑文件搜索关键字用法

1、首先确保在normal模式下&#xff0c;按ESC后不在insert模式 输入 /test或?test 此时就会匹配 test 字符串&#xff0c;并且高亮显示 2、向前搜索 /字符串&#xff1a;按n匹配下一个目标&#xff0c;按N匹配上一个目标 3、向后搜索 ?字符串&#xff1a;按n匹配上一个目标…...

Vue智慧商城项目

创建项目 vue组件库 — vant-ui&#xff08;常用于移动端&#xff09; Vant 2 - 轻量、可靠的移动端组件库 安装vant npm i vantlatest-v2 -S 引入组件 按需导入和全部导入 全部导入 整个组件库的所有组件都导进来&#xff0c;缺点是增加了代码包体积 main.js import…...

Qt Window应用程序去掉控制台窗口

Qt Window应用程序去掉控制台窗口 方式一 set(PROJECT_SOURCESWIN32main.cppmainwindow.hpp )add_executable(Tool-V2${PROJECT_SOURCES} )方式二 set_target_properties(Tool-V2 PROPERTIESMACOSX_BUNDLE TRUEWIN32_EXECUTABLE TRUE )参考文献&#xff1a; cmake Qt 项目…...

软件测试最新项目合集【商城、外卖、银行、金融等等.......】

项目一&#xff1a;ShopNC商城 项目概况&#xff1a; ShopNC商城是一个电子商务B2C电商平台系统&#xff0c;功能强大&#xff0c;安全便捷。适合企业及个人快速构建个性化网上商城。 包含PCIOS客户端Adroid客户端微商城&#xff0c;系统PC后台是基于ThinkPHP MVC构架开发的跨…...

SAP SD学习笔记18 - 投诉处理4 - 请求书订正依赖,投诉处理流程的总结

上一章讲了 Credit/Debit Memo依赖&#xff0c;Credit/Debit Memo。Credit Memo依赖 本质上是一张受注票&#xff1b;Credit Memo 本质上是一张请求票。 SAP SD学习笔记17 - 投诉处理3 - Credit/Debit Memo依赖&#xff0c;Credit/Debit Memo-CSDN博客 本章继续讲本图中的内容…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...