li
  当前位置:主页 > 备份恢复 > 文章内容
li
流配置异常(ORA-01403)的完整解决过程(三)
来源: http://yangtingkun.itpub.net/  作者: yangtingkun    时间:2008-01-26   阅读:12  
本文章共4048字,分3页,当前第1页,快速翻页:
 

流配置异常(ORA-01403)的完整解决过(一):http://yangtingkun.itpub.net/post/468/102138

流配置异常(ORA-01403)的完整解决过(二): http://yangtingkun.itpub.net/post/468/103639


由于利用Oracle给出的过程没法办法找到问题的原因。因此只能另外想办法。

首先是考虑将得到的数据放到一个表中,因为通过SQL处理表中的数据是轻而易举的。其次是格式化得到的结构,最好将其转化为可以执行的SQL语句,因为这样更有利于找到问题所在。

于是我修改了Oracle提供的三个过程,将LCR中的数据变成执行的SQL语句,并将结果写到我建好的表中。代码如下:

SQL> CREATE SEQUENCE SEQ_MY_REC;

序列已创建。

SQL> CREATE TABLE MY_RECORDS (ID NUMBER, STATMENTS VARCHAR2(4000));

表已创建。

这个表用来保存解析处理的SQL语句。

SQL> CREATE OR REPLACE PROCEDURE MY_PRINT_ANY(P_DATA IN SYS.ANYDATA, P_STR IN OUT VARCHAR2, P_FLAG I
N OUT NUMBER) IS
2 V_TN VARCHAR2(61);
3 V_STR VARCHAR2(4000);
4 V_CHR CHAR(2000);
5 V_NUM NUMBER;
6 V_DAT DATE;
7 V_RW RAW(4000);
8 V_RES NUMBER;
9 BEGIN
10 V_TN := P_DATA.GETTYPENAME();
11 P_FLAG := 0;
12 IF V_TN = 'SYS.VARCHAR2' THEN
13 V_RES := P_DATA.GETVARCHAR2(V_STR);
14 IF V_STR IS NOT NULL THEN
15 P_STR := P_STR || '''' || V_STR || '''';
16 ELSE
17 P_STR := P_STR || ' NULL ';
18 P_FLAG := 1;
19 END IF;
20 ELSIF V_TN = 'SYS.CHAR' THEN
21 V_RES := P_DATA.GETCHAR(V_CHR);
22 IF V_CHR IS NOT NULL THEN
23 P_STR := P_STR || '''' || RTRIM(V_CHR) || '''';
24 ELSE
25 P_STR := P_STR || ' NULL ';
26 P_FLAG := 1;
27 END IF;
28 ELSIF V_TN = 'SYS.NUMBER' THEN
29 V_RES := P_DATA.GETNUMBER(V_NUM);
30 IF V_NUM IS NOT NULL THEN
31 P_STR := P_STR || V_NUM;
32 ELSE
33 P_STR := P_STR || ' NULL ';
34 P_FLAG := 1;
35 END IF;
36 ELSIF V_TN = 'SYS.DATE' THEN
37 V_RES := P_DATA.GETDATE(V_DAT);
38 IF V_DAT IS NOT NULL THEN
39 P_STR := P_STR || '''' || V_DAT || '''';
40 ELSE
41 P_STR := P_STR || ' NULL ';
42 P_FLAG := 1;
43 END IF;
44 ELSIF V_TN = 'SYS.VARCHAR' THEN
45 V_RES := P_DATA.GETVARCHAR(V_STR);
46 IF V_STR IS NOT NULL THEN
47 P_STR := P_STR || '''' || V_STR || '''';
48 ELSE
49 P_STR := P_STR || ' NULL ';
50 P_FLAG := 1;
51 END IF;
52 ELSIF V_TN = 'SYS.RAW' THEN
53 V_RES := P_DATA.GETRAW(V_RW);
54 IF V_RW IS NOT NULL THEN
55 P_STR := P_STR || '''' || V_RW || '''';
56 ELSE
57 P_STR := P_STR || ' NULL ';
58 P_FLAG := 1;
59 END IF;
60 ELSE
61 DBMS_OUTPUT.PUT_LINE('TYPENAME IS ' || V_TN);
62 END IF;
63 END;
64 /

www.ixdba.net


过程已创建。

这个过程用来转化各种类型的数据,并将数据写到输入的字符串后面。

SQL> CREATE OR REPLACE PROCEDURE MY_PRINT_LCR(P_LCR IN SYS.ANYDATA) IS
2 V_TYPENM VARCHAR2(61);
3 V_ROWLCR SYS.LCR$_ROW_RECORD;
4 V_RES NUMBER;
5 V_NEWLIST SYS.LCR$_ROW_LIST;
6 V_OLDLIST SYS.LCR$_ROW_LIST;
7 V_INSERT_STR VARCHAR2(4000);
8 V_FLAG NUMBER DEFAULT 0;
9 V_COUNT NUMBER;
10 BEGIN
11 V_TYPENM := P_LCR.GETTYPENAME();
12 IF (V_TYPENM = 'SYS.LCR$_ROW_RECORD') THEN
13 V_RES := P_LCR.GETOBJECT(V_ROWLCR);
14 IF V_ROWLCR.GET_COMMAND_TYPE = 'DELETE' THEN
15 V_INSERT_STR := 'DELETE ' || V_ROWLCR.GET_OBJECT_OWNER || '.' || V_ROWLCR.GET_OBJECT_NAME ||



阅读更多内容1 · 2 · 3 · 下一页>>


  上一篇: 流配置异常(ORA-01403)的完整解决...   下一篇: 流配置异常(ORA-01403)的完整解决...
li
 §相关评论  
 热点文章

·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 编辑推荐
·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 相关篇章
·流配置异常(ORA-01403)的完整解决...
·流同步机制优化(二)
·流配置异常(ORA-01403)的完整解决...
·Oracle9i流环境清除(一)
·流故障解决(数据类型冲突)
·流同步机制优化(一)
·ORA-24170错误
·Oracle9i流环境清除(二)
·Oracle9i流环境清除(三)
·RMAN备份恢复——RAC环境数据库的...
·流配置异常(ORA-01403)的完整解决...
·流配置异常(ORA-01403)的完整解决...
·ORA-600(kolaslGetLength-1)错误
·srvctl添加数据库信息报错
·利用TAR恢复ORACLE RAC环境的软件...
·RAC环境一个实例删除已被另一个实...
·RAC环境中修改系统时间可能导致S...
·RAC环境的恢复策略
·一次带库备份异常
·RAC环境中的快照控制文件
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接