物理备库转逻辑备库的处理

2023-12-27 16:04
文章标签 逻辑 处理 物理 备库

本文主要是介绍物理备库转逻辑备库的处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Physical备库切换到logical备库,需要在primary库构建LogMiner字典及开启supplemental日志,在这之前应先停用physical备库的MRP进程,以避免提前应用含LogMiner字典的REDO数据,造成转换为逻辑Standby后,SQL应用时没有LogMiner字典数据的REDO数据而影响到逻辑Standby与Primary的正常同步。
备库执行;
1、ALTER DATABASE RECOVER MANAGED STANDBY DATABASE CANCEL;
2、生成LogMiner字典,这样redo日志中的变化才能被LogMiner字典的SQL Apply组件正确解析。
主库构建LogMiner字典
create tablespace logmnrtbs datafile '/opt/oracle/oradata/RHT/logmnrtbs.dbf' size 100m autoextend on next 5m maxsize 2000m;
execute dbms_logmnr_d.set_tablespace('logmnrtbs');
exec dbms_logstdby.build;
3、如果需要处理TEMP就进行TEMP表空间的处理
ALTER DATABASE TEMPFILE '/opt/oracle/oradata/RHT/temp01.dbf' DROP;
create temporary tablespace temp1 tempfile '/opt/oracle/oradata/RHT/temp.dbf' size 2000m autoextend on next 100m maxsize unlimited;
4、转physical备库为logical备库:
把物理备库恢复为逻辑备库
SQL> shutdown immediate;
SQL> startup mount exclusive;
ALTER DATABASE RECOVER TO LOGICAL STANDBY db_name;
alter database recover to logical standby RHT(数据库名是db_name,很重要一定要弄对);
5、由于逻辑standby与primary数据库事务并不一致,因此第一次打开时必须指定resetlogs子句
shutdown immediate;
startup mount;
ALTER DATABASE OPEN RESETLOGS;
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

–开启实时应用

ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;

–开启应用

ALTER DATABASE START LOGICAL STANDBY APPLY;

–关闭应用

ALTER DATABASE STOP LOGICAL STANDBY APPLY;

select name,open_mode,database_role,protection_mode from v$database; 
优先性能
EXECUTE DBMS_LOGSTDBY.APPLY_SET('APPLY_SERVERS',8);
EXECUTE DBMS_LOGSTDBY.APPLY_SET('PREPARE_SERVERS',4);
EXECUTE DBMS_LOGSTDBY.APPLY_SET('APPLY_SERVERS',16); 
ALTER DATABASE STOP LOGICAL STANDBY APPLY;
ALTER DATABASE START LOGICAL STANDBY APPLY IMMEDIATE;
过滤对于审计表的处理
exec dbms_logstdby.skip('DML','SYS','AUD$');
exec dbms_logstdby.skip('SCHEMA_DDL','SYS','AUD$');
1、dba_logstdby_events
查看逻辑standby近期操作日志
2、dba_logstdby_log
记录当前归档日志应用情况
select * from dba_logstdby_events order by event_time;

3、v$logstdby_status
显示LogMiner的统计信息和状态
4、v$logstdby_process
SELECT type, status, high_scn FROM v$logstdby;
显示当前log应用服务的相关信息,常用于诊断日志逻辑应用的性能问题
5、v$logstdby_progress
显示log应用服务当前进行状态
6、v$logstdby_status
显示sql应用的大致状态
故障处理案例
一、故障现象:逻辑STANDBY数据库日志文件异常,无法应用
先查看一下哪个文件异常,出现GAP:

解决逻辑standby Gap问题

2.1 对于logical standby database,在logical standby database上查询DBA_LOGSTDBY_LOG视图。

SELECT THREAD#, SEQUENCE#, FILE_NAME
  FROM DBA_LOGSTDBY_LOG L
 WHERE NEXT_CHANGE# NOT IN
       (SELECT FIRST_CHANGE# FROM DBA_LOGSTDBY_LOG WHERE L.THREAD# = THREAD#)
 ORDER BY THREAD#, SEQUENCE#;
 

2.2 Copy 缺失的log file到logical standby database,然后注册:
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE '/disk1/oracle/dbs/log-1292880008_7.arc';
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE '/disk1/oracle/dbs/log-1292880008_8.arc';
SQL> ALTER DATABASE REGISTER LOGICAL LOGFILE '/disk1/oracle/dbs/log-1292880008_9.arc';

处理过程一:把正确的文件放在指定目录后参试再注册,但提示重复注册
SQL> ALTER DATABASE REGISTER LOGFILE '/archivelog/lstandbyarch_2_27774_614088933.arc';
ALTER DATABASE REGISTER LOGFILE '/archivelog/lstandbyarch_2_27774_614088933.arc'
*
ERROR at line 1:
ORA-01289: cannot add duplicate logfile
处理过程二:尝试删除日志,但不成功
SQL> execute dbms_logmnr.add_logfile('/archivelog/lstandbyarch_2_27774_614088933.arc',dbms_logmnr.REMOVEFILE);
BEGIN dbms_logmnr.add_logfile('/archivelog/lstandbyarch_2_27774_614088933.arc',dbms_logmnr.REMOVEFILE); END;
*
ERROR at line 1:
ORA-01290: cannot remove unlisted logfile
/archivelog/lstandbyarch_2_27774_614088933.arc
ORA-06512: at "SYS.DBMS_LOGMNR", line 68
ORA-06512: at line 1
处理过程三:通过delete from system.logmnr_log$删除日志成功,后注册成功,问题排除
SQL> delete from system.logmnr_log$ where session#=1 and sequence#=27774;
提示开启了备库模式不能删除时:
alter session disable guard;
会话已更改。
JSSLDG2> create table tmp55 as select * From b;
表已创建。
只有关闭了guard保护之后,才能操作数据,然后别忘了再启用guard,以避免不经意的操作对逻辑standby的配置造成影响。
JSSLDG2> alter session enable guard;
1 row deleted.
SQL> ALTER DATABASE REGISTER LOGFILE '/archivelog/lstandbyarch_2_27774_614088933.arc';
Database altered.
SQL> 
二、故障现象: ORA-26786造成逻辑备库无法应用SQL一例
1、找到事务异常的sql和事务id
SQL> select XIDUSN, XIDSLT, XIDSQN , status , event from dba_logstdby_events order by event_time;XIDUSN XIDSLT XIDSQN STATUS EVENT
---------- ---------- ---------- ------------------------------ -------------------------------
5 22 1826 ORA-01403: no data found delete from "SHANKAR"."TEST1" where "ID" = 1 and
"ENAME" = 'shankar' and ROWID = 'AAAAAAAABAAAJHaAAA'You should not compare the ROWID of PRIMARY & STANDBY database as it will be complete 
different and sql apply will not check the row based on ROWID that is shown in the sql statement above.

2.执行跳过这个事务的脚本
2) Skip the failing transaction from logical standby database.Execute the procedure dbms_lostdby.skip_transaction(XIDUSN , XIDSLT ,XIDSQN) of the failing transaction.SQL> exec dbms_logstdby.skip_transaction (5,22,1826);

3、重新恢复同步命令。
重新初始化同步:
注意初始化时,注意关闭数据同步后再操作:
ALTER DATABASE STOP LOGICAL STANDBY APPLY;
exec DBMS_LOGSTDBY.INSTANTIATE_TABLE('RHT', 'TSYSOPTION', 'RHTZS'); 

这篇关于物理备库转逻辑备库的处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/543668

相关文章

Python自动化Office文档处理全攻略

《Python自动化Office文档处理全攻略》在日常办公中,处理Word、Excel和PDF等Office文档是再常见不过的任务,手动操作这些文档不仅耗时耗力,还容易出错,幸运的是,Python提供... 目录一、自动化处理Word文档1. 安装python-docx库2. 读取Word文档内容3. 修改

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

Redis如何使用zset处理排行榜和计数问题

《Redis如何使用zset处理排行榜和计数问题》Redis的ZSET数据结构非常适合处理排行榜和计数问题,它可以在高并发的点赞业务中高效地管理点赞的排名,并且由于ZSET的排序特性,可以轻松实现根据... 目录Redis使用zset处理排行榜和计数业务逻辑ZSET 数据结构优化高并发的点赞操作ZSET 结

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

mysql外键创建不成功/失效如何处理

《mysql外键创建不成功/失效如何处理》文章介绍了在MySQL5.5.40版本中,创建带有外键约束的`stu`和`grade`表时遇到的问题,发现`grade`表的`id`字段没有随着`studen... 当前mysql版本:SELECT VERSION();结果为:5.5.40。在复习mysql外键约

虚拟机与物理机的文件共享方式

《虚拟机与物理机的文件共享方式》文章介绍了如何在KaliLinux虚拟机中实现物理机文件夹的直接挂载,以便在虚拟机中方便地读取和使用物理机上的文件,通过设置和配置,可以实现临时挂载和永久挂载,并提供... 目录虚拟机与物理机的文件共享1 虚拟机设置2 验证Kali下分享文件夹功能是否启用3 创建挂载目录4

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ