第54期 NBU rman备份异机恢复
每个月我们都会做数据库灾难恢复演练,本月正好涉及到oracle灾难恢复演练。我们的备份是使用NBU一体机进行rman备份的。NBU一体机备份策略的情况。备份脚本使用的nbu自己的。备份脚本内容如下:#!/bin/sh # $Header$ # #bcpyrght #**********************************************************
第53期 排查分析最近30天内SQL语句性能出现退化的SQL
DBA_HIST_SQLSTAT 显示 SQL 统计信息的历史数据。此视图基于一系列标准,从 V$SQL 获取TOP SQL 语句及其统计信息。总计值表示自实例启动以来的累计统计值。增量值表示 DBA_HIST_SNAPSHOT 视图中 BEGIN_INTERVAL_TIME 到 END_INTERVAL_TIME 时间间隔内的统计值。此视图与 DBA_HIST_OPTIMIZER_ENV、DBA
第52期 Oracle 19c 时区升级TSTZ 42 TO TSTZ 43
在oracle 19c数据库中使用expdp,impdp时,提示ORA-39405: Oracle Data Pump does not support importing from a source database with TSTZ version 43 into a target database with TSTZ version 42.。查询oracle mos文档发现这个ORA报错明
第51期 OGG执行Send Extract Showtrans在数据库中不存在 XIDs
在清理归档日志时,数据库提示"RMAN-08137: WARNING: archived log not deleted, needed for standby or upstream capture process"。根据提示信息获得是“RMAN-08137:警告:存档日志未删除,备用或上游捕获过程需要”,因为恢复检查点指向旧日期的归档日志,所以日志不能删除。因为我们使用了o
第50期 OGG在现有进程中新增一个同步表的流程
在很多业务场景中,在使用 OGG (Oracle GoldenGate) 进行数据同步时,为已有的同步进程新增需要同步的表。这是一个非常常见的运维操作。 在原有同步进程里新增同步表的时候,考虑到源端表上可能会有事务,数据是实时变化的,不能单纯的使用expdp直接导出再导入,这样可能会导致丢失数据或者数据重
第49期 OGG同步延时问题排除
最近经常收到ogg数据同步验证的邮件,一开始没注意,以为延时是正常现象,以为有业务执行了大事务造成的,也没放在心上。但是最近比较频繁,并且延时的时间还比较长。于是我就开始简单排除了一下。排除的步骤如下:首先到源端查看一下是否有大事务发生。使用命令 GGSCI (zlf-lis-ogg-downstream) 2> send extract ext1,showtrans经过排除后,并
第48期 OGG 实现 MySQL 数据库数据实时迁移
一、OGG使用背景介绍在金融、电商等关键业务领域,数据的准确性与实时性是保障业务稳定运行和决策精准的核心要素。哪怕是瞬间的数据延迟或错误,都可能在这些领域引发严重的连锁反应,造成巨大的经济损失和信誉损害。因此,确保数据库之间的高效同步成为了技术架构中的关键环节。Oracle GoldenGate(OGG)工具,作为数据同步与集成领域的佼佼者,能够为企业提供强大的数据容灾和迁移解决方案。借助OGG,
第47期 OGG DownStream 部署
OGG DownStream 部署:主要的目的是为了减轻源数据库负载。为什么选择OGG DownStream 部署?在许多情况下,公司不希望将主生产数据库用于下游层,以提取数据用于集成或报告目的。相反,他们希望数据库仅为其核心关键应用程序连接。在其他一些场景中,无法访问主要生产数据库,例如SaaS或应用程序供应商的数据库等等。为了缓解问题或解决挑战并实现实时数据提取,ogg设计了GoldenGat
第46期 DataPump Export (EXPDP) Fails With Errors ORA-31693 ORA-31617 ORA-19505
在RAC环境上使用expdp进行逻辑备份时,报如下错误。ORA-31693: Table data object ""."" failed to load/unload and is being skipped due to error:ORA-31617: unable to ope
第45期 如何在GoldenGate下游配置中删除从源数据库接收到的源数据库上的归档
今天介绍一下如何在GoldenGate下游配置中删除从源数据库接收到的挖掘数据库上的归档日志。解决方案:从另一个数据库收到的归档日志被称为FOREIGN ARCHIVED LOG。从源数据库收到的归档文件被视为外部归档文件,可以通过在挖掘数据库上查询DBA_REGISTERED_ARCHIVED_LOG来检查外部归档文件的信息。SQL> select CONSUMER_NAME, THREA
第44期 使用什么命令能删除 FOREIGN ARCHIVED LOG
我在维护数据库时,发现alter日志报如下错误:Errors in file /app/oracle/diag/rdbms/ogg/ogg/trace/ogg_rfs_1315163.trc:ORA-19815: WARNING: db_recovery_file_dest_size of 214748364800 bytes is 100.00% used, and has 0 remainin
第43期 Oracle 19c 打补丁19.25.0.0报错Java1.7could not be located OPatch can
今天我们在给oracle数据库19c打补丁时,补丁要求升级到19.25.0.0.241015时,报错信息如下:[oracle@sit-db OPatch]$ ./opatch version./opatch: line 839: [: syntax error: `-lt' unexpected./opatch: line 839: [: syntax error: `-lt' u
第41期【技术人的故事】数据库ACE专家是如何沦落为水果奸商的
兄弟姐妹们,今天和大家一起聊聊我的技术人的故事,我的故事要从头到尾可以写一本书啊。哈哈。我现在在一家金融公司工作,是一名专职数据库管理员,2025年我被Oracle公司授予了ACEs的称号,Oracle ACE是Oracle公司为表彰在技术社区中持续分享知识、推动技术发展的专家而设立的全球性荣誉。获得该提名不仅是对个人技术能力的认可,更是对社区贡献的肯定。我的Oracle ACEs的链接🔗:htt
第41期 Oracle 数据库配置白名单
对于oracle数据库,是否有方法配置ip白名单以限制数据库用户登录?例如:用户A只能从客户端192.168.1.132登录到192.168.1.135数据库。解决方案:使用触发器来实现这个需求,是最方便,且最轻量级的方法。不会对数据库产生任何影响。有很多成功的案例已经使用这个方法。我们可以使用trigger的方式来实现这个功能,这个方法在11g和19c都
第40期 通过dbms_system.ksdwrt把日志写到alter文件中
有时候我们需要把自己的一些信息记录到oracle的alter告警日志中,我有一个这样的场景,要记录那些客户端ip地址访问了数据库服务器,并把这些信息记录到alter告警日志。定义一个存储过程,记录数据库的白名单信息,实现只有是白名单的客户,才能访问数据库,并且把访问的客户信息记录到alter告警日志中。在alter告警日志中,记录只有10.10.30.85的客户端才能访问数据库,并在alter告警
第38期 Oracle使用跨平台增量备份减少可传输表空间的停机时间之XTTS(使用rman方式)
一、XTTS简介1.1、简介XTTS(Cross Platform Transportable Tablespaces)属于跨平台迁移表空间,它是从Oracle 8i开始就引入的一种基于表空间传输的物理迁移方法,命名为TTS,经历各个版本的不断演进,从11gR2开始,在相对停机时间要求日益减少的情况,为了应对越来越大的数据量跨平台迁移,Oracle推出了新的解决方案—加强版TTS(以下简称XTTS
第35期 在执行 Grid Infrastructure 配置之前如何安装 Grid Infrastructure 补丁
用途一些情况下,执行 root 脚本之前需要安装补丁以保证 root 脚本执行成功(例如 Document:1212703.1) 。本文档说明在配置 GI 之前(执行 root.sh 或 rootupgrade.sh 之前)如何安装 Grid Infrastructure 补丁(包括 GI PSU 补丁) 。如果是升级,该文档适用于在新的 GI 主目录安装补丁的情况,不适用于在已有(当前
第34期 CURSOR_SHARING和FORCE_MATCHING_SIGNATURE对SQL计划稳定性的局限性
在 Oracle 数据库中,CURSOR_SHARING 参数和 FORCE_MATCHING_SIGNATURE 是用于优化 SQL 语句共享和执行计划稳定性的工具。然而,它们在某些情况下存在局限性,尤其是在处理复杂或动态生成的 SQL 语句时。本文将探讨这些局限性,并分析它们对 SQL 计划稳定性的影响。CURSOR_SHARING=FORCE 的作用CURSOR
第32期 NULL 不是零!
之前我写过一篇文章,讨论了 COUNT(*) 和 COUNT(column) 在语义上是不同的(链接)。如果被计数的列中包含 NULL 值,这些查询可能会返回不同的结果。这种差异源于 NULL 不是一个具体的值,而是一种状态,表示“值未知”或“未输入值”。 因此,如果你是 DBA 或数据库开发人员,最好理解 NULL 如何在你编写的SQL 的使用。
第31期 SQL中COUNT(*)与COUNT(column)区别
SELECT COUNT(*) 和 COUNT(column) 是不同的在SQL中,COUNT(*) 和 COUNT(column) 是两个常用的聚合函数,但它们的行为和结果可能会有所不同。理解它们之间的区别对于编写正确的查询非常重要。COUNT(*)COUNT(*) 用于计算表中的行数,包括所有行,无论列中的值是否为 NULL。它的作用是统计表中