Chuẩn bị kỳ thi số 731 lấy chứng chỉ DBA (Quản trị cơ sở dữ liệu) DB2 9, Phần 5: Các tiện ích của DB2

Sẵn sàng cho kỳ thi

Học các kỹ năng giúp bạn quản lý đúng cách các máy chủ cơ sở dữ liệu DB2 của bạn. Đây là phần thứ năm trong loạt bài hướng dẫn gồm bảy phần để giúp bạn chuẩn bị kỳ thi lấy Chứng chỉ quản trị cơ sở dữ liệu của DB2® 9 cho Linux®, UNIX® và Windows™ (Kỳ thi 731).

Clara Liu, Giám đốc sản phẩm DB2, IBM

Clara Liu là nhà lập kế hoạch cho sản phẩm Cơ sở dữ liệu phổ quát DB2 tại phòng thí nghiệm Toronto của IBM. Là một thành viên của đội ngũ quản lý sản phẩm DB2, chị làm việc chặt chẽ với các đội ngũ tiếp thị và phát triển DB2 cũng như với các khách hàng và các đối tác kinh doanh của IBM. Chị chuyên về lĩnh vực phát triển ứng dụng cơ sở dữ liệu. Clara cũng là một tác giả tích cực trong cộng đồng DB2 cho Linux, UNIX và Windows. Chị là đồng tác giả của một số bài báo của IBM và một trong những cuốn sách bán chạy nhất của chị là cuốn: Hiểu DB2- Học trực quan với các ví dụ - Understanding DB2 - Learning Visually with Examples (nhà xuất bản Prentice Hall, năm 2004)



18 12 2009

Trước khi bạn bắt đầu

Về loạt bài hướng dẫn này

Nếu bạn đang chuẩn bị dự kỳ thi 731 lấy chứng chỉ quản trị cơ sở dữ liệu (DBA) DB2, bạn đã đến đúng chỗ -- đây là một kiểu phòng tự học. Loạt bảy bài hướng dẫn chuẩn bị lấy chứng chỉ DB2 này gồm các khái niệm chính mà bạn cần biết để làm bài kiểm tra. Hãy làm bài tập ở nhà của bạn ở đây và giảm bớt căng thẳng trong ngày thi.

Về bài hướng dẫn này

Bài hướng dẫn này giới thiệu các kỹ năng mà bạn phải có để quản lý đúng cách một máy chủ DB2. Đây là phần thứ năm trong loạt bài hướng dẫn gồm bảy phần để giúp bạn chuẩn bị kỳ thi lấy Chứng chỉ quản trị cơ sở dữ liệu DB2 9 cho Linux, UNIX và Windows (Kỳ thi 731).

Các mục tiêu của bài viết

Trong hướng dẫn này, bạn sẽ:

  • Học cách làm thế nào để trích xuất dữ liệu bằng cách sử dụng tiện ích EXPORT
  • Học cách làm thế nào để điền dữ liệu vào bảng bằng các tiện ích IMPORTLOAD
  • Xem xét các lợi thế và bất lợi của việc sử dụng tiện ích IMPORTLOAD
  • Biết khi nào và làm thế nào để sử dụng các lệnh db2move, db2lookdb2batch
  • Học cách làm thế nào để sử dụng các tiện ích RUNSTATS, REORG, REORGCHKREBIND và câu lệnh FLUSH PACKAGE CACHE
  • Tìm hiểu có thể làm những gì với Trung tâm điều khiển (Control Center) của DB2
  • Biết khi nào và làm thế nào để sử dụng trình cố vấn thiết kế (Design Advisor) của DB2

Điều kiện cần có trước

Để được tham dự kỳ thi DB2 9 DBA bạn phải đã vượt qua kỳ thi 730 Cơ bản về DB2 9. Chúng tôi khuyên bạn nên xem loại bài hướng dẫn Cơ bản về DB2 trước khi bắt đầu loạt bài hướng dẫn này.

Hướng dẫn này là một trong những công cụ để giúp bạn chuẩn bị cho kỳ thi 731. Bạn cũng nên xem lại các tài nguyên ở phần cuối hướng dẫn này để biết thêm về các tiện ích của DB2 (xem mục Tài nguyên).

Mặc dù không phải tất cả các tư liệu được thảo luận trong loạt bài hướng dẫn Cơ bản về DB2 đều cần thiết để hiểu các khái niệm được mô tả trong hướng dẫn này, ít nhất bạn nên có kiến thức cơ bản về:

  • Các sản phẩm của DB2
  • Các công cụ của DB2
  • Các cá thể DB2
  • Các cơ sở dữ liệu
  • Các đối tượng của cơ sở dữ liệu

Yêu cầu về hệ thống

Bạn không cần một bản sao của DB2 để hoàn thành hướng dẫn này. Tuy nhiên, bạn sẽ học được nhiều hơn từ hướng dẫn này, nếu bạn tải về phiên bản dùng thử miễn phí của DB2 9 của IBM để làm theo bài hướng dẫn này.


Các tiện ích di chuyển dữ liệu

Các tiện ích và định dạng tệp tin

Ba tiện ích để di chuyển dữ liệu có sẵn trong DB2:

  • EXPORT
  • IMPORT
  • LOAD

Điều quan trọng là phải đảm bảo rằng các dữ liệu bạn muốn chuyển giao phải tương thích với cả nền tảng nguồn lẫn nền tảng đích. Định dạng tệp tin được hỗ trợ bởi các tiện ích là:

  • ASCII không có dấu phân cách hoặc có độ dài cố định (ASC): Như tên của nó hàm ý, kiểu tệp tin này chứa dữ liệu ASCII có độ dài cố định để dóng thẳng với dữ liệu cột. Mỗi tệp tin ASC là một luồng ký tự ASCII bao gồm giá trị dữ liệu theo trật tự hàng và cột. Các hàng trong luồng dữ liệu được ngăn cách bởi các dấu phân cách hàng, được giả sử là ký tự xuống dòng (newline).
  • ASCII có dấu phân cách (DEL): Đây là định dạng tệp tin phổ biến nhất được sử dụng bởi nhiều nhà quản lý cơ sở dữ liệu để trao đổi dữ liệu. Nó chứa dữ liệu ASCII và sử dụng các ký tự dấu phân cách đặc biệt để tách các giá trị cột. Các hàng trong luồng dữ liệu được phân cách bằng các ký tự xuống dòng (newline) như là dấu phân cách hàng.
  • Phiên bản PC của định dạng trao đổi tích hợp (Intergrated Exchange Format) (PC/IXF): Đây là một mô tả có cấu trúc của một bảng cơ sở dữ liệu. Định dạng tệp tin này có thể được sử dụng không chỉ để nhập khẩu dữ liệu mà còn để tạo ra một bảng chưa tồn tại trong cơ sở dữ liệu đích.
  • Định dạng tờ bảng tính (Worksheet Format -WSF): Dữ liệu được lưu trữ ở định dạng này có thể được diễn giải trong tờ bảng tính. Nó có thể được sử dụng chỉ cho xuất khẩu và nhập khẩu dữ liệu.
  • Con trỏ: Con trỏ được khai báo với truy vấn. Nó chỉ có thể được sử dụng như là đầu vào của một hoạt động nạp.

Tiện ích EXPORT của DB2

Tổng quan về tiện ích EXPORT

Tiện ích EXPORT trích xuất dữ liệu từ các bảng cơ sở dữ liệu vào một tệp tin bằng cách sử dụng câu lệnh SQL SELECT hoặc XQUERY. Các dữ liệu được xuất khẩu ra có thể trong các định dạng tệp tin DEL, IXF hoặc WSF. Người ta khuyến cáo rằng bạn nên gồm thêm mệnh đề MESSAGES vào thao tác xuất khẩu dữ liệu để bắt các lỗi, các cảnh báo và các thông điệp thông tin trong quá trình xuất khẩu.

Để gọi thực hiện thành công tiện ích EXPORT bạn phải có các quyền SYSADM hoặc DBADM, hoặc các đặc quyền CONTROL hoặc SELECT trên các bảng hoặc các khung nhìn được truy cập trong lệnh EXPORT.

Với sự hỗ trợ mới để kiểm soát truy cập dựa trên nhãn (LBAC) được đưa vào phiên bản 9.1 của DB2, bạn cần phải chú ý đến các ủy nhiệm LBAC của bạn, nó có thể cho phép hoặc không cho phép bạn truy cập vào các hàng và/hoặc cột được bảo vệ. Khi xuất khẩu dữ liệu từ một bảng có các hàng được bảo vệ, các ủy nhiệm LBAC của bạn có thể giới hạn số hàng được xuất ra. Các hàng mà bạn không có quyền truy cập đọc sẽ không được xuất khẩu ra. Không có thông báo lỗi hoặc cảnh báo nào. Tuy nhiên, nếu ủy nhiệm LBAC của bạn không cho phép đọc từ một hay nhiều cột được bảo vệ bao gồm trong lệnh xuất khẩu, lệnh xuất sẽ thất bại và báo lỗi.

Chúng ta hãy xem xét một ví dụ xuất khẩu đơn giản. Lệnh dưới đây xuất kết quả của câu lệnh SELECT vào một tệp tin có định dạng DEL. Tệp tin thông điệp msg.out ghi lại các thông tin hữu ích cũng như bất kỳ lỗi hay cảnh báo nào gặp phải :

EXPORT TO myfile.del OF DEL 
    MESSAGES msg.out
      SELECT staff.name, staff.dept, org.location
        FROM org, staff
       WHERE org.deptnumb = staff.dept;

Biến tố kiểu tệp tin

Trong ví dụ thảo luận ở phần trên, dữ liệu được trích xuất đến một tệp tin có định dạng DEL. Theo mặc định, các giá trị cột được phân cách bằng dấu phẩy (,) và chuỗi ký tự được bao bọc bằng cặp dấu nháy kép ("). Điều gì sẽ xảy ra nếu các dữ liệu được trích xuất cũng đã có dấu phẩy và nháy kép? Tiện ích nhập khẩu và tiện ích nạp (load) sẽ không thể xác định được ký hiệu nào là dữ liệu thực tế và ký hiệu nào là dấu phân cách. Để tuỳ chỉnh cách tiện ích EXPORT hoạt động như thế nào, bạn có thể sử dụng mệnh đề MODIFIED BY và chỉ rõ bạn muốn thay đổi cái gì với các biến tố (modifiers) kiểu tệp tin. Lệnh EXPORT với mệnh đề MODIFIED BY sẽ như sau:

EXPORT TO file_name OF file_type
    MODIFIED BY file_type_modifiers
    MESSAGES message_file
    select_statement

Bạn có thể tìm thấy một liệt kê đầy đủ các biến tố kiểu tệp tin trong Chỉ dẫn tham khảo lệnh (Command Reference Guide), ở mục EXPORT. Một số biến tố thường được sử dụng được liệt kê ở đây để làm ví dụ:

  • chardelx
    • Xác định x là một ký tự đơn lẻ làm dấu phân cách chuỗi ký tự mới. Giá trị mặc định là dấu nháy kép (").
  • coldelx
    • Xác định x là một ký tự đơn lẻ làm dấu phân cách cột mới. Giá trị mặc định là dấu phẩy (,).
  • codepage=x
    • Xác định x, một chuỗi ký tự ASCII, là trang mã mới của dữ liệu đầu ra. Trong quá trình hoạt động xuất khẩu dữ liệu, dữ liệu ký tự được chuyển đổi từ trang mã ứng dụng tới trang mã này.
  • timestampformat="x"
    • x là định dạng của mốc thời gian trong bảng nguồn.

Ta hãy xem ví dụ sau:

EXPORT TO myfile.del OF DEL
  MODIFIED BY chardel! coldel@ codepage=1208 timestampformat="yyyy.mm.dd hh:mm tt"
  MESSAGES msg.out
  SELECT * FROM schedule

Lệnh trên xuất khẩu dữ liệu từ bảng SCHEDULE theo định dạng DEL với các hành vi sau đây:

  • Các chuỗi ký tự được bao bọc bằng dấu chấm than (!)
  • Các cột được phân cách bởi dấu @
  • Các chuỗi ký tự sẽ được chuyển đổi tới trang mã 1208
  • Mốc thời gian do người dùng định nghĩa trong bảng SCHEDULE có định dạng yyyy.mm.dd hh:mm tt

Xuất khẩu các đối tượng lớn với biến tố LOBSINFILE

Khi xuất khẩu các bảng với các cột đối tượng lớn (LOB), theo mặc định thì chỉ có 32 KB dữ liệu LOB đầu tiên được xuất khẩu. Phần này của đối tượng được đặt trong cùng tệp tin giống như phần còn lại của cột dữ liệu. Để xuất đầy đủ dữ liệu LOB và lưu trữ chúng trong các tệp tin khác với các dữ liệu cột khác, bạn phải sử dụng các tùy chọn LOB. Trong DB2 V9.1, bạn có thể chỉ rõ bạn có muốn ghép nối nhiều giá trị LOB và xuất khẩu ra cùng một tệp tin đầu ra hay là xuất khẩu mỗi một giá trị LOB vào một tệp tin riêng biệt.

Dưới đây là một lệnh EXPORT với biến tố LOBSINFILE ra lệnh cho tiện ích xuất khẩu ghi nhiều giá trị LOB vào cùng một tệp tin đầu ra.

EXPORT TO file_name OF file_type
    LOBS TO lobfile_directory_1, lobfile_directory_2, ... 
    LOBFILE lobfilename
    MODIFIED BY LOBSINFILE
    MESSAGES message_file
    select_statement

Mệnh đề LOBS TO qui định các thư mục nơi mà các tệp tin LOB sẽ được lưu trữ. Nếu không có mệnh đề LOBS TO thì dữ liệu LOB được gửi đến thư mục làm việc hiện tại. Từ lệnh trên bạn hãy lưu ý rằng ta có thể chỉ định nhiều hơn một đường dẫn làm các thư mục đích của tệp tin LOB. Sẽ có ít nhất một tệp tin cho mỗi đường dẫn LOB, và mỗi tệp tin sẽ chứa ít nhất một LOB.

Có lẽ sẽ hữu ích nếu ta nhận biết các tệp tin LOBFILE đã trích xuất với các tên tệp tin do người sử dụng định nghĩa. Mệnh đề LOBFILE có thể được sử dụng cho mục đích này. Mỗi tệp tin LOB sẽ có một số tuần tự làm phần mở rộng của tệp tin (ví dụ: lobfile.001, lobfile.002, lobfile.003, v.v..).

Khi một trong hai lựa chọn LOBS TO hoặc LOBFILE được chỉ định, thì hành vi của lựa chọn LOBSINFILE sẽ được kích hoạt ngầm. Tuy nhiên, sẽ tốt hơn nếu chỉ rõ tường minh biến tố LOBSINFILE để tránh nhầm lẫn với hành vi của biến tố LOBSINSEPFILES sẽ được thảo luận ở phần sau.

Định tố vị trí của LOB

Khi xuất các đối tượng lớn với biến tố LOBSINFILE thì một định tố vị trí của LOB (LLS) được tạo ra và được lưu giữ trong tệp tin xuất khẩu đầu ra. LLS là một chuỗi được sử dụng để chỉ nơi dữ liệu LOB có thể được tìm thấy. Nó có định dạng là filename.ext.lob.nnn.mmm/. Ta hãy xem xét định dạng này chi tiết hơn:

  • filename.ext.lob là tên của tệp tin có chứa các dữ liệu LOB. ext là số tuần tự, như được nói ở phần trên.
  • nnn là khoảng chừa trống của đối tượng lớn bên trong tệp tin LOB tính bằng byte.
  • mmm là chiều dài của đối tượng lớn tính bằng byte.

Lấy ví dụ, một LLS có tên là resume.001.lob.1257.2415/ cho ta biết rằng đối tượng lớn nằm ở tệp tin resume.001.lob, dữ liệu LOB này thực tế bắt đầu sau một khoảng chừa trống có kích thước là 1.257 byte và nó dài 2.415 byte.

Để minh họa rõ ràng LLS được sử dụng như thế nào, bạn hãy xem ví dụ dưới đây.

EXPORT TO empresume.del DEL 
    LOBS TO d:\lob1\
    LOBFILE resume 
    MODIFIED BY LOBSINFILE
    MESSAGES msg.out    
    SELECT * FROM emp_resume

Xuất khẩu các đối tượng lớn với biến tố LOBSINSEPFILES

Như đã được đề cập ở các phần trước, bạn cũng có thể chọn để xuất dữ liệu LOB đầy đủ và lưu trữ mỗi dữ liệu đó vào các tệp tin riêng biệt. Các tùy chọn LOB được miêu tả ở phần trước vẫn như cũ, trừ khi biến tố LOBSINSEPFILES được sử dụng thay thế.

Dưới đây là một ví dụ với biến tố này.

EXPORT TO empresume.del DEL 
    LOBS TO d:\lob1\
    LOBFILE resume 
    MODIFIED BY LOBSINSEPFILES
    MESSAGES msg.out    
    SELECT * FROM emp_resume

Với lệnh EXPORT này, tiện ích EXPORT sẽ ghi dữ liệu LOB vào các tệp tin với tên resume.ext.lob (tức là resume.001.lob, resume.002.lob, resume.003.lob, v.v..), chúng đều nằm trong đường dẫn LOB d:\lob1.

Xuất khẩu dữ liệu XML

Với việc đưa thêm hỗ trợ XML nguyên sinh vào DB2 phiên bản 9.1, tiện ích xuất khẩu cũng được mở rộng để hỗ trợ XML. Nếu bạn định xuất khẩu một bảng (được định nghĩa với dữ liệu XML) mà không chỉ định bất kỳ tùy chọn nào liên quan tới XML, thì dữ liệu XML liên quan sẽ được ghi vào một tệp tin hoặc nhiều tệp tin, tách biệt với phần còn lại của dữ liệu quan hệ được xuất khẩu. Ta hãy xem một ví dụ. Lệnh EXPORT sau đây được phát ra trên bảng PRODUCT có định nghĩa một cột XML:

EXPORT TO prodexport.del DEL 
    MESSAGES msg.out    
    SELECT * FROM product

Trong ví dụ này tiện ích xuất khẩu sẽ tạo ra hai tệp tin đầu ra. Một trong hai tệp tin là prodexport.del, chứa dữ liệu quan hệ của bảng cũng như định tố dữ liệu XML (XML data specifier - XDS).

XDS là một chuỗi ký tự được biểu diễn như một thẻ XML có tên là "XDS". Nó có các thuộc tính mô tả các thông tin về dữ liệu XML thực tế có trong cột. Dưới đây là các thuộc tính mà bạn có thể thấy trong một chuỗi XDS.

  • FIL xác định tên của tệp tin chứa dữ liệu XML.
  • OFF xác định khoảng chừa trống tính bằng byte của dữ liệu XML trong tệp tin được đặt tên theo thuộc tính FIL.
  • LEN xác định chiều dài tính bằng byte của dữ liệu XML trong tệp tin được đặt tên theo thuộc tính FIL.
  • SCH xác định mã định danh SQL phân biệt đầy đủ của lược đồ XML được sử dụng để xác nhận hợp lệ tài liệu XML. Thuộc tính này sẽ được thảo luận trong phần sau.

Từ nội dung của tệp tin prodexport.del ở trên, bạn có thể thấy rằng dữ liệu XML đầu tiên được lưu giữ trong tệp tin prodexport.del.001.xml bắt đầu sau một khoảng chừa trống có kích thước là 0 byte và nó có chiều dài là 252 byte.

Tệp tin khác được tạo ra bởi tiện ích xuất khẩu trong ví dụ này là prodexport.del.001.xml, nó chứa nội dung XML. Mọi dữ liệu XML được xuất khẩu được ghép nối lại và được ghi vào tệp tin này. Sau đây là nội dung của tệp tin prodexport.del.001.xml để cung cấp cho bạn thêm hiểu biết về nó.

Xuất khẩu dữ liệu XML với tuỳ chọn và biến tố XML

Giống như xuất khẩu các đối tượng lớn, bạn có thể chỉ định một hoặc nhiều đường dẫn, nơi các tài liệu XML được xuất khẩu sẽ được chuyển tới và phần tên cơ sở của các tệp tin đầu ra. Ta hãy xem ví dụ sau:

EXPORT TO prodexport.del DEL 
    XML TO d:\xmlpath
    XMLFILE proddesc
    MODIFIED BY XMLINSEPFILES XMLNODECLARATION XMLCHAR
    XMLSAVESCHEMA
    MESSAGES msg.out    
    SELECT * FROM product

Ở đây các dữ liệu quan hệ của bảng PRODUCT được xuất khẩu sang tệp tin prodexport.delfile. Sau đó mọi dữ liệu XML sẽ được ghi vào thư mục được chỉ định trong mệnh đề XML TO d:\xmlpath. Các tệp tin với dữ liệu XML được đặt tên là proddesc.ext.xml với ext là số tuần tự (ví dụ: proddesc.001.xml, proddesc.002.xml, proddesc.003.xml, v.v..). Phần tên cơ sở này được định nghĩa bởi tùy chọn XMLFILE.

Bạn cũng có thể nhận thấy rằng một vài biến tố được sử dụng trong ví dụ này. Sau đây là bảng tóm tắt của tất cả các biến tố liên quan đến XML.

  • XMLINSEPFILES làm cho tiện ích xuất khẩu ghi từng tài liệu XML được xuất khẩu vào một tệp tin XML riêng biệt.
  • XMLNODECLARATION biểu thị rằng dữ liệu XML được xuất khẩu mà không có thẻ khai báo XML. Theo mặc định, thẻ khai báo XML được ghi tại phần đầu của một tài liệu XML, nó bao gồm một thuộc tính về bảng mã.
  • XMLCHAR biểu thị rằng dữ liệu XML được viết bằng trang mã (codepage) ký tự. Theo mặc định, dữ liệu XML được viết bằng bộ mã Unicode. Khi biến tố này được sử dụng, thì giá trị của biến tố kiểu tệp tin của trang mã hoặc trang mã của ứng dụng sẽ được sử dụng thay thế.
  • XMLGRAPHIC biểu thị rằng dữ liệu XML được xuất khẩu sẽ được mã hóa bằng trang mã UTF-16, bất kể biến tố kiểu tệp tin của trang mã hoặc trang mã của ứng dụng là gì. Bạn lưu ý rằng tùy chọn XMLGRAPHIC không được sử dụng trong ví dụ này.

Tùy chọn cuối cùng mà chúng tôi giới thiệu ở đây là XMLSAVESCHEMA. Khi một tài liệu XML đã được chèn vào, thì nó có thể được xác nhận hợp lệ bởi một lược đồ XML. Tùy chọn XMLSAVESCHEMA ra lệnh cho tiện ích xuất khẩu cũng ghi lưu các thông tin của lược đồ XML cho tất cả các dữ liệu XML được xuất khẩu. Mã định danh SQL phân biệt đầy đủ của lược đồ đó sẽ được lưu trữ như là một thuộc tính SCH bên trong định tố dữ liệu XML (XDS) tương ứng. Bạn lưu ý rằng nếu tài liệu XML được xuất khẩu không được xác nhận hợp lệ bởi lược đồ XML hoặc đối tượng lược đồ không còn tồn tại trong cơ sở dữ liệu, thuộc tính SCH sẽ không được bao gồm trong XDS tương ứng.

Sau đây là kết quả của ví dụ về tiện ích xuất khẩu nêu trên.

Xuất khẩu dữ liệu XML bằng một truy vấn XQuery

Lệnh EXPORT cũng cho phép bạn chỉ định một câu lệnh XQuery để cho tiện ích xuất khẩu ghi kết quả của XQuery thành một tệp tin XML. Chúng ta hãy xem xét ví dụ sau:

EXPORT TO custexport.del DEL 
    XML TO d:\xmlpath
    XMLFILE custphone
    MODIFIED BY XMLINSEPFILES XMLNODECLARATION 
    MESSAGES msg.out    
    SELECT XMLQUERY ('$doc/customerinfo/phone' PASSING INFO AS "doc") FROM customer

XQuery trong ví dụ trên trả về tất cả các số điện thoại của mọi khách hàng được lưu trữ trong bảng CUSTOMER trong cột XML INFO. Tất cả các tùy chọn XML và các biến tố đang được thảo luận áp dụng được cho câu lệnh XQuery. Do đó, ví dụ này sẽ tạo ra các tài liệu XML riêng biệt cho mỗi kết quả của XQuery. Các tệp tin nằm tại địa chỉ d:\xmlpath và chúng được đặt tên là custphone.ext.xml với ext là số tuần tự. Ngoài ra, trong các tài liệu không có thẻ khai báo XML.

Sau đây là nội dung của một trong những tài liệu XML được xuất khẩu.

Xuất khẩu dữ liệu từ Trung tâm điều khiển

Ngoài việc thi hành lệnh EXPORT từ dòng lệnh của DB2, bạn có thể xuất khẩu dữ liệu bằng cách sử dụng Trung tâm điều khiển. Với công cụ này, bạn có thể chỉ định tất cả các tùy chọn và các mệnh đề được hỗ trợ bởi tiện ích xuất khẩu chẳng hạn như các đối tượng lớn và dữ liệu XML. Như được minh hoạ trong hình dưới đây, phiếu Schedule cho phép bạn tạo một tác vụ và một lịch trình mà tiện ích xuất khẩu sẽ chạy tại một thời điểm đã cho.


Tiện ích IMPORT của DB2

Tổng quan về tiện ích IMPORT

Tiện ích IMPORT điền dữ liệu vào một bảng với một tệp tin đầu vào kiểu ASC, DEL, IXF hoặc WSF. Đích có thể là một bảng, một bảng được định kiểu hoặc một khung nhìn. Tuy nhiên, việc nhập khẩu dữ liệu vào các bảng hệ thống, bảng tạm thời, và bảng truy vấn được vật chất hóa là không được phép. Tôi cũng khuyên bạn nên sử dụng mệnh đề MESSAGES để cho các thông báo lỗi, các cảnh báo, các thông điệp báo tin được ghi lại.

Để nhập khẩu thành công dữ liệu, bạn phải có quyền SYSADM hoặc DBADM, hoặc các đặc quyền ưu tiên (SELECT, INSERT, CONTROL hoặc CREATETAB) trên bảng đích hoặc trên cơ sở dữ liệu, tùy thuộc vào bạn sử dụng tùy chọn nào. Để nhập khẩu dữ liệu vào một bảng có các hàng và cột được bảo vệ, bạn phải có ủy nhiệm LBAC cho phép truy cập viết vào tất cả các dữ liệu được bảo vệ trong bảng. Ngoài ra, việc nhập khẩu dữ liệu vào bảng với các hàng được bảo vệ đòi hỏi rằng ủy nhiệm LBAC của bạn là một phần của chính sách bảo mật bảo vệ bảng.

Lệnh IMPORT được hiển thị dưới đây với năm tùy chọn khác nhau:

	IMPORT FROM file_name OF file_type
    MESSAGES message_file
    [ INSERT | INSERT_UPDATE | REPLACE | REPLACE_CREATE | CREATE ]
    INTO target_table_name
  • Tùy chọn INSERT chèn dữ liệu nhập khẩu vào bảng. Bảng đích đã phải tồn tại.
  • Tùy chọn INSERT_UPDATE chèn dữ liệu vào bảng, hoặc cập nhật các hàng hiện có của bảng nếu khóa chính phù hợp. Bảng đích phải tồn tại và có định nghĩa một khóa chính.
  • Tùy chọn REPLACE xóa tất cả các dữ liệu hiện có và chèn dữ liệu nhập khẩu vào một bảng đích đang tồn tại.
  • Với tùy chọn REPLACE_CREATE nếu bảng đích tồn tại, thì tiện ích đó xóa dữ liệu hiện có và chèn dữ liệu mới giống như khi chỉ định tùy chọn REPLACE. Nếu bảng đích chưa được định nghĩa, thì bảng và các chỉ mục kết hợp với bảng đó sẽ được tạo ra trước khi dữ liệu được nhập khẩu vào. Như bạn có thể hình dung, tệp tin đầu vào phải có định dạng PC/IXF, bởi vì định dạng này có chứa một mô tả có cấu trúc của bảng xuất khẩu. Nếu bảng đích là một bảng cha (parent table) được tham chiếu bởi một khoá ngoài, thì không thể sử dụng tùy chọn REPLACE_CREATE.
  • Tùy chọn CREATE tạo ra bảng đích và các chỉ mục của nó, sau đó nó nhập khẩu dữ liệu vào bảng mới. Tùy chọn này chỉ hỗ trợ định dạng tệp tin PC/IXF. Bạn cũng có thể chỉ định tên của vùng bảng, nơi bảng mới sẽ được tạo ra.

Ví dụ:

IMPORT FROM emp.ixf OF IXF
    MESSAGES msg.out
    CREATE INTO employee IN datatbsp INDEX IN indtbsp

Các tuỳ chọn IMPORT

Về cơ bản IMPORT là một tiện ích để chèn dữ liệu vào một bảng với số lượng lớn. Hoạt động chèn dữ liệu số lượng lớn này giống như một câu lệnh chèn dữ liệu bình thường theo nghĩa rằng các hành động được ghi nhật ký, các chỉ mục được cập nhật, tính toàn vẹn tham chiếu được kiểm tra và các ràng buộc của bảng được kiểm tra. Theo mặc định, tùy chọn IMPORT giao kết (commit) chỉ một lần, vào lúc kết thúc hoạt động. Nếu một số lượng lớn hàng được nhập khẩu hoặc được chèn vào bảng, thì đòi hỏi phải ghi nhật ký giao dịch đầy đủ để cuộn ngược lại (rollback) và phục hồi. Bạn có thể yêu cầu giao kết từng kỳ để tránh việc các bản ghi nhật ký bị đầy. Bằng cách giao kết đều đặn khi chèn dữ liệu, bạn cũng giảm bớt được số lượng các hàng bị mất nếu có hỏng hóc trong quá trình hoạt động nhập khẩu. Tùy chọn COMMITCOUNT bắt buộc phải giao kết COMMIT sau khi một số bản ghi đã được nhập khẩu. Bạn cũng có thể chỉ định tùy chọn AUTOMATIC tùy chọn này cho phép tiện ích IMPORT xác định một cách nội bộ khi nào cần thực hiện một giao kết. Tiện ích sẽ xem xét và phát lệnh giao kết để tránh tình trạng đầy nhật ký hoặc để tránh việc leo thang mức khóa. (N.D: Leo thang mức khóa (lock escalation) là quá trình giảm số lượng khóa bằng cách chuyển đối nhiều khóa mức chi tiết mịn hơn thành ít khóa hơn nhưng mức thô hơn). Dưới đây là một ví dụ về cách bạn có thể sử dụng tùy chọn COMMITCOUNT:

IMPORT FROM myfile.ixf OF IXF
    COMMITCOUNT 500 
    MESSAGES msg.out
    INSERT INTO newtable

Nếu vì một lý do nào đó mà lệnh trên không thực hiện được trong quá trình thi hành của nó, thì bạn có thể sử dụng tệp tin thông điệp để xác định hàng cuối cùng đã được nhập khẩu thành công và được giao kết. Sau đó bạn có thể khởi động lại việc nhập khẩu dữ liệu với tùy chọn RESTARTCOUNT. Lưu ý rằng hành vi của tùy chọn SKIPCOUNT là giống với hành vi của tùy chọn RESTARTCOUNT. Trong lệnh bên dưới, tiện ích sẽ bỏ qua 30.000 bản ghi đầu tiên trước khi bắt đầu hoạt động nhập khẩu dữ liệu.

IMPORT FROM myfile.ixf OF IXF
    COMMITCOUNT 500 RESTARTCOUNT 30000 ROWCOUNT 100000 
    MESSAGES msg.out
    INSERT INTO newtable

Trong ví dụ này, bạn lưu ý rằng tuỳ chọn ROWCOUNT cũng được sử dụng. Nó chỉ rõ số lượng bản ghi vật lý phải được nhập khẩu. Bởi vì tùy chọn RESTARTCOUNT được sử dụng, nên tiện ích nhập khẩu sẽ bỏ qua 30.000 bản ghi đầu tiên và nhập khẩu 100.000 bản ghi kế tiếp vào bảng.

Theo mặc định, tiện ích nhập khẩu sẽ giành lấy một khóa giành riêng trên bảng đích trước khi bất kỳ hàng nào được chèn vào. Khóa giành riêng được giải phóng ngay sau khi hoạt động nhập khẩu hoàn thành. Đây là hành vi của tùy chọn ALLOW NO ACCESS. Để cho phép nhiều ứng dụng đồng thời truy cập được vào bảng dữ liệu, bạn có thể sử dụng tùy chọn ALLOW WRITE ACCESS. Lưu ý rằng tùy chọn này không tương thích với các tùy chọn nhập khẩu REPLACE, CREATE hoặc REPLACE_CREATE. Dưới đây là một ví dụ về tùy chọn ALLOW WRITE ACCESS.

IMPORT FROM myfile.ixf OF IXF
    ALLOW WRITE ACCESS
    MESSAGES msg.out
    INSERT INTO newtable

Nhập khẩu dữ liệu XML

Để nhập khẩu tệp tin XML, hãy sử dụng tùy chọn XML FROM để chỉ định một hoặc nhiều đường dẫn đến nơi các tệp tin XML được lưu trữ. Nếu không, tiện ích nhập khẩu sẽ tìm kiếm các tệp tin XML trong thư mục hiện hành. Bạn có thể chọn cách thức phân tích cú pháp các tài liệu XML như thế nào; loại bỏ khoảng trống hay giữ nguyên khoảng trống. Nếu tùy chọn XMLPARSE không được chỉ rõ, thì hành vi phân tích cú pháp các tài liệu XML sẽ được quyết định bởi mục đăng ký đặc biệt CURRENT XMLPARSE OPTION. Dưới đây là một ví dụ của các tuỳ chọn XML FROMXMLPARSE.

IMPORT FROM myfile.ixf OF IXF
    XML FROM d:\xmlpath
    XMLPARSE PRESERVE WHITESPACE
    MESSAGES msg.out
    INSERT INTO newtable

Khi bạn chèn hoặc cập nhật một tài liệu XML, có thể bạn muốn xác định xem liệu cấu trúc, nội dung, và các kiểu dữ liệu của các tài liệu XML có hợp lệ không. Tiện ích nhập khẩu cũng hỗ trợ xác nhận hợp lệ tài liệu XML thông qua việc sử dụng tùy chọn XMLVALIDATE. Có ba phương pháp có thể dùng:

  • USING XDS - Bạn hãy nhớ lại rằng bạn có thể xuất khẩu thông tin về lược đồ XML và lưu nó vào trong thuộc tính SCH của định tố dữ liệu XML (XML Data Specifier -XDS). Giá trị của thuộc tính SCH sẽ được sử dụng để thực hiện xác nhận hợp lệ. Nếu không có thuộc tính SCH trong XDS, thì một trong các tùy chọn DEFAULT, IGNORE hoặc MAP sẽ được xem xét để sử dụng.
  • USING SCHEMA schema-sqlid - Sử dụng lược đồ XML được chỉ rõ trong mệnh đề này.
  • USING SCHEMALOCATION HINTS - Xác nhận tính hợp lệ của các tài liệu XML đối với các lược đồ được xác định bởi các gợi ý về vị trí của lược đồ XML trong các tài liệu XML nguồn.
IMPORT FROM myfile.ixf OF IXF
    XML FROM d:\xmlpath
    XMLPARSE PRESERVE WHITESPACE
    XMLVALIDATE USING XDS 
        DEFAULT S1.SCHEMA_A
        IGNORE (S1.SCHEMA_X, S1.SCHEMA_Y, S1.SCHEMA_Z)
        MAP (S1.SCHEMA_A, S1.SCHEMA_B)
    COMMITCOUNT 500 RESTARTCOUNT 30000 
    MESSAGES msg.out
    INSERT INTO newtable

Câu lệnh IMPORT trên sẽ:

  • Chèn dữ liệu từ myfile.ixf và tệp tin XML ở địa chỉ d:\xmlpath.
  • Giữ nguyên các khoảng trống khi phân tích cú pháp tài liệu XML.
  • Mỗi tài liệu XML được xác nhận hợp lệ bằng cách sử dụng các thông tin của lược đồ được xác định trong thuộc tính SCH của XDS. Tuy nhiên, nếu XDS cho bất kỳ hàng cụ thể nào không chứa thuộc tính SCH, thì lược đồ S1.SCHEMA_A sẽ được sử dụng để thay thế.
  • Đối với thuộc tính SCH được chỉ rõ là S1.SCHEMA_X, hoặc S1.SCHEMA_Y, hoặc S1.SCHEMA_Z, thì việc xác nhận hợp lệ sẽ không được thực hiện đối với các tài liệu XML nhập khẩu.
  • Nếu thuộc tính SCH được chỉ rõ là S1.SCHEMA_A, thì nó sẽ được ánh xạ tới S1.SCHEMA_B. Lưu ý rằng mặc dù mệnh đề DEFAULT xác định S1.SCHEMA_A, nhưng bất kỳ ánh xạ tiếp theo nào sẽ không được thực hiện.
  • Tiện ích nhập khẩu sẽ phát lệnh giao kết sau mỗi 500 hàng được nhập khẩu.
  • Hoạt động nhập khẩu được bắt đầu từ bản ghi 30.001. 30.000 bản ghi đầu tiên được bỏ qua.
  • Mọi thông báo lỗi, cảnh báo, và thông điệp báo tin đều được ghi vào tệp tin msg.out.
  • Dữ liệu mới được chèn (hoặc được nối vào cuối) vào newtable.

Ví dụ này chỉ mang đến cho bạn một số ý tưởng về cách mà tài liệu XML được nhập khẩu có thể được xác nhận hợp lệ như thế nào. Có rất nhiều ví dụ ở Trung tâm thông tin của DB2 chứng minh sức mạnh của tùy chọn XMLVALIDATE.

Biến tố kiểu tệp tin

Tiện ích IMPORT cũng hỗ trợ các biến tố kiểu tệp tin để tùy chỉnh hoạt động nhập khẩu. Bạn có thể tìm thấy một danh sách đầy đủ các biến tố này trong DB2 Command Reference, mục IMPORT. Ở đây phác thảo một vài biến tố:

  • compound=x
    • Sử dụng câu lệnh SQL phức hợp (compound) không nguyên tử để chèn dữ liệu. x câu lệnh sẽ được thử mỗi lần.
  • indexschema=schema
    • Sử dụng lược đồ đã chỉ định cho chỉ mục trong quá trình tạo chỉ mục.
  • striptblanks
    • Lược bớt bất kỳ khoảng trống sau đuôi nào khi nạp dữ liệu vào một trường có độ dài biến đổi.
  • lobsinfile
    • Biểu thị rằng dữ liệu LOB đang được nhập khẩu. Tiện ích sẽ kiểm tra mệnh đề LOBS FROM để có đường dẫn của các tệp tin LOB đầu vào.

Dưới đây là một ví dụ về sử dụng các biến tố kiểu tệp tin ấy:

IMPORT FOR inputfile.asc OF ASC
    LOBS FROM /u/db2load/lob1, /u/db2load/lob2
    MODIFIED BY compount=5 lobinsfile
    INSERT INTO newtable

Nhập khẩu bằng cách sử dụng Trung tâm điều khiển

Trung tâm điều khiển cung cấp các giao diện đồ họa dễ sử dụng để thực hiện các hoạt động nhập khẩu dữ liệu. Tất cả các tùy chọn nhập khẩu và các biến tố tệp tin được thảo luận trong phần trước cũng có sẵn trong giao diện này.


Tiện ích LOAD của DB2

Tổng quan về tiện ích LOAD

Tiện ích LOAD là một phương thức khác để điền dữ liệu vào bảng. Các trang được định dạng được ghi trực tiếp vào cơ sở dữ liệu. Cơ chế này cho phép di chuyển dữ liệu hiệu quả hơn so với tiện ích IMPORT. Tuy nhiên, một số hoạt động, chẳng hạn như kiểm tra tham chiếu hoặc kiểm tra các ràng buộc của bảng và gọi ra các kích hoạt (triggers) không được thực hiện bởi tiện ích LOAD.

Dưới đây là cốt lõi của lệnh LOAD, các tùy chọn và biến tố khác được hỗ trợ và sẽ được giới thiệu trong phần tiếp theo của bài hướng dẫn này. Để thi hành thành công lệnh này, bạn phải có các quyền như SYSADM, DBADM hoặc LOAD, hoặc các đặc quyền INSERT và/hoặc DELETE trên bảng tham gia vào việc nạp dữ liệu. Để nạp dữ liệu vào bảng có các cột được bảo vệ, bạn phải có ủy nhiệm LBAC cho phép truy cập viết vào tất cả các cột được bảo vệ trong bảng. Để nạp dữ liệu vào một bảng có các hàng được bảo vệ, bạn phải được cấp một nhãn an ninh để truy cập viết, đó là một phần của chính sách an ninh bảo vệ bảng.

LOAD FROM input_source OF input_type
    MESSAGES message_file
    [ INSERT | REPLACE | TERMINATE | RESTART ]
    INTO target_tablename

Định dạng của một nguồn đầu vào cho tiện ích LOAD có thể là DEL, ASC, PC/IXF, hoặc CURSOR. Con trỏ là bộ kết quả được câu lệnh SELECT trả lại. Hình sau là ví dụ của việc sử dụng CURSOR làm đầu vào nạp dữ liệu:

DECLARE mycursor CURSOR FOR SELECT col1, col2, col3 FROM tab1;
LOAD FROM mycursor OF CURSOR INSERT INTO newtab;

Đích để nạp dữ liệu phải tồn tại trước khi tiện ích khởi chạy. Đích này có thể là một bảng, một bảng có định kiểu hoặc là bí danh của bảng. Việc nạp các bảng có cột XML, các bảng hệ thống và bảng tạm thời không được hỗ trợ.

Bạn sử dụng tùy chọn MESSAGES để thu giữ bất kỳ thông báo lỗi, cảnh báo, thông điệp báo tin nào trong quá trình nạp.

Tiện ích LOAD có thể được thi hành trong bốn chế độ khác nhau:

  • Chế độ INSERT thêm dữ liệu đầu vào vào một bảng mà không thay đổi dữ liệu bảng hiện có.
  • Chế độ REPLACE xóa tất cả dữ liệu hiện tại tại một bảng và điền dữ liệu đầu vào vào bảng đó.
  • Chế độ TERMINATE chấm dứt một hoạt động nạp dữ liệu và cuộn ngược trở lại thời điểm mà tại đó nó bắt đầu. Một trường hợp ngoại lệ là nếu đã chỉ định chế độ REPLACE, thì bảng sẽ được cắt bớt.
  • Chế độ RESTART được sử dụng để khởi động lại hoạt động nạp bị gián đoạn trước đó. Thao tác nạp sẽ tự động tiếp tục từ điểm nhất quán cuối cùng. Để sử dụng chế độ này, bạn chỉ định các tùy chọn tương tự như trong lệnh LOAD trước đây nhưng với chế độ RESTART. Nó cho phép tiện ích tìm tất cả các tệp tin tạm thời cần thiết được tạo ra trong quá trình nạp. Do đó, điều quan trọng là không được loại bỏ một cách thủ công bất kỳ tệp tin tạm thời nào được tạo ra từ hoạt động nạp trừ khi bạn chắc rằng chúng không cần thiết. Sau khi hoạt động nạp hoàn tất mà không gặp lỗi, các tệp tin tạm thời sẽ tự động được loại bỏ. Theo mặc định chúng được tạo ra trong thư mục làm việc hiện tại. Bạn có thể chỉ định thư mục nơi tệp tin tạm thời được lưu trữ với tùy chọn TEMPFILES PATH .

Bốn pha của một quá trình nạp

Một quá trình nạp hoàn chỉnh có bốn pha phân biệt.

  1. Pha nạp:
    • Nạp dữ liệu vào bảng.
    • Thu thập các khóa chỉ mục và các thống kê về bảng.
    • Ghi lại các điểm nhất quán.
    • Khi các hàng dữ liệu không tuân theo các định nghĩa của bảng, thì chúng được coi là dữ liệu không hợp lệ và sẽ bị từ chối (không được nạp vào bảng). Bạn sử dụng biến tố tệp tin đống rác để chỉ định tên và vị trí của một tệp tin để ghi lại bất kỳ hàng bị từ chối nào.
  2. Pha xây dựng:
    • Tạo ra các chỉ mục dựa trên các khóa thu thập trong giai đoạn nạp. Nếu tùy chọn STATISTICS USE PROFILE được chỉ định, thì các số liệu thống kê cũng được thu thập theo lược tả đã định nghĩa cho bảng đích. Lược tả này phải được tạo ra trước khi hoạt động nạp được thực thi, nếu không sẽ có cảnh báo được trả lại và không có số liệu thống kê nào được thu thập.
  3. Pha xóa:
    • Xóa các hàng vi phạm quy tắc khóa duy nhất và đặt chúng vào bảng ngoại lệ. Ngoài các dữ liệu chỉ là không phù hợp với định nghĩa của bảng đích như được mô tả ở trên, có thể có dữ liệu mà vượt qua được giai đoạn nạp nhưng vi phạm một ràng buộc duy nhất được định nghĩa trong bảng. Lưu ý rằng ở đây chỉ có các hàng vi phạm quy tắc khóa duy nhất là được coi là dữ liệu sai; các ràng buộc khác không được kiểm tra vào lúc này. Vì rằng loại dữ liệu đã được nạp vào bảng, nên tiện ích LOAD sẽ xóa các hàng vi phạm ở pha này. Bảng ngoại lệ có thể được dùng để lưu trữ các hàng đã được xóa để bạn có thể quyết định sẽ làm gì với chúng sau khi hoạt động nạp hoàn tất. Nếu không có bảng ngoại lệ được chỉ định, thì các hàng vi phạm sẽ bị xóa mà không còn dấu vết gì. Bảng ngoại lệ sẽ được thảo luận chi tiết hơn ở phần dưới đây.
    • Ghi lại các thông điệp trong tệp tin thông điệp.
  4. Pha sao chép chỉ mục:
    • Nếu tùy chọn ALLOW READ ACCESS được chỉ định với tùy chọn USE TABLESPACE thì dữ liệu chỉ mục được sao chép từ vùng bảng tạm thời của hệ thống đến vùng bảng nơi chỉ mục sẽ nằm ở đó.

Bảng ngoại lệ là bảng do người dùng định nghĩa, bảng này phải có cùng định nghĩa cột như của bảng đích đang được nạp. Nếu ít nhất một trong các cột đó không có mặt trong bảng ngoại lệ, thì các hàng vi phạm sẽ bị hủy. Chỉ có thể được thêm vào hai cột bổ sung ở phần cuối của bảng: một cột mốc thời gian để ghi lại khi nào hàng được chèn vào, và một cột CLOB để lưu trữ các lý do (hoặc thông điệp) tại sao dòng đó bị coi là sai.

Bạn sẽ nhận thấy rằng một số khái niệm trình bày tại phần này không được chi tiết. Chúng ta sẽ sử dụng một số ví dụ và ghép chúng cùng với nhau trong phần còn lại của mục này.

Ví dụ về nạp dữ liệu

Ta hãy xem xét một ví dụ để minh họa các bước của một quá trình nạp:

LOAD FROM emp.ixf OF IXF
    MESSAGES msg.out
    MODIFIED BY DUMPFILE=c:\emp.dmp
    TEMPFILES PATH d:\tmp
    INSERT INTO employee
    FOR EXCEPTION empexp
  • Trong sơ đồ trên, mục (1) cho thấy nội dung của tệp tin nguồn đầu vào.
  • Bảng đích EMPLOYEE hiển thị trong mục (2) được tạo ra với định nghĩa cột sau đây:
    • Cột đầu tiên phải là duy nhất.
    • Cột cuối cùng là một cột số và không được gán giá trị NULL.
  • Bảng ngoại lệ, EMPEXP tại mục (3), được tạo ra với cùng các cột như của bảng EMPLOYEE cũng như với các cột mốc thời gian và thông điệp.

Ở pha nạp, tất cả các dữ liệu từ tệp tin đầu vào được nạp vào bảng đích EMPLOYEE - ngoại trừ hai dòng đánh dấu màu hồng, vì chúng không phù hợp với định nghĩa cột NOT NULL và NUMERIC. Vì biến tố DUMPFILE được chỉ rõ, nên chúng được ghi lại vào tệp tin C:\emp.dmp.

Ở pha xóa, hai hàng được đánh dấu màu vàng được xóa khỏi bảng đích EMPLOYEE và được chèn vào bảng ngoại lệ EMPEXP. Điều này xảy ra do sự vi phạm quy tắc duy nhất của cột đầu tiên trong bảng đích EMPLOYEE.

Tại phần cuối của pha nạp, bạn nên kiểm tra các tệp tin thông điệp, tệp đống rác và bảng ngoại lệ, sau đó quyết định cách để xử lý các hàng bị từ chối. Nếu quá trình nạp hoàn tất, thì các tệp tin tạm thời được tạo ra tại địa chỉ D:\tmp được xóa đi.

Tùy chọn nạp dữ liệu và các biến tố kiểu tệp tin

Một số tùy chọn nạp và biến tố kiểu tệp tin đã được giới thiệu trong phần trước. Ở đây chúng ta sẽ thảo luận thêm về chúng.

Tùy chọn nạp:

  • ROWCOUNT n: Cho phép người dùng chỉ rõ chỉ có n bản ghi đầu tiên trong tệp tin đầu vào được nạp.
  • SAVECOUNT n: Thiết lập các điểm nhất quán (consistency points) sau mỗi n hàng được nạp. Các thông điệp được tạo ra và ghi lại trong tệp tin thông điệp để cho biết bao nhiêu hàng đầu vào đã được nạp thành công đến thời điểm của điểm ghi lưu (save point). Điểm ghi lưu này sẽ không được thiết lập khi tệp tin đầu vào có kiểu là CURSOR.
  • WARNINGCOUNT n: Dừng nạp sau khi đến ngưỡng n lần cảnh báo.
  • INDEXING MODE [ REBUILD | INCREMENTAL | AUTOSELECT | DEFERRED ]: Trong pha xây dựng, các chỉ mục được xây dựng. Tùy chọn này xác định xem tiện ích LOAD sẽ phải xây dựng lại các chỉ mục hay là sẽ mở rộng thêm dần các chỉ mục đó. Có bốn chế độ khác nhau được hỗ trợ:
    • Chế độ REBUILD buộc tất cả các chỉ mục phải được xây dựng lại.
    • Chế độ INCREMENTAL mở rộng các chỉ mục chỉ với dữ liệu mới.
    • Chế độ AUTOSELECT cho phép tiện ích lựa chọn giữa hai chế độ REBUILDINCREMENTAL.
    • Chế độ DEFERRED có nghĩa là việc tạo ra chỉ mục sẽ không xảy ra trong quá trình nạp. Các chỉ mục liên quan được đánh dấu rằng chúng cần phải làm mới (refresh) lại. Chúng sẽ được xây dựng lại khi cơ sở dữ liệu khi được khởi động lại hoặc tại lần truy cập đầu tiên tới chỉ mục này.
  • STATISTICS USE PROFILE: Sau khi thao tác nạp được thực hiện, thì số liệu thống kê trước đó của bảng đích rất có thể không hợp lệ, vì rất nhiều dữ liệu được bổ xung thêm. Bạn có thể chọn để thu thập các số liệu thống kê tại pha xây dựng căn cứ theo lược tả được định nghĩa cho bảng đích.

Biến tố kiểu tệp tìn. Biến tố kiểu tệp tìn được chỉ rõ với mệnh để MODIFIED BY. Dưới đây là một vài biến tố mà bạn có thể thấy rất có ích:

  • fastparse: Việc kiểm tra cú pháp trên dữ liệu đã được nạp được rút bớt để nâng cao hiệu suất.
  • identityignore, identitymissingidentityoverride: Được dùng tương ứng để lờ đi, để cho biết có mất mát hoặc để ghi đè lên đối với dữ liệu cột mã định danh
  • indexfreespace n, pagefreespace ntotalfreespace n: Để lại một số lượng n đã chỉ rõ các trang còn rỗi trong các trang chỉ mục và dữ liệu.
  • norowwarnings: Ngăn chặn các cảnh báo về hàng.
  • lobsinfile: Biểu thị rằng các tệp tin LOB phải được nạp; kiểm tra tùy chọn LOBS FROM cho đường dẫn LOB.

Truy cập bảng trong quá trình nạp

Trong khi một bảng đang được nạp, thì nó bị khoá bởi tiện ích LOAD bằng một khóa giành riêng cho nó. Không có quyền truy cập khác nào được phép cho đến khi việc nạp hoàn thành. Đây là hành vi mặc định của tùy chọn ALLOW NO ACCESS. Trong quá trình nạp như thế, bảng ở trong trạng thái LOAD IN PROGRESS. Có một lệnh rất tiện sử dụng, lệnh này kiểm tra trạng thái của hoạt động nạp và cũng trả về thông tình về trạng thái của bảng:

LOAD QUERY TABLE table_name

Bạn có thể đã đoán rằng có một tùy chọn để cho phép truy cập vào bảng. Tùy chọn ALLOW READ ACCESS làm cho các bảng phải được khóa ở chế độ chia sẻ. Người đọc dữ liệu có thể truy cập vào dữ liệu đã tồn tại trong bảng nhưng không truy cập vào được các phần dữ liệu mới. Dữ liệu đang được nạp không có sẵn cho đến khi nạp xong. Tùy chọn này đặt bảng vào các trạng thái LOAD IN PROGRESSREAD ACCESS ONLY.

Như đã được đề cập ở phần trên, một chỉ mục đầy đủ có thể được xây dựng lại hoặc một chỉ mục có thể được mở rộng với các dữ liệu mới trong pha xây dựng. Với tùy chọn ALLOW READ ACCESS nếu một chỉ mục đầy đủ đang được xây dựng lại, thì một bản sao bóng (shadow copy) của chỉ mục được tạo ra. Khi tiện ích LOAD đi đến pha chép chỉ mục (xem phần bốn pha của quá trình nạp), thì bảng đích sau đó sẽ được ngắt tuyến và các chỉ mục mới được sao chép vào vùng của bảng đích.

Bất kể tùy chọn truy cập bảng nào được xác định, nhiều khóa khác nhau là cần thiết cho việc nạp dữ liệu tiến triển được. Nếu bảng đích đã được khóa bởi một ứng dụng nào đó, thì các tiện ích LOAD sẽ phải đợi cho đến khi các khóa đó được nhả ra. Thay vì đợi khóa nhả ra, bạn có thể sử dụng tùy chọn LOCK WITH FORCE trong lệnh LOAD để buộc tắt đi các ứng dụng khác đang giữ các khóa tranh chấp.

Trạng thái bảng Set Integrity Pending

Cho đến nay chúng ta biết rằng dữ liệu đầu vào nào không tuân thủ định nghĩa của bảng đích sẽ không được nạp vào bảng. Dữ liệu đó bị từ chối và được ghi vào tệp tin thông điệp ở pha nạp. Trong pha xóa, tiện ích LOAD xóa các hàng vi phạm bất kỳ ràng buộc duy nhất nào. Các hàng vi phạm được chèn vào bảng ngoại lệ nếu đã xác định. Điều gì sẽ xảy ra đối với các ràng buộc khác mà bảng có thể đã định nghĩa, chẳng hạn như tính toàn vẹn tham chiếu và các ràng buộc kiểm tra? Các ràng buộc này không được kiểm tra bởi tiện ích LOAD. Bảng này sẽ được đặt ở trạng thái SET INTEGRITY PENDING buộc bạn phải kiểm tra một cách thủ công tính toàn vẹn của dữ liệu trước khi bảng có thể được truy cập. Có thể truy vấn trạng thái của bảng bằng cách sử dụng lệnh LOAD QUERY như đã thảo luận ở phần trước. Cột CONST_CHECKED trong bảng danh mục hệ thống SYSCAT.TABLES cũng cho biết trạng thái của mỗi ràng buộc được định nghĩa trong bảng.

Để tắt một cách thủ công quá trình kiểm tra tính toàn vẹn cho một hoặc nhiều bảng, bạn sử dụng lệnh SET INTEGRITY. Các ví dụ được trình bày ở đây nhằm để giải thích một số tùy chọn của lệnh. Để kiểm tra tính toàn vẹn cho tùy chọn nối thêm vào cuối của các bảng EMPLOYEE và STAFF ngay lập tức, bạn sử dụng lệnh sau:

SET INTEGRITY FOR employee, staff IMMEDIATE CHECKED INCREMENTAL

Để bỏ qua việc kiểm tra các khóa ngoài trên bảng EMPLOYEE với tùy chọn IMMEDIATEUNCHECKED bạn sử dụng lệnh sau:

SET INTEGRITY FOR employee FOREIGN KEY IMMEDIATE UNCHECKED

Trong một số trường hợp, bạn muốn đặt bảng đích cũng như các bảng con cháu của nó với các quan hệ khóa ngoài vào trạng thái SET INTEGRITY PENDING sau khi quá trình nạp hoàn tất. Điều này đảm bảo rằng tất cả các bảng này nằm trong sự kiểm soát khả năng truy cập cho đến khi quá trình kiểm tra thủ công tính toàn vẹn được thực hiện. Tùy chọn nạp là SET INTEGRITY PENDING CASCADE IMMEDIATE, biểu thị rằng trạng thái chờ kiểm tra các ràng buộc khóa ngoài ngay lập tức được mở rộng cho tất cả bảng khóa ngoài con cháu. Theo mặc định, chỉ có bảng đã được nạp sẽ được đặt trong tình trạng chờ kiểm tra. Đây là hành vi của tùy chọn nạp SET INTEGRITY PENDING CASCADE DEFERRED.

Các trạng thái của vùng bảng

Vì rằng tiện ích LOAD ghi các trang đã định dạng vào cơ sở dữ liệu một cách trực tiếp, nên không thực hiện việc ghi nhật ký cơ sở dữ liệu để ghi các dữ liệu mới được nạp. Nếu bạn có một cơ sở dữ liệu có thể được phục hồi (nghĩa là với tùy chọn LOGREATIN và/hoặc tùy chọn USEREXIT được bật lên), thì DB2 cần phải đảm bảo rằng các cơ sở dữ liệu vẫn phục hồi được sau khi quá trình nạp hoàn tất. Để áp đặt khả năng phục hồi được, thì vùng bảng nơi bảng được lưu trữ phải được đặt ở chế độ BACKUP PENDING. Điều đó có nghĩa là vùng bảng phải được sao lưu trước khi nó có thể được truy cập.

Đây là cách làm mặc định để làm cho vùng bảng có thể truy cập được sau khi quá trình nạp hoàn tất. Ta có phương thức khác là sao lưu các dữ liệu được nạp trong khi quá trình nạp đang chạy với tùy chọn COPY YES. Một tệp tin sao lưu sẽ được tạo ra vào cuối quá trình nạp.

Có một tùy chọn khác mà bạn có thể xem xét nếu bạn muốn tránh sao lưu vùng bảng ngay sau khi quá trình nạp hoàn tất. Tùy chọn nạp NONRECOVERABLE đánh dấu bảng được nạp là không thể phục hồi được. Vùng bảng kết hợp với nó là hoàn toàn có thể truy cập được sau khi quá trình nạp hoàn tất. DB2 không ngăn cản bạn truy vấn và sửa đổi các dữ liệu bảng. Tuy nhiên, nếu sau này bạn cần khôi phục vùng bảng và cuộn tiến đến thời điểm sau hoạt động nạp NONRECOVERABLE, thì bảng được nạp không thể phục hồi được. Quá trình phục hồi bỏ qua tất cả các nhật ký kết hợp với bảng này. Bạn chỉ có thể hủy bỏ và tạo lại bảng. Vì vậy, tôi vẫn khuyến nghị rằng bạn nên sao lưu các vùng bảng tại một thời điểm thuận lợi để cho các dữ liệu hiện có và dữ liệu nạp thêm được lưu tại một bản sao chép dự phòng.

Nạp dữ liệu bằng cách sử dụng Trung tâm điều khiển

Trung tâm điều khiển cung cấp các giao diện đồ họa dễ sử dụng để thực hiện các hoạt động nạp. Như ở hình dưới đây, các tùy chọn nâng cao được mô tả với các gợi ý. Chúng có thể dễ dàng được thiết lập bằng cách sử dụng Trung tâm điều khiển.

Tiện ích IMPORT so với tiện ích LOAD

Sau đây là bảng so sánh các tiện ích IMPORTLOAD:


Các tiện ích di chuyển dữ liệu của DB2

db2move

db2move là một công cụ di chuyển dữ liệu có thể được sử dụng để di chuyển số lượng lớn các bảng giữa các cơ sở dữ liệu của DB2. Các hành động được hỗ trợ trong lệnh này là EXPORT, IMPORT, LOADCOPY. Hành vi của các hành động EXPORT, IMPORTLOAD chính xác giống như các hành vi được mô tả ở phần trên. Chỉ có một hành động mà bạn có lẽ chưa quen thuộc là hành động COPY. Nó nhân bản các bảng trong một lược đồ hay nhiều lược đồ vào cơ sở dữ liệu đích. Cú pháp của db2move rất đơn giản như sau:

db2move database_name action options

Danh sách các bảng của người sử dụng được trích xuất từ các bảng danh mục hệ thống và mỗi bảng được xuất khẩu với định dạng PC/IXF. Các tập tin PC/IXF sau đó có thể được nhập khẩu hoặc được nạp vào một cơ sở dữ liệu DB2 khác.

Dưới đây là một số ví dụ. Lệnh này nhập khẩu tất cả các bảng vào cơ sở dữ liệu làm ví dụ ở chế độ REPLACE với ID và mật khẩu của người dùng được chỉ rõ:

db2move sample IMPORT -io REPLACE -u userid -p password

Và lệnh này nạp tất cả các bảng trong lược đồ db2admin và db2user ở chế độ REPLACE:

db2move sample LOAD -sn db2admin,db2user -lo REPLACE

Bạn hãy tham khảo Command Reference để có được một danh sách đầy đủ và các mô tả của tất cả các tùy chọn. Tuy nhiên, hành động COPY cần phải thảo luận. Với hành động COPY, bạn chỉ định một hoặc nhiều lược đồ với tùy chọn -sn. Chỉ có các bảng có tên đúng với tên của lược đồ đã được chỉ định với tùy chọn -sn sẽ được sao chép (thông qua xuất khẩu). Nếu có nhiều tên lược đồ cần chỉ rõ, hãy sử dụng dấu phẩy để tách chúng ra và không được phép có khoảng trống. Ta hãy tham khảo ví dụ dưới đây.

db2move sample COPY -sn db2inst1,prodschema -co TARGET_DB acctdb USER peter 
USING petepasswd DDL_AND_LOAD

Lệnh db2move trên sao chép các đối tượng được hỗ trợ thuộc lược đồ db2inst1 và prodschema. Tùy chọn -co đi theo lệnh trên làm cho nó trở nên thú vị hơn. Tuỳ chọn TARGET_DB xác định cơ sở dữ liệu đích mà các lược đồ sẽ được sao chép tới. Tùy chọn này là bắt buộc khi chỉ rõ hành động là COPY. Ngoài ra, cơ sở dữ liệu đích phải khác với cơ sở dữ liệu nguồn. Bạn có thể cung cấp tên người dùng và mật khẩu bằng các tùy chọn USERUSING khi kết nối tới cơ sở dữ liệu đích.

Theo mặc định, các đối tượng được hỗ trợ từ các lược đồ nguồn sẽ được tạo ra và các bảng sẽ được điền các dữ liệu trong cơ sở dữ liệu đích. Đây là hành vi của chế độ DDL_AND_LOAD. Hai chế độ khác có sẵn là: DDL_ONLYLOAD_ONLY. Như tên của nó hàm ý, chế độ DDL_ONLY chỉ tạo ra tất cả các đối tượng được hỗ trợ từ lược đồ nguồn và chế độ LOAD_ONLY nạp tất cả các bảng đã xác định từ nguồn tới cơ sở dữ liệu đích. Lưu ý rằng các bảng đã phải tồn tại trong cơ sở dữ liệu đích khi tùy chọn này được sử dụng.

Đôi khi bạn muốn đổi tên của lược đồ khi sao chép các đối tượng vào cơ sở dữ liệu đích. Tùy chọn SCHEMA_MAP có thể được sử dụng để cung cấp cho bạn khả năng này. Bạn chỉ cần cung cấp một hoặc nhiều cặp ánh xạ lược đồ như sau:

SCHEMA_MAP ((source_schema1,target_schema1),(source_schema2,target_schema2))

Tôi khuyến nghị bạn cần chú ý thêm khi sử dụng tùy chọn SCHEMA_MAP. Chỉ có lược đồ của chính đối tượng được đổi tên, các đối tượng có tên phân biệt đầy đủ ở bên trong phần thân của đối tượng là không thay đổi. Ví dụ:

CREATE VIEW FOO.v1 AS 'SELECT c1 FROM FOO.T1'

Đổi tên lược đồ từ FOO sang BAR sẽ dẫn đến kết quả sau:

CREATE VIEW BAR.v1 AS 'SELECT c1 FROM FOO.T1'

BAR.v1 được tạo ra trong cơ sở dữ liệu đích có thể thất bại nếu FOO.T1 không được xác định.

Ý tưởng ánh xạ tương tự cũng áp dụng cho các vùng bảng. Ví dụ, bạn muốn các bảng được sao chép sẽ được lưu trữ với một tên vùng bảng khác với của cơ sở dữ liệu nguồn. Lệnh db2move được mở rộng để cho phép bạn chỉ định các ánh xạ tên vùng bảng. Ta xem xét tùy chọn sau đây:

TABLESPACE_MAP ((TS1,TS2),(TS2,TS3),SYS_ANY)

Ánh xạ tên vùng bảng ở trên biểu thị rằng tên nguồn TS1 được ánh xạ tới tên đích TS2, tên nguồn TS2 được ánh xạ tới tên đích TS3. Tùy chọn SYS_ANY biểu thị rằng vùng bảng còn lại sẽ sử dụng các vùng bảng được lựa chọn bởi trình quản lý cơ sở dữ liệu dựa trên thuật toán lựa chọn vùng bảng. Ta hãy ghép các mảnh này cùng với nhau trong một ví dụ.

db2move sample COPY -sn db2inst1,prodschema 
    -co TARGET_DB acctdb USER peter USING petepasswd LOAD_ONLY
        SCHEMA_MAP ((db2inst1,db2inst2),(prodschema,devschema))
        TABLESPACE_MAP SYS_ANY
        NONRECOVERABLE

Lệnh này sao chép các đối tượng được hỗ trợ trong db2inst1 và prodschema từ cơ sở dữ liệu SAMPLE đển cơ sở dữ liệu ACCTDB. Mã nhận dạng (ID) được ủy quyền peter và mật khẩu kết hợp của nó được sử dụng để kết nối tới cơ sở dữ liệu ACCTDB. Các bảng đích đã tồn tại trong ACCTDB và chúng sẽ được điền lại các dữ liệu. Tất cả các đối tượng thuộc lược đồ db2inst1 và lược đồ prodschema bây giờ thuộc db2inst2 và devschema một cách tương ứng. Thay vì sử dụng tên của vùng bảng đã định nghĩa trong cơ sở dữ liệu SAMPLE, thì vùng bảng mặc định trong ACCTDB sẽ được sử dụng.

Tùy chọn NONRECOVERABLE cho phép người dùng sử dụng các vùng bảng được nạp vào ngay lập tức sau khi hành động sao chép hoàn tất. Các sao lưu của các vùng bảng không bắt buộc nhưng tôi rất khuyến nghị bạn sao lưu chúng sớm nhất vào thời gian thuận lợi.

db2look

db2look là một công cụ tiện dụng, nó có thể được gọi từ dòng lệnh và Trung tâm điều khiển. Công cụ này có thể:

  • Trích xuất các câu lệnh của ngôn ngữ định nghĩa cơ sở dữ liệu (DDL) từ các đối tượng cơ sở dữ liệu
  • Tạo câu lệnh UPDATE để cập nhật trình quản lý cơ sở dữ liệu và các tham số cấu hình cơ sở dữ liệu
  • Tạo ra lệnh db2set để thiết lập các đăng ký lược thảo của DB2
  • Trích xuất và tạo ra báo cáo thống kê của cơ sở dữ liệu
  • Tạo câu lệnh UPDATE để tái tạo số liệu thống kê về các đối tượng cơ sở dữ liệu

Các tiện ích như LOAD để trích xuất DDL của bảng, chạy nó tại cơ sở dữ liệu đích, và sau đó gọi hoạt động nạp. Công cụ db2look rất dễ sử dụng, như các ví dụ sau sẽ minh hoạ. Lệnh này tạo câu lệnh DDL cho tất cả các đối tượng được tạo bởi peter từ cơ sở dữ liệu department và kết quả đầu ra được lưu giữ tại tệp tin alltables.sql.

db2look -d department -u peter -e -o alltables.sql

Lệnh kế tiếp tạo ra:

  • Câu lệnh DDL cho tất cả các đối tượng tại cơ sở dữ liệu department (được chỉ rõ bởi các tùy chọn -d, -a-e).
  • Câu lệnh UPDATE để tái tạo các số liệu thống kê trên tất cả các bảng và chỉ mục tại cơ sở dữ liệu (được chỉ rõ bởi tùy chọn -m).
  • Câu lệnh ủy quyền GRANT (được chỉ rõ bởi tùy chọn -x).
  • Câu lệnh UPDATE cho trình quản lý cơ sở dữ liệu và các thông số cấu hình cơ sở dữ liệu, và lệnh db2set cho các đăng ký lược khai (được chỉ rõ bởi tùy chọn -f).
db2look -d department -a -e -m -x -f -o db2look.sql

Câu lệnh db2look cũng có khả năng tạo ra các lệnh để đăng ký lược đồ XML. Ví dụ sau tạo ra các lệnh REGISTER XMLSCHEMACOMPLETE XMLSCHEMA cần thiết (được chỉ rõ bằng tùy chọn -xs) cho các đối tượng với tên lược đồ db2inst1. Tệp tin đầu ra db2look.sql sẽ được tạo ra tại địa chỉ /home/db2inst1, được chỉ rõ trong tùy chọn -xdir.

db2look -d department -z db2inst1 -xs -xdir /home/db2inst1 -o db2look.sql

db2batch

Benchmarking là quá trình đánh giá các ứng dụng ở nhiều khía cạnh khác nhau chẳng hạn như thời gian đáp ứng của cơ sở dữ liệu, việc sử dụng cpu và bộ nhớ. Các phép thử benchmark dựa trên một môi trường lặp lại sao cho cùng một phép thử chạy trong cùng điều kiện. Kết quả thu được từ phép thử sau đó có thể được đánh gíá và được so sánh.

db2batch là một công cụ đánh giá sử dụng một bộ câu lệnh SQL và/hoặc XQuery, tự động chuẩn bị, mô tả các câu lệnh và trả về một bộ câu trả lời. Tùy thuộc vào các tùy chọn được sử dụng trong lệnh db2batch, bộ câu trả lời có thể trả về khoảng thời gian đã trôi qua để thi hành các câu lệnh, hình chụp nhanh trình quản lý cơ sở dữ liệu về việc sử dụng bộ nhớ chẳng hạn như bufferpool và thông tin của bộ nhớ cache.

Bạn có thể xác định các câu lệnh mà trên đó bạn muốn chạy công cụ benchmark trong một tệp tin phẳng hoặc từ bàn phím. Một số tùy chọn điều khiển có thể được thiết lập tại tệp tin đầu vào. Chúng được xác định với cú pháp sau: --#SET control_option value. Sau đây là một ví dụ của một tệp tin đầu vào với các tùy chọn điều khiển. Để có danh sách đầy đủ các tùy chọn điều khiển, xin tham khảo Trung tâm Thông tin.

-- db2batch.sql
-- ------------
--#SET PERF_DETAIL 3
--#SET ROWS_OUT 5


-- This query lists employees, the name of their department
-- and the number of activities to which they are assigned for
-- employees who are assigned to more than one activity less than
-- full-time.
--#COMMENT Query 1
select lastname, firstnme,
       deptname, count(*) as num_act
from employee, department, emp_act
where employee.workdept = department.deptno and
      employee.empno = emp_act.empno and
      emp_act.emptime < 1
group by lastname, firstnme, deptname
having count(*) > 2;
--#SET PERF_DETAIL 1
--#SET ROWS_OUT 5

--#COMMENT Query 2
select lastname, firstnme,
       deptname, count(*) as num_act
from employee, department, emp_act
where employee.workdept = department.deptno and
      employee.empno = emp_act.empno and
      emp_act.emptime < 1
group by lastname, firstnme, deptname
having count(*) <= 2;
  • Tùy chọn PERF_DETAIL 3 có nghĩa là các chi tiết về hiệu năng trong khoảng thời gian đã qua, một hình chụp nhanh của trình quản lý cơ sở dữ liệu, cơ sở dữ liệu và ứng dụng sẽ được trả về.
  • Tùy chọn ROWS_OUT 5 có nghĩa là chỉ có 5 hàng được lấy về từ tập kết quả bất kể số lượng thực tế của các hàng được trả lại cho truy vấn là bao nhiêu.
  • Tùy chọn COMMENT Query1 chỉ cung cấp cho câu lệnh một cái tên: Query1.

Lệnh sau gọi ra công cụ benchmark cho cơ sở dữ liệu SAMPLE với tệp tin đầu vào db2batch.sql.

db2batch -d sample -f db2batch.sql

Lệnh này sẽ trả về bộ kết quả của cả hai truy vấn, giới hạn tối đa là 5 hàng, thời gian đã trôi qua, và thời gian CPU của các truy vấn. Hình chụp nhanh của trình quản lý cơ sở dữ liệu, của cơ sở dữ liệu và của ứng dụng cũng được trả lại. Vì kết quả đầu ra là khá lớn, nên ở đây chúng tôi chỉ trình bày tóm tắt câu lệnh db2batch.

* Summary Table:

Type      Number      Repetitions Total Time (s) Min Time (s)   ...
--------- ----------- ----------- -------------- -------------- 
Statement           1           1       0.052655       0.052655 ...
Statement           2           1       0.004518       0.004518 ...


...Max Time (s)   Arithmetic Mean Geometric Mean Row(s) Fetched Row(s) Output 
   -------------- --------------- -------------- -------------- ------------- 
...      0.052655        0.052655       0.052655              5             5 
...      0.004518        0.004518       0.004518              8             5 

                                              
* Total Entries:              2               
* Total Time:                 0.057173 seconds
* Minimum Time:               0.004518 seconds
* Maximum Time:               0.052655 seconds
* Arithmetic Mean Time:       0.028587 seconds
* Geometric Mean Time:        0.015424 seconds

Lệnh db2batch hỗ trợ nhiều tùy chọn. Ở đây chúng tôi chỉ liệt kê một vài tùy chọn để bạn có được một ý tưởng về sức mạnh của công cụ.

  • -m parameter_file xác định một tệp tin đầu vào với giá trị của tham số để kết buộc các đánh dấu tham số trong câu lệnh SQL.
  • -r result_file xác định tệp tin đầu ra để chứa các kết quả của lệnh.
  • -i short|long|complete xác định sẽ đo những gì trong các khoảng thời gian đã trôi qua. short đo khoảng thời gian được dùng để chạy từng câu lệnh. long đo khoảng thời gian được dùng để chạy từng câu lệnh bao gồm cả tải công việc giữa các câu lệnh. complete đo khoảng thời gian được dùng để chạy từng câu lệnh, trong đó các khoảng thời gian để chuẩn bị, thực thi và tìm nạp được báo cáo một cách riêng rẽ.
  • -iso xác định mức cô lập được sử dụng cho câu lệnh. Theo mặc định, lệnh db2batch sử dụng mức cô lập “Đọc lặp lại được” (Repeatable Read).

Các tiện ích bảo trì của DB2

Tiện ích RUNSTATS

DB2 sử dụng trình tối ưu hóa tinh xảo dựa trên chi phí để xác định cách dữ liệu được truy cập như thế nào. Các quyết định của nó chịu ảnh hưởng lớn bởi các thông tin thống kê về kích thước của các bảng cơ sở dữ liệu và các chỉ mục. Vì vậy điều quan trọng là duy trì số liệu thống kê về cơ sở dữ liệu luôn cập nhật mới nhất để cho có thể chọn được một kế hoạch truy cập dữ liệu có hiệu quả. Tiện ích RUNSTATS được sử dụng để cập nhật các số liệu thống kê về các đặc trưng vật lý của một bảng và các chỉ mục liên quan. Các đặc trưng này bao gồm số lượng các bản ghi (lực lượng của tập hợp), số lượng trang, chiều dài trung bình bản ghi, v.v..

Chúng ta hãy sử dụng một số ví dụ để minh họa việc sử dụng tiện ích này. Lệnh sau thu thập các số liệu thống kê tại bảng db2user.employee. Người đọc và người ghi dữ liệu được phép truy cập vào các bảng trong khi các số liệu thống kê đang được tính toán:

RUNSTATS ON TABLE db2user.employee ALLOW WRITE ACCESS

Lệnh sau thu thập số liệu thống kê tại bảng db2user.employee, cũng như trên các cột empid và empname với số liệu thống kê phân bố. Trong khi lệnh đang chạy, bảng chỉ sẵn sàng cho các yêu cầu chỉ đọc:

RUNSTATS ON TABLE db2user.employee WITH DISTRIBUTION ON COLUMNS 
( empid, empname ) ALLOW READ ACCESS

Lệnh sau thu thập số liệu thống kê trên bảng db2user.employee và thống kê chi tiết về tất cả các chỉ mục của nó:

RUNSTATS ON TABLE db2user.employee AND DETAILED INDEXES ALL

Bạn có thể rất chi tiết cụ thể khi thu thập số liệu thống kê về các đối tượng của cơ sở dữ liệu. Các kết hợp khác nhau của các tùy chọn RUNSTATS có thể được sử dụng để thu thập số liệu thống kê về bảng, số liệu thống kê về chỉ mục, thống kê phân bố, các thông tin lấy mẫu, và v.v.. Để đơn giản hóa việc thu thập các số liệu thống kê, bạn có thể ghi lưu các tuỳ chọn mà bạn xác định khi đưa ra lệnh RUNSTATS trong một lược khai thống kê. Nếu bạn muốn thu thập cùng các số liệu thống kê lặp đi lặp lại nhiều lần trên một bảng và không muốn gõ nhập lại các tùy chọn lệnh, thì bạn chỉ cần làm như sau:

RUNSTATS ON TABLE db2user.employee USE PROFILE

Lệnh này thu thập số liệu thống kê về db2user.employee bằng cách sử dụng các tùy chọn đã ghi lại trong lược khai thống kê cho bảng đó. Vậy làm thế nào để thiết lập một lược khai thống kê? Điều này rất dễ dàng khi ta sử dụng tùy chọn SET PROFILE ONLY.

RUNSTATS ON TABLE db2user.employee WITH DISTRIBUTION ON COLUMNS ( empid, empname ) 
    SET PROFILE ONLY

Bạn lưu ý rằng tùy chọn sẽ chỉ thiết lập lược khai, còn lệnh RUNSTATS sẽ không chạy. Nếu bạn cần phải sửa đổi một lược khai thống kê đã được đăng ký trước đó, thì hãy sử dụng tùy chọn UPDATE PROFILE ONLY. Tương tự như vậy, tùy chọn này sẽ chỉ cập nhật các lược khai mà không chạy lệnh RUNSTATS. Nếu bạn muốn cập nhật lược khai cũng như cập nhật các số liệu thống kê, thì bạn hãy sử dụng tùy chọn UPDATE PROFILE để thay thế.

RUNSTATS ON TABLE db2user.employee WITH DISTRIBUTION DEFAULT NUM_FREQVALUES 50
 NUM_QUANTILES 50
    UPDATE PROFILE

RUNSTATS là một tiện ích tiêu thụ nhiều tài nguyên. Tuy nhiên, để duy trì hoạt động hiệu quả của cơ sở dữ liệu, thì các số liệu thống kê phải được thu thập thường xuyên. Bạn nên tìm các cửa sổ thường xuyên mà hoạt động cơ sở dữ liệu giảm bớt để có thể thu thập được các số liệu thống kê của cơ sở dữ liệu mà không ảnh hưởng đến hiệu năng của cơ sở dữ liệu. Trong một số môi trường, không có cửa sổ như vậy. Việc điều khiển tiết lưu của tiện ích RUNSTATS có thể được coi là hành động giới hạn lượng tài nguyên được tiêu thụ bởi tiện ích đó. Khi hoạt động của cơ sở dữ liệu ở mức thấp, thì tiện ích sẽ chạy mạnh hơn. Mặt khác, khi hoạt động của cơ sở dữ liệu tăng lên, thì các nguồn tài nguyên được phân bổ để thi hành tiện ích RUNSTATS giảm đi. Sau đây là cách để xác định mức độ điều khiển tiết lưu.

RUNSTATS ON TABLE db2user.employee WITH DISTRIBUTION DEFAULT NUM_FREQVALUES 50
 NUM_QUANTILES 50
    UTIL_IMPACT_PRIORITY 30

Các giá trị ưu tiên chấp nhận được là từ 1 đến 100. Giá trị 100 là giá trị ưu tiên cao nhất (có nghĩa là không được điều khiển tiết lưu) và giá trị 1 là giá trị ưu tiên thấp nhất. 50 là mức độ ưu tiên mặc định.

Lưu ý rằng việc thu thập số liệu thống kê tự động được kích hoạt theo mặc định khi cơ sở dữ liệu được tạo ra. Nó có thể được tắt đi bằng cách thiết lập tham số cấu hình cơ sở dữ liệu AUTO_RUNSTATS sang trạng thái OFF.

Các tiện ích REORG và REORGCHK

Dữ liệu được thêm vào và bị loại bỏ khỏi cơ sở dữ liệu có thể không được đặt theo thứ tự tuần tự về mặt vật lý. Trong trường hợp như vậy, DB2 phải thực hiện các hoạt động đọc bổ sung để truy cập dữ liệu. Điều này thường có nghĩa là cần thêm các hoạt động vào/ra (I/O) ổ đĩa cứng, và chúng ta biết rằng tất cả các hoạt động như vậy là chi phí cao. Trong trường hợp như vậy, bạn nên xem xét việc sắp xếp lại bảng về mặt vật lý theo chỉ mục để các dữ liệu liên quan với nhau được đặt gần nhau, do đó giảm bớt được các hoạt động vào/ra ổ đĩa cứng.

REORG là một tiện ích để sắp xếp lại dữ liệu cho bảng và/hoặc chỉ mục. Mặc dù dữ liệu được sắp xếp lại về mặt vật lý, DB2 cung cấp tùy chọn để thực hiện thao tác này trực tuyến (online) hoặc ngoại tuyến (offline). Theo mặc định, tùy chọn REORG ngoại tuyến cho phép người sử dụng khác đọc được bảng. Bạn có thể giới hạn truy cập bảng bằng cách chỉ rõ tùy chọn ALLOW NO ACCESS. Tùy chọn REORG trực tuyến (còn gọi là REORG) tại chỗ) hỗ trợ cả truy cập đọc và ghi vào bảng. Vì các trang dữ liệu được sắp xếp lại, nên các ứng dụng chạy đồng thời có thể phải đợi tùy chọn REORG hoàn tất với các trang hiện tại. Bạn có thể dễ dàng ngừng, tạm dừng hoặc tiếp tục lại quá trình với các tùy chọn thích hợp.

Các ví dụ sau tự nó giải thích các thao tác trên:

REORG TABLE db2user.employee INDEX db2user.idxemp INPLACE ALLOW WRITE ACCESS
REORG TABLE db2user.employee INDEX db2user.idxemp INPLACE PAUSE

Bạn cũng có thể sắp xếp lại một chỉ mục. Nếu mệnh đề CLEANUP được sử dụng như được hiển thị trong một trong những ví dụ dưới đây, thì thao tác xóa sạch dữ liệu sẽ được thực hiện thay vì sắp xếp lại.

REORG INDEX db2user.idxemp FOR TABLE db2user.employee ALLOW WRITE ACCESS 
REORG INDEX db2user.idxemp FOR TABLE db2user.employee CLEANUP ONLY

REORGCHK là một tiện ích bảo trì dữ liệu khác, có một tùy chọn để lấy ra số liệu thống kê hiện tại của cơ sở dữ liệu hoặc cập nhật các số liệu thống kê của cơ sở dữ liệu. Nó cũng sẽ tạo ra một báo cáo về số liệu thống kê với các chỉ báo REORG. Bằng cách sử dụng công thức thống kê, tiện ích REORGCHK đánh dấu các bảng hoặc các chỉ mục bằng dấu sao (*) nếu cần phải REORG (sắp xếp lại).

Chúng ta hãy xem xét một số ví dụ. Lệnh sau tạo ra một bản báo cáo của các số liệu thống kê hiện tại về tất cả các bảng thuộc sở hữu của ID ủy quyền thời gian chạy:

REORGCHK CURRENT STATISTICS ON TABLE USER

Lệnh sau cập nhật các số liệu thống kê và tạo ra một bản báo cáo về tất cả các bảng được tạo ra trong lược đồ Smith:

REORGCHK UPDATE STATISTICS ON SCHEMA smith

Và đây là một ví dụ kết quả đầu ra của tiện ích REORGCHK:

Tiện ích REBIND và lệnh FLUSH PACKAGE CACHE

Trước khi một chương trình ứng dụng cơ sở dữ liệu hoặc bất cứ câu lệnh SQL nào có thể được thực thi, thì chúng phải được DB2 tiền biên dịch và một gói được tạo ra. Gói là một đối tượng cơ sở dữ liệu có chứa lệnh SQL đã biên dịch được sử dụng trong tệp tin mã nguồn ứng dụng. DB2 sử dụng các gói để truy cập dữ liệu được tham chiếu trong lệnh SQL. Trình tối ưu hóa của DB2 lựa chọn kế hoạch truy cập dữ liệu cho các gói này như thế nào? Nó dựa vào số liệu thống kê của cơ sở dữ liệu tại thời điểm mà các gói được tạo ra.

Đối với câu lệnh SQL tĩnh, các gói được tạo ra và được kết buộc với cơ sở dữ liệu tại thời gian biên dịch. Nếu các số liệu thống kê được cập nhật để phản ánh các đặc trưng của cơ sở dữ liệu vật lý, thì các gói hiện có cũng phải được cập nhật. Tiện ích REBIND cho phép bạn tạo lại gói để cho các số liệu thống kê của cơ sở dữ liệu hiện tại có thể được sử dụng. Lệnh này rất đơn giản:

REBIND PACKAGE package_name

Trong nhiều trường hợp, câu lệnh SQL chứa các biến chủ chứa, các đánh dấu tham số và các mục đăng ký đặc biệt. Các giá trị của các biến này không được biết cho đến thời gian chạy thi hành. Với mệnh đề REOPT trong lệnh REBIND bạn có thể chỉ định DB2 có tối ưu hóa hay không đường dẫn truy cập bằng cách sử dụng các giá trị thực của các biến chủ chứa, các đánh dấu tham số và các mục đăng ký đặc biệt. Có ba tùy chọn cho mệnh đề REOPT:

  • NONE - Các giá trị thực của các biến chủ chứa, các đánh dấu tham số và các mục đăng ký đặc biệt đã sử dụng trong các lệnh SQL sẽ không được sử dụng để tối ưu hóa đường dẫn truy cập. Những ước lượng mặc định cho các biến này sẽ được sử dụng để thay thế.
  • ONCE - Đường dẫn truy cập cho câu lệnh SQL đã cho sẽ được tối ưu hóa bằng cách sử dụng các giá trị thực của các biến chủ chứa, các đánh dấu tham số và các mục đăng ký đặc biệt khi truy vấn được thực hiện đầu tiên.
  • ALWAYS - Đường dẫn truy cập cho câu lệnh SQL sẽ luôn luôn được biên dịch và được tối ưu hóa lại bằng cách sử dụng các giá trị của các biến chủ chứa, các đánh dấu tham số và các mục đăng ký đặc biệt.
REBIND PACKAGE ACCTPKG REOPT ONCE

Tuy nhiên, nếu bạn thay đổi ứng dụng nguồn, thì gói hiện tại kết hợp với nó cần phải được hủy bỏ và được tạo lại một cách tường minh. Tiện ích REBIND là không được sử dụng cho mục đích này. Chúng tôi lưu ý bạn điểm này vì các quản trị viên cơ sở dữ liệu thường hiểu sai cách sử dụng tiện ích REBIND.

Đối với các câu lệnh SQL động, chúng được tiền biên dịch tại thời gian chạy thi hành và được lưu trong bộ nhớ sẵn (cache) của gói. Nếu các số liệu thống kê được cập nhật, bạn có thể xả hết bộ nhớ sẵn để cho các câu lệnh SQL động được biên dịch một lần nữa để lấy các số liệu thống kê được cập nhật. Câu lệnh như sau:

FLUSH PACKAGE CACHE DYNAMIC

Quy trình bảo trì cơ sở dữ liệu

Bây giờ bạn đã hiểu các tiện ích RUNSTATS, REORG, REORGCHK, REBINDFLUSH PACKAGE CACHE, chúng ta hãy xem lại quy trình bảo trì dữ liệu, quy trình này nên được thực hiện thường xuyên đối với cơ sở dữ liệu của bạn. Quy trình này được minh họa trong sơ đồ sau:


Trung tâm điều khiển của DB2

Trung tâm điều khiển của DB2

Cho đến đây, bạn đã sử dụng Trung tâm điều khiển của DB2 theo cách này hay cách khác. Nó là một công cụ quản trị dạng đồ họa được sử dụng để quản lý và quản trị các máy chủ DB2 nội bộ hoặc từ xa. Sau đây là một vài tác vụ mà bạn có thể thực hiện với Trung tâm điều khiển:

  • Định cấu hình cho các cá thể DB2 và cơ sở dữ liệu
  • Tạo cơ sở dữ liệu, vùng bảng, các bảng và các chỉ mục bằng cách sử dụng các thủ thuật
  • Quản lý các ủy quyền và đặc quyền của DB2
  • Sao lưu và phục hồi dữ liệu
  • Tạo các tác vụ và lập lịch biểu các công việc tự động
  • Xuất khẩu, nhập khẩu và nạp dữ liệu
  • Giải nghĩa các câu lệnh SQL có vấn đề

Những tác vụ này được giải thích trong loạt bài hướng dẫn này, cũng như trong loạt bài hướng dẫn Cơ bản về DB2 (xem phần Tài nguyên). Chúng tôi rất khuyến nghị bạn sử dụng công cụ Trung tâm điều khiển này và khám phá cách mà nó có thể giúp bạn quản lý máy chủ DB2 hiệu quả hơn. Trung tâm điều khiển có thể được khởi chạy dễ dàng từ thư mục chương trình IBM DB2=>General Administration Tools từ trình đơn Start trên nền hệ điều hành Windows. Bạn cũng có thể khởi chạy nó bằng lệnh db2cc.

Các khung nhìn của Trung tâm điều khiển của DB2

DB2 phiên bản 9.1 cho phép bạn chọn và tuỳ chỉnh các khung nhìn của Trung tâm điều khiển mà bạn muốn làm việc với nó. Có ba khung nhìn khác nhau:

  • Khung nhìn cơ bản cho bạn một giao diện để làm việc với tất cả các đối tượng căn bản như cơ sở dữ liệu, bảng và các khung nhìn (cơ sở dữ liệu).
  • Khung nhìn nâng cao (advanced) hiển thị tất cả các đối tượng và hành động có sẵn tại Trung tâm điều khiển. Khung nhìn này thường được sử dụng nếu bạn muốn kết nối tới DB2 cho các hệ thống z/OS hoặc IMS.
  • Khung nhình tùy chỉnh cho bạn khả năng tùy chỉnh các đối tượng và hành động tùy theo sở thích của bạn.

Khi bạn khởi chạy Trung tâm điều khiển của DB2, bạn có thể xác định bạn muốn sử dụng khung nhìn nào, giống như hình dưới đây.

Nếu bạn chọn mục Modify tại khung nhìn của Trung tâm điều khiển, bạn sẽ nhận được một cửa sổ tương tự như sau. Lưu ý rằng tại ô bên trái, bạn chọn các thư mục và các đối tượng sẽ được hiển thị. Theo sự lựa chọn trong ô này, ô bên phải cho phép bạn tuỳ chỉnh thêm các hành động kết hợp (hoặc trình đơn nổi lên).

Làm việc với Trung tâm điều khiển của DB2

Tại Trung tâm điều khiển, các thông tin về bất kỳ đối tượng cơ sở dữ liệu nào đều có thể dễ dàng được truy cập. Ví dụ, nếu bạn chọn một bảng, các chi tiết về bảng đó sẽ được lấy ra và được hiển thị tại ô phía dưới bên phải. Để hiển thị các đối tượng liên quan của bảng này, bạn chỉ cần nhấn chuột vào liên kết Show Related Objects. Như ở hình dưới đây, bạn cũng có thể khởi động các công cụ khác từ trình đơn Tools.


Các trình cố vấn của DB2

Trình cố vấn thiết kế của DB2

Trình cố vấn thiết kế là một công cụ tiện dụng có thể giúp bạn xác định đối tượng cơ sở dữ liệu nào có thể cải thiện hiệu năng của một tải công việc đã cho. Về cơ bản một tải công việc là một tập hợp các câu lệnh SQL mà trình cố vấn thiết kế đánh giá dựa vào các đặc trưng của tải công việc, các đặc trưng của cơ sở dữ liệu, và tài nguyên phần cứng. Nó dùng trình tối ưu hoá của DB2, các số liệu thống kê của cơ sở dữ liệu, và cơ chế giải nghĩa (Explain) để tạo ra các khuyến nghị cho các chỉ mục mới, các bảng truy vấn được vật chất hoá mới (MQT), chuyển đổi thành các bảng phân cụm nhiều chiều (MDC), thao tác phân phối lại bảng, xóa các chỉ mục và các MQTs không được sử dụng bởi tải công việc đã xác định. Bạn có thể quen với MQTs và MDCs. Chúng là các đối tượng cơ sở dữ liệu cao cấp không được bao gồm trong kỳ thi lấy chứng chỉ DBA (kỳ thi 731). Nếu bạn quan tâm đến các đối tượng cơ sở dữ liệu cao cấp, xin tham khảo Trung tâm thông tin của DB2.

Bạn có thể khởi chạy trình cố vấn từ dòng lệnh với db2advis cùng với các đầu vào cần thiết. Có một số cách để xác định tải công việc bằng cách sử dụng lệnh db2advis.

Khi phát lệnh db2advis bạn có thể chỉ rõ một câu lệnh SQL đơn. Ví dụ sau sẽ đánh giá các câu lệnh SQL đã cho và đưa ra các khuyến nghị tương ứng.

db2advis -d sample -s "select * from employee where workdept='A00' and 
salary > 40000" -o output.out

Bạn có thể sử dụng một tập hợp các câu lệnh SQL động thu được tại một hình chụp nhanh của DB2. Để làm điều này, bạn cần phải bắt đầu lại trình giám sát cơ sở dữ liệu với câu lệnh.

db2 reset monitor for database database-name

Hãy để ứng dụng của bạn chạy trong khoảng thời gian mà bạn muốn và cho phép hình chụp nhanh của DB2 bắt giữ các lệnh SQL động. Hãy phát lệnh db2advis sau đây để đánh giá tải công việc và đưa ra các khuyến nghị. Ở đây tùy chọn -g ra lệnh cho trình cố vấn thiết kế lấy các câu lệnh SQL từ hình chụp nhanh của SQL động. Ngoài ra, tùy chọn -p buộc các lệnh SQL thu giữ được phải được lưu trữ trong các bảng hệ thống ADVISE_WORKLOAD.

db2advis -d sample -g -p -o output.out

Một cách khác, bạn có thể tạo một tệp tin tải công việc có chứa một tập hợp các câu lệnh SQL. Bạn đặt tần suất của các câu lệnh trong tải công việc. Dưới đây là một tệp tin khối lượng công việc mẫu.

--#SET FREQUENCY 100
SELECT COUNT(*) FROM EMPLOYEE;
SELECT * FROM EMPLOYEE WHERE LASTNAME='HAAS';
--#SET FREQUENCY 1
SELECT * FROM EMPLOYEE WHERE WORKDEPT='A00' AND SALARY > 40000;

Sau đó chỉ cần chạy lệnh db2advis với tùy chọn -i.

db2advis -d sample -i input.sql -o output.out

Trình cố vấn thiết kế cũng có thể được khởi chạy từ Trung tâm điều khiển. Bạn chọn cơ sở dữ liệu mà bạn muốn làm việc, chọn Design Advisor từ trình đơn nổi lên của nó. Bạn sẽ nhận được trình cố vấn thiết kế như hình sau.

Khi bạn dùng được công cụ này, thì bạn có thể nhập khẩu một tải công việc SQL, thay đổi các câu lệnh SQL, cập nhật thống kê cho các bảng nhất định, lựa chọn đánh giá tải công việc ngay bây giờ, và v.v..


Kết luận

Tóm tắt

Trong hướng dẫn này một số tiện ích của DB2 đã được giới thiệu để giúp bạn trong việc duy trì dữ liệu của DB2. Bạn đã nghiên cứu:

  • Các định dạng tệp tin khác nhau mà các tiện ích di chuyển dữ liệu của DB2 có thể làm việc với chúng.
  • Tiện ích EXPORT được sử dụng để trích xuất dữ liệu từ một bảng hoặc một khung nhìn. Ghi nhớ rằng dữ liệu XML cũng được hỗ trợ.
  • Tiện ích IMPORT có thể được sử dụng để thực hiện việc chèn một số lượng lớn dữ liệu vào một bảng hoặc một khung nhìn. Ghi nhớ rằng dữ liệu XML cũng được hỗ trợ.
  • Tiện ích LOAD có thể điền vào bảng các dữ liệu đầu vào bằng cách viết trực tiếp các trang đã định dạng vào cơ sở dữ liệu.
  • Bốn pha của một hoạt động nạp dữ liệu là: nạp, xây dựng, xóa và sao chép chỉ mục.
  • Bảng được nạp này được đặt ở trạng thái SET INTEGRITY PENDING nếu bảng có các ràng buộc khác với các ràng buộc duy nhất đã được định nghĩa.
  • Hãy sử dụng lệnh SET INTEGRITY để loại bỏ trạng thái SET INTEGRITY PENDING.
  • Như vậy, đối với cơ sở dữ liệu có thể phục hồi được, vùng bảng mà ở đó bảng được nạp được định nghĩa sẽ được đặt trong trạng thái BACKUP PENDING.
  • Các tuỳ chọn khác nhau và biến tố kiểu tệp tin khác nhau để tùy chỉnh các hoạt động EXPORT, IMPORTLOAD.
  • Mục đích của mỗi công cụ bảo trì dữ liệu: RUNSTATS, REORG, REORGCHK, REBIND và lệnh FLUSH PACKAGE CACHE.
  • Sử dụng một số tiện ích, ví dụ như db2move, db2look, db2batch, Trung tâm điều khiển và trình Tư vấn thiết kế.

Chúc bạn thi may mắn !

Tài nguyên

Học tập

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

  • Phiên bản dùng thử của DB2 9 đã có sẵn để tải về.
  • Tải về phiên bản DB2 Express-C, phiên bản miễn phí của DB2 Express Edition cho cộng đồng, phiên bản này cung cấp cùng các đặc tính dữ liệu cốt lõi như DB2 Express Edition và cung cấp một cơ sở vững chắc để xây dựng và triển khai các ứng dụng.

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=457981
ArticleTitle=Chuẩn bị kỳ thi số 731 lấy chứng chỉ DBA (Quản trị cơ sở dữ liệu) DB2 9, Phần 5: Các tiện ích của DB2
publish-date=12182009