升级Oracle 单实例数据库19.3到19.22
需求
我的Oracle Database Vagrant Box初始版本为19.3,需要升级到最新的RU,当前为19.22。
以下操作时间为为2024年2月5日。
补丁下载
补丁下载文档参见MOS文档:Primary Note for Database Proactive Patch Program (Doc ID 888.1)。
补丁安装文档参见文档(链接在下载页面中):Patch 35943157 - Database Release Update 19.22.0.0.240116
也可以从MOS的“Patch & Updates”标签页中下载:
结果中的Patch 35943157即我们需要的:
停止数据库和监听
断开所有与数据库的连接,如应用,如管理客户端(Oracle EM, SQL Developer等)。
停止数据库:
shutdown immediate
停止监听:
lsnrctl stop
备份Oracle Home
参考MOS文档: How to Perform ORACLE_HOME Backup? (Doc ID 565017.1)
以oracle用户执行以下脚本:
# 创建备份目录
mkdir ~/backup
# 本例中的ORACLE_HOME为/opt/oracle/product/19c/dbhome_1
cd $ORACLE_HOME
# 切换到上一级目录:/opt/oracle/product/19c
cd ..
# 启动备份
tar -pcvf ~/backup/oracle_home_bkup.tar dbhome_1
备份文件约7.4G:
$ ls -l ~/backup/
total 7248532
-rw-r--r--. 1 oracle oinstall 7422494720 Feb 5 13:42 oracle_home_bkup.tar
安装最新版的OPatch
下载OPatch 12.2.0.1.41 for DB 19.0.0.0.0 (Jan 2024),约120M。
$ ls -l /vagrant/p6880880_190000_Linux-x86-64.zip
-rwxrwxrwx. 1 vagrant vagrant 127629034 Feb 5 13:58 /vagrant/p6880880_190000_Linux-x86-64.zip
升级过程参见Oracle数据库升级OPatch全过程。
升级完成后:
$ opatch version
OPatch Version: 12.2.0.1.41OPatch succeeded.
安装OJVM补丁
详见MOS 文档:Oracle Recommended Patches – “Oracle JavaVM Component Database PSU and Update” (OJVM PSU and OJVM Update) Patches (Doc ID 1929745.1)
实际下载是从MOS文档:Primary Note for Database Proactive Patch Program (Doc ID 888.1)
然后搜索OJVM即可。补丁约120M:
$ ls -l /vagrant/p35926646_190000_Linux-x86-64.zip
-rwxrwxrwx. 1 vagrant vagrant 127451050 Feb 5 14:21 /vagrant/p35926646_190000_Linux-x86-64.zip
升级文档参见Patch 35926646 - Oracle JavaVM Component Release Update 19.22.0.0.240116。
PATCHDIR=/home/oracle/patchdir
mkdir $PATCHDIR
unzip -d $PATCHDIR /vagrant/p35926646_190000_Linux-x86-64.zip
cd $PATCHDIR/35926646
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
# 如果上面的先决条件检测通过,则可以安装补丁
opatch apply
安装过程如下:
[oracle@oracle-19c-vagrant 35926646]$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./
Oracle Interim Patch Installer version 12.2.0.1.41
Copyright (c) 2024, Oracle Corporation. All rights reserved.PREREQ sessionOracle Home : /opt/oracle/product/19c/dbhome_1
Central Inventory : /opt/oracle/oraInventoryfrom : /opt/oracle/product/19c/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.41
OUI version : 12.2.0.7.0
Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_14-25-44PM_1.logInvoking prereq "checkconflictagainstohwithdetail"Prereq "checkConflictAgainstOHWithDetail" passed.OPatch succeeded.
[oracle@oracle-19c-vagrant 35926646]$ opatch apply
Oracle Interim Patch Installer version 12.2.0.1.41
Copyright (c) 2024, Oracle Corporation. All rights reserved.Oracle Home : /opt/oracle/product/19c/dbhome_1
Central Inventory : /opt/oracle/oraInventoryfrom : /opt/oracle/product/19c/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.41
OUI version : 12.2.0.7.0
Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_14-26-37PM_1.logVerifying environment and performing prerequisite checks...
OPatch continues with these patches: 35926646Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/opt/oracle/product/19c/dbhome_1')Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files...
Applying interim patch '35926646' to OH '/opt/oracle/product/19c/dbhome_1'Patching component oracle.javavm.server, 19.0.0.0.0...Patching component oracle.javavm.server.core, 19.0.0.0.0...Patching component oracle.rdbms.dbscripts, 19.0.0.0.0...Patching component oracle.rdbms, 19.0.0.0.0...Patching component oracle.javavm.client, 19.0.0.0.0...
Patch 35926646 successfully applied.
Log file location: /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_14-26-37PM_1.logOPatch succeeded.
还有一些后续工作:
connect / as sysdba
startup
alter pluggable database all open;
quit
执行安装后脚本,datapatch 是一款新工具,可实现 RDBMS 补丁的补丁后 SQL 操作自动化:
cd $ORACLE_HOME/OPatch
./datapatch -verbose
如果都正常,则执行以下脚本:
cd $ORACLE_HOME/rdbms/admin
sqlplus /nolog
SQL> CONNECT / AS SYSDBA
SQL> @utlrp.sql
然后关闭数据库。
shutdown immediate
这个补丁安装的时间有点长。如果是新库,最好是打完补丁再建库,而非建完库再打补丁。
安装数据库补丁
因为我没有GI,所以仅升级数据库就好。
补丁约1.8G:
$ ls -l /vagrant/p35943157_190000_Linux-x86-64.zip
-rwxrwxrwx. 1 vagrant vagrant 1817908992 Feb 5 13:29 /vagrant/p35943157_190000_Linux-x86-64.zip
解压:
PATCHDIR=/home/oracle/patchdir
# 解压完大约3.6G
unzip -qd $PATCHDIR /vagrant/p35943157_190000_Linux-x86-64.zip
cd $PATCHDIR/35943157
opatch prereq CheckConflictAgainstOHWithDetail -ph ./
# 如果上面的先决条件检测通过,则可以安装补丁
opatch apply
先决条件检查确实通过了:
$ opatch prereq CheckConflictAgainstOHWithDetail -ph ./
Oracle Interim Patch Installer version 12.2.0.1.41
Copyright (c) 2024, Oracle Corporation. All rights reserved.PREREQ sessionOracle Home : /opt/oracle/product/19c/dbhome_1
Central Inventory : /opt/oracle/oraInventoryfrom : /opt/oracle/product/19c/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.41
OUI version : 12.2.0.7.0
Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_15-10-48PM_1.logInvoking prereq "checkconflictagainstohwithdetail"Prereq "checkConflictAgainstOHWithDetail" passed.OPatch succeeded.
但第一次安装却失败了,因为空间不够:
[oracle@oracle-19c-vagrant 35943157]$ time opatch apply
Oracle Interim Patch Installer version 12.2.0.1.41
Copyright (c) 2024, Oracle Corporation. All rights reserved.Oracle Home : /opt/oracle/product/19c/dbhome_1
Central Inventory : /opt/oracle/oraInventoryfrom : /opt/oracle/product/19c/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.41
OUI version : 12.2.0.7.0
Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_15-12-31PM_1.logVerifying environment and performing prerequisite checks...
Prerequisite check "CheckSystemSpace" failed.
The details are:
Required amount of space(7550.384MB) is not available.
UtilSession failed:
Prerequisite check "CheckSystemSpace" failed.
Log file location: /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_15-12-31PM_1.logOPatch failed with error code 73
空间问题处理完后,再次安装:
$ time opatch apply
Oracle Interim Patch Installer version 12.2.0.1.41
Copyright (c) 2024, Oracle Corporation. All rights reserved.Oracle Home : /opt/oracle/product/19c/dbhome_1
Central Inventory : /opt/oracle/oraInventoryfrom : /opt/oracle/product/19c/dbhome_1/oraInst.loc
OPatch version : 12.2.0.1.41
OUI version : 12.2.0.7.0
Log file location : /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_15-41-25PM_1.logVerifying environment and performing prerequisite checks...
OPatch continues with these patches: 35943157Do you want to proceed? [y|n]
y
User Responded with: Y
All checks passed.Please shutdown Oracle instances running out of this ORACLE_HOME on the local system.
(Oracle Home = '/opt/oracle/product/19c/dbhome_1')Is the local system ready for patching? [y|n]
y
User Responded with: Y
Backing up files...
Applying interim patch '35943157' to OH '/opt/oracle/product/19c/dbhome_1'
ApplySession: Optional component(s) [ oracle.network.gsm, 19.0.0.0.0 ] , [ oracle.crypto.rsf, 19.0.0.0.0 ] , [ oracle.pg4mq, 19.0.0.0.0 ] , [ oracle.precomp.companion, 19.0.0.0.0 ] , [ oracle.rdbms.ic, 19.0.0.0.0 ] , [ oracle.rdbms.tg4db2, 19.0.0.0.0 ] , [ oracle.tfa, 19.0.0.0.0 ] , [ oracle.rdbms.tg4tera, 19.0.0.0.0 ] , [ oracle.network.cman, 19.0.0.0.0 ] , [ oracle.options.olap, 19.0.0.0.0 ] , [ oracle.oid.client, 19.0.0.0.0 ] , [ oracle.xdk.companion, 19.0.0.0.0 ] , [ oracle.options.olap.api, 19.0.0.0.0 ] , [ oracle.rdbms.tg4ifmx, 19.0.0.0.0 ] , [ oracle.rdbms.tg4sybs, 19.0.0.0.0 ] , [ oracle.rdbms.tg4msql, 19.0.0.0.0 ] , [ oracle.ons.eons.bwcompat, 19.0.0.0.0 ] , [ oracle.ons.cclient, 19.0.0.0.0 ] , [ oracle.sdo.companion, 19.0.0.0.0 ] , [ oracle.net.cman, 19.0.0.0.0 ] , [ oracle.pg4appc, 19.0.0.0.0 ] , [ oracle.jdk, 1.8.0.191.0 ] not present in the Oracle Home or a higher version is found.Patching component oracle.rdbms, 19.0.0.0.0...Patching component oracle.rdbms.util, 19.0.0.0.0...Patching component oracle.rdbms.rsf, 19.0.0.0.0...Patching component oracle.assistants.acf, 19.0.0.0.0...Patching component oracle.assistants.deconfig, 19.0.0.0.0...Patching component oracle.assistants.server, 19.0.0.0.0...Patching component oracle.blaslapack, 19.0.0.0.0...Patching component oracle.buildtools.rsf, 19.0.0.0.0...Patching component oracle.ctx, 19.0.0.0.0...Patching component oracle.dbdev, 19.0.0.0.0...Patching component oracle.dbjava.ic, 19.0.0.0.0...Patching component oracle.dbjava.jdbc, 19.0.0.0.0...Patching component oracle.dbjava.ucp, 19.0.0.0.0...Patching component oracle.duma, 19.0.0.0.0...Patching component oracle.javavm.client, 19.0.0.0.0...Patching component oracle.ldap.owm, 19.0.0.0.0...Patching component oracle.ldap.rsf, 19.0.0.0.0...Patching component oracle.ldap.security.osdt, 19.0.0.0.0...Patching component oracle.marvel, 19.0.0.0.0...Patching component oracle.network.rsf, 19.0.0.0.0...Patching component oracle.odbc.ic, 19.0.0.0.0...Patching component oracle.ons, 19.0.0.0.0...Patching component oracle.ons.ic, 19.0.0.0.0...Patching component oracle.oracore.rsf, 19.0.0.0.0...Patching component oracle.perlint, 5.28.1.0.0...Patching component oracle.precomp.common.core, 19.0.0.0.0...Patching component oracle.precomp.rsf, 19.0.0.0.0...Patching component oracle.rdbms.crs, 19.0.0.0.0...Patching component oracle.rdbms.dbscripts, 19.0.0.0.0...Patching component oracle.rdbms.deconfig, 19.0.0.0.0...Patching component oracle.rdbms.oci, 19.0.0.0.0...Patching component oracle.rdbms.rsf.ic, 19.0.0.0.0...Patching component oracle.rdbms.scheduler, 19.0.0.0.0...Patching component oracle.rhp.db, 19.0.0.0.0...Patching component oracle.sdo, 19.0.0.0.0...Patching component oracle.sdo.locator.jrf, 19.0.0.0.0...Patching component oracle.sqlplus, 19.0.0.0.0...Patching component oracle.sqlplus.ic, 19.0.0.0.0...Patching component oracle.wwg.plsql, 19.0.0.0.0...Patching component oracle.xdk.rsf, 19.0.0.0.0...Patching component oracle.install.deinstalltool, 19.0.0.0.0...Patching component oracle.sdo.locator, 19.0.0.0.0...Patching component oracle.rdbms.install.plugins, 19.0.0.0.0...Patching component oracle.dbtoolslistener, 19.0.0.0.0...Patching component oracle.xdk, 19.0.0.0.0...Patching component oracle.rdbms.drdaas, 19.0.0.0.0...Patching component oracle.xdk.xquery, 19.0.0.0.0...Patching component oracle.rdbms.rman, 19.0.0.0.0...Patching component oracle.network.client, 19.0.0.0.0...Patching component oracle.rdbms.hs_common, 19.0.0.0.0...Patching component oracle.nlsrtl.rsf.lbuilder, 19.0.0.0.0...Patching component oracle.oraolap.dbscripts, 19.0.0.0.0...Patching component oracle.mgw.common, 19.0.0.0.0...Patching component oracle.rdbms.dv, 19.0.0.0.0...Patching component oracle.ldap.ssl, 19.0.0.0.0...Patching component oracle.xdk.parser.java, 19.0.0.0.0...Patching component oracle.ctx.rsf, 19.0.0.0.0...Patching component oracle.rdbms.lbac, 19.0.0.0.0...Patching component oracle.rdbms.hsodbc, 19.0.0.0.0...Patching component oracle.ctx.atg, 19.0.0.0.0...Patching component oracle.oraolap, 19.0.0.0.0...Patching component oracle.oraolap.api, 19.0.0.0.0...Patching component oracle.odbc, 19.0.0.0.0...Patching component oracle.ldap.client, 19.0.0.0.0...Patching component oracle.nlsrtl.rsf, 19.0.0.0.0...Patching component oracle.rdbms.install.common, 19.0.0.0.0...Patching component oracle.ovm, 19.0.0.0.0...Patching component oracle.network.listener, 19.0.0.0.0...Patching component oracle.ldap.rsf.ic, 19.0.0.0.0...Patching component oracle.javavm.server, 19.0.0.0.0...Patching component oracle.precomp.lang, 19.0.0.0.0...Patching component oracle.precomp.common, 19.0.0.0.0...Patching component oracle.jdk, 1.8.0.201.0...
Patch 35943157 successfully applied.
Sub-set patch [29517242] has become inactive due to the application of a super-set patch [35943157].
Please refer to Doc ID 2161861.1 for any possible further required actions.
Log file location: /opt/oracle/product/19c/dbhome_1/cfgtoollogs/opatch/opatch2024-02-05_15-41-25PM_1.logOPatch succeeded.real 36m32.647s
user 20m16.850s
sys 9m43.814s
成功,耗时半小时。
以上安装是交互式的,中间有两处需要用户输入Y或N。可以指定-silent选项以静默运行。
补丁安装后的操作:
connect / as sysdba
startup
alter pluggable database all open;
quit
执行脚本:
cd $ORACLE_HOME/OPatch
./datapatch -verbose
输出如下:
$ time ./datapatch -verbose
SQL Patching tool version 19.22.0.0.0 Production on Mon Feb 5 21:09:00 2024
Copyright (c) 2012, 2024, Oracle. All rights reserved.Log file for this invocation: /opt/oracle/cfgtoollogs/sqlpatch/sqlpatch_5704_2024_02_05_21_09_00/sqlpatch_invocation.logConnecting to database...OK
Gathering database info...doneNote: Datapatch will only apply or rollback SQL fixes for PDBsthat are in an open state, no patches will be applied to closed PDBs.Please refer to Note: Datapatch: Database 12c Post Patch SQL Automation(Doc ID 1585822.1)Bootstrapping registry and package to current versions...done
Determining current state...doneCurrent state of interim SQL patches:
Interim patch 35926646 (OJVM RELEASE UPDATE: 19.22.0.0.240116 (35926646)):Binary registry: InstalledPDB CDB$ROOT: Applied successfully on 05-FEB-24 02.55.32.207669 PMPDB ORCLPDB1: Applied successfully on 05-FEB-24 02.55.33.974523 PMPDB PDB$SEED: Applied successfully on 05-FEB-24 02.55.33.368845 PMCurrent state of release update SQL patches:Binary registry:19.22.0.0.0 Release_Update 240104023954: InstalledPDB CDB$ROOT:Applied 19.3.0.0.0 Release_Update 190410122720 successfully on 11-JAN-24 04.17.24.530288 PMPDB ORCLPDB1:Applied 19.3.0.0.0 Release_Update 190410122720 successfully on 11-JAN-24 04.24.22.690150 PMPDB PDB$SEED:Applied 19.3.0.0.0 Release_Update 190410122720 successfully on 11-JAN-24 04.24.22.690150 PMAdding patches to installation queue and performing prereq checks...done
Installation queue:For the following PDBs: CDB$ROOT PDB$SEED ORCLPDB1No interim patches need to be rolled backPatch 35943157 (Database Release Update : 19.22.0.0.240116 (35943157)):Apply from 19.3.0.0.0 Release_Update 190410122720 to 19.22.0.0.0 Release_Update 240104023954No interim patches need to be appliedInstalling patches...
Patch installation complete. Total patches installed: 3Validating logfiles...done
Patch 35943157 apply (pdb CDB$ROOT): SUCCESSlogfile: /opt/oracle/cfgtoollogs/sqlpatch/35943157/25527362/35943157_apply_ORCLCDB_CDBROOT_2024Feb05_21_09_27.log (no errors)
Patch 35943157 apply (pdb PDB$SEED): SUCCESSlogfile: /opt/oracle/cfgtoollogs/sqlpatch/35943157/25527362/35943157_apply_ORCLCDB_PDBSEED_2024Feb05_21_16_01.log (no errors)
Patch 35943157 apply (pdb ORCLPDB1): SUCCESSlogfile: /opt/oracle/cfgtoollogs/sqlpatch/35943157/25527362/35943157_apply_ORCLCDB_ORCLPDB1_2024Feb05_21_16_01.log (no errors)
SQL Patching tool complete on Mon Feb 5 21:27:20 2024real 18m19.684s
user 0m33.220s
sys 0m3.595s
这里有一个小插曲,第一次执行datapatch 时非常慢,我强行中断了。
然后回家又做了一遍,这次快些了,只用了18分钟。
执行datapatch时,解压的数据库补丁我已经删除了,说明其不需要了。
其他
RMAN catalog如果有,也需要升级。我没有,此处略。
还有一些可能需要升级的,详见文档。
验证升级成功
SQL> select banner_full from v$version;BANNER_FULL
--------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.22.0.0.0SQL> select banner_legacy from v$version;BANNER_LEGACY
--------------------------------------------------------------------------------
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
清理
# 删除备份的Oracle Home
rm ~/backup/oracle_home_bkup.tar
# 删除解压的补丁包
PATCHDIR=/home/oracle/patchdir
rm -fr $PATCHDIR
相关文章:

升级Oracle 单实例数据库19.3到19.22
需求 我的Oracle Database Vagrant Box初始版本为19.3,需要升级到最新的RU,当前为19.22。 以下操作时间为为2024年2月5日。 补丁下载 补丁下载文档参见MOS文档:Primary Note for Database Proactive Patch Program (Doc ID 888.1)。 补丁…...

在Vue中如何动态绑定class和style属性
在Vue中,动态绑定class和style属性是我们经常遇到的需求。这个功能允许我们根据不同的条件来动态改变元素的样式,让我们的应用更加灵活和富有交互性。在本篇博客文章中,我将带你深入探索在Vue中如何实现这一功能。 首先,让我们了…...

使用Docker部署DashDot服务器仪表盘并结合cpolar实现公网监测服务器
最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 1. 本地环境检查1.1 安装docker1.2 下载Dashdot镜像 2.…...
Android kernel logcat时间戳显示错乱修改
前言 在抓取log时发现,kernel log合logcat的时间戳不对应。在分析log时,造成很大的困扰 修改 针对Android 10 的修改 diff --git a/system/core/logd/LogKlog.cpp b/system/core/logd/LogKlog.cpp old mode 100644 new mode 100755 index edd326a..f…...

2024年考PMP还有什么用?
PMP 是项目管理专业人士资格认证的意思,也是项目管理领域通用的证书, 做项目的基本都会去考。 要说 PMP 有啥作用? 个人感觉 PMP 证书更多的是跳槽、转行的敲门砖的作用,因为现在很多公司都要 PMP 证书,有了可以加分…...

解决zabbix图像中文乱码
使用zabbix查看监控图像信息,发现会有中文乱码现象。 解决方法如下: 1.拷贝windows文字文件到服务器上 C:\Windows\Fonts目录下拷贝自己需要的中文语言文件 2.修改配置文件 vim /usr/share/zabbix/include/defines.inc.php 81行 define(ZBX_GRAPH_F…...

centos间文件传输
scp /home/vagrant/minio zx192.168.56.34:/home/zx /home/vagrant/minio 是你要传输的文件而且是当前机器登录用户有权限操作的文件 zx是目标机器的用户192.168.56.34是目标机器的地址 /home/zx是要传到这个文件夹下 要确保zx有/home/zx这个文件夹的操作权限 本质就是ssh文…...

2.0 Zookeeper 安装配置
Linux 安装 zookeeper 下载地址为: Apache ZooKeeper。 选择一稳定版本,本教程使用的 release 版本为3.4.14,下载并安装。 打开网址 https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz,看到如下界…...

Matomo 访问图形显示异常
近期我们的把 PHP 系统完全升级后,访问 Matomo 的站点有关访问的曲线无法显示。 出现的情况如下图: 我们可以看到图片中有关的访问曲线无法显示。 如果具体直接访问链接的话,会有下面的错误信息。 问题和解决 出现上面问题的原因是缺少 ph…...

MySQL学习记录——사 表结构的操作
文章目录 1、创建表2、查看表结构3、改变表结构4、删除表5、总结 1、创建表 CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎; 例子 create table users ( id int, name varchar(20) c…...

【华为 ICT HCIA eNSP 习题汇总】——题目集12
1、企业网络内部常常采用私有 IP 地址进行通信,以下哪个地址属于私有 IP 地址? A、0.1.1.1 B、127.5.4.3 C、128.0.0.5 D、172.24.35.36 考点:网络层 解析:(D) A类 IP 地址中,10.0.0.0 ~ 10.255…...

Redis发布订阅及事务管理
目录 1.1 发布订阅 1.1.1 什么是发布订阅 1.1.2 常用命令 1.1.3 示例演示 1.2 事务管理 1.2.1 事务定义 1.2.2 Multi、Exec、discard 1.2.3 示例 1.2.4 事务的错误处理 1.2.5 事务的冲突问题 1.2.5.1 事务场景 1.2.5.2 悲观锁 1.2.5.3 乐观锁 1.2.5.4 事务解决冲…...
设计模式第五天|代理模式 7-小明买房子 装饰模式 8-咖啡加糖
目录 【设计模式专题之代理模式】7-小明买房子【设计模式专题装饰模式】8-咖啡加糖 【设计模式专题之代理模式】7-小明买房子 文章链接:卡码网设计模式 题目链接:7-小明买房子 这里注意在HomeAgent类里需要定义对象成员变量HomeBuyer,这里在实…...
mongodb数据库集合(表)的创建和数据修改
文章目录 前言发现宝藏一、集合的创建二、集合的修改三、数据插入数据库四、清空数据库集合数据 前言 为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客,方便日后回顾。当然,如果能帮到一些萌新进行新技术的学习那也是极好的。作…...
MySQL 的UI
MySQL也有许多用户界面(UI)工具,用于管理数据库。以下是一些流行的MySQL UI工具: 1. **MySQL Workbench:** 由MySQL官方提供,功能强大,支持数据库建模、SQL开发、服务器配置等。 2. **DBeaver&a…...
Leetcode 3026. Maximum Good Subarray Sum
Leetcode 3026. Maximum Good Subarray Sum 1. 解题思路2. 代码实现 题目链接:3026. Maximum Good Subarray Sum 1. 解题思路 这一题的话主要就是要快速遍历所有的good subarray并快速获得每一个good subarray的和的最大值。 因此,问题就主要就成了两…...

elementUI之el-form-item的嵌套的场景
像这种,计费规则这几个字而且带红点,外观上是el-form-item,但是其并没有直接和控件进行相关联,这是和其他的el-form-item不同之处。所以这里就得用上嵌套了。也就是说elementUI中el-form-item是可以嵌套使用的。...

Linux项目自动化构建工具之make/Makefile演示gcc编译
文章目录 一、背景二、如何使用?三、原理四、关于make的问题五、再次理解/编写makefile依赖关系依赖方法 六、原理讲解项目清理makefile是支持变量的取消执行make后显示命令依赖方法可以多行 一、背景 会不会写makefile,从一个侧面说明了一个人是否具备…...

ChatGPT 官方中文页面上线
根据页面显示,OpenAI 现已推出 ChatGPT 的多语言功能 Alpha 版测试,允许用户选择不同语言的界面进行交互。 如下图所示,ChatGPT 会检测系统当前所使用的语言,并提示用户进行语言切换。 用户也可通过设置页面选择其他语言。目前&a…...

算法学习——华为机考题库10(HJ64 - HJ69)
算法学习——华为机考题库10(HJ64 - HJ69) HJ64 MP3光标位置 描述 MP3 Player因为屏幕较小,显示歌曲列表的时候每屏只能显示几首歌曲,用户要通过上下键才能浏览所有的歌曲。为了简化处理,假设每屏只能显示4首歌曲&a…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...