标签云
asm恢复 bbed bootstrap$ dul In Memory kcbzib_kcrsds_1 kccpb_sanity_check_2 MySQL恢复 ORA-00312 ORA-00607 ORA-00704 ORA-00742 ORA-01110 ORA-01555 ORA-01578 ORA-08103 ORA-600 2131 ORA-600 2662 ORA-600 2663 ORA-600 3020 ORA-600 4000 ORA-600 4137 ORA-600 4193 ORA-600 4194 ORA-600 16703 ORA-600 kcbzib_kcrsds_1 ORA-600 KCLCHKBLK_4 ORA-15042 ORA-15196 ORACLE 12C oracle dul ORACLE PATCH Oracle Recovery Tools oracle加密恢复 oracle勒索 oracle勒索恢复 oracle异常恢复 Oracle 恢复 ORACLE恢复 ORACLE数据库恢复 oracle 比特币 OSD-04016 YOUR FILES ARE ENCRYPTED 勒索恢复 比特币加密文章分类
- Others (2)
- 中间件 (2)
- WebLogic (2)
- 操作系统 (103)
- 数据库 (1,702)
- DB2 (22)
- MySQL (74)
- Oracle (1,563)
- Data Guard (52)
- EXADATA (8)
- GoldenGate (24)
- ORA-xxxxx (159)
- ORACLE 12C (72)
- ORACLE 18C (6)
- ORACLE 19C (15)
- ORACLE 21C (3)
- Oracle 23ai (8)
- Oracle ASM (68)
- Oracle Bug (8)
- Oracle RAC (53)
- Oracle 安全 (6)
- Oracle 开发 (28)
- Oracle 监听 (28)
- Oracle备份恢复 (571)
- Oracle安装升级 (94)
- Oracle性能优化 (62)
- 专题索引 (5)
- 勒索恢复 (81)
- PostgreSQL (18)
- PostgreSQL恢复 (6)
- SQL Server (27)
- SQL Server恢复 (8)
- TimesTen (7)
- 达梦数据库 (2)
- 生活娱乐 (2)
- 至理名言 (11)
- 虚拟化 (2)
- VMware (2)
- 软件开发 (37)
- Asp.Net (9)
- JavaScript (12)
- PHP (2)
- 小工具 (20)
-
最近发表
- Oracle各种类型坏块说明和处理
- fio测试io,导致磁盘文件系统损坏故障恢复
- ORA-742 写丢失常见bug记录
- Oracle 19c 202501补丁(RUs+OJVM)-19.26
- 避免 19c 数据库性能问题需要考虑的事项 (Doc ID 3050476.1)
- Bug 21915719 Database hang or may fail to OPEN in 12c IBM AIX or HPUX Itanium – ORA-742, DEADLOCK or ORA-600 [kcrfrgv_nextlwn_scn] ORA-600 [krr_process_read_error_2]
- ORA-600 ktuPopDictI_1恢复
- impdp导入数据丢失sys授权问题分析
- impdp 创建index提示ORA-00942: table or view does not exist
- 数据泵导出 (expdp) 和导入 (impdp)工具性能降低分析参考
- 19c非归档数据库断电导致ORA-00742故障恢复
- Oracle 19c – 手动升级到 Non-CDB Oracle Database 19c 的完整核对清单
- sqlite数据库简单操作
- Oracle 暂定和恢复功能
- .pzpq扩展名勒索恢复
- Oracle read only用户—23ai新特性:只读用户
- 迁移awr快照数据到自定义表空间
- .hmallox加密mariadb/mysql数据库恢复
- 2025年首个故障恢复—ORA-600 kcbzib_kcrsds_1
- 第一例Oracle 21c恢复咨询
标签归档:dul
完美解决dul处理clob字段乱码问题
使用过dul的人都知道,dul在处理clob字段的时候,经常性出现乱码,而且官方没有提供好的处理方法,通过不断的测试折腾终于在2013年春节解决了2012年困惑在我心中的疑惑,不再因为dul不可以处理clob而觉得odu/aul更加高级。这个算是2013年给自己的第一份ORACLE数据库恢复方面大礼包.
在dul中,虽然提供了LDR_OUTPUT_IN_UTF8选项,让所有的clob变为UTF8,但是在实际测试中,没有成功.这里对于clob字段处理结果对比:
配置init.dul参数
osd_big_endian_flag=false osd_dba_file_bits=10 osd_c_struct_alignment=32 osd_file_leader_size=1 osd_word_size = 32 feedback = 1000 dc_columns=2000000 dc_tables=10000 dc_objects=1000000 dc_users=400 dc_segments=100000 USE_LOB_FILES =TRUE control_file = control.dul LDR_ENCLOSE_CHAR=| db_block_size=8192 export_mode=FALSE compatible=11
正常情况下测试clob字段
[oracle@xifenfei dul]$ ./dul Data UnLoader: 10.2.0.5.20 - Internal Only - on Sat Jan 19 00:19:05 2013 with 64-bit io functions Copyright (c) 1994 2013 Bernard van Duijnen All rights reserved. Strictly Oracle Internal Use Only DUL> unload table chf.EVT_T_COMMON_LOG; . unloading (index organized) table LOB024001aa DUL: Warning: Recreating file "LOB024001aa.ctl" 0 rows unloaded . unloading (index organized) table LOB024001da DUL: Warning: Recreating file "LOB024001da.ctl" 0 rows unloaded . unloading (index organized) table LOB0240020a DUL: Warning: Recreating file "LOB0240020a.ctl" 0 rows unloaded . unloading (index organized) table LOB0240023a DUL: Warning: Recreating file "LOB0240023a.ctl" 0 rows unloaded . unloading (index organized) table LOB0240026a DUL: Warning: Recreating file "LOB0240026a.ctl" 0 rows unloaded Preparing lob metadata from lob index Reading LOB024001aa.dat 0 entries loaded and sorted 0 entries Preparing lob metadata from lob index Reading LOB024001da.dat 0 entries loaded and sorted 0 entries Preparing lob metadata from lob index Reading LOB0240020a.dat 0 entries loaded and sorted 0 entries Preparing lob metadata from lob index Reading LOB0240023a.dat 0 entries loaded and sorted 0 entries Preparing lob metadata from lob index Reading LOB0240026a.dat 0 entries loaded and sorted 0 entries . unloading table EVT_T_COMMON_LOG DUL: Warning: Recreating file "CHF_EVT_T_COMMON_LOG.ctl" 1863 rows unloaded --修改CHF_EVT_T_COMMON_LOG.ctl中的导入表名为TEST.T_TEST --创建测试表 SQL> create table t_test as 2 select * from chf.EVT_T_COMMON_LOG where 1=0; Table created. --导入数据 [oracle@xifenfei dul]$ sqlldr test/test control=CHF_EVT_T_COMMON_LOG.ctl SQL*Loader: Release 11.2.0.3.0 - Production on Fri Jan 18 23:50:32 2013 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Commit point reached - logical record count 64 Commit point reached - logical record count 128 ………… Commit point reached - logical record count 1856 Commit point reached - logical record count 1863 --测试数据是否乱码 SQL> desc chf.EVT_T_COMMON_LOG Name Null? Type ----------------------------------------- -------- ---------------------------- ID NOT NULL VARCHAR2(64) CASES_OF_STATISTICAL_SITATION CLOB ………… DEPARTMENT_ID VARCHAR2(40) MOTIFY_MAN_ID VARCHAR2(40) SQL> select CASES_OF_STATISTICAL_SITATION from t_test where rownum<3; CASES_OF_STATISTICAL_SITATION -------------------------------------------------------------------------------- b*kb _SfZz
通过试验证明,在dul处理clob字段的时候,很容易出现乱码,因为这里涉及到很多中情况(NLS_LANG,LANG,LDR_OUTPUT_IN_UTF8参数等),经过了多次试验,均不能成功,这里就是为了给出来一个大概的结论:dul在正常情况下不能完美的处理非英文的clob
修改后lob字段文件属性后测试clob字段
--修改CHF_EVT_T_COMMON_LOG.ctl中的导入表名为TEST.EVT_T_COMMON_LOG --导入数据 [oracle@xifenfei dul]$ sqlldr test/test control=CHF_EVT_T_COMMON_LOG.ctl SQL*Loader: Release 11.2.0.3.0 - Production on Fri Jan 18 23:50:32 2013 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Commit point reached - logical record count 64 Commit point reached - logical record count 128 ………… Commit point reached - logical record count 1856 Commit point reached - logical record count 1863 --测试数据是否乱码 SQL> select CASES_OF_STATISTICAL_SITATION from EVT_T_COMMON_LOG where rownum<3; CASES_OF_STATISTICAL_SITATION -------------------------------------------------------------------------------- 1、案件统计情况截止至交班时间C时间 0 分),今日立难点问题C7,国庆北路桂门岭社区丽都花园路口,多次上
测试证明:修改了clob文件的相关属性后,完美实现dul处理clob乱码问题
dul恢复drop表测试
dul对被drop对象进行恢复,需要提供两个信息
1.被删除表所属表空间(非必须)
2.被删除表结构(必须)
模拟删除表
--创建测试表 SQL> create table t_dul_drop tablespace czum 2 as 3 select * from dba_tables; Table created. --备份被删除表数据,便于比较和提供测试表结构 SQL> create table t_dul_drop_bak tablespace users 2 as select * from t_dul_drop; Table created. SQL> alter system switch logfile; System altered. SQL> select count(*) from t_dul_drop; COUNT(*) ---------- 1785 SQL> drop table chf.t_dul_drop purge; Table dropped. SQL> alter system checkpoint; System altered.
使用logminer找到data_object_id
delete from "SYS"."OBJ$" where "OBJ#" = '68474' and "DATAOBJ#" = '68474' and "OWNER#" = '61' and "NAME" = 'T_DUL_DROP' and "NAMESPACE" = '1' and "SUBNAME" IS NULL and "TYPE#" = '2' and "CTIME" = TO_DATE('04-FEB-13', 'DD-MON-RR') and "MTIME" = TO_DATE('04-FEB-13', 'DD-MON-RR') and "STIME" = TO_DATE('04-FEB-13', 'DD-MON-RR') and "STATUS" = '1' and "REMOTEOWNER" IS NULL and "LINKNAME" IS NULL and "FLAGS" = '0' and "OID$" IS NULL and "SPARE1" = '6' and "SPARE2" = '1' and "SPARE3" = '61' and "SPARE4" IS NULL and "SPARE5" IS NULL and "SPARE6" IS NULL and ROWID = 'AAAAASAABAAAPzCAAV';
这里可以知道,被删除表的data_object_id为68474
DUL恢复被删除表
--dul版本 E:\dul10>dul.exe Data UnLoader 10.2.4.37 - Oracle Internal Only - on Mon Feb 04 23:49:50 2013 with 64-bit io functions Copyright (c) 1994 2010 Bernard van Duijnen All rights reserved. Strictly Oracle Internal use Only DUL> ALTER SESSION SET USE_SCANNED_EXTENT_MAP = TRUE; Parameter altered --扫描所属表空间 DUL> scan tablespace 6; Scanning tablespace 6, data file 6 ... 13 segment header and 331 data blocks tablespace 6, data file 6: 1279 blocks scanned Reading EXT.dat 13 entries loaded and sorted 13 entries Reading SEG.dat 13 entries loaded Reading COMPATSEG.dat 0 entries loaded Reading SCANNEDLOBPAGE.dat 0 entries loaded and sorted 0 entries --scan tables得到需求表(可以核对数据样例) DUL> scan tables; UNLOAD TABLE OBJNO68474 ( COL001 VARCHAR2(11), COL002 VARCHAR2(30), COL003 VARCHAR2(6) , COL004 VARCHAR2(20), COL005 VARCHAR2(30), COL006 VARCHAR2(5), COL007 NUMBER , COL008 NUMBER, COL009 NUMBER, COL010 NUMBER, COL011 NUMBER , COL012 NUMBER, COL013 NUMBER, COL014 NUMBER, COL015 CHAR , COL016 NUMBER, COL017 NUMBER, COL018 VARCHAR2(3), COL019 VARCHAR2(1) , COL020 NUMBER, COL021 NUMBER, COL022 NUMBER, COL023 NUMBER , COL024 NUMBER, COL025 NUMBER, COL026 NUMBER, COL027 NUMBER , COL028 VARCHAR2(10), COL029 VARCHAR2(10), COL030 VARCHAR2(5), COL031 VARCHAR2(7) , COL032 NUMBER, COL033 DATE, COL034 VARCHAR2(3), COL035 VARCHAR2(12) , COL036 VARCHAR2(1), COL037 VARCHAR2(1), COL038 VARCHAR2(3), COL039 VARCHAR2(7) , COL040 VARCHAR2(7), COL041 VARCHAR2(7), COL042 VARCHAR2(8), COL043 VARCHAR2(3) , COL044 VARCHAR2(2), COL045 VARCHAR2(15), COL046 VARCHAR2(8), COL047 VARCHAR2(3) , COL048 VARCHAR2(3), COL049 VARCHAR2(8), COL050 VARCHAR2(8), COL051 VARCHAR2(5) , COL052 VARCHAR2(2), COL053 VARCHAR2(2), COL054 VARCHAR2(3), COL055 VARCHAR2(7) ) STORAGE( DATAOBJNO 68474 ); --恢复删除表(业务提供表结构) DUL> unload table t_dul_drop( 2 OWNER VARCHAR2(30), 3 TABLE_NAME VARCHAR2(30), 4 TABLESPACE_NAME VARCHAR2(30), 5 CLUSTER_NAME VARCHAR2(30), 6 IOT_NAME VARCHAR2(30), 7 STATUS VARCHAR2(8) , 8 PCT_FREE NUMBER , 9 PCT_USED NUMBER , 10 INI_TRANS NUMBER , 11 MAX_TRANS NUMBER , 12 INITIAL_EXTENT NUMBER , 13 NEXT_EXTENT NUMBER , 14 MIN_EXTENTS NUMBER , 15 MAX_EXTENTS NUMBER , 16 PCT_INCREASE NUMBER , 17 FREELISTS NUMBER , 18 FREELIST_GROUPS NUMBER , 19 LOGGING VARCHAR2(3) , 20 BACKED_UP VARCHAR2(1) , 21 NUM_ROWS NUMBER , 22 BLOCKS NUMBER , 23 EMPTY_BLOCKS NUMBER , 24 AVG_SPACE NUMBER , 25 CHAIN_CNT NUMBER , 26 AVG_ROW_LEN NUMBER , 27 AVG_SPACE_FREELIST_BLOCKS NUMBER , 28 NUM_FREELIST_BLOCKS NUMBER , 29 DEGREE VARCHAR2(20), 30 INSTANCES VARCHAR2(20), 31 CACHE VARCHAR2(10), 32 TABLE_LOCK VARCHAR2(8) , 33 SAMPLE_SIZE NUMBER , 34 LAST_ANALYZED DATE , 35 PARTITIONED VARCHAR2(3) , 36 IOT_TYPE VARCHAR2(12), 37 TEMPORARY VARCHAR2(1) , 38 SECONDARY VARCHAR2(1) , 39 NESTED VARCHAR2(3) , 40 BUFFER_POOL VARCHAR2(7) , 41 FLASH_CACHE VARCHAR2(7) , 42 CELL_FLASH_CACHE VARCHAR2(7) , 43 ROW_MOVEMENT VARCHAR2(8) , 44 GLOBAL_STATS VARCHAR2(3) , 45 USER_STATS VARCHAR2(3) , 46 DURATION VARCHAR2(15), 47 SKIP_CORRUPT VARCHAR2(8) , 48 MONITORING VARCHAR2(3) , 49 CLUSTER_OWNER VARCHAR2(30), 50 DEPENDENCIES VARCHAR2(8) , 51 COMPRESSION VARCHAR2(8) , 52 COMPRESS_FOR VARCHAR2(12), 53 DROPPED VARCHAR2(3) , 54 READ_ONLY VARCHAR2(3) , 55 SEGMENT_CREATED VARCHAR2(3) , 56 RESULT_CACHE VARCHAR2(7)) 57 STORAGE( DATAOBJNO 68474 ); . unloading table T_DUL_DROP DUL: Warning: Recreating file "T_DUL_DROP.ctl" 1785 rows unloaded
模拟业务规则提供,创建表
SQL> create table t_dul_drop as select * from t_dul_drop_bak where 1=0; Table created.
导入数据
e:\dul10>sqlldr chf/xifenfei control=T_DUL_DROP.ctl SQL*Loader: Release 11.2.0.3.0 - Production on Mon Feb 4 23:35:57 2013 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. Commit point reached - logical record count 64 Commit point reached - logical record count 128 Commit point reached - logical record count 192 Commit point reached - logical record count 256 Commit point reached - logical record count 320 Commit point reached - logical record count 384 Commit point reached - logical record count 448 Commit point reached - logical record count 512 Commit point reached - logical record count 576 Commit point reached - logical record count 640 Commit point reached - logical record count 704 Commit point reached - logical record count 768 Commit point reached - logical record count 832 Commit point reached - logical record count 896 Commit point reached - logical record count 960 Commit point reached - logical record count 1024 Commit point reached - logical record count 1088 Commit point reached - logical record count 1152 Commit point reached - logical record count 1216 Commit point reached - logical record count 1280 Commit point reached - logical record count 1344 Commit point reached - logical record count 1408 Commit point reached - logical record count 1472 Commit point reached - logical record count 1536 Commit point reached - logical record count 1600 Commit point reached - logical record count 1664 Commit point reached - logical record count 1728 Commit point reached - logical record count 1785
恢复数据结果
SQL> select count(*) from t_dul_drop; COUNT(*) ---------- 1785 SQL> select owner,table_name from t_dul_drop where rownum<10; OWNER TABLE_NAME ------------------------------ ------------------------------ SYS IDL_CHAR$ SYS IDL_UB2$ SYS IDL_SB4$ SYS ERROR$ SYS SETTINGS$ SYS NCOMP_DLL$ SYS PROCEDUREJAVA$ SYS PROCEDUREC$ SYS PROCEDUREPLSQL$ 9 rows selected.