ORA-24042 ORA-12545 ORA-26714 bug(Bug 5623403)
在做DOWNLOADstreams复制,一切准备就绪后发现启动apply进程报错,这个错误应该很常见。
先看下我导出导入的句子
expdpbstyle_dev/bstyle_dev directory=exp_dir dumpfile=BSTYLE_20120518.DMPOBJECT_CONSISTENT=Y
STATISTICS = NONE;
impdpbstyle_dev/bstyle_dev directory=exp_dir dumpfile=BSTYLE_20120518.DMP IGNORE=Y COMMIT=Y STREAMS_INSTANTIATION=Y
导出和导入时候没注意观察日志,数据初始化后开启应用进程就报如下错误。
ORA-26687: noinstantiation SCN provided for in sourcedatabase
后来查看导入导入日志
Legacy Mode Active dueto the following parameters:
Legacy Mode Parameter:"object_consistent=TRUE" Location: Command Line, ignored.
Legacy Mode Parameter:"statistics=NONE" Location: Command Line, ignored.
由于IMP/EXP 和数据泵的语法有些差距这几个参数被忽略了,特别是导入时候STREAMS_INSTANTIATION=Y,这个参数就是来设置流基于用户的初始化SCN信息,没了这个信息,应用进程应用时候就会报错
ORA-26687: noinstantiation SCN provided for in sourcedatabase
解决方案有2中。
方案1
执行如下SQL;
setserveroutput ON
DECLARE
iscn NUMBER; -- Variable to holdinstantiation SCN value
BEGIN
iscn :=DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER@portaloa();
DBMS_OUTPUT.PUT_LINE ('Instantiation SCNis: ' || iscn);
DBMS_APPLY_ADM.SET_SCHEMA_INSTANTIATION_SCN(
source_schema_name => 'user_DEV',
source_database_name => 'portaloa',
instantiation_scn => iscn,
recursive => TRUE);
END;
/
方案2
在导入的时候加入数据泵对应的STREAMS_INSTANTIATION=Y参数STREAMS_CONFIGURATION=YES
STREAMS_CONFIGURATION
Default: YES
Purpose
Specifies whether to import anyStreams metadata that may be present in the export dump file.
Syntax and Description
STREAMS_CONFIGURATION=[YES | NO]
Example
The following is anexample of using the STREAMS_CONFIGURATION parameter. You can create the expfull.dmp dump file used inthis example by running the example provided for the Export FULL parameter.See "FULL".
> impdp hr DIRECTORY=dpump_dir1DUMPFILE=expfull.dmp STREAMS_CONFIGURATION=NO
但是 即便这个参数被忽略掉了,那么它的默认值是YES,复制时候为什么,还是识别不了,这个却是个疑点。
connect strmadmin/strmadmin
begin
dbms_streams_adm.add_schema_propagation_rules(
schema_name => 'admin',
streams_name => 'szxddb_to_szxtdb',
source_queue_name => 'strmadmin.szxddb_queue',
destination_queue_name =>'strmadmin.szxtdb_queue@szxtdb',
include_dml => true,
include_ddl => true,
include_tagged_lcr => false,
source_database => 'szxddb',
inclusion_rule => true);
end;
/
#修改propagation休眠时间为0,表示实时传播LCR。
begin
dbms_aqadm.alter_propagation_schedule(
queue_name => 'szxddb_queue',
destination => 'szxtdb',
latency => 0);
end;
/
SQL> run
1 begin
2 dbms_aqadm.alter_propagation_schedule(
3 queue_name => 'prod_queue',
4 destination => 'szxtdb',
5 latency =>0);
6* end;
begin
*
ERROR at line 1:
ORA-24042: no propagation schedule exists for QUEUE PROD_QUEUE and DESTINATION
SZXTDB
ORA-06512: at "SYS.DBMS_PRVTAQIP", line 1421
ORA-06512: at "SYS.DBMS_AQADM", line 971
ORA-06512: at line 2
2 dbms_aqadm.alter_propagation_schedule(
3 queue_name => 'prod_queue',
4 destination => 'szxtdb',
5 destination_queue => 'szxtdb_queue',
6 latency => 5);
7 end;
8 /
DBMS_APPLY_ADM.EXECUTE_ERROR(
LOCAL_TRANSACTION_ID => '4.5.308567', <-------- LOCAL_TRANSACT
EXECUTE_AS_USER => FALSE);
END;
/
SQL> select error_message from dba_apply;
ERROR_MESSAGE
--------------------------------------------------------------------------------
ORA-26714: User error encountered while applying
SQL> !oerr ora 26714
26714, 00000, "User error encountered while applying"
// *Cause: An error was encountered while applying.
// *Action: Query the dba_apply_error view to determine the error and
// take the appropriate action.
SQL> select ERROR_MESSAGE from dba_apply_error;
ERROR_MESSAGE
--------------------------------------------------------------------------------
ORA-01422: exact fetch returns more than requested number of rows
SQL> !oerr ora 01422
01422, 00000, "exact fetch returns more than requested number of rows"
// *Cause: The number specified in exact fetch is less than the rows returned.
// *Action: Rewrite the query or change number of rows requested
stream配置中,capture和propagation都正常,但applyABORTED。
ORA-01422: exact fetch returns more than requested number of rows
对这个错误不明白 返回的数据比请求的数据多?
莫非表中存在重复数据,导致apply进程不能确定要更新哪个记录?
STREAM是基于LCRS的。每个LCRS对应一个操作。如果库里面的记录是两个完全一样的记录,这时库就不知道应该怎么进行操作的复制了。看来设置主键是很有必要的,一定要求对准备复制的表设置主键!
SQL> exec dbms_apply_adm.start_apply('APPLY_STANDY');
PL/SQL procedure successfully completed
SQL> SELECT apply_name, apply_captured, status,ERROR_MESSAGE FROM dba_apply;
APPLY_NAME APPLY_CAPTURED STATUS ERROR_MESSAGE
------------- -------------- -------- --------------------------------------------------
APPLY_STANDY YES ENABLED
查看目标库,CONS_ID索引已经接收到
SQL> select INDEX_NAME from DBA_indexes where owner='TEST01';
INDEX_NAME
------------------------------
P_ID
CONS_ID
SQL> select apply_name,LOCAL_TRANSACTION_ID,SOURCE_TRANSACTION_ID,ERROR_MESSAGE from dba_apply_error;
APPLY_NAME LOCAL_TRANSACT SOURCE_TRANSA ERROR_MESSAGE
------------- ---------------- ------------- ---------------------------------------------------------------
APPLY_STANDY 4.5.308567 2.2.624 ORA-01422: exact fetch returns more than requested number of rows
可以打印这个错误信息号,看到old,new值确实是我刚才修改前的数值
SQL> EXEC print_transaction('4.5.308567');
----- Local Transaction ID: 4.5.308567
----- Source Database: LISHZ
----Error Number: 1422
----Message Text: ORA-01422: exact fetch returns more than requested number of rows
type name: SYS.LCR$_ROW_RECORD
source database: LISHZ
owner: TEST01
object: T7
is tag null: Y
command_type: UPDATE
old(1): ID
1
new(1): ID
2
--message: 2
type name: SYS.LCR$_ROW_RECORD
source database: LISHZ
owner: TEST01
object: T7
is tag null: Y
command_type: UPDATE
old(1): ID
2
new(1): ID
3
PL/SQL procedure successfully completed
再次执行原先的事务,
SQL>
SQL> BEGIN
2 DBMS_APPLY_ADM.EXECUTE_ERROR(
3 LOCAL_TRANSACTION_ID => '4.5.308567',
4 EXECUTE_AS_USER => FALSE);
5 END;
6 /
PL/SQL procedure successfully completed
查看错误记录表,已经都正常了。
SQL> select apply_name,LOCAL_TRANSACTION_ID,SOURCE_TRANSACTION_ID,ERROR_MESSAGE from dba_apply_error;
APPLY_NAME LOCAL_TRANSACTION_ID SOURCE_TRANSA ERROR_MESSAGE
------------- ---------------------- ------------- ------------------------
再次查看t7表,记录已经和原库同步了。
SQL> select * from test01.t7;
ID
----------
2
3
ERROR_MESSAGE from dba_apply_error;
2、非法的数据类型:Invalid data type for column "malformed redo"。malformed redo列,不知道这个列,google了一下,据说是个bug(Bug 5623403),可怜没有metalink账号。由于capture遭遇到不支持的数据类型,默认会自动终于capture,可以看到状态变为ABORTED。
alert日志:
ORA-24042 ORA-12545 ORA-26714 bug(Bug 5623403)相关推荐
- 3D Slicer画病灶可能产生的问题+核磁共振影像数据处理-14-3d slicer画病灶“三宗罪”|常见bug(错误)汇总
3D Slicer画病灶可能产生的问题+核磁共振影像数据处理-14-3d slicer画病灶"三宗罪"|常见bug(错误)汇总 讲解视频内容请移步Bilibili: https:/ ...
- [html] IE6文字溢出BUG(别名:多出来的猪、谍影重重)怎么解决呢?
[html] IE6文字溢出BUG(别名:多出来的猪.谍影重重)怎么解决呢? 删除注释或不设置浮动 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, 但坚持一定很酷.欢迎大家一起讨论 主 ...
- css文本省略(······)行高错位(bug)- 解决办法
应用css文本省略(······)属性:-webkit-line-clamp: 3; 导致:行高错位.(F12查看发现css属性line-height的值并没变,但为什么浏览器显示文本的实际行距却变小 ...
- FIREDAC(DELPHI10 or 10.1)提交数据给ORACLE数据库的一个不是BUG的BUG
发现FIREDAC(DELPHI10 or 10.1)提交数据给ORACLE数据库的一个不是BUG的BUG,提交的表名大小写是敏感的. 只要有一个表名字母的大小写不匹配,ORACLE就会认为是一个不认 ...
- 大家一起来找茬(BUG)
大家一起来找茬(BUG) ----------目录---------- 一.上手体验 1.主界面 2.功能 二.程序的 BUG 三.必应词典的 BUG 1."每日一句"里的句子不能 ...
- VS BUG(5) error C2491: “****“: 不允许 dllimport 函数 的定义
VS BUG(5) error C2491: "****": 不允许 dllimport 函数 的定义 前言 一. BUG提示 二. 分析解决 三. 小结 前言 程序员难免要与BU ...
- 脚本小子--------python脚本循环导出H3C华三核心防火墙context虚拟防火墙配置(你凝视bug,bug也在凝视你)
写在前面:谨慎!谨慎!谨慎!!! 运维是一门经验的学科,是一门试错的学科,但生产环境绝对不是绝对不是让大家试错的地方! 所有涉及生产设备的调试.对接都要本着小心谨慎的态度去操作,万不可将没有测试环境对 ...
- 浏览器css bug及bug解决方法
Bugs及解决方案列表(以下实例默认运行环境都为Standard mode): 如何在IE6及更早浏览器中定义小高度的容器? 方法: #test{overflow:hidden;height:1px; ...
- 测试篇(二): 如何合理的创建bug、bug的级别、bug的生命周期、跟开发产生争执怎么办
目录 一.如何合理的创建bug 二.bug的等级 三.bug的生命周期 四.和开发产生争执怎么办 一.如何合理的创建bug 创建Bug的目的就是为了能够让其他人可以尝试复现 一个合格的bug应该包含以 ...
- 软件测试Bug和bug生命周期中的各种状态
软件测试Bug和bug生命周期中的各种状态 2016年07月03日 22:50:08 阅读数:5470 所有软件开发过程的目的都是为客户(软件产品的终端用户)提供一个解决问题的方案(软件产品),以帮助 ...
最新文章
- BCH网络升级顺利完成,将创新和开发推向新高度
- sqluldr2支持mysql吗_Oracle SQLULDR2 以及 SQLLDR 进行导入导出的功能说明
- Java每天5道面试题,跟我走,offer有!(八)
- Jquery特殊效果
- 哪些异常是RuntimeException?Sql异常属于RuntimeException吗?Spring下SQL异常事务回滚
- 深入理解机器学习中的信息熵、KL散度、交叉熵
- 灵派编码器HTTP API接口说明
- 教你如何恢复U盘里的中毒文件
- 译码器(24译码器,38译码器)笔记
- 代理ARP产生路由环路问题分析
- sl4a+android截屏,在Android桌面上使用SL4A Python显示数据(example)
- 当下移动互联网的6个泡沫,快要破了!
- 抖音作品实时监控采集数据,抖音达人下关键词数据抓取
- 高达1000美元,扫地机器人Roomba如何成为疫情期间的赢家?
- zoj 1905 Power String(后缀数组)
- 转:C语言面试题大汇总 (图像处理方向)
- TRUNK端口的配置实验
- 错误 LNK2019 无法解析的外部符号 main,函数 “int __cdecl invoke_main(void)“ (?invoke_main@@YAHXZ)
- 分压器有哪些最新发表的毕业论文呢?
- FTP(File Transfer Protocol,文件传输协议)