oracle9i 64bit与32bit之间复制会因为表的精度不同出现无法复制

数据库环境:
客户端:winxp+oracle9.2.0.1客户端 32bit
服务器A:win2003+oracle9.2.0.5    32bit
服务器B: winxp+oracle9.2.0.1       32bit
服务器C: HP-UX 11i+oracle9.2.0.5  64bit


init配置
客户端:连接服务器A-sid_name:pgjt
服务器A:连接服务器B-sid_name:oemrep
         连接服务器C-sid_name:pgjt1

 

SQL> CONN SYS/SYS@PGJT AS SYSDBA
已连接。

SQL> create database link db_link_wwdb connect to scott identified by tiger using 'oemrep';

数据库链接已创建。

SQL> SELECT * FROM DEPT@DB_LINK_WWDB;

   DEPTNO DNAME          LOC
--------- -------------- -------------
       10 ACCOUNTING     12
       20 RESEARCH       13
       30 SALES          13
       40 OPERATIONS     13
       10 ACCOUNTING
       20 RESEARCH
       30 SALES
       40 OPERATIONS

已选择8行。

SQL> COPY FROM SCOTT/TIGER@OEMREP CREATE TEST_CP USING SELECT * FROM DEPT;

数组读取/结合的大小为15。(数组大小为15)
将在完成时提交。(提交的复本为 0)
最长为80。(长度为80)
表TEST_CP已创建。

8行选自SCOTT@OEMREP。
   8行被插入TEST_CP。
8行已提交至TEST_CP(位于DEFAULT HOST连接)。

SQL> SELECT * FROM TEST_CP;

   DEPTNO DNAME          LOC
--------- -------------- -------------
       10 ACCOUNTING     12
       20 RESEARCH       13
       30 SALES          13
       40 OPERATIONS     13
       10 ACCOUNTING
       20 RESEARCH
       30 SALES
       40 OPERATIONS

已选择8行。

SQL> copy to manager/system@pgjt1 create test_cp using select * from test_cp;

数组读取/结合的大小为15。(数组大小为15)
将在完成时提交。(提交的复本为 0)
最长为80。(长度为80)
表TEST_CP已创建。

   选择的8行来自于DEFAULT HOST连接。
   8行被插入TEST_CP。
   8行已提交至TEST_CP(位于manager@pgjt1)。

SQL> copy from  manager/system@pgjt1 create test_cp1 using select * from test_cp
;

数组读取/结合的大小为15。(数组大小为15)
将在完成时提交。(提交的复本为 0)
最长为80。(长度为80)
表TEST_CP1已创建。

8行选自manager@pgjt1。
   8行被插入TEST_CP1。
8行已提交至TEST_CP1(位于DEFAULT HOST连接)。

SQL> copy from  manager/system@pgjt1 create test_cp2 using select * from v$log;

数组读取/结合的大小为15。(数组大小为15)
将在完成时提交。(提交的复本为 0)
最长为80。(长度为80)

ERROR:
ORA-01727: 数字精度说明符超出范围(1 到 38)

SQL> conn manager/system@pgjt1
已连接。

SQL> desc v$log;
 名称                                                  是否为空? 类型
 ----------------------------------------------------- -------- ------------
--------------------
 GROUP#                                                         NUMBER
 THREAD#                                                        NUMBER
 SEQUENCE#                                                      NUMBER
 BYTES                                                          NUMBER
 MEMBERS                                                        NUMBER
 ARCHIVED                                                       VARCHAR2(3)
 STATUS                                                         VARCHAR2(16)
 FIRST_CHANGE#                                                  NUMBER
 FIRST_TIME                                                     DATE

SQL> desc test_cp1;
ERROR:
ORA-04043: 对象 test_cp1 不存在


SQL> desc test_cp;
 名称                                                  是否为空? 类型
 ----------------------------------------------------- -------- ------------
--------------------
 DEPTNO                                                         NUMBER(2)
 DNAME                                                          CHAR(14)
 LOC                                                            CHAR(13)

部分网友认为是V$LOG是一个同义词(视图),不能copy。进行测试
SQL> COPY FROM system/system@OEMREP CREATE TEST_CP5 USING SELECT * FROM v$log;

数组读取/结合的大小为15。(数组大小为15)
将在完成时提交。(提交的复本为 0)
最长为80。(长度为80)
表TEST_CP5已创建。

3行选自system@OEMREP。
   3行被插入TEST_CP5。
3行已提交至TEST_CP5(位于DEFAULT HOST连接)。

SQL> COPY to  manager/system@pgjt1 CREATE TEST_CP5 USING SELECT * FROM v$log;

数组读取/结合的大小为15。(数组大小为15)
将在完成时提交。(提交的复本为 0)
最长为80。(长度为80)

ERROR:
ORA-01727: 数字精度说明符超出范围(1 到 38)

结论:

oracle9i 64bit与32bit之间复制才会出现问题,主要是系统自建表的精度不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值