数据库环境:
客户端: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之间复制才会出现问题,主要是系统自建表的精度不同。