- 博客(58)
- 收藏
- 关注
原创 clone plugin搭建MySQL8.0 主从复制
前面2篇分别利用逻辑备份mysqldump和屋里备份xtrabackup搭建了MySQL主从复制,分别适用不同的场景,逻辑备份适用数据量小点的,物理备份适用数据量大点的。那么类比oracle,如果搭建的时候,没有足够的本地空间来落地,有没有RMAN duplicate from active database ,的方案,答案是有的。MySQL 8.0.17 引入的一个重大特性引入的Clone Plugin是一个重大特性,它允许从本地或者远程的MySQL中克隆数据。
2024-08-09 10:43:50
904
原创 xtrabackup搭建MySQL 8.0 主从复制
xtrabackup编译安装下载安装包上传软件解压测试总结rpm包安装下载安装包安装测试遗留问题mydumper是社区开源产品,支持并行导出,导入。功能单一,当我们在进行逻辑备份时,可以使用它进行单纯的数据备份。但是它不是MySQL自带的工具,需要我们自己进行安装。下面就说下安装过程编译安装版本信息:mydumper 0.11.6, built against MySQL 8.0.27os:RHEL 7.6下载安装包下载地址:https://www.percona.com/versio
2024-08-06 14:40:07
1550
原创 MySQL 5.7.42 主从复制环境搭建
本次安装环境:OS版本:Red Hat Enterprise Linux Server release 6.8 (Santiago)MySQL版本:5.7.42架构:同一台机器,多实例安装搭建ip地址:10.1.11.250安装方式:采用MySQL二进制安装。
2024-06-25 13:40:42
915
2
原创 pt-table-checksum
xtrabackup安装下载安装包rpm安装pt-table-checksum是社区开源产品。但是它不是MySQL自带的工具,需要我们自己进行安装。下面就说下安装过程安装版本信息:xtrabackup version 8.0.26-18 based on MySQL server 8.0.26 Linux (x86_64) (revision id: 4aecf82)MySQL版本:Server version: 8.0.27os:Red Hat Enterprise Linux Server r
2022-02-22 16:46:02
1021
原创 oracle 19c adg GAP恢复
oracle 19c adg GAP恢复故障现象故障分析GAP恢复总结参考继上篇文章,回退成功后。发现我们在回退的过程中,为了不影响备库,把log_archive_dest_state_2设置为了defer。但是后面想想,已经来不及了,因为主库刷新数据字典的过程中,已经会把字典的变化同步到了备库。我们设置defer的时间迟了,应该在刷新数据字典之前,就把log_archive_dest_state_2设置为defer,让备库不会应用数据字典的变化。如果此时发生切换,switchover肯定不行,failo
2022-01-30 15:44:08
3501
原创 磁盘组add disk,报错:ORA-15041 thrown in ARB0 for group number
磁盘组add disk,报错:ORA-15041 thrown in ARB0 for group number 故障现象问题分析解决方法解决过程遗留问题参考在ASM中,每一个文件的extent都均匀的分布在它所在磁盘组的所有磁盘上,无论是在文件第一次创建或是文件创建之后的重新resize都是如此,这也意味着我们始终能保持磁盘组中的每一个磁盘上都有一个平衡的空间分配。当我们ASM磁盘空间不够时,一般我们都会选择扩容,往磁盘组中添加新的磁盘,然后等待完成rebalance即可。但是,当我们没有注意到一些情
2022-01-30 15:43:38
3324
原创 MySQL 8.0 drop table恢复
MySQL 8.0 drop table恢复环境信息思路梳理恢复过程sysbench 造数据,压测xtrabackup全备数据库模拟drop table查找drop前的GTID创建必要的数据文件目录和日志文件目录和参数文件恢复数据库修改权限,启动3308实例配置为从库恢复表关于MySQL的drop table可能有很多恢复的方法,下面说一种,基于全备,复制,然后让sql_thread停在一个指定位置的方法来恢复。下面进行模拟恢复环境信息MySQL版本信息:Server version: 8.0.27
2022-01-15 17:53:55
3622
1
原创 mydumper 安装
mydumper 安装编译安装下载安装包上传软件解压安装依赖包cmake编译安装验证缺少库文件测试总结rpm包安装下载安装包安装测试遗留问题mydumper是社区开源产品,支持并行导出,导入。功能单一,当我们在进行逻辑备份时,可以使用它进行单纯的数据备份。但是它不是MySQL自带的工具,需要我们自己进行安装。下面就说下安装过程编译安装版本信息:mydumper 0.11.6, built against MySQL 8.0.27os:RHEL 7.6下载安装包github下载地址:https:
2022-01-01 18:19:32
2371
原创 MySQL 账户管理
MySQL 账户户管理 MySQL权限处理原则用户管理创建用户修改密码查看权限删除用户利用精确匹配拒绝某台应用连接授权有几个特殊权限:参数skip_name_resolve参数的基本含义验证域名登录验证root用户连接不上数据库MySQL 8.0用户管理增强密码过期双密码MySQL权限处理原则权限,通常都是用户A拥有对象B的权限。在Mysql中,加了一个维度,从哪儿来?即来源主机。权限认证的目的,都是为了让用户只能做允许他做的事情。MySQL采用的是白名单的权限策略。也就是说,明确指定了哪些用户能够做
2021-12-29 21:03:34
750
1
原创 MySQL 8.0二进制安装
MySQL 8.0二进制安装 下载MySQL二进制包操作系统配置关闭selinux和防火墙关闭numaIO调度swap分区文件系统操作系统资源限制安装过程连接数据库遇到问题特别说明oracle asm磁盘在实际工作中,由于一些原因,可能会不可访问,有时造成磁盘组直接dismount,数据库重启,有时磁盘组状态没影响,还是mount。那么到底磁盘出现什么状况?会造成磁盘组dismount?在什么情况下磁盘组状态无影响?下面就做一些简单的验证。下载MySQL二进制包官网地址,下载MySQL:https:/
2021-12-23 18:42:51
2214
原创 ASM磁盘超过disk_repair_time导致磁盘状态为forcing
ASM磁盘超过disk_repair_time导致磁盘状态为forcing 参考oracle asm磁盘在实际工作中,由于一些原因,可能会不可访问,有时造成磁盘组直接dismount,数据库重启,有时磁盘组状态没影响,还是mount。那么到底磁盘出现什么状况?会造成磁盘组dismount?在什么情况下磁盘组状态无影响?下面就做一些简单的验证。参考ASM 11g New Features - How ASM Disk Resync Works. (Doc ID 466326.1)...
2021-09-29 16:27:20
1543
原创 sqlldr 直接路径加载direct=true的副作用
sqlldr 直接路径加载direct=true的副作用sqlldr帮助文件执行导入提升加载速度总结参考接上篇文章sqlldr加载19c pdb最佳实践。最后提升加载速度的内容,其中有一项,是使用直接路径加载:direct=true。直接加载全部记录,提高速度。但是此方法有个副作用,就是会使索引失效。mos上面也有说明,根据文章Common Maintenance Commands That Cause Indexes to Become Unusable (Doc ID 165917.1)的描述:Si
2021-09-03 11:43:03
4205
原创 sqlldr加载19c pdb最佳实践
oracle下载的软件包或者补丁文件校验背景sqlldr--数据文件sqlldr--控制文件PSU补丁校验命令背景sqlldr历史悠久,从oracle 7开始提供数据加载得功能。那么在高本版,甚至19c上面sqlldr还能否使用哪?某客户就有这种需求,经常需要把excel里面的数据导入到数据库表里面,那么sqlldr就成为不二之选。下面看下具体的使用和注意事项。sqlldr–数据文件一般会导出一个excel文件,或者csv文件,类似如下:其中的内容如下:为了后面的控制文件好些,一般插入个分
2021-09-02 15:01:42
2862
原创 PostgreSQL 安装部署
PostgreSQL 安装部署安装前准备操作系统选择系统基本检查和调整安装依赖包编辑hosts文件内核参数调整时间和时间同步用户limits设置创建用户和组目录规划sudo权限配置下载安装包源码包下载RPM包下载YUM在线安装参考二进制包下载二进制文本安装绿色解压版安装源码包安装解压安装包编译安装查看版本设置软链接yum在线安装sudo权限配置安装查看安装路径初始化数据库,并启动拿root用户安装登录测试安装插件初始化数据库修改数据库参数修改客户端认证参数配置环境变量配置开机启动服务管理测试登录安装前准备
2021-07-08 19:21:51
1396
1
原创 2021年4月Oracle数据库补丁分析报告
2021年4月Oracle数据库补丁分析报告引言编写目的背景术语解释Database Patch Set UpdateDatabase Grid Infrastructure Patch Set UpdateOJVM Patch Set UpdateCritical Patch UpdateRelease Updates任务描述漏洞分析数据库产品风险矩阵Oracle数据库风险矩阵漏洞修复方案安装补丁风险及措施安装补丁安装前配置准备介质清理目录空间tar命令备份ORACLE_HOME升级OPatch工具升级R
2021-05-08 22:46:37
1537
4
原创 oracle安装APEX组件
oracle安装APEX组件安装安装前检查安装访问apex卸载apex也可以算作是oracle的一个组件,它的功能就是使oracle数据库具有web开发的功能。那么当oracle数据库在初始创建的时候没有安装apex组件,当需要使用的时候,就有两种选择了,一是使用自带的默认版本,二是安装升级官网最新版本.web开发工具低代码基于oracle数据库参考资料:apex oracle本文基于第一种方法安装,使用自带的组件安装,non-cdb安装安装前检查SQL> alter session
2021-04-07 15:09:36
2536
原创 存储过程优化
存储过程优化存储过程性能瓶颈分析--方法存储过程性能瓶颈分析--案例思路具体过程通过 awr 分析与存储过程有关的 Top SQL存储过程性能瓶颈分析–方法存储过程性能瓶颈分析–案例思路具体过程创建必要过程包:[oracle@oracle11g ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.4.0 Production on Tue Mar 30 04:56:42 2021Copyright (c) 1982, 201
2021-04-03 22:51:02
1651
原创 oracle固定执行计划3-sql profile manual续-Query Block
oracle固定执行计划3-sql profile manual续-Query BlockQuery BlockQuery Block Name执行计划Outline Data部分manual sql profilemanual绑定最佳实践总结在上一篇中,说明使用manual sql profile的方法绑定执行计划,但是有要求:虽然执行计划的输出Note部分显示已经使用到了SQL Profile,但是执行计划并没有如我们预期一样被改变,依然是全表扫描,查看存储hint的基表也显示索引扫描的hint已经被
2021-03-10 17:48:26
667
原创 oracle固定执行计划2-sql profile
oracle固定执行计划2-sql profilemauanl类型的sql profile绑定已经存在的执行计划绑定不存在的执行计划--绑定加hint执行计划上篇介绍了如何使用SQL Tuning Advisor来生成SQL Profile,以及生成的SQL Profile产生的Hint。本篇将介绍如何手工创建SQL Profiles(即不通过SQL Tuning Advisor)。那么,这里最关键的一点是,如何来手工创建SQL Profiles?使用DBMS_SQLTUNE.IMPORT_SQL_P
2021-03-08 09:56:54
1387
1
原创 oracle固定执行计划1-sql profile
oracle固定执行计划SQL Profileautomatic类型的sql profileSQL Profile1、SQL profile在Oracle 10g引入2、通过为特定的SQL文本指定优化器的一些信息,从而引导优化器生成更为合理的SQL执行计划。达到不修改SQL文本就可以改变并指定执行计划的目的。3、通常和SQL Tuning Advisor一起用4、也可以手工设置automatic类型的sql profile1、构造测试环境:session 1:conn scott/tige
2021-03-05 16:15:00
1374
原创 oracle下载的软件包或者补丁文件校验
oracle下载的软件包或者补丁文件校验背景SHA校验安装包PSU补丁校验命令背景当我们在下载安装包或者PSU,RU补丁包的时候,必须要做的一件事就是校验此文件的MD5值,因为从网络上面下载,不能保证文件的正确性,有时候会出现文件的损坏。但是oracle官方没有使用MD5校验,使用的是SHA校验。具体原理不得而知,但知道如何校验即可。下面就使用 SHA 算法相关的命令查看文件的哈希值,达到校验文件的目的SHA校验安装包下载安装包的步骤:此时点击’View Digest Detail’选项
2021-02-05 12:11:16
1024
原创 SMON清理IND$字典基表-ORA-08104
SMON清理IND$字典基-ORA-08104背景模拟故障问题现象问题原因故障处理dbms_repair.online_index_clean使用ORADEBUG唤醒SMON进程进行清理提交原来创建索引列对应的DML事务重启数据库实例手动修改IND$字典基表总结SMON功能---清理IND$字典基表功能概述触发场景清理原理禁止清理背景平常在运维工作当中,创建索引的时候,可能会遇到报错:ORA-08104。模拟故障创建test表,插入一条数据,但是不提交。SQL> conn scott/t
2021-02-04 09:58:02
513
原创 已经在使用的磁盘,在v$asm_disk中header_status字段显示CANDIDATE
已经在使用的磁盘,在v$asm_disk中header_status字段显示CANDIDATEos格式化的文件系统和asm格式化的磁盘头不是一个东西今天,看了一篇故障恢复的文章:记录一次惊心动魄的误操作(Oracle)大体的意思就是把备库的归档盘错误的当成待扩容的asm磁盘,导致归档日志被清空,adg同步状态异常。此处的事件原因里面有句话:“之前错误的认为已经在使用的磁盘,不会在v$asm_disk中header_status字段显示CANDIDATE”,如下:核心就是,如果已经被os格式化的文件系
2021-02-02 17:39:47
1689
原创 oracle中临时段的使用回收规则
smon回收临时段temp表空间使用原则如果TEMPORARY TABLESPACE的类型是TEMPORARY,TEMPORARY TABLESPACE里的使用过的空间是不会被释放的,除非shutdown。如果是PERMANENT,SMON会在process不再使用临时段之后去做清理。temp表空间使用原则临时表空间包含仅在会话期间持续存在的临时数据。临时表空间可以提高无法装入内存的多个排序操作的并发性,还可以提高排序期间空间管理操作的效率。在临时表空间中,针对特定实例的所有排序操作共享一个排序段,
2021-01-29 16:50:15
1827
原创 安装oracle 19c rac报错:2节点执行root.sh asm实例启动失败
安装oracle 19c rac报错:2节点执行root.sh asm实例启动失败 背景解决过程查看lmon trc查看mos真的是网络的问题haip禁用haip安装好的环境禁用haip执行root.sh前禁用haip恢复haip默认oracle rac安装的时候,会启动haip功能,会在心跳网卡虚出一个IP,169.254..,2节点彼此能ping通。这个是以资源ora.cluster_interconnect.haip形式出现的,那么这个资源可以禁用嘛?也就是haip可以禁用嘛?不使用haip,会有什
2021-01-25 17:06:57
3156
原创 与temp表空间相关的操作数据库都会hang
背景业务维护人员在登录数据库的时候,temp表空间使用率告警,他就去重新resize tempfile的大小,但是在resize 32G的时候,由于手误写错了,resize 2G,发现不对,就立即ctrl+c取消操作。之后又往temp表空间里面添加了2个数据文件。操作如下:操作完成后,发现在查询temp表空间相关信息的时候,就会hang,没有结果。如以上操作,查询视图v$temp_space_header,可以统计临时表空间的使用情况,但是一直会hang。补充:查询此视图的结果不准确
2021-01-14 21:30:14
676
原创 INBOUND_CONNECT_TIMEOUT与SQLNET.INBOUND_CONNECT_TIMEOUT
INBOUND_CONNECT_TIMEOUT与SQLNET.INBOUND_CONNECT_TIMEOUT参数解读测试查看inbound_connect_timeout值SQLNET.INBOUND_CONNECT_TIMEOUTINBOUND_CONNECT_TIMEOUT_listener_name总结参数解读客户端先连接listener,然后listener fork出一个server进程,然后进行登录验证。连接不是说连接成功了,而是客户端先和监听建立了连接,监听然后鉴权,密码对了才给你连接到
2020-12-21 17:25:00
1099
原创 plsql抽取坏块以外的数据
plsql抽取坏块以外的数据表上存在非空索引-- 使用索引获取ROWID不存在非空索引--dbms_rowid.ROWID_CREATE来构造ROWID上篇写了,如果段头块出现坏块,我们抽取数据的方法,这都是比较极端的情况了。如果坏块出现在普通的data block上面,而我们使用跳过坏块的方法不生效。坏块以外的数据是不是就要丢失哪?那我们有什么方法处理哪?很多人想到的是使用bbed,dul等工具来抢救,其实在很多时候我们使用pl/sql也可以完美的抢救数据.在这里我们通过模拟错误,然后使用plsql来
2020-12-08 11:19:44
369
原创 segment header损坏如何修复
segment header损坏如何修复测试环境准备修复存在非空索引-- 使用索引获取ROWID不存在非空索引--dbms_rowid.ROWID_CREATE来构造ROWID段头损坏,dbms_repair包,dbms_rowid,以及event 10231 都是没有作用的(存在非空索引的情况除外)。但是基于rowid的操作方式可以的。 关于这点,oracle mos文档中也有提及.This article describe a procedure that can be used to skip
2020-12-08 09:59:05
709
原创 使用dbms_rowid抢救数据
使用dbms_rowid抢救数据测试环境准备原理rowiddbms_rowid使用rowid来抢救数据(实际也是跳过坏块)event 10231跳过原理段头损坏不能使用dbms_rowid抢救数据通过DBMS_REPAIR包或设置10231事件,抢救坏块之外数据的方法,相比即将介绍的ROWID扫描方法,更为简洁。但上述方法只适合于出现ORA-1578的情况,而且根据经验,该方法经常不能有效进行数据抢救。因此,下面我们将详细介绍ROWID扫描方法。测试环境准备原理rowid在oracle数据库中
2020-12-07 10:42:59
312
原创 各种坏块对表select/dml操作影响
各种坏块对表select/dml操作影响测试环境准备测试block测试block 1408--L1 bitmap(extent 0)测试block 1409--L2 bitmap(extent 0)测试block 1410--segment header(extent 0)上一篇写的是table中各种类型block坏块是否能被跳过,本篇关于table如果出现坏块,对select/dml操作影响。接上个测似表的数据,来进行测试测试环境准备SQL> select SEGMENT_NAME,HEADE
2020-12-04 15:54:30
168
原创 oracle坏块跳过限制
oracle坏块跳过限制测试环境准备验证block类型table中各种类型block坏块是否能被跳过在table遇到的各种坏块中,大部分情况,我们都可以通过设置event 10231或者dbms_repair来跳过坏块,抢救其他数据;但是在部分情况下,我们设置了他们依然不能跳过坏块,数据库依然报ORA-01578,本文测试了table中各种类型的block,证明在哪些block出现异常之后不能被跳过.如果是事务数据块出现坏块可以通过dbms_repair.skip_corrupt_blocks来标记坏
2020-12-04 15:32:49
1050
原创 坏块检测
坏块检测坏块的类型物理坏块逻辑坏块坏块的模拟物理坏块模拟逻辑坏块模拟坏块的检测物理坏块检测逻辑坏块检测坏块的类型数据库坏块是指由于硬件错误等问题导致数据库在写入数据块时出现异常(nologing也可能导致).通常,我们将坏块分为2类,物理坏块和逻辑坏块。坏块的类型物理坏块物理坏块:通常是由于硬件损坏如磁盘异常导致、内存有问题、存储链路有问题、 IO 有问题、文件系统有问题、 Oracle 本身的问题等逻辑坏块:可能都是软件问题导致通常是由于oracle bug 导致,比如data block
2020-12-04 12:33:05
1270
原创 ASM磁盘组上对表空间添加数据文件报错ORA-15041
ASM磁盘组上对表空间添加数据文件报错ORA-15041基本环境恢复backup as copyasmcmd cprestore,switch基本环境SQL> create diskgroup testdg external redundancy disk '/dev/asm_arch01','/dev/asm_arch04' force ATTRIBUTE 'AU_SIZE'='4M','compatible.asm'='11.2';Diskgroup created.SQL> s
2020-11-26 17:11:49
2958
原创 asm路径出现DB_UNKNOWN
asm路径出现DB_UNKNOWN复现结论当我们在创建spfile的时候,有时候路径中会出现DB_UNKNOWN字样。出现DB_UNKNOWN的真实原因就在于在diskgroup上创建spfile的时候,没有打开rdbms(在此区别asm)数据库。其实,spfile文件出现在db_unkown里还是出现在/里,都不会影响数据库的启动和运行。因此不会引起问题,所以不调整spfile让他呆在db_unknown里也没关系。复现资源状态:[grid@11gasm ~]$ crsctl stat res
2020-11-26 15:33:53
560
原创 oracle adg初始化的时候缺少几个数据文件
oracle adg初始化的时候缺少几个数据文件基本环境恢复backup as copyasmcmd cprestore,switchbackup datafileoracle adg初始化的时候缺少几个数据文件,启动mrp进程报错,或者scn不一致,datafile n需要重新恢复的时候。我们是否想到现在又要重新duplicate一次,或者删掉,重新rman restore一次。如果数据量大,这样就会很浪费时间,那么我们有没有方法可以单独的restore这几个出问题的datafile哪?答案是有的,以下
2020-11-24 14:35:03
629
原创 RMAN catalog和switch参数解读
RMAN catalog和switch参数解读backup as copy概念catalogcatalog datafilecopy注意点catalog start with注意点:catalog backuppiececatalog archivelog总结SWITCH以前一直用backuppiece即备份集的方式,因为backup默认不加参数就为backuppiece。今天客户需要使用datafilecopy,没想到翻车了,对此形式的备份恢复不是很熟悉,特此做以实验测试。backup as copy
2020-11-23 22:55:46
1447
原创 不属于任何段的坏块导致rman备份报错
不属于任何段的坏块导致rman备份报错 故障模拟原因解决方案bbed copyallocate extentresize参考上篇博客刚说完数据文件中有坏块,会影响rman的备份,导致备份失败。今天就遇到了生产环境由于坏块导致rman备份失败,已经有20几天没有备份完成了。唯一不同的是,这些坏块的位置,经查询,不属于任何对象,也就是格式化了,但未使用的块上面。下面就模拟这一报错,及响应的解决方案。故障模拟1、此块不属于任何对象;2、此块必须是格式化未使用的坏块,如果是未格式化(从未使用过的空块)的坏块
2020-11-12 17:38:20
632
原创 allocate手动为表分配extent
allocate手动为表分配extentallocate手动分配区extenttable中各种类型block坏块是否能被跳过allocate手动分配区一般,无论是oracle 10g还是oracle11gR2,如果表原有区中的空间用完了,oracle就会默认为表一次分配一个区的空间。这是oracle自动分配的,但是当区没用完的时候,我们需要提前分配区,或者实验。那么我们可以手动给表分配一个或多个区。SQL> create table zhuo.t1(id int,name varcha
2020-11-12 10:12:44
2777
原创 ASM磁盘组ORA-15042故障处理
ASM磁盘组ORA-15042故障处理构建NORMAL冗余磁盘组确定PST位置external模拟故障现象offline fg1更新数据手动破坏4号磁盘故障出现故障原因解决方案查看PST中的磁盘状态修改磁盘状态挂载磁盘组数据验证NORMAL磁盘组中有1个failgroup意外offline(如现在市面上的一体机1个存储节点意外重启),在这个failgroup恢复回来重新成功online之前,另外一个failgroup中有一块磁盘损坏了,此时悲剧就发生了,即使被offline的failgroup还原回来,也
2020-11-10 17:29:55
2070
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人