日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

逻辑备库之ORA-01403解决方法

發(fā)布時間:2024/1/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 逻辑备库之ORA-01403解决方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Oracle?的Data Guard環(huán)境中,?邏輯備庫應用進程停止,日志顯示錯誤為ORA-01403 not data found?。

它具體信息如下:

Mon May 21 10:39:31 2012

LOGSTDBY status: ORA-01403: no data found

LOGSTDBY Apply process P004 pid=143 OS id=13936 stopped

Mon May 21 10:39:32 2012

Errors in file /u01/app/oracle/admin/db/bdump/rdb_lsp0_13922.trc:

ORA-12801: error signaled in parallel query server P004

ORA-01403: no data found

LOGSTDBY Analyzer process P003 pid=38 OS id=13932 stopped

?

這種錯誤在logical standby?環(huán)境中很常見。

通過dba_logstdby_events?視圖查詢失敗的事務信息。

查詢SQL?如下所示:

select event_time,

?????? xidusn,

?????? xidslt,

?????? xidsqn,

?????? status,

?????? status_code,

?????? event,

?????? 'exec dbms_logstdby.skip_transaction(' || xidusn || ',' || xidslt || ',' ||

?????? xidsqn || ');' as exec_sql,

?????? a.*

? from dba_logstdby_events a

?where event_time = (select max(event_time) from dba_logstdby_events);

?

??從event?列中我們查詢出失敗的具體信息,是更新一張表失敗。

?

解決方法

?

這類問題的解決方法有兩種:

第一種,可以使用skip_transaction?方法忽略掉該事務。

?exec dbms_logstdby.skip_transaction(487,12,951001);

但這個方法有后遺癥,接下來的同步過程中會有不斷的麻煩,數據沒找到的問題會層出不窮。

?

第二種,使用skip?方法忽略掉該表的所有的操作。

alter database stop logical standby apply;

execute dbms_logstdby.skip('DML','username','T_ZHUSHOU_ORDER');

execute dbms_logstdby.skip('SCHEMA_DDL','username','T_ZHUSHOU_ORDER');

alter database start logical standby apply immediate;

忽略掉出問題的表的DML?操作和SCHEMA_DDL?操作。

?

?

數據復制停止的問題是解決了,但這里造成了一張表事實上不能同步了。

?

新問題:如何將已skip?的表再加入logical standby?中?

?

解決這個新問題主要是靠DBMS_LOGSTDBY.INSTANTIATE_TABLE?方法。

?

官方對它的使用說明:

This procedure creates and populates a table in the standby database from a corresponding table in the primary database. The table requires the name of the database link (dblink) as an input parameter. If the table already exists in the logical standby database, it will be dropped and re-created based on the table definition at the primary database. This procedure only brings over the data associated with the table, and not the associated indexes and constraints.

?

操作步驟如下:

1?、在邏輯備庫創(chuàng)建指向主庫的數據庫鏈路

2?、在邏輯備庫上unskip?掉該表。

unskip?之前需停止邏輯備庫應用日志

alter database stop logical standby apply;

execute dbms_logstdby.unskip('DML','username','T_ZHUSHOU_ORDER');

execute dbms_logstdby.unskip('SCHEMA_DDL','username','T_ZHUSHOU_ORDER');

3?、使用INSTANTIATE_TABLE?重新實例化一張表。

EXECUTE DBMS_LOGSTDBY.INSTANTIATE_TABLE('username', 'T_ZHUSHOU_ORDER', 'DB_RAC');

注意,源庫上的用戶必須有??SELECT_CATALOG_ROLE?權限,否則會報錯ORA-16276

SQL> EXECUTE DBMS_LOGSTDBY.INSTANTIATE_TABLE('username', 'T_ZHUSHOU_ORDER', 'DB_RAC');

?

begin DBMS_LOGSTDBY.INSTANTIATE_TABLE('username', 'T_ZHUSHOU_ORDER', 'DB_RAC'); end;

?

ORA-16276: specified database link does not correspond to primary database

ORA-06512: at "SYS.DBMS_INTERNAL_LOGSTDBY", line 5361

ORA-02019: connection description for remote database not found

ORA-06512: at "SYS.DBMS_LOGSTDBY", line 636

ORA-06512: at line 2


轉載于:https://blog.51cto.com/yunlongzheng/1536776

總結

以上是生活随笔為你收集整理的逻辑备库之ORA-01403解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。