1. 程式人生 > >expdp 報錯ORA-7445 的一個問題展開

expdp 報錯ORA-7445 的一個問題展開

某客戶說一套資料庫由於非正常關機重啟之後,進行資料匯出發現報錯,expdp無法正常工作,報錯之後直接退出:

?
1 2 3 4 5 6 7 處理物件型別 SCHEMA_EXPORT/JOB . . 匯出了 "STATS"."T_REPORT_MONTH_TEMPS"              988.2 MB 1292221 行 ORA-39014: 一個或多個 worker 程序已過早地退出。 ORA-39029: worker 程序 1 (程序名為 "DW01") 過早地終止
ORA-31672: Worker 程序 DW01 意外停止。 作業 "SYS"."SYS_EXPORT_SCHEMA_04" 因致命錯誤於 23:58:10 停止

而檢查此時的alert log可以發現有如下類似的錯誤:

?
1 2 Errors in file /u01/app/oracle/admin/orcl/bdump/orcl_dw01_28608.trc: ORA-07445: 出現異常錯誤: 核心轉儲 [klufprd()+321] [SIGSEGV] [Address not mapped to object] [0x000000000] [] []

從上面的資訊我們可以得到如下幾個結論:

1、expdp的寫程序報錯,因為日誌產生是dw程序。

2、dw程序報錯的原因是遭遇了ora-07445 [klufprd()+321]錯誤。

3、對於[klufprd()+321] 這個函式,非常少見。但是從前面2點我們可以知道這肯定與buffer cache有關係。
所以要臨時解決這個問題也很簡單。通過alter system flush buffer_cache 重新整理快取之後,再次進行expdp操作.
後續客戶嘗試了之後,發現expdp 操作雖然仍然會報錯,但是expdp 不會異常終止,會繼續完成後面其他物件的匯出。

進一步分析報錯的資訊可以看到,有如下這樣的提示:

*** SESSION ID:(2760.1968) 2016-04-08 00:14:14.347 row 01808438.0 continuation at file# 6 block# 33784 slot 14 not found ************************************************** KDSTABN_GET: 0 ..... ntab: 1 curSlot: 14 ..... nrows: 14 ************************************************** *** 2016-04-08 00:14:14.348 ksedmp: internal or fatal error ORA-00600: ÄÚ²¿´íÎó´úÂë, ²ÎÊý: [kdsgrp1], [], [], [], [], [], [], [] Current SQL statement for this session: SELECT /*+NESTED_TABLE_GET_REFS+*/ "STATS"."T_REPORT_MONTH".* FROM "STATS"."T_REPORT_MONTH" ----- Call Stack Trace -----

很明顯,這裡提到這個這個表,恰好就是expdp報錯所遇到的表,只不過我們重新整理buffer cache之後,expdp可以跳過這個表繼續完成其他物件的匯出。
從上述的資訊來看,這裡存在錯誤。客戶也意識到,通過dbv 對資料檔案進行檢查,但是發現檔案並沒有損壞。
這裡我們要注意,dbv 同時是檢查物理壞塊,對於邏輯壞塊通常無能為力,當然塊內的邏輯錯誤,這型別的塊dbv是可以檢查出來的。
但是從這裡的資訊來看,Oracle發現所需要的這行記錄row 01808438.0 應該在file 6 block 33784 中找到,但是卻並沒有發現。
注意,這裡的file 6 block 33784 本身是完好的。
那麼這裡的row 01808438.0 表示什麼含義呢?
其實這是表示的nrid;這可以理解為一直指標;其中前面一部分是表現rdba地址,後面表現行編號。
如果要進一步分析為什麼會這個錯誤,我們怎麼辦呢? 很簡單,分別將block 33784以及rdba 01808438(16進位制) 進行dump。 如下是轉換的指令碼:

?
1 2 3 4 5 6 7 SQL>  SELECT dbms_utility.data_block_address_block(25199672) "BLOCK", 2         dbms_utility.data_block_address_file(25199672) "FILE" 3      FROM dual; BLOCK       FILE ---------- ----------

相關推薦

expdp ORA-7445一個問題展開

某客戶說一套資料庫由於非正常關機重啟之後,進行資料匯出發現報錯,expdp無法正常工作,報錯之後直接退出: ? 1 2 3 4 5 6 7 處理物件型別 SCHEMA_EXP

expdp query匯出 ORA-29913 ORA-01722

 [[email protected] temp]$ expdp  clspuser/clsp  dumpfile=hmtdb20130301_hmt_log.dmp directory= pump_dir  tables = crf_p2p_rpt_bill_pen_new query=crf_p

簡單記錄一次REDO文件損壞 ORA-00333重做日誌讀取塊出錯

clas 後者 利用 實例恢復 poi cancel true cover html 一.故障描寫敘述 首先是實例恢復須要用到的REDO文件損壞 二、解決方法 1.對於非當前REDO或者當前REDO可是無活動事務使用下面CLEAR命令: 用CLEAR命令重建該日誌

Oracle執行SQLORA-00922

log define sql option -1 nbsp 執行sql 問題 val 問題描述: 對Oracle數據庫執行序列化腳本出錯,ora-00922 missing or invalid option #無效的選項 問題解決:

11.2.0.1升級到11.2.0.4之中的一個:UtilSession failed: Patch 9413827

popu undle util all weight 文檔 fail sta ack UtilSession failed: Patch 9413827 requ

Oracle 周末 ORA-04031

rtu OS art 數據庫服務器 無法登錄 登錄 數據庫 AR ora 早上打開電腦,CRT滿屏 4031,腦袋都炸了 Mon Mar 19 05:55:25 CST 2018Errors in file /u01/app/oracle/admin/OMS10G/bdum

Navicat連接Oracle數據庫ORA-28547解決方法

style ica 點擊 解決 註意 data 數據 img 必須 先說明下我機器的環境: 1、Win10 - 64bit 2、Navicat Premium_11.2.7 - 64bit 3、未安裝Oracle數據庫(包括Client也未安裝) 解決方法:

Oracle插入數據 (ORA-00913: 值過多)

mgr val sql 客戶經理 highlight 系統 系統管 int 插入數據 原語句,表面沒有雙引號:INSERT INTO xm_ftp_lvl_mgr_hr VALUES(‘191‘,‘457‘,‘張A810‘,‘080072‘,‘1‘,‘null‘,‘nul

Oracle 12c DG備庫AlertORA-01110

ring ror app unp can round stand reported apply 環境是12.2.0.1 version, Oracle Data Guard備庫今天故障恢復了一下,RMAN恢復後發現備庫Alert一直報錯,但是備庫主庫同步一致,數據一致。20

Oracle 12c DG備庫AlertORA-10877全庫恢復

rec file ack ble archive 數據 edi guard enc 12C Oracle Data Guard 備庫今天異常 2018-07-05T21:31:32.291970+08:00GEN0 (ospid: 75371): terminating t

在cmd下使用imp命令導入oracle的dmp文件ORA-02304

ati 導出 oid 標識符 gre exp gate 信息 flag 報錯信息如下: IMP-00017: 由於 ORACLE 錯誤 2304, 以下語句失敗: "CREATE TYPE "EN_CONCAT_IM" TIMESTAMP ‘2018-04-09:16:

RAC+ADG 異機恢復-ORA-16072

orm port tran sql tin ict 可用 protect store 1、環境描述11g RAC+ADG 最大可用模式 2、異機恢復告警日誌報錯如下:ORA-16072: a minimum of one standby database destinati

解決Oracle建立空間索引ORA-29855,ORA-13249,ORA-29400,ORA-01426

問題描述 公司這邊用了Oracle Spatial來儲存GIS資料資訊,今天在某表上建立空間索引時報了下面的錯: 此處舉例說明: 假如有表TEST,其中有一列SHAPE儲存維度資訊。 CREATE INDEX IDX_TEST_SHAPE ON TEST(SHAPE) INDEX

Oracle應用目錄空間滿,日誌ORA-00600定位方法

     某日,突然出現/oracle應用目錄空間滿,通過”du -sh”命令依次查詢空間異常目錄,發現在/oracle/app/oracle/diag/rdbms/oracleinstance/oracleinstance目錄下incident和trace佔用了異

PLSQL鏈接oracle--ORA-12154: TNS: 無法解析指定的連接標識符

sta lock cli 需要 nes 說明 cat 目錄 解析 D:\install\PLSQL\instantclient_11_2   今天重新安裝了oracle 11g,plsql連接oracle時發生報錯:ORA-12154: TNS: 無法解析指定的連接標識符

ORA-19809 ORA-19804

acdb 優化策略 對象 使用 ros pac class policy seq 現象 問題檢查 查看群集狀態,發現歸檔掛起 [oracle@jydb1 ~]$ srvctl status database -d orcl -v 查看空間使用情況

ORA-19809 ORA-19804

現象 問題檢查 檢視群集狀態,發現歸檔掛起 [[email protected] ~]$ srvctl status database -d orcl -v 檢視空間使用情況 #大小檢視 SQL> show parameter db_recovery

sqluldr2 ora-24345: A Truncation or null fetch error occurred

source /etc/profile;source /root/.bash_profile;unset NLS_LANG; sqluldr2 user=sjgj/[email protected]:1521/client query="select ZJ as ZJ,TIME

【oracle】 impdp匯入資料ORA-29283: invalid file operation

oracle impdp匯入資料報錯ORA-29283: invalid file operation 資料庫版本:11.2.0.4;系統版本:Oracle Linux 6.4 場景: 使用impdp匯入資料,dump檔名為bop_1112.dump,directory為:dataBac

ASMCMD 命令 拷貝檔案ORA-15046

將作業系統上的這個檔案拷貝回ASM的不同目錄下:ASMCMD> cp /data/USERS.264.664395373 +DATA/RACTEST/backup/USERS.264.664395373source /data/USERS.264.664395373target +DATA/RACTES