Công cụ di chuyển dữ liệu sang IBM

Di chuyển dữ liệu từ các cơ sở dữ liệu nguồn tới DB2 theo cách dễ dàng

Bài viết này trình bày một công cụ rất đơn giản và mạnh mẽ để di chuyển (migration) dữ liệu từ nhiều nguồn khác nhau một cách dễ dàng. Công cụ này cho phép các ứng dụng từ Oracle và Sybase chạy trên DB2® phiên bản 9.7 của IBM®, cho Linux®, UNIX® và Windows® như nó vốn có, với thay đổi rất ít hoặc không cần thay đổi gì. Công cụ này cũng có thể được sử dụng để di chuyển dữ liệu từ nhiều hệ thống quản lý cơ sở dữ liệu khác nhau sang DB2 cho Linux, UNIX và Windows và DB2 cho z/OS®. Công cụ này cũng hỗ trợ di chuyển dữ liệu từ một cơ sở dữ liệu nguồn tới DB2 trong một môi trường pureScale.

Vikram S. Khatri, Chuyên gia tư vấn Công nghệ thông tin có chứng chỉ, IBM

Vikram S Khatri làm việc cho IBM trong Bộ phận phân phối và bán hàng và là một thành viên của nhóm di chuyển DB2 (DB2 Migration). Vikram có 24 năm kinh nghiệm về Công nghệ thông tin và chuyên về việc cho phép các ứng dụng không DB2 chuyển thành DB2. Vikram hỗ trợ tổ chức bán hàng kỹ thuật DB2 bằng cách giúp các dự án chuyển đổi cơ sở dữ liệu phức tạp cũng như thử nghiệm đo lường chuẩn (benchmark) hiệu năng cơ sở dữ liệu.



22 11 2010 (Xuất bản lần đầu tiên vào ngày 28 06 2011)

Mở đầu

Công cụ di chuyển này có thể được sử dụng để di chuyển dữ liệu từ các nguồn dữ liệu khác nhau tới DB2 trong một môi trường pureScale.

Khi bắt đầu với DB2 V9.7 cho Linux, UNIX và Windows, để sử dụng các ứng dụng từ Oracle và Sybase (sau bản Fixpack 3) trên các sản phẩm DB2 không đòi hỏi Bộ công cụ di chuyển (Migration Toolkit - MTK). Công cụ này thay thế chức năng MTK với một dòng công việc đơn giản hơn nhiều.

Đối với tất cả các kịch bản khác, ví dụ, di chuyển dữ liệu từ một cơ sở dữ liệu tới DB2 cho z/OS, công cụ này hỗ trợ MTK rất nhiều trong lĩnh vực di chuyển dữ liệu tốc độ cao. Khi sử dụng công cụ này, nhiều hơn 4TB dữ liệu đã được di chuyển chỉ trong ba ngày.

Công cụ này có giao diện GUI dễ sử dụng với người mới bắt đầu, trong khi người dùng cao cấp thường ưa thích dùng API dòng lệnh.

Chuẩn bị

Tải về

Trước tiên, tải về công cụ này từ phần Tải về vào máy chủ DB2 đích của bạn. Để di chuyển dữ liệu tới DB2 cho z/OS cần các bước bổ sung thêm. (Kiểm tra phiên bản hiện có mới nhất của công cụ này.)

Cài đặt

Một khi bạn đã tải về tệp IBMDataMovementTool.zip, hãy trích xuất các tệp này vào một thư mục tên là IBMDataMovementTool trên máy chủ DB2 đích của bạn. Chúng tôi khuyên bạn nên cài đặt phía máy chủ (trên DB2) để đạt được hiệu năng di chuyển dữ liệu tốt nhất.

Các điều kiện tiên quyết

  • DB2 V9.7 nên được cài đặt trên máy chủ đích của bạn nếu bạn đang bật lên một ứng dụng Oracle để chạy trên DB2 cho Linux, UNIX và Windows.
  • Java™ phiên bản 1.5 hoặc cao hơn phải được cài đặt trên máy chủ đích của bạn. Để kiểm tra phiên bản Java hiện tại của bạn, hãy chạy lệnh java -version. Theo mặc định, Java được cài đặt như một phần của DB2 cho Linux, UNIX và Windows trong <install_dir>\SQLLIB\java\jdk (Windows) or /opt/ibm/db2/V9.7/java/jdk (Linux).
Bảng 1. Nơi đặt các trình điều khiển JDBC cho cơ sở dữ liệu nguồn và DB2 của bạn
Cơ sở dữ liệuCác trình điều khiển JDBC
Oracleojdbc5.jar hoặc ojdbc6.jar hoặc ojdbc14.jar, xdb.jar, xmlparserv2.jar hoặc classes12.jar hoặc classes111.jar for Oracle 7 hoặc 8i
SQL Serversqljdbc5.jar hoặc sqljdbc.jar
Sybasejconn3.jar và antsjconn2.jar cho tính năng DB2 SKIN
MySQLmysql-connector-java-5.0.8-bin.jar hoặc trình điều khiển mới nhất
PostgreSQLpostgresql-8.1-405.jdbc3.jar hoặc trình điều khiển mới nhất
DB2 cho Linux, UNIX và Windowsdb2jcc.jar, db2jcc_license_cu.jar hoặc db2jcc4.jar, db2jcc4_license_cu.jar
DB2 for zdb2jcc.jar, db2jcc_license_cisuz.jar hoặc db2jcc4.jar, db2jcc4_license_cisuz.jar
DB2 for ijt400.jar
Teradatraterajdbc4.jar và tdgssconfig.jar
MS AccessTùy chọn Access_JDBC30.jar

Thiết lập môi trường

  • UNIX: Đăng nhập vào máy chủ của bạn như là chủ sở hữu cá thể (instance) DB2.
  • Windows: Khởi chạy một cửa sổ lệnh DB2.
  • Chuyển đến thư mục IBMDataMovementTool. Công cụ này là một tệp JAR có hai kịch bản lệnh của trình điều khiển để chạy công cụ này.
    IBMDataMovementTool.cmd - Command script to run the tool on Windows.
    IBMDataMovementTool.sh - Command script to run the tool on UNIX.
    IBMDataMovementTool.jar - JAR file of the tool.
    Pipe.dll - A DLL required on Windows if pipe option is used.

Tạo cơ sở dữ liệu đích DB2

Do cần một kết nối cơ sở dữ liệu tới đích để chạy công cụ này, nên cơ sở dữ liệu DB2 phải được tạo ra đầu tiên. Trên DB2 V9.7, chúng tôi khuyên bạn nên sử dụng lưu trữ tự động mặc định và chọn kích thước trang 32KB. Khi cho phép các ứng dụng được chạy trên DB2 V9.7, cá thể và cơ sở dữ liệu phải đang hoạt động trong chế độ tương thích. Cũng nên điều chỉnh hành vi làm tròn để khớp với cơ sở dữ liệu đó của Oracle. Bạn có thể triển khai các đối tượng ngoài thứ tự phụ thuộc bằng cách thiết lập ngữ nghĩa xác nhận lại hợp lệ là deferred_force.

Trên các hệ thống UNIX

$ db2set DB2_COMPATIBILITY_VECTOR=ORA
$ db2set DB2_DEFERRED_PREPARE_SEMANTICS=YES
$ db2stop force
$ db2start
$ db2 "create db testdb automatic storage yes on /db2data1,
/db2data2,/db2data3 DBPATH ON /db2system PAGESIZE 32 K"
$ db2 update db cfg for testdb using auto_reval deferred_force
$ db2 update db cfg for testdb using decflt_rounding round_half_up

Trên các hệ thống Windows

C:\> db2set DB2_COMPATIBILITY_VECTOR=ORA
C:\> db2set DB2_DEFERRED_PREPARE_SEMANTICS=YES
C:\> db2stop force
C:\> db2start
C:\> db2 "create db testdb automatic storage yes on C:,D: DBPATH ON E: PAGESIZE 32 K"
C:\> db2 update db cfg for testdb using auto_reval deferred_force
C:\> db2 update db cfg for testdb using decflt_rounding round_half_up

Trích xuất các đối tượng và dữ liệu

Trước khi bạn chạy công cụ này, có sẵn thông tin sau đây cho máy chủ nguồn và máy chủ DB2 của bạn:

  • Địa chỉ IP hoặc Tên máy chủ (Host Name) của các máy chủ nguồn và các máy chủ DB2.
  • Các số cổng kết nối.
  • Tên của các cơ sở dữ liệu, SID, tên hệ thống con v.v.. khi cần.
  • Một mã định danh người dùng (User ID) với các đặc quyền của quản trị viên cơ sở dữ liệu (DBA) trên cơ sở dữ liệu nguồn.
  • Mật khẩu cho người dùng đó.
  • Nơi đặt cơ sở dữ liệu nguồn và trình điều khiển DB2 JDBC của bạn.
  • Có đủ thông tin về dung lượng hoặc khối lượng/điểm lắp đặt tại nơi dữ liệu sẽ được lưu trữ.

Chạy IBMDataMovementTool.cmd trên Windows hoặc ./IBMDataMovementTool.sh trên UNIX. Công cụ này sẽ bắt đầu một GUI nếu máy chủ có khả năng hiển thị đồ họa. Nếu không nó sẽ chuyển sang chế độ dòng lệnh tương tác để thu thập đầu vào.

Trên Windows:
IBMDataMovementTool.cmd

Trên UNIX:
chmod +x IBMDataMovementTool.sh
./IBMDataMovementTool.sh

DB2_COMPATIBILITY_VECTOR là gì?

Dùng DB2_COMPATIBILITY_VECTOR để đặt cả hai cá thể và cơ sở dữ liệu DB2 V9.7 vào trong một chế độ tương thích với Oracle. Để biết chi tiết hãy xem Trung tâm Thông tin DB2 V9.7.

Bây giờ bạn sẽ thấy một cửa sổ GUI (Giao diện đồ họa người dùng). Một số thông báo cũng sẽ xuất hiện trong cửa sổ trình vỏ (shell). Hãy xem qua các thông báo này để đảm bảo không có lỗi nào được ghi nhật ký trước khi bạn bắt đầu sử dụng GUI.

Nếu bạn chưa thiết lập DB2_COMPATIBILITY_VECTOR, công cụ này sẽ đưa ra một cảnh báo. Hãy làm theo các bước sau để thiết lập vector tương thích nếu bạn vẫn chưa làm như vậy.

[2010-01-10 17.08.58.578] INPUT Directory = .
[2010-01-10 17.08.58.578] Configuration file loaded: 'jdbcdriver.properties'
[2010-01-10 17.08.58.593] Configuration file loaded: 'IBMExtract.properties'
[2010-01-10 17.08.58.593] appJar  : 'C:\IBMDataMovementTool\IBMDataMovementTool.jar'
[2010-01-10 17.08.59.531] DB2 PATH is C:\Program Files\IBM\SQLLIB
[2010-01-10 17.35.30.015] *** WARNING ***. The DB2_COMPATIBILITY_VECTOR is not set.
[2010-01-10 17.35.30.015] To set compatibility mode, discontinue this program and 
                          run the following commands
[2010-01-10 17.35.30.015] db2set DB2_COMPATIBILITY_VECTOR=FFF
[2010-01-10 17.35.30.015] db2stop force
[2010-01-10 17.35.30.015] db2start

Sử dụng giao diện người dùng đồ họa

Màn hình giao diện người dùng đồ họa (GUI) như trong Hình 1 có các trường để xác định thông tin kết nối cơ sở dữ liệu nguồn và cơ sở dữ liệu DB2. Chuỗi các sự kiện trong màn hình này là:

  1. Chỉ rõ thông tin kết nối nguồn và DB2.
  2. Nhấn vào Connect to Oracle (Kết nối với Oracle) để kiểm tra kết nối.
  3. Nhấn vào Connect to DB2 (Kết nối với DB2) để kiểm tra kết nối.
  4. Chỉ rõ thư mục làm việc để trích xuất DDL và dữ liệu vào đó.
  5. Chọn cái bạn muốn giữa DDL và/hoặc Dữ liệu. Nếu bạn chỉ chọn DDL, một kịch bản lệnh genddl bổ sung sẽ được tạo ra.
  6. Nhấn vào nút Extract DDL/Data (Trích xuất DDL/Dữ liệu). Bạn có thể theo dõi tiến trình trong cửa sổ bàn điều khiển.
  7. Sau khi hoàn thành trích xuất dữ liệu thành công, hãy xem xét kỹ các tệp đầu ra kết quả với các trạng thái về dịch chuyển dữ liệu, các cảnh báo, các lỗi và các vấn đề tiềm năng khác.
  8. Theo tùy chọn, bạn có thể nhấn vào nút View Script/Output (Xem Kịch bản lệnh/Đầu ra) để kiểm tra các kịch bản lệnh, DDL, dữ liệu hoặc tệp bản ghi nhật ký kết quả đầu ra được tạo ra.
  9. Nhấn vào nút Deploy DDL/Data (Triển khai DDL/Dữ liệu) để tạo ra các bảng, các chỉ mục trong DB2 và nạp dữ liệu đã được trích xuất từ cơ sở dữ liệu nguồn.
  10. Bạn có thể sử dụng Execute DB2 Script (Thực hiện Kịch bản lệnh DB2 ) để chạy các kịch bản lệnh DB2 được tạo ra thay vì chạy nó từ dòng lệnh. Việc di chuyển dữ liệu là một hành động tương tác. Nếu bạn cần hủy bỏ tất cả các bảng trước khi bạn bắt đầu làm mới, bạn có thể chọn kịch bản lệnh bảng hủy bỏ và thực hiện nó. Bạn cũng có thể sử dụng nút này để thực hiện các kịch bản lệnh theo thứ tự mà bạn muốn thực hiện chúng.
Hình 1. Các tham số đầu vào cho cơ sở dữ liệu nguồn và DB2
Trích xuất và triển khai dữ liệu

Sau khi nhấn vào nút Extract DDL/Data, bạn sẽ nhận thấy các thông báo của công cụ trong thẻ View File (Xem tệp), như trong Hình 2:

Hình 2. Trích xuất DDL và Dữ liệu
Trích xuất DDL / Data

Sau khi hoàn thành việc trích xuất DDL và Dữ liệu, bạn sẽ nhận thấy một số tệp mới được tạo ra trong thư mục làm việc. Có thể sử dụng những tệp này tại dòng lệnh để chạy trong DB2.

Các tệp cấu hình

Các kịch bản lệnh sau đây được tạo mỗi khi bạn chạy công cụ này trong chế độ GUI. Tuy nhiên, bạn có thể sử dụng các kịch bản lệnh này để thực hiện tất cả các bước di chuyển dữ liệu mà không có GUI. Điều này có ích khi bạn muốn nhúng công cụ này như là một phần của một khối xử lý để thực hiện di chuyển dữ liệu tự động.

Bảng 2. Các kịch bản lệnh
Tên tệpMô tả
IBMExtract.propertiesTệp này chứa tất cả tham số đầu vào mà bạn đã chỉ định thông qua các giá trị đầu vào GUI hoặc dòng lệnh của bạn. Bạn có thể tự tay chỉnh sửa tệp này để thay đổi hoặc sửa chữa các tham số. Lưu ý: Tệp này bị ghi đè mỗi khi bạn chạy GUI này.
unloadKịch bản lệnh này do công cụ này tạo ra. Nó tải lên dữ liệu từ máy chủ cơ sở dữ liệu nguồn đến các tệp phẳng, khi bạn đánh dấu chọn tùy chọn DDL và Dữ liệu. Kịch bản lệnh tương tự cũng chuyển dữ liệu từ cơ sở dữ liệu nguồn đến DB2 bằng cách sử dụng các đường ống, khi bạn đánh dấu chọn tùy chọn pipe (đường ống) trong GUI để loại bỏ các tệp phẳng trung gian. Tùy chọn đường ống này được điều khiển thông qua tùy chọn usePipe (sử dụng đường ống) trong tệp IBMExtract.properties.
rowcountKịch bản lệnh này do công cụ này tạo ra và bạn có thể chạy nó sau khi triển khai dữ liệu để kiểm tra số đếm hàng (rowcount) trong cơ sở dữ liệu nguồn và DB2.
Hình 3. Các tệp được tạo ra sau khi trích xuất dữ liệu
Bước-2. Các tệp được tạo

Sử dụng chế độ dòng lệnh

Bạn có thể chạy công cụ này bằng cách sử dụng cụ thể chế độ dòng lệnh khi không có sẵn khả năng GUI. Công cụ này chuyển đổi tự động các chế độ khi nó không thể khởi động GUI. Nếu bạn muốn bắt buộc chạy công cụ này trong chế độ tương tác dòng lệnh, thì bạn có thể chỉ rõ tùy chọn -console cho lệnh IBMDataMovementTool.

Trên Windows:
IBMDataMovementTool -console

Trên UNIX:
./IBMDataMovementTool.sh	-console


Bạn sẽ được giới thiệu các tùy chọn tương tác để xác định các tham số kết nối cơ sở dữ liệu nguồn và DB2 theo tiến trình từng bước một. Một đầu ra ví dụ từ cửa sổ bàn điều khiển được thể hiện như sau:

[2010-01-10 20.08.05.390] INPUT Directory = .
[2010-01-10 20.08.05.390] Configuration file loaded: 'jdbcdriver.properties'
[2010-01-10 20.08.05.390] Configuration file loaded: 'IBMExtract.properties'
[2010-01-10 20.08.05.390] appJar  : 'C:\IBMDataMovementTool\IBMDataMovementTool.jar'
Debug (Yes)        : 1
Debug (No)         : 2
Enter a number (Default=2) :
IS TARGET DB2 LOCAL (YES)   : 1
IS TARGET DB2 REMOTE (NO)   : 2
Enter a number (Default=1) :
Extract DDL (Yes)        : 1
Extract DDL (No)         : 2
Enter a number (Default=1) :
Extract Data (Yes)        : 1
Extract Data (No)         : 2
Enter a number (Default=1) :
Enter # of rows limit to extract.  (Default=ALL) :
Enter # of rows limit to load data in DB2.  (Default=ALL) :
Compress Table in DB2 (No)     : 1
Compress Table in DB2 (YES)    : 2
Enter a number (Default=1) :
Compress Index in DB2 (No)     : 1
Compress Index in DB2 (YES)    : 2
Enter a number (Default=1) :
******* Source database information: *****
Oracle                  : 1
MS SQL Server           : 2
Sybase                  : 3
MS Access Database      : 4
MySQL                   : 5
PostgreSQL              : 6
DB2 z/OS                : 7
DB2 LUW                 : 8
Enter a number (Default 1) :
DB2 Compatibility Feature (DB2 V9.7 or later)  : 1
No Compatibility feature                       : 2
Enter compatibility feature (Default=1) :

Triển khai các đối tượng và nạp dữ liệu

Tạo các đối tượng đích cơ sở dữ liệu

Sau khi trích xuất DDL và Dữ liệu, bạn có ba cách khác nhau để triển khai các đối tượng đã trích xuất trong DB2.

  • Nhấn nút Deploy DDL/DATA từ màn hình GUI.
  • Chuyển đến thẻ Interactive Deploy ( Triển khai tương tác) và triển khai các đối tượng theo tiến trình từng bước một.
  • Triển khai DDL/DATA bằng kịch bản lệnh dòng lệnh db2gen

Các tùy chọn để chọn triển khai dữ liệu được dựa trên các yêu cầu di chuyển dữ liệu và các đối tượng. Nếu bạn chỉ đang di chuyển các đối tượng DDL và Dữ liệu không phải PL/SQL, thì việc sử dụng kịch bản lệnh db2gen hoặc nhấn vào nút Deploy DDL/DATA từ các GUI là đủ.

Tùy chọn triển khai tương tác có thể là sự lựa chọn tốt hơn của bạn khi bạn cũng đang triển khai các đối tượng PL/SQL như các trigger, các hàm, các thủ tục và các gói PL/SQL.

Sử dụng màn hình GUI, như trong Hình 4, để triển khai tương tác của DDL và các đối tượng cơ sở dữ liệu khác. Chuỗi các sự kiện trong màn hình này là:

  1. Bảo đảm bạn được kết nối tới DB2 khi sử dụng thẻ Extract/Deploy (Trích xuất/Triển khai).
  2. Nhấn vào thẻ Interactive Deploy (Triển khai tương tác).
  3. Sử dụng nút Open Directory (Mở thư mục) để chọn thư mục làm việc có chứa các đối tượng đã trích xuất trước. Các đối tượng này được đọc và được liệt kê trong một khung nhìn dạng cây.
  4. Bạn có thể triển khai tất cả các đối tượng bằng cách nhấn nút Deploy All Objects (Triển khai tất cả các đối tượng) trên thanh công cụ. Hầu hết các đối tượng sẽ triển khai thành công trong khi các đối tượng khác có thể hỏng.
  5. Khi bạn nhấn vào một đối tượng đã không triển khai được trong khung nhìn dạng cây, bạn có thể xem nguồn gốc của đối tượng đó trong cửa sổ của trình soạn thảo. Lý do của sự thất bại này được liệt kê trong bản ghi nhật ký triển khai dưới đây.
  6. Chế độ tương thích Oracle nói chung cho phép triển khai các đối tượng như nó vốn có. Tuy nhiên, có thể vẫn có các tính năng không được hỗ trợ ngăn cản triển khai thành công một vài đối tượng có sẵn. Khi sử dụng trình soạn thảo bạn có thể điều chỉnh mã nguồn của các đối tượng này để giải quyết bất cứ các vấn đề nào. Khi bạn triển khai đối tượng đã thay đổi, nguồn mới được lưu cùng với một sao lưu dự phòng của nguồn cũ.
  7. Bạn có thể chọn một hoặc nhiều đối tượng bằng cách sử dụng phím CTRL và nhấn vào nút Deploy Selected Objects (Triển khai các đối tượng đã chọn) trên thanh công cụ để triển khai các đối tượng sau khi đã chỉnh sửa chúng. Thông thường các lỗi triển khai xảy ra theo dạng xếp tầng có nghĩa là một khi một đối tượng đã triển khai thành công thì các đối tượng khác phụ thuộc vào nó cũng sẽ triển khai được.
  8. Lặp lại bước từ 5 đến 7 cho đến khi tất cả các đối tượng đã được triển khai thành công.
Hình 4. Triển khai tương tác của các đối tượng
Bước-3. Triển khai tương tác

So sánh các số đếm hàng

  • Chuyển tới thư mục gốc về di chuyển dữ liệu và chạy kịch bản lệnh rowcount (số đếm hàng).
  • Bạn sẽ thấy một bản ghi được tạo ra trong tệp "<source database name>.tables.rowcount". Bản ghi này chứa các số đếm hàng từ cả hai cơ sở dữ liệu nguồn và đích.
oracle                      :       db2
"TESTCASE"."CALL_STACKS"    : 123   "TESTCASE"."CALL_STACKS"      : 123
"TESTCASE"."CLASSES"        : 401   "TESTCASE"."CLASSES"          : 401
"TESTCASE"."DESTINATION"    : 513   "TESTCASE"."DESTINATION"      : 513

Sử dụng các đường ống để di chuyển dữ liệu

Khi kích thước cơ sở dữ liệu nguồn quá lớn và không đủ dung lượng để giữ các tệp dữ liệu trung gian, việc sử dụng đường ống là cách được khuyên dùng để di chuyển dữ liệu.

Trên các hệ thống Windows

Công cụ này sử dụng Pipe.dll để tạo ra các đường ống Windows và đảm bảo rằng dll này được đặt trong cùng thư mục ở đó đặt tệp IBMDataMovementTool.jar.

Trên các hệ thống UNIX

Công cụ này tạo ra các đường ống UNIX bằng lệnh mkfifo dùng để di chuyển dữ liệu từ nguồn tới DB2.

Trước khi bạn có thể sử dụng đường ống giữa cơ sở dữ liệu nguồn và DB2, cần phải tạo định nghĩa bảng. Hãy làm theo thủ tục sau:

  1. Chỉ rõ # Extract Rows=1 trong GUI hoặc thiết lập LimitExtractRows=1 trong IBMExtract.properties, khi bạn đang sử dụng cửa sổ dòng lệnh.
  2. Nhấn vào nút Extract DDL/Data để tải lên dữ liệu hoặc chạy kịch bản lệnh unload (tải lên) từ cửa sổ dòng lệnh.
  3. Nhấn nút Deploy DDL/Data hoặc chạy kịch bản lệnh db2gen từ cửa sổ dòng lệnh.
  4. Chọn Use Pipe (Sử dụng đường ống) hoặc thiết lập usepipe=true trong IBMExtract.properties, khi bạn đang sử dụng cửa sổ dòng lệnh.
  5. Nhấn nút Extract / Deploy through Pipe Load (Trích xuất/Triển khai thông qua Nạp đường ống) hoặc kịch bản lệnh unload từ cửa sổ dòng lệnh.
Hình 5. Sử dụng đường ống để di chuyển dữ liệu
Bước-4. Sử dụng đường ống

Các bước bổ sung cho DB2 trên z/OS

Tiến trình UNLOAD trên z/OS

  • Công cụ này đòi hỏi tệp USS để chạy nhưng DB2 LOAD trên z/OS không thể sử dụng các tệp HFS để nạp dữ liệu. Đó là lý do, bạn cần sử dụng bộ công cụ JZOS để tạo ra các tập dữ liệu PS trên z/OS từ Các dịch vụ hệ thống Unix (Unix System Services). Tuy nhiên, DB2 LOAD có thể sử dụng các tệp USS (hoặc HFS) cho LOAD CLOBS/BLOBS trong DB2. Đó là lý do, chúng ta tạo ra các tập dữ liệu PS trên z/OS để di chuyển dữ liệu từ cơ sở dữ liệu nguồn tới z/OS và chúng ta sử dụng các tệp HFS của Các dịch vụ hệ thống Unix để giữ tất cả BLOBS/CLOBS.
  • Không thể chạy câu lệnh LOAD từ USS. Sử dụng các thủ tục đã lưu SYSPROC.DSNUTILS để chạy LOAD, CHECK DATA và RUN STATS.
  • Tạo các tập dữ liệu PS là một thách thức do bạn cần phải cấp phát nó cho mỗi bảng. Không thể cấp phát trước một kích thước cố định vì chưa biết được kích thước bảng. Nó có thể lãng phí rất nhiều dung lượng trên z/OS. Để tránh vấn đề dung lượng, hãy sử dụng một thuật toán để cấp phát kích thước.

Bạn có thể sử dụng công cụ này từ z/OS để thực hiện di chuyển dữ liệu từ một cơ sở dữ liệu nguồn tới DB2 cho z/OS. Tuy nhiên, cần có các bước bổ sung sau đây.

  1. Tải về và cài đặt JZOS.
  2. Đây là tệp nén chứa một tệp tên là jzos.pax. Giao thức truyền tệp (FTP) truyền tệp này bằng cách sử dụng Các dịch vụ hệ thống Unix trong chế độ nhị phân tới thư mục mà bạn muốn cài đặt JZOS.
  3. Chuyển đến thư mục bạn đã lưu tệp .pax ở đó.
  4. Chạy lệnh: pax -rvf. Lệnh này sẽ tạo một thư mục con gọi là jzos trong thư mục làm việc hiện tại của bạn. Thư mục con này sẽ được gọi là <JZOS_HOME>
  5. Trong thư mục chủ của người dùng, hãy tạo một tệp có tên .profile dựa trên khuôn mẫu được cho dưới đây bằng cách thực hiện các thay đổi theo mỗi bản cài đặt DB2 z/OS của bạn.
    export JZOS_HOME=$HOME/jzos
    export JAVA_PATH=/usr/lpp/java/J1.5
    export PATH=$JAVA_HOME/bin:$PATH		        
    export CLPHOME=/usr/lpp/db2/db2910/db2910_base/lib/IBM                  
    export CLASSPATH=$CLASSPATH:/usr/lpp/db2/db2910/db2910_base/lib/clp.jar 
    export CLPPROPERTIESFILE=$HOME/clp.properties                           
    export LIBPATH=$LIBPATH:<JZOS_HOME<                               
    alias db2="java com.ibm.db2.clp.db2"
  6. Có thể phải sửa đổi CLPHOME và CLASSPATH tùy thuộc vào môi trường của bạn. Thay thế <JZOS_HOME> bằng thư mục thích hợp.
  7. Trong thư mục chủ của người dùng, hãy tạo một tệp tên là clp.properties dựa trên khuôn mẫu đã cho dưới đây:
    #Specify the value as ON/OFF or leave them blank              
    DisplaySQLCA=ON                                               
    AutoCommit=ON                                                 
    InputFilename=                                                
    OutputFilename=                                               
    DisplayOutput=                                                
    StopOnError=                                                  
    TerminationChar=                                              
    Echo=                                                         
    StripHeaders=                                                 
    MaxLinesFromSelect=                                           
    MaxColumnWidth=20                                             
    IsolationLevel=                                               
    <SUBSYSTEM_NAME>=<IP address>:<port number>/<location name>,USER,PASSWD
    
    Replace items on the last line as appropriate.
  8. Chạy lệnh 777 <JZOS_HOME>/*.so
  9. Chạy lệnh IBMDataMovementTool.sh -console và xác định các giá trị của các tham số thông qua đáp ứng người dùng tương tác.
  10. Các kịch bản lệnh IBMExtract.properties, geninput và unload được tạo cho bạn.
  11. Tham số zdb2tableseries trong IBMExtract.properties là để chỉ rõ tên của loạt này cho các tập dữ liệu PS. Ví dụ, nếu TSO ID của bạn là DNET770 và tham số này được thiết lập là R, thì tên của các tập dữ liệu PS được tạo ra cho bảng đầu tiên sẽ là DNET777.TBLDATA.R0000001
  12. Sử dụng tham số znocopypend để thêm tham số NOCOPYPEND vào câu lệnh LOAD. Với tham số này, quản trị viên cơ sở dữ liệu (DBA) của z/OS DB2 có thể thực hiện sao lưu dự phòng vì bảng này sẽ không được đặt trong chế độ chờ COPY (sao chép).
  13. Tham số zoveralloc xác định bạn muốn vượt quá các yêu cầu cấp phát tệp của mình bằng bao nhiêu. Giá trị bằng 1 có nghĩa là bạn chẳng vượt quá tý nào. Trong một môi trường có đủ dung lượng chưa sử dụng, điều này có thể thực hiện được. Trong một môi trường thực tế, 15/11 (1,3636) sẽ là một đánh giá tốt. Chúng tôi khuyên bạn bắt đầu từ 1,3636 (15/11) và hạ thấp dần giá trị đó cho đến khi bạn nhận được các lỗi ghi tệp và sau đó tăng nó lên một chút. Nếu bạn biết giá trị của tham số SMS REDUCE SPACE UP TO (Giảm dung lượng cho đến), bạn sẽ có thể tính toán giá trị hoàn hảo của overAlloc bằng cách đặt nó tới 1/ (1 - (X/100)), ở đây X là giá trị của REDUCE SPACE UP TO đã cho là một số nguyên từ 0-100. Lưu ý rằng REDUCE SPACE UP TO biểu thị tỷ lệ phần trăm.
  14. Tham số zsecondary được sử dụng để phân bổ các vùng thứ cấp cố định. Bắt đầu bằng một giá trị 0 và tăng nó lên dần dần cho đến khi các lỗi tệp xuất hiện và sau đó lại giảm nó xuống
  15. Chạy kịch bản lệnh geninput để tạo một tệp đầu vào cho quá trình tải lên.
  16. Chạy kịch bản lệnh unload (tải lên) để tạo ra DDL và DATA.
  17. Chạy kịch bản lệnh đã tạo để tạo ra dữ liệu DDL và nạp dữ liệu vào z/OS DB2.
  18. DSNUTILS sẽ có lỗi nếu bạn không xóa các tập dữ liệu đó. Chương trình java sau đây có thể xóa các tập dữ liệu trung gian đó.
    java -cp /u/dnet770/migr/IBMDataMovementTool.jar:$JZOS_HOME/ibmjzos.jar \
    -Djava.ext.dirs=${JZOS_HOME}:${JAVA_HOME}/lib/ext ibm.Cleanup
  19. Sau khi hoàn thành nạp dữ liệu vào bảng DB2 trên z/OS, bạn có thể tìm ra các tập dữ liệu mà bạn muốn xóa. Sử dụng chương trình java sau đây để xóa các tập dữ liệu đó như là một phần của việc dọn dẹp.

    Tạo một kịch bản lệnh jd như cho thấy dưới đây:

    JZOS_HOME=$HOME/jzos
    JAVA_HOME=/usr/lpp/java/J1.5
    CLASSPATH=$HOME/migr/IBMDataMovementTool.jar:$JZOS_HOME/ibmjzos.jar
    LIBPATH=$LIBPATH:$JZOS_HOME
    
    $JAVA_HOME/bin/java -cp $CLASSPATH \
    -Djava.ext.dirs=${JZOS_HOME}:${JAVA_HOME}/lib/ext ibm.Jd $1

    Thay đổi quyền hạn tệp là 755 và chạy nó và sau đó bạn sẽ nhận được một kết quả hiển thị dưới đây:

    DNET770:/u/dnet770/migr: >./jd
    USAGE: ibm.Jd <filter_key>
    USAGE: ibm.Jd "DNET770.TBLDATA.**"
    USAGE: ibm.Jd "DNET770.TBLDATA.**.CERR"
    USAGE: ibm.Jd "DNET770.TBLDATA.**.LERR"
    USAGE: ibm.Jd "DNET770.TBLDATA.**.DISC"

    Vì vậy, nếu bạn muốn xóa tất cả các tập dữ liệu trong "DNET770.TBLDATA", hãy sử dụng lệnh sau đây.

    DNET770:/u/dnet770/migr: >./jd "DNET770.TBLDATA.**"

Kế hoạch di chuyển dữ liệu rất lớn

Sức mạnh của công cụ này dùng để di chuyển dữ liệu quy mô lớn. Công cụ này đã được sử dụng để di chuyển dữ liệu Oracle 4TB chỉ trong ba ngày với việc lập kế hoạch và các thủ tục tốt. Dưới đây là những thủ thuật và kỹ thuật sẽ giúp bạn đạt được sự di chuyển dữ liệu quy mô lớn với khung thời gian hạn chế mà bạn có thể có.

Yêu cầu phần cứng và lập kế hoạch dung lượng

Việc thảo luận về yêu cầu phần cứng và lập kế hoạch dung lượng cơ sở dữ liệu nằm ngoài phạm vi bài viết này nhưng điều quan trọng là phải nhớ các lý do sau đây để ước tính thời gian hoàn thành di chuyển dữ liệu quy mô lớn.

  • Bạn cần một kết nối mạng tốt giữa máy chủ nguồn và máy chủ DB2, tốt nhất là 1GBPS hoặc cao hơn. Bạn sẽ bị hạn chế bởi băng thông mạng với khung thời gian để hoàn thành di chuyển dữ liệu.
  • Số lượng CPU trên máy chủ nguồn sẽ cho phép bạn tải lên nhiều bảng song song. Đối với kích thước cơ sở dữ liệu lớn hơn 1TB, bạn cần phải có tối thiểu 4 CPU trên máy chủ nguồn.
  • Số lượng CPU trên máy chủ DB2 sẽ xác định tốc độ của quá trình LOAD. Theo lệ chung, bạn sẽ cần 1/4 đến 1/3 thời gian để nạp dữ liệu vào dữ liệu và thời gian còn lại sẽ được dùng cho quá trình tải lên.
  • Lập kế hoạch bố trí cơ sở dữ liệu DB2 trước. Hãy tham khảo Các trang về cách làm tốt nhất của IBM cho DB2

Các thủ thuật và các kỹ thuật

  • Có được sự hiểu biết về công cụ này trong chế độ dòng lệnh. Sử dụng GUI để tạo ra các kịch bản lệnh di chuyển dữ liệu (geninput và unload) và thực hành tải lên dữ liệu bằng cách chạy kịch bản lệnh unload từ dòng lệnh.
  • Chỉ trích xuất DDL từ nguồn bằng cách thiết lập GENDDL=trueUNLOAD=false trong kịch bản lệnh unload. Sử dụng DDL đã tạo ra để lập kế hoạch cho các vùng bảng và ánh xạ bảng. Sử dụng một thư mục đầu ra riêng biệt để lưu trữ DDL và dữ liệu đã tạo ra bằng cách chỉ rõ thư mục đích khi sử dụng tham số -DOUTPUT_DIR trong kịch bản lệnh unload. Việc tạo DDL nên được làm trước khi di chuyển dữ liệu cuối cùng.
  • Sử dụng kịch bản lệnh geninput để tạo ra một danh sách các bảng được di chuyển từ nguồn tới DB2. Sử dụng thông số SRCSCHEMA=ALLDSTSCHEMA=ALL trong kịch bản lệnh geninput để tạo một danh sách tất cả các bảng. Chỉnh sửa tệp này để loại bỏ các bảng không mong muốn và chia tách nó thành nhiều tệp đầu vào để thực hiện một cách tiếp cận di chuyển so le ở nơi bạn thực hiện tải lên từ nguồn và nạp tới đích song song.
  • Sau khi chia các tệp đầu vào bảng (được tạo từ kịch bản lệnh geninput) thành một số tệp, hãy sao chép kịch bản lệnh unload vào các tệp khác tương đương, thay đổi tên của tệp đầu vào và chỉ định một thư mục khác cho mỗi quá trình tải lên. Ví dụ, bạn có thể tạo ra 10 kịch bản lệnh unload để chuyển đi 500 bảng từ mỗi kịch bản lệnh unload, tổng cộng là 5000 bảng.
  • Hãy chắc chắn rằng bạn thực hiện DDL và Dữ liệu theo các bước riêng. Không trộn lẫn cả 2 bước đó thành một bước duy nhất để di chuyển dữ liệu lớn như vậy.
  • Tham số NUM_THREADS trong kịch bản lệnh unload điều khiển công cụ này tải lên dữ liệu song song từ các bảng nguồn. Giá trị mặc định là 5 và bạn có thể tăng nó đến một mức ở đó việc sử dụng CPU trên máy chủ nguồn của bạn là khoảng 90%.
  • Chú ý đến các bảng được liệt kê trong tệp các bảng đầu vào. Kịch bản lệnh geninput không thông minh đến mức đặt các bảng này theo một thứ tự cụ thể, nhưng bạn cần sắp xếp các bảng theo cách như vậy để giảm thiểu thời gian tải lên. Các bảng được liệt kê trong các tệp đầu vào được cấp cho một nhóm các luồng theo mẫu quay tròn (round robin). Có thể xảy ra việc tất cả các luồng đã hoàn thành quá trình tải lên nhưng vẫn còn một luồng đang chạy. Để giữ tất cả các luồng luôn bận rộn, hãy sắp đặt các tệp đầu vào cho các bảng này theo các số các hàng tăng dần.
  • Vẫn có thể xảy ra việc tất cả các bảng đã tải lên và một vài luồng vẫn còn đang tiếp tục tải lên các bảng rất lớn. Bạn có thể tải lên cùng một bảng trên nhiều luồng khi bạn có thể xác định đúng mệnh đề WHERE trong tệp đầu vào. Ví dụ:
    "ACCOUNT"."T1":SELECT * FROM "ACCOUNT"."T1" WHERE id between 1 and 1000000
    "ACCOUNT"."T1":SELECT * FROM "ACCOUNT"."T1" WHERE id between 1000001 and 2000000
    "ACCOUNT"."T1":SELECT * FROM "ACCOUNT"."T1" WHERE id between 2000001 and 3000000
    "ACCOUNT"."T1":SELECT * FROM "ACCOUNT"."T1" WHERE id between 3000001 and 4000000

    Hãy chắc chắn rằng bạn sử dụng các khóa thích hợp trong mệnh đề WHERE, mà tốt nhất nên hoặc là khóa chính hoặc là một chỉ mục duy nhất. Công cụ này bảo đảm làm đúng các kịch bản lệnh DB2 LOAD để nạp dữ liệu từ nhiều tệp do công cụ này tạo ra. Không đòi hỏi bất kỳ thiết lập khác nào để tải lên cùng một bảng trên nhiều luồng, trừ việc thêm mệnh đề WHERE khác như đã giải thích.

  • Sau khi chia quá trình tải lên của bạn thành một vài bước, bạn có thể bắt đầu đưa dữ liệu vào DB2 đồng thời khi một khối đã kết thúc tải lên dữ liệu. Điều quan trọng ở đây là thư mục đầu ra riêng biệt cho mỗi khối tải lên. Tất cả các tệp cần thiết được tạo ra để đưa dữ liệu vào DB2 trong thư mục đầu ra. Đối với DDL, bạn sẽ sử dụng kịch bản lệnh db2ddl đã tạo ra để tạo các định nghĩa bảng. Đối với dữ liệu, bạn sẽ sử dụng kịch bản lệnh db2load để nạp dữ liệu vào DB2. Nếu bạn kết hợp DDL và dữ liệu trong một bước duy nhất, thì tên của kịch bản lệnh sẽ là db2gen.
  • Tự động hóa toàn bộ quá trình trong các kịch bản lệnh shell của bạn để cho các quá trình tải lên và nạp được đồng bộ hóa. Mỗi và mọi sự di chuyển dữ liệu lớn từ các cơ sở dữ liệu Oracle hoặc các cơ sở dữ liệu khác tới DB2 là duy nhất. Bạn sẽ có các kỹ năng đã qua thử nghiệm của mình để xác định cách tự động hoá tất cả các công việc này. Sử dụng lệnh tee để lưu kết quả của các công việc vào một tệp, để cho bạn có thể tiếp tục theo dõi quá trình này và lưu kết quả đầu ra vào một tệp bản ghi nhật ký.

Chạy các thử nghiệm giả

Thật là một ý tưởng tồi nếu không thực hiện việc di chuyển giả để thử nghiệm sự tự động hóa của bạn và xác nhận hợp lệ cách mà bạn đã lên kế hoạch tải lên so le từ nguồn và nạp vào DB2. Mức tuỳ chỉnh chỉ trong việc tạo các kịch bản shell để chạy các nhiệm vụ này theo thứ tự đúng. Hãy làm theo các bước sau đây để chạy các thử nghiệm giả:

  1. Sao chép các kịch bản lệnh di chuyển dữ liệu của bạn và các kịch bản lệnh shell tự động hóa vào một thư mục giả.
  2. Đánh giá thời gian của bạn bằng cách tải lên một vài bảng lớn trên một vài luồng và sắp xếp di chuyển dữ liệu so le sao cho phù hợp.
  3. Thêm một mệnh đề WHERE để hạn chế số các hàng thử nghiệm di chuyển dữ liệu. Ví dụ, bạn có thể thêm một mệnh đề ROWNUM để hạn chế số các hàng trong Oracle hoặc sử dụng mệnh đề TOP cho SQL Server.
    "ACCOUNT"."T1":SELECT * FROM "ACCOUNT"."T1" WHERE rownum < 100
    "ACCOUNT"."T2":SELECT * FROM "ACCOUNT"."T2" WHERE rownum < 100
    "ACCOUNT"."T3":SELECT * FROM "ACCOUNT"."T3" WHERE rownum < 100
    "ACCOUNT"."T4":SELECT * FROM "ACCOUNT"."T4" WHERE rownum < 100
  4. Thực hành các kịch bản lệnh của bạn và thực hiện các thay đổi khi cần thiết và chuẩn bị để chạy lần cuối.

Chạy lần cuối

  1. Bạn đã trích xuất DDL và tự tay thực hiện các thay đổi cần thiết để ánh xạ giữa các bảng và các vùng bảng khi cần.
  2. Chọn một thời gian chờ để di chuyển dữ liệu.
  3. Hãy chắc chắn rằng bạn có khoảng 10.000 giá trị cài đặt con trỏ đã mở cho cơ sở dữ liệu Oracle nếu đó là nguồn.
  4. Xem kết quả từ tệp bản ghi nhật ký.

Để di chuyển dữ liệu lớn, còn cần nhiều hơn nữa về lập kế hoạch, sự rèn luyện và khả năng tự động hóa công việc. Công cụ này cung cấp tất cả khả năng mà bạn yêu cầu cho việc di chuyển này. Công cụ nhỏ này đã thực hiện việc di chuyển các cơ sở dữ liệu rất lớn từ nguồn tới DB2.

Hỗ trợ cho công cụ này

Tổ chức hỗ trợ của IBM không hỗ trợ công cụ này. Tuy nhiên, bạn có thể đưa ra các lỗi, các vấn đề, các đề nghị, các yêu cầu nâng cao trong diễn đàn hỗ trợ này.

Những câu hỏi thường gặp

Bảng 3. Những câu hỏi thường gặp
Câu hỏi/Vấn đềTrả lời/Giải pháp
Tôi có cần cài đặt bất cứ thứ gì trên máy chủ cơ sở dữ liệu nguồn của mình để công cụ này làm việc không?Bạn không cần phải cài đặt bất cứ thứ gì trên cơ sở dữ liệu nguồn của mình cho công cụ này.
Các nền tảng hỗ trợ cho công cụ này là gì?Windows, z/OS, AIX, Linux, UNIX, HP-UX, Solaris, Mac và bất kỳ nền tảng nào khác có một JVM trên đó.
Tôi đang chạy công cụ này từ một cửa sổ trình bao bảo mật trên nền tảng Linux/Unix của mình và tôi thấy một vài tham số trong trình bao dòng lệnh nhưng tôi không thấy GUI và có vẻ như công cụ này đã treo rồi. Tùy thuộc vào các giá trị cài đặt DISPLAY của bạn, cửa sổ GUI đã mở trên máy chủ có khả năng hiển thị cho bạn. Bạn cần xuất khẩu đúng các giá trị cài đặt DISPLAY của mình. Hãy hỏi ý kiến người quản trị hệ thống Unix của bạn.
Tôi cố gắng di chuyển dữ liệu từ PostgreSQL và tôi không thấy trình điều khiển JDBC của PostgreSQL đi kèm với công cụ này. Không có các trình điều khiển JDBC được cung cấp công cụ này do các lý do cấp phép. Bạn sẽ nhận được trình điều khiển cơ sở dữ liệu JDBC của bạn từ phần mềm được cấp phép của bạn.
Không thể cấp quyền quản trị viên cơ sở dữ liệu (DBA) cho người dùng đang trích xuất dữ liệu từ cơ sở dữ liệu Oracle. Tôi có thể sử dụng công cụ này như thế nào? Ít nhất bạn sẽ cần SELECT_CATALOG_ROLE được cấp cho người sử dụng và các đặc quyền SELECT trên bảng được sử dụng để di chuyển.
Các cơ sở dữ liệu mà công cụ này có thể kết nối là gì?Bất kỳ cơ sở dữ liệu nào cũng có một trình điều khiển JDBC loại IV. Vì vậy, bạn có thể kết nối tới MySQL, PostgreSQL, Ingres, SQL Server, Sybase, Oracle, DB2 và các cơ sở dữ liệu khác. Nó cũng có thể kết nối đến một cơ sở dữ liệu có một bộ nối ODBC- JDBC, do đó bạn cũng có thể di chuyển từ cơ sở dữ liệu Access.
Tôi cần phiên bản Java nào để chạy công cụ này?Bạn cần tối thiểu là Java phiên bản 1.5 để chạy công cụ này. Phụ thuộc cho Java 1.5 về cơ bản là do phần GUI của công cụ này. Nếu bạn thực sự cần hỗ trợ cho Java 1.4.2, hãy gửi cho tôi một thư ngắn và tôi sẽ biên dịch công cụ này cho Java 1.4.2 nhưng GUI sẽ không chạy để tạo ra các kịch bản lệnh trình điều khiển di chuyển dữ liệu.

Bạn có thể xác định phiên bản của Java bằng cách chạy lệnh này.


$ java -version
C:\>java -version
Tôi kiểm tra phiên bản của công cụ này như thế nào?Chạy IBMDataMovementTool -version trên Windows hoặc ./IBMDataMovementTool.sh -version trên Linux/UNIX
Tôi nhận được lỗi "phiên bản 49.0 major.minor không được hỗ trợ " hoặc "(.:15077): Gtk-WARNING **: không thể mở màn hình:" khi tôi chạy công cụ này. Nó có nghĩa là gì?Bạn đang sử dụng một phiên bản của Java thấp hơn phiên bản 1.5. Hãy cài đặt phiên bản Java cao hơn phiên bản 1.4.2 để khắc phục vấn đề này. Chúng tôi muốn rằng bạn cài đặt IBM Java.
Tôi cần thông tin gì cho một nguồn và các máy chủ cơ sở dữ liệu DB2 để chạy công cụ này?Bạn cần phải biết địa chỉ IP, số cổng, tên cơ sở dữ liệu, mã định danh và mật khẩu người dùng cho cơ sở dữ liệu nguồn và cơ sở dữ liệu DB2. Mã định danh người dùng cho cơ sở dữ liệu nguồn nên có các đặc quyền quản trị viên cơ sở dữ liệu (DBA) và các đặc quyền SYSADM cho cơ sở dữ liệu DB2.
Tôi đang chạy công cụ này từ máy trạm Windows của tôi và nó đang chạy rất chậm. Tôi có thể làm gì đây?Bộ nhớ mặc định được cấp phát cho công cụ này từ kịch bản lệnh IBMDataMovementTool.cmd hoặc IBMDataMovementTool.sh là 990MB bằng cách sử dụng chuyển mạch -Xmx cho JVM. Hãy thử làm giảm bộ nhớ này khi bạn có thể có ít bộ nhớ trên máy trạm của mình.
Tôi đang thực hiện di chuyển dữ liệu từ SQL Server tới DB2. Cách để tôi nhận được trường TEXT của mình để đi tới VARCHAR trong DB2.Chỉ rõ mssqltexttoclob=true trong tệp IBMExtract.properties.
Tôi đang thực hiện di chuyển dữ liệu từ Sybase tới DB2 và nó đã không di chuyển thủ tục T-SQL của tôi tới DB2.Mục đích của công cụ này chỉ là di chuyển DDL và Dữ liệu. Bạn sẽ phải sử dụng MTK cho mục đích di chuyển thủ tục/các trigger.
Tôi đang thực hiện di chuyển DDL từ Sybase tới DB2 và tôi có các đối tượng Sybase của mình trong một tệp. Tôi vẫn chưa thấy một cách để xác định tệp DDL như là một nguồn dữ liệu.Mục đích của công cụ này là di chuyển dữ liệu tốc độ cao và đó là lý do tại sao không có khả năng chuyển đổi một tệp DDL từ cơ sở dữ liệu tới DB2. Tuy nhiên bạn có thể sử dụng IBM InfoSphere Data Architect để chuyển đổi một DDL từ một cơ sở dữ liệu nguồn tới một cơ sở dữ liệu đích.
Tôi đang thực hiện di chuyển dữ liệu từ MS Access tới DB2 và tôi không nhìn thấy tất cả các chỉ mục v.v.. trong DDL được tạo.Chúng tôi sử dụng bộ nối cơ bản ODBC-JDBC để kết nối với cơ sở dữ liệu MS Access. Bạn sẽ cần một trình điều khiển JDBC thương mại khác để có được tập các DDL đầy đủ. Bạn có thể thử trình điều khiển HXTT JDBC cho MS Access. Nếu bạn sử dụng trình điều khiển HXTT, bạn sẽ phải chỉ rõ DBVENDOR=hxtt trong kịch bản lệnh unload đã tạo thay cho truy cập.
Tôi đang thực hiện di chuyển dữ liệu từ Sybase tới DB2 bằng công cụ này và tôi đang nhận hàng đống lỗi.Hoàn toàn có khả năng là cơ sở dữ liệu Sybase của bạn không được phép để hỗ trợ JDBC cần thiết. Hãy tham khảo ý kiến quản trị viên cơ sở dữ liệu (DBA) Sybase của bạn để đảm bảo rằng thủ tục đã lưu JDBC đúng được cài đặt trong cơ sở dữ liệu Sybase của bạn.
Tôi đang thực hiện di chuyển dữ liệu từ MySQL tới DB2 và tôi đang chạy thiếu bộ nhớ.Hãy thử các giá trị khác nhau với FETCHSIZE=nnn trong kịch bản lệnh unload đã tạo ra và chạy di chuyển dữ liệu từ dòng lệnh. Nếu bạn sử dụng công cụ GUI, nó sẽ ghi đè lên kịch bản lệnh unload.
Tôi đang thực hiện di chuyển dữ liệu từ Oracle tới DB2 và tôi nhận thấy rằng có 3 tệp jar cần cho việc di chuyển dữ liệu. Cách hiểu của tôi là chúng ta chỉ cần một trình điều khiển JDBC để di chuyển dữ liệu. Tại sao lại có các tệp jar bổ sung?Các tệp JAR bổ sung chủ yếu cần thiết cho các kiểu dữ liệu XML của Oracle. Bạn sẽ nhận được các tệp đó từ thư mục cài đặt Oracle của bạn.
Tôi cần kiểu dữ liệu Oracle của CLOB để di chuyển như DBCLOB trong DB2.Chuyển tới tệp IBMExtract.properties và thiết lập DBCLOB=true DBCLOB=true.
Tôi đang sử dụng công cụ này để di chuyển dữ liệu từ Oracle tới DB2 và tôi nhận được nhiều lỗi Oracle SQL mà một bảng đã không tìm thấy.ID người dùng kết nối với Oracle nên có SELECT_CATALOG_ROLE được cấp cho nó và các đặc quyền SELECT trên các bảng.
Tôi không muốn NCHAR và NVARCHAR2 chuyển đi như GRAPHIC hoặc VARGRAPHIC trong DB2. Tôi muốn chúng chuyển đi như CHAR và VARCHAR2 do tôi đã tạo ra cơ sở dữ liệu DB2 theo UTF-8.Chuyển tới tệp IBMExtract.properties và thiết lập GRAPHIC=false.
Tôi có thể chuyển dữ liệu từ cơ sở dữ liệu Oracle tới phiên bản DB2 thấp hơn V9.7/V9.5 không?Có, chuyển tới tệp IBMExtract.properties và thiết lập db2_compatibility=false
Tôi nhận thấy rằng công cụ của bạn đã di chuyển NUMBER(38) của Oracle thành NUMBER(31) và tôi hiểu DB2 chỉ hỗ trợ lên đến 31. Tôi không muốn làm tròn xuống và tôi muốn chuyển đổi điều này tới DOUBLE.Chuyển tới tệp IBMExtract.properties và thiết lập roundDown_31=false.
Tôi đang nhận được nhiều dữ liệu bị loại bỏ. Làm thế nào để tôi nhận được dữ liệu bị loại bỏ đó trong một tệp để cho tôi có thể phân tích lý do loại bỏ.Chuyển tới tệp IBMExtract.properties và thiết lập dumpfile=true.
Tôi đang cố gắng để nạp dữ liệu từ máy trạm đến một máy chủ DB2 và tôi nhận được các lỗi. Tôi có phải chạy công cụ này chỉ từ máy chủ không?Để chạy công cụ này từ máy chủ DB2 để trích xuất dữ liệu từ cơ sở dữ liệu nguồn và tránh dùng một máy chủ trung gian là thích hợp hơn. Tuy nhiên nếu bạn muốn chạy công cụ này từ một máy chủ trung gian, bạn có thể chỉ rõ REMOTELOAD=TRUE trong kịch bản đã tạo unload. Hãy nhớ rằng tiện ích DB2 LOAD cần cho dữ liệu BLOBS/CLOBS/XML có sẵn trên máy chủ. Bạn sẽ cần lắp đặt các thư mục đó với cùng một quy ước đặt tên trên máy chủ DB2 đích.
Tôi chỉ có thể đăng nhập vào máy chủ DB2 của tôi thông qua một trình bao SSH và chúng tôi không cho phép X-Windows chạy trên máy chủ DB2. Tôi chạy công cụ GUI này như thế nào để di chuyển DDL và DATA?Chạy IBMDataMovementTool.sh từ SSH của bạn và nếu không có hỗ trợ đồ họa, công cụ này sẽ tự động chuyển sang đầu vào dòng lệnh. Nếu nó không chuyển vì lý do nào đó, chỉ rõ tùy chọn –console cho lệnh IBMDataMovementTool.sh và nó sẽ buộc phải chạy công cụ này trong chế độ dòng lệnh tương tác. Chế độ dòng lệnh này chỉ là một cách để thu thập đầu vào và để tạo các kịch bản lệnh cần thiết để di chuyển dữ liệu. Việc sử dụng GUI chỉ là một cách để tạo các kịch bản lệnh và các công việc thực tế chỉ được thực hiện thông qua các kịch bản lệnh.
Tại sao bạn không tạo cơ sở dữ liệu DB2 thông qua kịch bản lệnh của bạn khi bạn yêu cầu tên của cơ sở dữ liệu.Các quản trị viên cơ sở dữ liệu (DBA) thường muốn tạo cơ sở dữ liệu của mình theo thông tin các đường dẫn lưu trữ của họ. Tuy nhiên chúng tôi tạo ra các vùng bảng cần thiết để cho các bảng được đặt tự động trong vùng bảng thích hợp của DB2. Bạn nên dự tính đọc Các trang về cách làm tốt nhất của IBM để lập kế hoạch cẩn thận cho cơ sở dữ liệu của mình. Chúng tôi khuyên bạn nên tạo ra cơ sở dữ liệu DB2 với kích thước trang là 32K như mặc định.
Tại sao tôi cần xdb.jar và xmlparserv2.jar ngoài trình điều khiển JDBC của Oracle?Tệp xdb.jar và xmlparserv2.jar sẽ được yêu cầu khi dữ liệu Oracle của bạn có chứa dữ liệu XML. Bạn có thể xác định vị trí xdb.jar trong thư mục server/RDBMS/jlib và xmlparserv2.jar trong thư mục lib. Nếu bạn không thể xác định vị trí các tệp này, thì bạn có thể tải về Oracle XDK cho Java.
Tôi đang nhận được java.lang.UnsatisfiedLinkError: Pipe Pipe.dll không phải là một ứng dụng Win32 hợp lệ. Tôi sửa lỗi này như thế nào ?Lỗi này xảy ra khi bạn đang chạy công cụ trên nền tảng Windows 64-bit bằng Java JVM 32-bit. Hãy cài đặt Java JVM 64-bit trên nền tảng Windows của bạn và chạy công cụ này.

Lời cảm ơn

Nhiều thành viên IBM từ khắp nơi trên thế giới đã cung cấp thông tin phản hồi có giá trị cho công cụ này và không có phản hồi của họ, công cụ dưới dạng này đã không thể thực hiện được. Tôi cảm tạ sự giúp đỡ, phản hồi, các góp ý và hướng dẫn quan trọng từ những người sau đây.

  • Jason A Arnold
  • Serge Rielau
  • Marina Greenstein
  • Maria N Schwenger
  • Patrick Dantressangle
  • Sam Lightstome
  • Barry Faust
  • Vince Lee
  • Connie Tsui
  • Raanon Reutlinger
  • Antonio Maranhao
  • Max Petrenko
  • Kenneth Chen
  • Masafumi Otsuki
  • Neal Finkelstein

Từ chối trách nhiệm

Bài viết này có một công cụ. IBM cấp cho bạn ("cấp phép") một giấy phép không độc quyền, miễn phí bản quyền tác giả để sử dụng công cụ này. Tuy nhiên, công cụ này được cung cấp như nó vốn có và không có bất kỳ các bảo hành nào, DÙ RÕ RÀNG HAY NGỤ Ý, BAO GỒM BẤT KỲ SỰ CAM KẾT NGẦM NÀO VỀ KHẢ NĂNG BÁN ĐƯỢC, PHÙ HỢP CHO MỘT MỤC ĐÍCH CỤ THỂ HAY KHÔNG VI PHẠM. IBM VÀ NHỮNG NGƯỜI CẤP PHÉP CỦA NÓ SẼ KHÔNG CHỊU TRÁCH NHIỆM PHÁP LÝ ĐỐI VỚI BẤT KỲ CÁC HƯ HỎNG NÀO MÀ NGƯỜI ĐƯỢC CẤP PHÉP PHẢI CHỊU DO KẾT QUẢ TỪ VIỆC SỬ DỤNG PHẦN MỀM CỦA BẠN. IBM HAY NHỮNG NGƯỜI CẤP PHÉP TRONG MỌI TRƯỜNG HỢP SẼ KHÔNG CHỊU TRÁCH NHIỆM VỀ BẤT KỲ DOANH THU, LỢI NHUẬN HAY DỮ LIỆU BỊ MẤT HOẶC CÁC THIỆT HẠI TRỰC TIẾP, GIÁM TIẾP, ĐẶC BIỆT, DO HẬU QUẢ, NGẪU NHIÊN HAY BỒI THƯỜNG THEO PHÁN QUYẾT CỦA TÒA ÁN, TUY NHIÊN NGUYÊN NHÂN HAY BẤT KỂ LÝ THUYẾT TRÁCH NHIỆM, PHÁT SINH BÊN NGOÀI VIỆC SỬ DỤNG HAY KHÔNG THỂ SỬ DỤNG PHẦN MỀM, THẬM CHÍ IBM ĐÃ ĐƯỢC KHUYÊN VỀ KHẢ NĂNG CỦA THIỆT HẠI NHƯ VẬY.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

Thảo luận

Tải về thêm

  • IBM Data Movement Tool (Bản dựng mới công cụ này được tải lên rất thường xuyên, sau khi sửa lỗi và các cải tiến mới. Nhấn chuột vào Help > Check New Version (Trợ giúp > Kiểm tra phiên bản mới từ GUI hoặc nhập lệnh ./IBMDataMovementTool.sh –check để kiểm tra xem một xây dựng mới có sẵn để tải về. Bạn có thể tìm thấy số phiên bản của công cụ này bằng việc từ tùy chọn trình đơn Help > About hoặc bằng cách nhập lệnh ./IBMDataMovementTool.sh -version. Công cụ này sử dụng các gói JGoodies Forms 1.2.1, JGoodies Look 2.2.2 và JSyntaxPane 0.9.4 cho giao diện GUI.)

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Information Management
ArticleID=696194
ArticleTitle=Công cụ di chuyển dữ liệu sang IBM
publish-date=11222010