2013-09-05 78 views
5

Tôi muốn tải dữ liệu song song từ oracle to oracle bằng gói dblink và dbms_hs_parallel. Để làm điều đó tôi đã PLSQL liệt kê dưới đây:dbms_hs_parallel không thành công với lỗi

declare 
    lInserted number; 
begin 
    dbms_hs_parallel.LOAD_TABLE('SIEBEL.S_LOY_CARD','SIEBEL', 'BRED_SIEBEL_CARDS', true, 16, lInserted); 
    dbms_output.put_line(lInserted); 
end; 

Tất cả DB đối tượng có giá trị nhưng tôi nhận được một lỗi

"ORA-00904: "DBMS_HS_PASSTHROUGH"."AGENT_CLASS_NAME": invalid identifier

ORA-06512: at "SYS.DBMS_HS_PARALLEL", line 1097

ORA-06512: at line 4".

Tôi khá chắc chắn rằng nó không thành công trong một nỗ lực để chèn. Bởi vì nếu tôi không có BRED_SIEBEL_CARDS trong DB của tôi, gói sẽ tạo ra nó. Điều đó có nghĩa là gói thực hiện những gì được mong đợi, nhưng không chèn dữ liệu không may.

+0

DBMS bạn đang tải dữ liệu từ là gì? Có phải Netezza không? Một trong những nguồn lỗi có thể là không nhất quán trong việc thực hiện trình điều khiển ODBC ... – ThinkJet

+0

như tôi đã đề cập trong câu đầu tiên tôi tải dữ liệu từ 1 máy chủ Oracle sang một máy chủ khác. tốc độ dblink là không đủ do nó là một sợi đơn. –

+0

Ok. Xin lỗi, tôi đã bỏ lỡ cụm từ giới thiệu này. – ThinkJet

Trả lời

1

Tôi tin rằng Oracle Database tài liệu giải thích lý do tại sao bạn gặp lỗi của bạn:

The remote database link name. The call can only be applied to a heterogeneous services database link.

Nguồn: DBMS_HS_PARALLEL

Oracle DB - Oracle DB là một kết nối đồng nhất, mà không sử dụng một dịch vụ không đồng nhất chất độc, bởi vì không bắt buộc.

Nếu bạn không muốn sử dụng câu lệnh CTAS/INSERT/MERGE thông thường, hãy xem dbms_parallel_execute.

+0

Tôi thấy điểm của bạn nhưng tại sao nó tạo bảng cho dữ liệu? Morover Tôi cố gắng kiểm tra nó ngay cả với MsSQL - nó không hoạt động tốt (bởi lý do không rõ ràng nhưng nó không quan trọng vì vậy ý ​​kiến ​​của tôi gói không hoạt động chút nào). –

+0

Bạn đã sử dụng quy trình này trong ngữ cảnh không đúng, do đó hành vi của nó không được xác định - vi phạm ở những nơi ngẫu nhiên. Oracle có thể đã sử dụng các SELECT đơn giản trên dblink để lấy dữ liệu từ điển, nhận ra ở một nơi mà nó đọc từ cơ sở dữ liệu Oracle khác, và sau đó thất bại khi nó cố gắng sử dụng một cách rõ ràng HS Agent để đọc dữ liệu (nhưng đó chỉ là phỏng đoán của tôi). – Crack