Tận dụng các kỹ năng Oracle 11g của bạn để tìm hiểu DB2 9.7 cho Linux, UNIX và Windows

Nếu bạn là một chuyên gia về cơ sở dữ liệu DB2 quan tâm đến việc phát triển các kỹ năng DB2® 9 của mình, thì có nhiều khả năng là bạn đã phát triển các kỹ năng cơ sở dữ liệu với sản phẩm cơ sở dữ liệu quan hệ khác ở đâu đó rồi. Do vừa mới được cập nhật với các phiên bản mới nhất của DB2 và Oracle, nên bài viết này chỉ cho bạn cách sử dụng kiến thức hiện tại của mình về Oracle 11g để nhanh chóng đạt được các kỹ năng trong DB2 9.7 của IBM® cho Linux®, UNIX® và Windows®.

Suita Gupta, Hỗ trợ quản lý thông tin GTS, IBM Malaysia

Suita Gupta là một nhân viên của nhóm hỗ trợ Quản lý thông tin GTS đặt tại IBM Farnborough, Anh. Suita cung cấp hỗ trợ kỹ thuật DB2 cho các khách hàng. Trong vai trò trước đây của mình Suita đã làm việc với tư cách là một Chuyên gia tư vấn kỹ thuật tại Trung tâm Sáng tạo IBM, Kuala Lumpur đang hỗ trợ các ISV với các sáng kiến di chuyển DB2. Có thể liên hệ với Suita tại suitagup@uk.ibm.com.


Cấp độ đóng góp cho developerWorks của
        tác giả

Allan W. Tham, Hỗ trợ kỹ thuật trước bán hàng, IBM Malaysia

Allan Tham làm việc với tư cách là một người hỗ trợ kỹ thuật trước bán hàng của Nhà quản lý nội dung DB2 (DB2 Content Manager) cho Các đối tác kinh doanh của IBM Malaysia. Allan giúp các đối tác kinh doanh giải quyết một loạt các vấn đề kỹ thuật. Allan có chứng chỉ quản trị về Quản lý nội dung DB2. Trước khi gia nhập IBM, Allan đã làm việc trong môi trường người dùng cuối, ở đó ông là một quản trị viên cơ sở dữ liệu Oracle suốt 3 năm.



Raul Chong, Nhà tư vấn cơ sở dữ liệu, IBM Toronto Laboratory

Raul Chong là một nhà tư vấn cơ sở dữ liệu của Phòng thí nghiệm Toronto của IBM và chủ yếu làm với Các đối tác kinh doanh của IBM. Raul đã làm việc trong sáu năm tại IBM, trong thời gian này có ba năm làm về Hỗ trợ kỹ thuật DB2 9.1 và ba năm làm tư vấn chuyên về phát triển và di chuyển cơ sở dữ liệu ứng dụng từ các RDBMS khác sang DB2 9.1.


Cấp độ đóng góp cho developerWorks của
        tác giả

Alain Fisher, Chuyên gia hỗ trợ kỹ thuật, IBM

Alain Fisher là một thành viên của nhóm hỗ trợ quản lý thông tin GTS đặt tại IBM North Harbour. Anh cung cấp hỗ trợ kỹ thuật DB2 cho các khách hàng ở Anh và Ireland. Anh trước đây đã hỗ trợ các sản phẩm máy chủ và máy tính để bàn Microsoft cũng như máy chủ VMware ESX từ bản phát hành 1.



24 03 2011 (Xuất bản lần đầu tiên vào ngày 30 06 2011)

Mở đầu

Bộ e-kit (dụng cụ-điện tử) DB2 của IBM dành cho các nhà chuyên ngành cơ sở dữ liệu

Tìm hiểu cách dễ dàng để được đào tạo và được cấp chứng chỉ về DB2 cho Linux, UNIX và Windows với bộ e-kit DB2 của IBM dành cho những nhà chuyên ngành cơ sở dữ liệu. Hãy đăng ký ngay bây giờ, và mở rộng danh mục các kỹ năng của bạn hoặc mở rộng sự hỗ trợ của nhà cung cấp DBMS của bạn để bao gồm cả DB2.

Một bài viết của developerWorks trước đó đã nói về cách sử dụng các kỹ năng của MS SQL Server 2000 của bạn để tìm hiểu DB2. Kiến thức của bạn về Oracle có hơn SQL Server không? Nếu có, hãy đọc tiếp. Trong bài này, chúng tôi sẽ chỉ cho bạn cách sử dụng kiến thức hiện tại về Oracle 11g của bạn để nhanh chóng tìm ra chỗ đứng của bạn với DB2 9.7

DB2 9.7 đã được cung cấp với các khả năng mới để giúp quản lý chi phí và đơn giản hóa việc phát triển ứng dụng. Đã có những cải tiến trong một số lĩnh vực như là nén, pureXML, dễ xử lý và hiệu năng. Bài viết này tập trung vào so sánh về các khái niệm cơ bản của DB2 và Oracle, cùng với việc giới thiệu các tính năng mới có sẵn trong DB2 9.7

Lưu ý: Đối với phần còn lại của bài viết này, chúng tôi sẽ sử dụng thuật ngữ "Oracle" để chỉ Oracle 11g và "DB2" để chỉ DB2 9.7 cho Linux, UNIX và Windows.


Tổng quan về các cấu trúc hệ thống

Để bắt đầu, chúng ta cần phải hiểu kiến trúc mà Oracle sử dụng và so sánh nó với DB2.. Hình 1 cho ta thấy cấu trúc hệ thống của Oracle. So sánh với Hình 2, là cấu trúc hệ thống của DB2. Hãy quay lại các hình này để hiểu kỹ hơn trong khi đọc bài này.

Hình 1. Cấu trúc hệ thống Oracle trên Linux, UNIX và Windows
Sơ đồ cho thấy các cá thể trên một máy tính Linux/UNIX/Windows. Bên trong cá thể là một cơ sở dữ liệu chứa vùng bảng hệ thống, vùng bảng tạm thời mặc định, vùng bảng làm lại và vùng bảng người dùng với các bảng và các chỉ mục của chúng.
Hình 2. Cấu trúc hệ thống DB2 trên Linux, UNIX và Windows
Sơ đồ cho thấy các cá thể trên một máy tính LUW. Bên trong mỗi cá thể là danh mục, tạm thời, tệp cấu hình cơ sở dữ liệu vùng người dùng, các bản ghi nhật ký và các bảng.

Các cá thể (instances)

Khái niệm về một cá thể (instance) là giống nhau trong cả Oracle lẫn DB2. Trong cả hai trường hợp một cá thể một là sự kết hợp của các quy trình nền và bộ nhớ được chia sẻ. Sự khác biệt chính giữa hai hệ thống là trong Oracle chỉ có thể có một cơ sở dữ liệu cho mỗi cá thể, trong khi trong DB2 nhiều cơ sở dữ liệu có thể chia sẻ một cá thể.

Vì có sự tương ứng một-một giữa cơ sở dữ liệu và cá thể, nên trong Oracle bạn tạo ngầm định một cá thể khi tạo ra một cơ sở dữ liệu bằng lệnh CREATE DATABASE. Ngoài ra, để tạo ra một cá thể Oracle trên máy tính của bạn, bạn có thể sử dụng Trình trợ lý cấu hình cơ sở dữ liệu (Database Configuration Assistant) hoặc bạn có thể sử dụng tiện ích ORADIM, có sẵn trong Oracle 9i với tùy chọn NEW (Mới). Bạn cũng phải cung cấp thông tin cụ thể bao gồm một trình nhận dạng hệ thống (SID) hoặc một tên dịch vụ, mật khẩu cá thể, số người sử dụng tối đa, chế độ khởi động và v.v. Tương tự, để xóa cá thể đó có thể sử dụng tiện ích ORADIM với tùy chọn DELETE (Xóa). Bạn sẽ cần cung cấp hoặc SID hoặc tên dịch vụ. Không có cá thể mặc định nào được tạo ra với bản cài đặt Oracle mới, trừ khi bạn tạo ra một cơ sở dữ liệu mới trong quá trình cài đặt.

Trong DB2, sau khi cài đặt sản phẩm này trên nền tảng Windows, cá thể "DB2" được tạo ra theo mặc định. Trong Linux và UNIX, tên cá thể mặc định được gọi là "db2inst1". Để tạo ra một cá thể khác trong cùng máy này, bạn chỉ cần thực hiện lệnh db2icrt <instance name>.

Hình 3 cho thấy một cá thể tên là DB2_01 tạo ra bằng lệnh db2icrt từ GUI (Giao diện người dùng độ họa) của Trung tâm điều khiển DB2.

Hình 3. GUI của Trung tâm điều khiển DB2 cho thấy các cá thể DB2
khung nhìn trình thám hiểm của cá thể và cơ sở dữ liệu trong ô bên trái, bảng liệt kê các cá thể ở ô bên phải

Để tham chiếu một cá thể DB2 cụ thể từ một giao diện dòng lệnh, hãy sử dụng biến môi trường DB2INSTANCE. Biến này cho phép bạn xác định cá thể hoạt động hiện tại mà tất cả các lệnh sẽ được áp dụng với nó. Ví dụ, nếu DB2INSTANCE được thiết lập là PROD, rồi bạn ban hành lệnh create database MYDB1, thì bạn sẽ tạo ra một cơ sở dữ liệu có liên kết với cá thể PROD. Nếu bạn đã muốn tạo ra cơ sở dữ liệu trên cá thể DB2 để thay thế, thì trước tiên bạn cần phải thay đổi giá trị của biến DB2INSTANCE là DB2. Điều này tương tự với ORACLE_SID (Trình nhận dạng hệ thống), cũng được sử dụng khi người dùng muốn chuyển đổi giữa các cá thể.

Một cách khác dễ dàng để xác định cá thể mà bạn muốn làm việc với nó là sử dụng GUI của Trung tâm điều khiển DB2 như trong Hình 3. Để xem một mục nhập cho cá thể mới trong công cụ này, bạn phải thêm cá thể đó vào GUI bằng cách nhấn chuột phải vào Instances (Các cá thể) và chọn Add (Thêm). Để hủy bỏ một cá thể trong DB2, bạn có thể thực hiện lệnh db2idrop <tên cá thể>.

Tóm lại, trong Oracle có thể sử dụng Trình trợ lý cấu hình cơ sở dữ liệu để tạo, sửa đổi, khởi động, dừng và xóa cá thể, còn trong DB2 có thể sử dụng GUI của Trung tâm điều khiển DB2 cho mục đích tương tự. Ngoài ra một cá thể Oracle có thể chỉ có một mối quan hệ một-một với một cơ sở dữ liệu, còn trong DB2 điều này không đúng. Nhiều cơ sở dữ liệu có thể tồn tại và được sử dụng đồng thời trong một cá thể DB2.


Các cơ sở dữ liệu

Trong Oracle, có thể tạo ra một cơ sở dữ liệu hoặc bằng tay khi sử dụng lệnh CREATE DATABASE hoặc bằng cách sử dụng Trình trợ lý cấu hình cơ sở dữ liệu. Việc tạo cơ sở dữ liệu bằng tay đòi hỏi thực hiện một loạt các bước tiếp sau, bao gồm việc thiết lập các biến hệ điều hành, chuẩn bị tệp tham số và tạo ra một tệp mật khẩu trước khi có thể thực hiện lệnh CREATE DATABASE.

Thông tin siêu dữ liệu được Data Dictionary (Từ điển dữ liệu) lưu trữ và quản lý, bao gồm các bảng cơ sở và các khung nhìn tương ứng. Các bảng cơ sở được tạo ra tự động trong quá trình tạo cơ sở dữ liệu còn các khung nhìn được xây dựng bằng cách chạy các kịch bản lệnh catalog.sql và kịch bản catproc.sql.

Bởi vậy cơ sở dữ liệu Oracle được xem như là một bộ sưu tập có ba kiểu tệp:

  • Data File (Tệp Dữ liệu): Chứa dữ liệu thực tế, triển khai thực hiện vật lý cơ sở dữ liệu. (Tương tự như Các thùng chứa trong DB2).
  • Redo File (Tệp Làm lại): Tệp này tương đương với các bản ghi nhật ký giao dịch (Transaction Logs) trong DB2.
  • Control File (Tệp kiểm soát): Chứa thông tin để bảo trì và kiểm tra tính toàn vẹn của cơ sở dữ liệu.

Trong DB2, một cá thể có thể chứa một số cơ sở dữ liệu, như trong Hình 2. Mỗi cơ sở dữ liệu là một đơn vị thực sự đóng kín và độc lập. Mỗi cơ sở dữ liệu có vùng bảng danh mục, vùng bảng tạm thời và vùng bảng người dùng riêng của nó được tạo theo mặc định trong lúc tạo cơ sở dữ liệu thành công. DB2 cũng chứa một tệp nhị phân được gọi là thư mục cơ sở dữ liệu hệ thống có chứa các mục nhập của tất cả các cơ sở dữ liệu mà bạn có thể kết nối từ máy DB2 của mình. Thư mục này được giữ ở mức cá thể.

Khi một cá thể được tạo ra, không có cơ sở dữ liệu nào được tạo theo mặc định. Bạn cần phải tạo rõ ràng một cơ sở dữ liệu bằng cách sử dụng lệnh tạo cơ sở dữ liệu. Bạn cũng có thể tạo ra một cơ sở dữ liệu bằng cách sử dụng Trung tâm điều khiển như trong các Hình 45.

Hình 4. Tạo một cơ sở dữ liệu DB2 bằng cách sử dụng GUI của Trung tâm điều khiển
Ảnh chụp màn hình: Tạo trình thủ thuật cơ sở dữ liệu, có các trường tên cơ sở dữ liệu, đường dẫn mặc định, các bí danh và bình luận
Hình 5. Tạo một cơ sở dữ liệu DB2 bằng cách sử dụng GUI của Trung tâm điều khiển (tiếp theo)
Ảnh chụp màn hình: Xem màn hình hiển thị lệnh sẽ được thực hiện để tạo cơ sở dữ liệu

Trong Hình 5, bạn cũng có thể thấy điều gì sẽ xảy ra khi bạn nhấn vào Show Command (Cho xem lệnh). Tất cả các màn hình GUI của Trung tâm điều khiển DB2 cho bạn thấy câu lệnh hoặc lệnh SQL trên thực tế được thực hiện ngầm ở nền sau. Các lệnh này có thể được lưu trong các kịch bản lệnh để thực hiện sau hoặc có thể được sao chép và được thực hiện từ công cụ Bộ xử lý dòng lệnh (CLP) hoặc công cụ GUI của Trung tâm điều khiển. Các công cụ này tương đương với Oracle SQL*Plus và iSQL*Plus tương ứng.

Có thể hủy bỏ một cơ sở dữ liệu DB2 bằng cách sử dụng lệnh 'DROP DATABASE' hoặc từ GUI của Trung tâm điều khiển DB2. Trong Oracle không có lệnh như vậy; cơ sở dữ liệu bị xóa bằng cách xoá bỏ tất cả các tệp dữ liệu liên quan.

Các cơ sở dữ liệu trong một cá thể thường không tương tác với nhau. Tuy nhiên, nếu ứng dụng của bạn cần tương tác với nhiều hơn một cơ sở dữ liệu, thì có thể hỗ trợ yêu cầu này bằng cách cho phép sự hỗ trợ federation (liên đoàn). Xem phần Tài nguyên có một bài viết về federation.


Các thùng chứa, các vùng bảng, các vùng bộ đệm và các trang

Trong Oracle, dữ liệu được lưu trữ vật lý trong các tệp gọi là Data Files (Tệp Dữ liệu). Điều này cũng tương tự như các thùng chứa DB2 ở đó dữ liệu được lưu trữ vật lý. Mỗi cơ sở dữ liệu Oracle có chứa một vùng bảng tên là SYSTEM (Hệ thống), do Oracle tạo ra tự động khi cơ sở dữ liệu được tạo. Các vùng bảng khác cho dữ liệu người dùng, dữ liệu tạm thời và dữ liệu chỉ mục cần được tạo ra sau khi cơ sở dữ liệu này đã được tạo và người dùng cần phải được gán tới các vùng bảng này trước khi có thể sử dụng chúng.

Trong DB2, một vùng bảng là đối tượng logic được sử dụng như một tầng nằm giữa các bảng logic và các thùng chứa vật lý. Khi bạn tạo một vùng bảng, bạn có thể kết hợp nó với một vùng bộ đệm cụ thể (bộ nhớ sẵn cơ sở dữ liệu) cũng như tới các thùng chứa cụ thể. Điều này giúp bạn linh hoạt trong việc quản lý hiệu năng. Ví dụ, nếu bạn có một bảng "nóng", bạn có thể định nghĩa nó trong vùng bảng riêng của nó gắn liền với vùng bộ đệm riêng của nó. Điều này giúp đảm bảo dữ liệu cho bảng này liên tục được lưu sẵn trong bộ nhớ.

Trong DB2, có ba vùng bảng mặc định được tạo tự động trong lúc tạo cơ sở dữ liệu khi sử dụng các giá trị mặc định cho lệnh CREATE DATABASE. Bảng 1 mô tả các vùng bảng mặc định DB2:

Bảng 1. Các vùng bảng DB2 được tạo ra theo mặc định khi tạo cơ sở dữ liệu với các giá trị mặc định
Tên các vùng bảngMô tả
SYSCATSPACEVùng bảng danh mục chứa siêu dữ liệu.
TEMPSPACE1Vùng bảng tạm thời của hệ thống được sử dụng để thực hiện các phép toán như là các phép nối và các phép sắp xếp. Có thể thay đổi tên của vùng bảng này.
USERSPACE1Vùng bảng này là tùy chọn và có thể được sử dụng để lưu trữ các bảng người dùng khi không chỉ ra rõ ràng một vùng bảng lúc tạo bảng.

Vì các cơ sở dữ liệu DB2 là các đơn vị độc lập, nên các vùng bảng không được chia sẻ cho nhiều cơ sở dữ liệu. Do chúng chỉ được biết đến bên trong một cơ sở dữ liệu, nên hai cơ sở dữ liệu khác nhau có thể có các vùng bảng cùng tên. Bạn có thể thấy điều này trong Hình 2 ở đó cơ sở dữ liệu MYDB1 có một vùng bảng tên là MYTBLS và cơ sở dữ liệu MYDB2 cũng có một vùng bảng có cùng tên đó.

Các vùng bảng DB2 có thể được phân loại thành SMS (các vùng do hệ thống quản lý - system-managed spaces) hoặc DMS (các vùng do cơ sở dữ liệu quản lý - database-managed spaces). Các vùng bảng SMS được quản lý bởi hệ điều hành và chỉ có thể có các thư mục. Chúng phát triển tự động khi cần; do đó SMS mang lại hiệu năng tốt với sự quản trị tối thiểu. Các vùng bảng DMS do DB2 quản lý và có thể là các tệp hoặc các thiết bị phần cứng. Kiểu vùng bảng này cho phép hiệu năng tốt nhất, nhưng đòi hỏi một số công việc quản trị. Ví dụ, bạn cần phải xác định từ trước kích thước vùng mà bạn muốn cấp cho vùng bảng, vì quá trình phát triển là không tự động.

Oracle không có khái niệm về SMS cho mô hình lưu trữ của mình nhưng các tệp dữ liệu của nó cũng tương tự như các vùng bảng DMS của DB2. Đó là, bạn có thể tăng kích thước cơ sở dữ liệu hoặc bằng cách thêm một tệp dữ liệu vào vùng bảng, bằng cách tăng kích thước của tệp dữ liệu hoặc bằng cách thêm vào một vùng bảng mới.

Bảng 2 dưới đây cho thấy cách các cơ sở dữ liệu hoặc các vùng bảng Oracle ánh xạ tới các cơ sở dữ liệu hoặc các vùng bảng DB2.

Bảng 2. Cách các cơ sở dữ liệu Oracle ánh xạ tới các cơ sở dữ liệu hoặc các vùng bảng DB2
Cơ sở dữ liệu hoặc vùng bảng OracleCơ sở dữ liệu hoặc vùng bảng DB2
(Hệ thống) là vùng bảng chứa thông tin danh mục (Data Dictionary).SYSCATSPACE (vùng bảng danh mục); như trong Oracle, thông tin này được giữ chỉ ở mức cơ sở dữ liệu.
Data Dictionary (có chứa siêu dữ liệu dưới dạng các bảng và các khung nhìn) và nằm bên trong vùng bảng SYSTEM.Các bảng danh mục hệ thống (được xác định bởi lược đồ SYSIBM) và các khung nhìn hệ thống (được xác định bởi lược đồ SYSCAT hoặc SYSSTAT) và nằm bên trong vùng bảng SYSCATSPACE.
Cơ sở dữ liệu SCOTTCơ sở dữ liệu SAMPLE
Vùng bảng TEMPVùng bảng System Temporary-Tạm thời của hệ thống (Theo mặc định nó được gọi là tempspace1)
Vùng bảng UNDOKhông có sẵn.
Vùng bảng USER Vùng bảng User. Theo mặc định, USERSPACE1 thường được tạo sau khi tạo cơ sở dữ liệu.

Như đã nêu ở trên, khái niệm bộ đệm dữ liệu của Oracle tương đương với vùng bộ đệm DB2; tuy nhiên, DB2 cho phép nhiều vùng bộ đệm cùng tồn tại. Không định sẵn số lượng vùng bộ đệm mà bạn có thể tạo ra và chúng có thể có tên bất kỳ.

Khái niệm về một block Oracle hầu hết giống với trang của DB2. Một trang DB2 có thể có kích thước là 4k, 8k, 16k hoặc 32k. Một hàng bảng phải trùng khớp với một trang duy nhất; nó không thể kéo dài sang các trang khác như Oracle.


Các tên đối tượng

Tên đối tượng Oracle có dạng sau:

[Schema_name.]object_name[@database]

Trong DB2, các đối tượng cũng có một cấu trúc gồm hai phần:

Schema_name.object_name

Như trong Oracle, tên lược đồ DB2 được sử dụng để nhóm các đối tượng một cách hợp lý. Tuy nhiên, một khác biệt quan trọng là trong DB2, tên lược đồ không cần trùng khớp với mã định danh người dùng. Bất kỳ người dùng nào có đặc quyền gọi là IMPLICIT_SCHEMA đều có thể tạo ra một đối tượng bằng cách sử dụng một lược đồ không tồn tại. Ví dụ, giả sử rằng "Peter" có đặc quyền IMPLICIT_SCHEMA và thực hiện lệnh sau:

CREATE TABLE WORLD.TABLEA (lastname char(10))

Trong trường hợp này, bảng WORLD.TABLEA được tạo ra, ở đây WORLD là lược đồ mới được tạo. Nếu Peter đã không chỉ ra rõ ràng lược đồ này, thì bảng PETER.TABLEA sẽ được tạo ra, vì mã định danh kết nối được sử dụng theo mặc định.

Trong DB2 bạn luôn luôn kết nối tới một cơ sở dữ liệu trước khi ban hành các lệnh cụ thể của cơ sở dữ liệu; vì vậy, theo kiến trúc này, các tên đối tượng không cần bao gồm cả tên cơ sở dữ liệu.


Các bảng, các khung nhìn và các chỉ mục

Các bảng, các khung nhìn và các chỉ mục về cơ bản giống nhau trong cả Oracle và DB2.

DB2 cung cấp một tiện ích gọi là Trình cố vấn thiết kế (Design Advisor) mà bạn có thể sử dụng để đề xuất các chỉ mục cho một truy vấn hoặc khối lượng công việc cụ thể. Bạn có thể gọi Trình cố vấn thiết kế từ Trung tâm điều khiển DB2 hoặc từ CLP của DB2 bằng cách sử dụng lệnh db2advis. Trong DB2, các chỉ mục được gắn trực tiếp với định nghĩa bảng. Ví dụ, khi sử dụng các vùng bảng DMS bạn có thể xác định các chỉ mục có thể nằm trong vùng bảng nào như sau:

CREATE TABLE mytable (col1 integer, col2 char(10)) in tbls1 index in tbls2

Ví dụ trên cho thấy rằng dữ liệu cho bảng này sẽ được lưu trữ trong vùng bảng 'tbls1', trong khi các trang chỉ mục sẽ được lưu trữ trong vùng bảng 'tbls2. Điều này trái ngược với cú pháp Oracle ở đó câu lệnh CREATE INDEX cung cấp một tùy chọn để chỉ rõ chỉ mục đó sẽ nằm trong vùng bảng nào.

Ngoài ra, ngay khi một chỉ mục đã được tạo ra trong DB2, bạn không thể thay đổi bất kỳ mệnh đề nào của định nghĩa chỉ mục. Bạn sẽ cần hủy bỏ chỉ mục này và tạo lại nó để thực hiện các thay đổi.

Như trong Oracle, các bảng, các khung nhìn và các chỉ mục DB2 trong các cơ sở dữ liệu khác nhau có thể có cùng tên. Các bảng và các khung nhìn trong cùng một cơ sở dữ liệu phải có các tên khác nhau, nhưng cho phép tạo một chỉ mục có cùng tên với hoặc một bảng hoặc một khung nhìn hiện tại.


Các thủ tục lưu, các trigger và các hàm do người dùng định nghĩa (UDFs)

Các thủ tục lưu của DB2 có thể được viết bằng bất kỳ ngôn ngữ nào được các trình biên dịch trước của DB2 hỗ trợ, bao gồm cả Java, C,C++, REXX, Fortran và COBOL. Tuy nhiên, ngôn ngữ được đề xuất sử dụng là ngôn ngữ thủ tục SQL (SQL PL), khá giống với của PL/SQL của Oracle. Các thủ tục lưu SQL PL dễ tạo và có hiệu năng tốt. Việc phát triển các thủ tục đã lưu của DB2 cũng hỗ trợ SQLJ và Java khi sử dụng kiểu 2 và 4 của trình điều khiển JDBC. Kiểu 3 không còn được lưu hành trên thị trường nữa.

Việc phát triển các trigger và các hàm có thể sử dụng SQL/PL nội tuyến, một tập con của SQL PL. Có thể sử dụng công cụ của Data Studio để dễ dàng tạo, xây dựng, gỡ lỗi và triển khai các thủ tục lưu của DB2 và các hàm do người dùng định nghĩa.


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

Theo truyền thống Oracle lưu trữ tất cả các phiên và các tham số liên quan đến hệ thống trong một tệp văn bản, thường được gọi là tệp initSID.ora. Tuy nhiên do tính chất không bền của tệp văn bản này, bắt đầu từ Oracle 9i, Oracle đã đưa vào Tệp tham số máy chủ (SPFILE - Server Parameter File), là một tệp tham số nhị phân được lưu trữ trên máy chủ. Tệp này vẫn tiếp tục tồn tại ngay cả khi tắt và khởi động cá thể. Tuy nhiên, tệp initSID.ora vẫn còn được sử dụng, khi không có sẵn một tệp SPFILE. Trước khi đưa vào tệp SPFILE, bất kỳ các lệnh ALTER SYSTEM và ALTER SESSION nào đã tác động đến các tham số sẽ chỉ tồn tại trong cá thể đó hay trong phiên đó. DBA (Quản trị viên cơ sở dữ liệu) cần phải sửa đổi tệp văn bản initSID.ora này bằng tay bất cứ khi nào có ý định bật lên một cá thể cơ sở dữ liệu. Các cấu hình truy cập mạng thường được lưu trữ trong tệp listener.ora cho người nghe và tệp tnsnames.ora để truy cập máy khách.

Với DB2, các tham số cấu hình được lưu trữ ở mức cá thể, được gọi là tệp cấu hình của trình quản lý cơ sở dữ liệu và ở mức cơ sở dữ liệu, được gọi là tệp cấu hình cơ sở dữ liệu. Có thể thay đổi động hầu hết các tham số, có nghĩa là, chẳng cần phải dừng và khởi động lại cá thể hay ép buộc tất cả các kết nối theo cơ sở dữ liệu trước khi thay đổi tới giá trị tham số có hiệu lực. Không thể trực tiếp chỉnh sửa các tệp mà ở đó DB2 lưu trữ thông tin cấu hình của nó.

Nếu bạn muốn tự tay thay đổi một tham số của trình quản lý cơ sở dữ liệu cụ thể từ CLP, hãy sử dụng lệnh UPDATE DBM CFG USING <parameter name> <new value>.

Nếu bạn muốn tự tay thay đổi một tham số cơ sở dữ liệu cụ thể từ CLP, hãy sử dụng lệnh UPDATE DB CFG FOR <database name> USING <parameter name> <new value>.

Các lệnh này tương đương với lệnh ALTER SYSTEM và ALTER SESSION của Oracle. Ngoài ra, khi sử dụng Trung tâm điều khiển, bạn có thể xem xét và thay đổi các giá trị cho các tham số này, nếu bạn nhấn chuột phải vào một cá thể cụ thể và chọn Configure Parameters (Cấu hình các tham số), bạn sẽ thấy cửa sổ này được hiển thị trong Hình 6.

Hình 6. Các tham số cấu hình của trình quản lý cơ sở dữ liệu DB2 (mức cá thể)
Ảnh chụp màn hình: Màn hình cấu hình DBM với các thủ tục truyền thông

Ở mức cơ sở dữ liệu, nhấn chuột phải vào một cơ sở dữ liệu cụ thể và chọn Configure Parameters hiển thị cửa sổ như trong Hình 7.

Hình 7. Các tham số cấu hình cơ sở dữ liệu (mức cơ sở dữ liệu)
Ảnh chụp màn hình: Liệt kê các giá trị và các tham số cấu hình DB

DB2 cung cấp nhiều tham số mà bạn có thể sử dụng để cấu hình hệ thống của mình. Tuy nhiên, nếu bạn muốn một cách dễ dàng để cấu hình hệ thống một cách tự động, hãy sử dụng lệnh autoconfigure (hoặc GUI của Trình cố vấn cấu hình - Configuration Advisor GUI) để thiết lập các tham số cấu hình cơ sở dữ liệu và trình quản lý cơ sở dữ liệu tới các giá trị tối ưu dựa trên một số thông tin mà bạn cung cấp. Hình 8 cho thấy Trình cố vấn cấu hình.

Hình 8. - Cố vấn cấu hình của DB
Ảnh chụp màn hình: GUI cho bạn đặt tỷ lệ phần trăm cho bộ nhớ đích

Ngoài các tệp cấu hình, DB2 cũng thường sử dụng các biến Registry (Đăng ký) của DB2 cho các cấu hình riêng theo nền tảng. Lưu ý, các biến Registry của DB2 không liên quan chút nào với registry của Windows. Sử dụng lệnh db2set để xem xét và thay đổi các biến này.

Thông tin kết nối (truy nhập mạng) được lưu trữ trong thư mục cơ sở dữ liệu hệ thống, thư mục cơ sở dữ liệu cục bộ và thư mục nút. Đây là các tệp nhị phân và có thể chỉ được sửa đổi bằng các lệnh CATALOG và UNCATALOG.


Kiến trúc bộ nhớ, các quá trình nền và các luồng

Tiếp theo chúng ta sẽ xem xét kiến trúc bộ nhớ, các quá trình nền và các luồng và sẽ so sánh và đối chiếu với cách sử dụng chúng trong Oracle và DB2.

Hình 9: Kiến trúc bộ nhớ và các quá trình nền của Oracle
Sơ đồ hiển thị cá thể có SGA đang truyền thông tới cơ sở dữ liệu và UGA riêng biệt

Vùng bộ nhớ hệ thống (SGA-System Global Area) trong Oracle là một nhóm các vùng bộ nhớ chia sẻ để lưu trữ thông tin cho cá thể. Các ví dụ bao gồm bộ nhớ sẵn câu lệnh, các bộ đệm bản ghi nhật ký làm lại và bộ nhớ sẵn của bộ đệm dữ liệu. Các vùng bộ nhớ chia sẻ của Vùng bộ nhớ chương trình (PGA-Program Global Area) và Vùng bộ nhớ người dùng (UGA-User Global Area) chứa dữ liệu và thông tin điều khiển cho các quá trình máy chủ và các phiên người dùng.

Oracle hỗ trợ nhiều cá thể trong cùng một máy tính nhưng lại không chia sẻ các quá trình nền. Ví dụ, ba cá thể trong cùng một máy sẽ yêu cầu ba tập quá trình nền. Vì vậy thường đề xuất nên có một cơ sở dữ liệu, một cá thể và nhiều lược đồ trong cùng một máy tính.

Hình 10: Kiến trúc bộ nhớ, các quá trình nền và các luồng của DB2
Sơ đồ hiển thị vùng ứng dụng tách khỏi vùng cá thể, đang truyền thông qua các quá trình của người dùng

Cả hai DB2 và Oracle đều sử dụng các vùng bộ nhớ chia sẻ, nhưng kiến trúc bộ nhớ của DB2 được triển khai thực hiện theo cách hơi khác một chút so với Oracle. Do một cá thể DB2 có thể chứa nhiều hơn một cơ sở dữ liệu, nên có hai mức cấu hình cùng tồn tại. Như chúng ta đã đề cập trong phần trước, cấu hình mức cá thể có thể được thực hiện bằng tệp DBM CFG trong khi cấu hình mức cơ sở dữ liệu được thực hiện bằng tệp DB CFG. Có thể điều chỉnh các tham số cấu hình ở cả hai mức để điều chỉnh cách sử dụng bộ nhớ. Phần dưới đây cung cấp một cách chi tiết hơn một chút về cấu trúc bộ nhớ và các quá trình nền khác nhau của DB2.

Không giống như Oracle, ở đó bộ nhớ được cấp cho cả cá thể lẫn cơ sở dữ liệu khi khởi động, DB2 cấp phát bộ nhớ ở các mức khác nhau. Điều này chủ yếu là do thực tế là một cá thể của DB2 có thể chứa nhiều cơ sở dữ liệu. Có ba cấu trúc bộ nhớ chính trong DB2:

  • Bộ nhớ chia sẻ cá thể: Phần này nói đến bộ nhớ chia sẻ toàn bộ của trình quản lý cơ sở dữ liệu, được cấp phát khi khởi động cá thể bằng lệnh db2start và các phần còn lại vẫn còn được cấp phát cho đến khi ban hành một lệnh db2stop để dừng cá thể.
  • Bộ nhớ chia sẻ cơ sở dữ liệu: Phần này nói đến bộ nhớ toàn cơ sở dữ liệu, được cấp phát khi cơ sở dữ liệu được kích hoạt hoặc kết nối đến lần đầu tiên. Bộ nhớ được cấp bao gồm các nhóm bộ đệm, danh sách khóa, vùng bộ nhớ đặc biệt trong bộ nhớ (head) của cơ sở dữ liệu, vùng bộ nhớ đặc biệt tiện ích, bộ nhớ sẵn đóng gói và bộ nhớ sẵn danh mục.
  • Bộ nhớ chia sẻ ứng dụng: Phần này nói đến bộ nhớ được cấp phát khi một ứng dụng nối đến một cơ sở dữ liệu và được các tác nhân sử dụng để thực hiện công việc do các máy khách được kết nối yêu cầu. Mỗi ứng dụng được nối đến cơ sở dữ liệu có bộ nhớ được cấp cho nó; do đó việc cấu hình đúng các tham số có ảnh hưởng đến bộ nhớ chia sẻ ứng dụng trở nên quan trọng.

Máy chủ cơ sở dữ liệu DB2 phải thực hiện nhiều nhiệm vụ khác nhau, chẳng hạn như xử lý các yêu cầu ứng dụng cơ sở dữ liệu hoặc bảo đảm rằng các bản ghi nhật ký được viết ra đĩa. Mỗi nhiệm vụ thường được thực hiện bởi một EDU (engine dispatchable unit - đơn vị điều vận được của máy riêng biệt). Trong DB2 cho UNIX, Linux và Windows, các hoạt động của máy chủ được thực hiện dưới dạng các luồng. Các luồng và các quá trình của DB2 hoạt động theo các mức sau đây. Lưu ý rằng đây là một danh sách chưa đầy đủ nhưng chúng tôi nêu bật các luồng và các quy trình quan trọng:

  • Mức cá thể: Đây là các quy trình và các luồng được khởi chạy khi khởi động một cá thể:
    1. Trình sinh ra trình tiện ích nền sau (daemon) của DB2 - DB2 Daemon Spawner (db2gds): Bộ xử lý toàn bộ trình tiện ích nền sau được bắt đầu cho mỗi cá thể (chỉ có trong UNIX).
    2. Trình điều khiển hệ thống của DB2 - DB2 System Controller (db2sysc): Quá trình DB2 chính.
    3. Trình giám sát của DB2 - DB2 Watchdog (db2wdog): Quá trình cha mẹ cho tất cả các quá trình khác.
    4. Bản ghi nhật ký định dạng DB2 - DB2 Format Log (db2fmtlg): Tương tự như quá trình ARCn trong Oracle, cấp phát sẵn các tệp bản ghi nhật ký trong đường dẫn log.
    5. Trình tiện ích nền sau điện toán tự quản - Autonomic computing daemon (db2acd): Lưu trữ trên máy chủ trình giám sát sức khỏe, các tiện ích bảo trì tự động và trình lập biểu tác vụ quản trị. Quá trình này trước đây được gọi là db2hmon.
  • Mức cơ sở dữ liệu: Đây là các quy trình được khởi tạo khi thực hiện một kết nối đến cơ sở dữ liệu.
    1. Trình đọc nhật ký DB2 - DB2 Log Reader (db2loggr): Tương tự như tập con của quá trình PMON của Oracle. Quá trình này đọc các tệp bản ghi nhật ký trong khi hủy giao dịch, khởi động lại phục hồi và giao dịch lại.
    2. Trình ghi nhật ký DB2 - DB2 Log Writer (db2loggw): Đổ bản ghi nhật ký từ bộ đệm bản ghi nhật ký vào các tệp bản ghi nhật ký giao dịch trên đĩa. Tương đương với quá trình LGWR trong Oracle.
    3. Trình xóa trang DB2 - DB2 Page Cleaner (db2pclnr): Tương đương với quá trình DBWR trong Oracle, quá trình này xóa vùng bộ đệm trước khi dịch chuyển các trang từ đĩa vào Vùng bộ đệm (BP).
    4. Trình tìm nạp trước DB2 - DB2 Prefetcher (db2pfchr): Lấy các trang từ đĩa và đặt vào vùng bộ đệm trước khi cần dùng nó.
    5. Trình phát hiện khóa chết DB2 - DB2 Deadlock Detector (db2dlock): Quá trình của trình phát hiện khóa chết.
    6. Trình quản lý bộ nhớ tự điều chỉnh DB2 - DB2 Self-Tuning Memory Manager (db2stmm): Để thực hiện tính năng quản lý bộ nhớ tự điều chỉnh tự quản.
  • Mức ứng dụng: Mỗi ứng dụng nối đến cơ sở dữ liệu có chia sẻ riêng của mình về các quy trình nền tảng mức ứng dụng có liên kết với nó. Các quá trình này như sau:
    1. Trình quản lý truyền thông DB2 - DB2 Communication Manager (db2ipccm): Quá trình truyền thông giữa các quá trình cho mỗi máy khách được kết nối cục bộ.
    2. Trình quản lý TCP DB2 - DB2 TCP Manager (db2tcpcm): Quá trình của trình quản lý truyền thông TCP dành cho các máy khách từ xa kết nối đến bằng cách sử dụng giao thức TCP/IP.
    3. Tác nhân kết hợp DB2 - DB2 Coordinating Agent (db2agent): Luồng để xử lý tất cả các yêu cầu thay mặt cho một ứng dụng.
    4. Tác nhân cổng được góp chung của DB2 - DB2 Pooled Gateway Agent (db2agntgp and db2agntgp): Một tác nhân đã góp chung vào một cơ sở dữ liệu từ xa và cơ sở dữ liệu cục bộ tương ứng.

Để biết giải thích toàn diện về các quá trình của DB2 hãy vui lòng tham khảo bài ''Tất cả mọi thứ bạn muốn biết về các quá trình DB2'.


Các cơ chế khóa

Khóa trong Oracle có thể là thủ công hoặc tự động. Trình quản lý khóa Oracle (Oracle Lock Manager) hoàn toàn có thể khóa dữ liệu bảng ở mức hàng hoặc có thể ghi đè các khóa mặc định ở mức phiên hoặc mức giao dịch khi sử dụng các câu lệnh SQL sau:
1. SET TRANSACTION ISOLATION LEVEL
2. LOCK TABLE
3. SELECT FOR UPDATE

Oracle hỗ trợ một cơ chế gọi là Tính nhất quán đọc nhiều phiên bản (Multi-Version Read Consistency) được triển khai thực hiện bằng dữ liệu làm lại (undo) trong các đoạn làm lại.

DB2 triển khai thực hiện các mức cách ly tiêu chuẩn ANSI như là Đọc không cam kết (Uncommitted Read), tính ổn định của Con trỏ, tính ổn định đọc và Đọc lặp lại (Repeatable Read). Một người dùng sẽ chỉ nhìn thấy dữ liệu đã cam kết trừ khi sử dụng mức cách ly Đọc không cam kết. Các khóa hàng có được ngầm định theo mức cách ly. Các đối tượng cơ sở dữ liệu có thể khóa được là các vùng bảng, các bảng và các hàng, tuy nhiên, chỉ các bảng và các vùng bảng có thể bị khóa rõ ràng. Có thể sử dụng lệnh LOCK TABLE để khóa một bảng thay vì sử dụng việc khóa hàng mặc định.

Không giống như Oracle, trong DB2, các khóa được lưu trữ trong bộ nhớ chứ không phải trong các trang dữ liệu. Tham số cấu hình cơ sở dữ liệu LOCKLIST có thể được dùng để cấu hình bộ nhớ có sẵn cho các khóa, trong khi tham số cấu hình MAXLOCKS định nghĩa số lượng bộ nhớ tối đa dành cho các khóa của một ứng dụng cụ thể.

Trong DB2 9.7 việc ghi lại sự kiện khóa đã được cải thiện. Trình giám sát sự kiện khóa mới thu thập thông tin về các khoảng thời gian tạm dừng khóa, các khóa chết và các thời gian chờ khóa vượt quá khoảng thời gian quy định. Có thể truy cập dữ liệu này hoặc từ một tài liệu XML, từ các bảng cơ sở dữ liệu hoặc sử dụng một công cụ dựa vào java (db2evmonfmt) để đọc từ một tài liệu xml hoặc văn bản.

Một tham số cấu hình cơ sở dữ liệu mới cur_commit đã được đưa vào, về cơ bản cho phép chỉ dữ liệu đã cam kết được trả về, giống như trước đây, nhưng bây giờ các trình đọc không chờ đợi những trình viết giải phóng các khóa hàng. Thay vào đó, các trình đọc trả về dữ liệu dựa vào phiên bản đã cam kết hiện tại; nghĩa là dữ liệu trước khi bắt đầu hoạt động viết.


Bảo mật

Cả Oracle và DB2 là các cơ sở dữ liệu an toàn có các tính năng bảo mật cơ bản và nâng cao. Trong Oracle, có 4 phương thức xác thực người dùng khác nhau, như sau:

  • Cơ sở dữ liệu: Cơ sở dữ liệu thực hiện cả nhận dạng và xác thực người dùng.
  • Bên ngoài: Hệ điều hành hoặc dịch vụ mạng thực hiện xác thực
  • Xác thực và ủy quyền toàn bộ: Người dùng được xác thực toàn bộ bằng SSL.
  • Xác thực và ủy quyền ủy nhiệm: Máy chủ tầng trung gian thực hiện xác thực.

Phương thức xác thực được xác định khi tạo người dùng bằng cách sử dụng lệnh CREATE USER. Có một số khung nhìn Data Dictionary (Từ điển dữ liệu) có chứa thông tin về những người dùng này.

Trong DB2, những người dùng không tồn tại trong cơ sở dữ liệu này, mà phần lớn do hệ điều hành quản lý. Không có thông tin đăng nhập cơ sở dữ liệu nào được lưu giữ trong bất kỳ bảng cơ sở dữ liệu nào. Bất kỳ người dùng hệ điều hành nào cũng có khả năng truy cập DB2; tuy nhiên, trừ khi họ đã được cấp quyền hay đặc quyền DB2 cụ thể, họ có thể làm không nhiều. Việc cấp và rút lại các quyền và các đặc quyền có thể dễ được xử lý thông qua GUI của Trung tâm điều khiển. Trước tiên, bạn có thể phải thêm một người dùng hoặc một nhóm người dùng vào Trung tâm điều khiển từ những người dùng hoặc các nhóm người dùng hệ điều hành có sẵn.

Ngoài ra trong DB2 không sử dụng thuật ngữ "các vai trò"; thay vào đó, DB2 sử dụng thuật ngữ "các quyền", tương tự như các vai trò cơ sở dữ liệu của Oracle, nhờ đó các đặc quyền được cấp cho những người dùng hoặc các nhóm cụ thể. Các quyền được DB2 hỗ trợ là: SYSADM, SYSCTRL, SYSMAINT, SYSMON, SECADM, DBADM và LOAD.

Không thể cấp các quyền SYSADM, SYSCTRL và SYSMAINT bằng cách sử dụng câu lệnh SQL GRANT. Các quyền đặc biệt này chỉ có thể được thiết lập bằng cách sửa đổi các tham số cấu hình của trình quản lý cơ sở dữ liệu cụ thể.

DB2 cũng sử dụng thuật ngữ "đặc quyền" tương tự như các đặc quyền đối tượng lược đồ và hệ thống của Oracle. Có các đặc quyền cơ sở dữ liệu (kết nối, createtab, v.v) và các đặc quyền đối tượng cơ sở dữ liệu (lược đồ, bảng, khung nhìn và v.v). Hình 11 cho thấy thông tin bảo mật DB2 đã thu được từ GUI của Trung tâm điều khiển. Hầu hết các thẻ được hiển thị trên cửa sổ Change User (Thay đổi người dùng) tương ứng với các đặc quyền được DB2 hỗ trợ.

Hình 11. Bảo mật DB2
Ảnh chụp màn hình: Hiển thị các giá trị cài đặt các quyền cho người dùng tại trung tâm điều khiển

Việc xác thực trong DB2 không chỉ liên quan đến việc mã hóa các tên và các mật khẩu người dùng mà còn cho phép mã hóa dữ liệu khi nó di chuyển trên mạng giữa các máy khách và máy chủ. Nơi thực hiện quá trình xác thực được xác định bởi giá trị của tham số cấu hình AUTHENTICATION của trình quản lý cơ sở dữ liệu.

Sau đây là các tùy chọn hợp lệ để cho phép xác thực cho DB2:

  • SERVER_ENCRYPT - Giá trị này xác định rằng việc xác thực này xảy ra trên máy chủ. Mã định danh và mật khẩu người dùng được quy định trong quá trình kết nối được mã hóa và được gửi đến máy chủ, ở đó chúng được so sánh với mã định danh và mật khẩu người dùng bên phía máy chủ. Nếu hoàn toàn trùng khớp, thì người dùng được phép truy cập vào cơ sở dữ liệu.
  • KRB_SERVER_ENCRYPT - Tùy chọn này xác định rằng máy chủ chấp nhận các lược đồ xác thực Kerberos và các lược đồ xác thực SERVER được mã hóa.
  • DATA_ENCRYPT - Thiết lập này xác định rằng máy chủ cho phép xác thực SERVER và cũng xác định rằng dữ liệu đi qua mạng giữa máy khách và máy chủ được mã hóa.
  • DATA_ENCRYPT_CMP - Giá trị này xác định rằng máy chủ chấp nhận các lược đồ xác thực SERVER đã mã hóa và mã hóa dữ liệu người dùng. Kiểu xác thực này cho phép tương thích với các sản phẩm mức thấp không hỗ trợ kiểu xác thực DATA_ENCRYPT.
  • GSS_SERVER_ENCRYPT - Giá trị này xác định rằng máy chủ chấp nhận các lược đồ xác thực trình cắm thêm dựa vào API của GSS haycác lược đồ xác thực máy chủ đã mã hóa.

Để cập nhật tham số cá thể AUTHENTICATION (Xác thực), ví dụ với một giá trị của DATA_ENCRYPT, hãy sử dụng các lệnh như dưới đây:

Liệt kê 1. Cập nhật tham số cá thể AUTHENTICATION
UPDATE DBM CFG USING AUTHENTICATION DATA_ENCRYPT
db2stop
db2start

DB2 mở rộng bảo mật hơn nữa bằng cách đưa ra một cơ chế Kiểm soát truy cập dựa vào nhãn (LBAC - Label Based Access Control). Tính năng LBAC cung cấp độ chi tiết cao hơn để kiểm soát truy cập đọc và viết vào các hàng và các cột bảng riêng biệt. Cần thiết phải có vai trò của quản trị viên bảo mật (SECADM) đã được cung cấp trong DB2 để xử lý các đối tượng LBAC. Những người dùng cố gắng truy cập một đối tượng phải được cấp nhãn bảo mật của đối tượng đó. Khi nhãn trùng khớp, việc truy cập mới được phép; không có nhãn trùng khớp, việc truy cập bị từ chối.

Có những khía cạnh khác về bảo mật cơ sở dữ liệu vượt ra ngoài các đặc quyền và các quyền. Tóm lại, dưới đây là một số điểm khác biệt và điểm tương đồng giữa Oracle và DB2:

Xác thực và ủy quyền người dùng

Oracle sử dụng một mật khẩu được mã hóa đã lưu trong từ điển ngay khi người dùng được tạo ra. DB2 hỗ trợ các mật khẩu để xác thực người dùng và sử dụng người dùng đang hoạt động phía dưới để xác thực. Cả hai Oracle và DB2 đều hỗ trợ Thư mục Internet Oracle và Máy chủ thư mục IBM (LDAP - Oracle Internet Directory và IBM Directory Server). Cả Oracle lẫn DB2 đều hỗ trợ đăng nhập một lần (SSO - single sign on).

Mã hóa dữ liệu

Oracle hỗ trợ mã hóa dữ liệu ở nơi có dữ liệu nhạy cảm như các số thẻ tín dụng và một số dữ liệu kinh doanh rất nhạy cảm có thể được mã hóa. Bạn có các tùy chọn sau đây để mã hóa dữ liệu DB2 trong vùng lưu trữ:

  • Bạn có thể sử dụng các hàm mã hóa và giải mã tích hợp sẵn ENCRYPT, DECRYPT_BIN, DECRYPT_CHAR và GETHINT để mã hóa dữ liệu của bạn trong các bảng cơ sở dữ liệu.
  • Bạn có thể sử dụng Trình chuyên gia mã hóa cơ sở dữ liệu của IBM (IBM Database Encryption Expert) để mã hóa các tệp dữ liệu hệ điều hành bên dưới và các tệp sao lưu dữ phòng.
  • Nếu bạn đang chạy một hệ thống Ấn bản máy chủ doanh nghiệp DB2 (DB2 Enterprise Server Edition) trên hệ điều hành AIX và bạn chỉ quan tâm đến mã hóa mức tệp, thì bạn có thể sử dụng hệ thống tệp mã hóa (EFS) để mã hóa các tệp dữ liệu hệ điều hành và các tệp sao lưu của bạn.

Mã hóa mạng

Oracle cung cấp mã hóa mạng với Bảo mật nâng cao Oracle (Oracle Advanced Security) của nó. Oracle sử dụng các mã hóa chuẩn công nghiệp DES, 3DES và RC4. Để mã hóa dữ liệu đang chuyển tiếp giữa các máy khách và các cơ sở dữ liệu DB2, bạn có thể sử dụng kiểu xác thực DATA_ENCRYPT, hoặc, hỗ trợ hệ thống cơ sở dữ liệu DB2 của SSL (Secure Sockets Layer - Tầng cổng cắm an toàn).

Kiểm tra dấu vết

Oracle cho phép bạn kiểm tra dấu vết những người dùng và các đối tượng. Cũng có thể sử dụng Log miner (Trình khai phá bản ghi nhật ký) để kiểm tra nhanh và phân tích các truy vấn đáng ngờ. DB2 cung cấp một phương tiện kiểm tra tương tự. Có thể sử dụng tiện ích db2audit cho mục đích này.


Hỗ trợ XML

Phần này so sánh sự hỗ trợ của Oracle cho XML với sự hỗ trợ của DB2. Đi kèm với Bản phát hành 2 của Oracle 9i (Oracle 9i Release 2), tính năng XML DB của Oracle đã cung cấp một cách để quản lý lưu trữ, lấy ra và lược đồ XML bằng cách định nghĩa các bảng và các cột XMLTYPE được lưu trữ như CLOB hoặc được băm nhỏ (được chia tách) thành các mảnh nhỏ vào trong các bảng quan hệ. Oracle 10g đi kèm với một số cải tiến để quản lý các tài liệu XML; ví dụ, có thể phản ánh động các thay đổi trong lược đồ qua ánh xạ dữ liệu hiện có mà không cần phải nhập khẩu lại. Trong Oracle 11G, đã đưa vào một kiểu hỗ trợ XML thứ ba gọi là XML nhị phân. Vì vậy, hiện nay Oracle có những cách lưu trữ dữ liệu XML sau đây:

  • Lưu trữ không cấu trúc bằng cách sử dụng các CLOB (còn được gọi là lưu trữ không có lược đồ).
  • Lưu trữ có cấu trúc ánh xạ XML đến đối tượng quan hệ.
  • Lưu trữ XML nhị phân.

Công nghệ pureXML của DB2, lưu trữ nguyên gốc các tài liệu XML, có nghĩa là, lưu trữ bên trong theo định dạng cây. Nó cũng cho phép sử dụng SQL với các phần mở rộng XML, XQuery và XPath để truy cập dữ liệu quan hệ và XML. Việc lưu trữ nguyên gốc các tài liệu XML là một cách tiếp cận tốt hơn và việc nghiên cứu của IBM chỉ ra rằng có một hiệu năng tốt hơn cho việc tìm kiếm và lấy ra các tài liệu XML và làm giảm số dòng mã cho các chương trình cụ thể. Sự hỗ trợ cho kiểu dữ liệu XML của DB2 có sẵn trong Trung tâm điều khiển DB2, bộ xử lý dòng lệnh, IBM Data Studio và Các phần bổ sung cơ sở dữ liệu IBM cho Microsoft Visual Studio.

Để sử dụng tính năng pureXML trong cơ sở dữ liệu của bạn, hãy tạo cơ sở dữ liệu là UNICODE (ví dụ khi sử dụng bộ mã UTF-8). Nếu không tạo cơ sở dữ liệu UNICODE trước khi tạo một bảng sẽ dẫn đến một lỗi như thấy dưới đây:

SQL1239N  XML features can only be used in a Unicode database with a single database 
partition.  SQLSTATE=42997

DB2 lưu trữ dữ liệu quan hệ như trong các phiên bản có trước. Tuy nhiên, dữ liệu XML được lưu trữ theo định dạng phân cấp (như là một cây khi sử dụng Mô hình dữ liệu XQuery - XQuery Data Model, XDM). Có sự tích hợp chặt chẽ giữa cả hai dịch vụ XML và dịch vụ quan hệ. Để lưu trữ các tài liệu XML, người dùng cần tạo ra một bảng và chỉ định một cột sử dụng một kiểu dữ liệu mới là XML, như trong ví dụ dưới đây.

Liệt kê 2. Tạo một bảng DB2 có kiểu dữ liệu XML
CREATE TABLE T
  (ID INT PRIMARY KEY NOT NULL, COMMENT VARCHAR(1000) NOT NULL, DOCUMENT XML) 
  in ttspace compress yes@

Do các tài liệu XML được lưu trữ nguyên gốc theo định dạng phân cấp có phân tích cú pháp trong Mô hình dữ liệu XQuery (XDM), không cần chuyển dịch hoặc ánh xạ; chính định dạng được sử dụng để lưu trữ các tài liệu XML cũng là định dạng được sử dụng để xử lý nó. Điều này cho phép hiệu năng cao hơn.

Các tiện ích như sao lưu dự phòng, phục hồi và nhập khẩu cũng áp dụng cho các bảng có các cột XML giống như trong bất kỳ các bảng khác. Dữ liệu XML có thể được chèn vào cột XML hoặc bằng cách sử dụng câu lệnh INSERT (Chèn) hoặc bằng cách sử dụng tiện ích IMPORT (Nhập khẩu) của DB2. Trước khi nhập khẩu các tài liệu XML đã nhận được từ các bên thứ ba, một ý tưởng tốt là xác nhận hợp lệ các tài liệu này dựa vào một lược đồ XML được định nghĩa trước. Để đăng ký dựa vào một lược đồ XML, các quản trị viên cơ sở dữ liệu (DBA) cần phải ban hành lệnh REGISTER XML SCHEMA (Đăng ký lược đồ XML), và kết thúc bằng lệnh COMPLETE XML SCHEMA để hoàn tất quá trình đăng ký. DB2 cũng hỗ trợ tạo ra các chỉ mục trên một tập con của một tài liệu XML hoặc trên toàn bộ tài liệu. Cần chỉ rõ một biểu thức XPATH khi tạo ra một chỉ mục trỏ tới phần tử/thuộc tính cụ thể được lập chỉ mục.

Bây giờ với DB2 bạn có bốn cách để truy cập dữ liệu quan hệ và dữ liệu XML:

  • SQL thuần (không có XQuery).
  • SQL/XML, có nghĩa là, XQuery có nhúng trong SQL.
  • XQuery như là một ngôn ngữ độc lập (không có SQL).
  • XQuery có nhúng SQL.

Trong DB2 9.7 có bổ sung thêm các tính năng XML như hỗ trợ cho kiểu XML trong Các hàm do người dùng định nghĩa (User Defined Funcions). Những cải tiến quan trọng trong DB2 9.7 là tiện ích LOAD bây giờ có thể được sử dụng để nạp dữ liệu XML. Ngoài ra, trên các bảng có phân vùng, các chỉ mục cho các dữ liệu XML mà bạn tạo ra bằng Phiên bản V9.7 của DB2 hoặc các phiên bản trước đó không được phân vùng. Kể từ phiên bản DB2 9,7 Fix Pack 1, bạn có thể tạo một chỉ mục cho dữ liệu XML trên một bảng có phân vùng theo hoặc được phân vùng hoặc chưa được phân vùng.

Có một số bài viết khác trên developerWorks về các khả năng của IBM pureXML ví dụ như bài Truy vấn dữ liệu DB2 XML bằng XQuery, Truy vấn dữ liệu DB2 XML bằng SQL trong số các bài viết khác có nhiều thảo luận sâu hơn.


Phân vùng

Phân vùng Oracle cung cấp một số chiến lược phân vùng điều khiển cách cơ sở dữ liệu đặt dữ liệu vào các phân vùng. Các chiến lược cơ bản là phân vùng dải, phân vùng danh sách và phân vùng băm nhỏ.

Phân vùng bảng của DB2 (cũng gọi là phân vùng theo dải - Range partitioning), cũng tương tự như phân vùng của Oracle. Về cơ bản nó cho phép một bảng logic đơn được chia thành nhiều đối tượng lưu trữ vật lý trên một hoặc nhiều vùng bảng. Mỗi đối tượng sẽ tương ứng với một 'phân vùng' và sẽ cho phép mỗi vùng bảng chứa một dải dữ liệu có thể truy cập vào nó rất dễ dàng.

Trong DB2 có một số cách để phân vùng dữ liệu của bạn và bạn có thể áp dụng các phương pháp này đồng thời trên cùng một dữ liệu. Để tránh nhầm lẫn, dưới đây là giải thích ngắn về những cách khác nhau để đưa ra phân vùng này:

  • DATABASE PARTITIONING (Phân vùng cơ sở dữ liệu) - phân phối dữ liệu bằng cách băm nhỏ khóa qua nhiều nút logic của cơ sở dữ liệu (DPF).
  • RANGE/TABLE PARTITIONING (Phân vùng theo dải/bảng) (có sẵn cho DB2 9) – chia nhỏ dữ liệu theo dải khóa trên nhiều đối tượng vật lý trong một phân vùng cơ sở dữ liệu logic.
  • MULTI DIMENSIONAL CLUSTERING (MDC) (Tạo cụm nhiều chiều) - tổ chức dữ liệu trong bảng (hoặc một loạt bảng) theo nhiều giá trị khóa.

Trong phiên bản 9.7, bạn có thể có các chỉ mục tham chiếu đến các hàng dữ liệu trên tất cả các phân vùng trong một bảng có phân vùng dữ liệu (được gọi là các chỉ mục chưa phân vùng), hoặc bạn có thể có chỉ mục tự được phân vùng sao cho mỗi phân vùng dữ liệu có một phân vùng chỉ mục đi kèm. Bạn có thể có cả hai chỉ mục chưa phân vùng và đã phân vùng cho các bảng có phân vùng.

Ví dụ sau đây tạo ra một bảng khách hàng ở đó các hàng có l_shipdate >= '01/01/2006' và l_shipdate <= '03/31/2006' được lưu trữ trong vùng bảng ts1, các hàng có l_shipdate >= '04/01/2006' và l_shipdate <= '06/30/2006' nằm trong vùng bảng ts2, v.v. Có thể nhận được lời giải thích kỹ hơn từ bài viết của developerWorks, Phân vùng bảng trong DB2 9.

Liệt kê 3. Phân vùng theo dải một bảng
CREATE TABLE customer (l_shipdate, l_name CHAR(30)) 
IN ts1, ts2, ts3, ts4, ts5 
PARTITION BY RANGE(l_shipdate) 
   (STARTING FROM ('01/01/2006') 
    ENDING AT ('12/31/2006') 
    EVERY (3 MONTHS))

Có thể thấy một so sánh về thuật ngữ phân vùng của Oracle và DB2 trong Bảng 1 của bài Di chuyển từ Oracle hoặc Sybase tới DB2 trong vài tuần.


Nén

Oracle đã cung cấp ba tính năng nén; nén mức chỉ mục, nén bảng và nén hàng. Việc lập kế hoạch không đúng cho các tính năng này có thể dẫn đến hiệu quả xấu về hiệu năng.

Oracle đã đưa vào việc nén chỉ mục từ phiên bản 8i. Các chỉ mục có thể được nén là ảnh bitmap, các bảng cấu tạo theo "cây b" (btree) và theo chỉ mục. Sử dụng nén chỉ mục đơn giản; ví dụ, để tạo ra một chỉ mục có tính năng nén, hãy sử dụng:

Liệt kê 4. Tạo chỉ mục có nén
CREATE INDEX ord_customer_ix_demo 
ON orders (customer_id, sales_rep_id)
COMPRESS 1;

Với các chỉ mục đã không được tạo ra có nén ngay từ đầu, bạn có thể biến chúng thành có nén bằng cách thay đổi chúng. Liệt kê 5 cho thấy một ví dụ về cách bạn có thể thay đổi một chỉ mục sang có nén.

Liệt kê 5. Thay đổi chỉ mục có nén
alter index ord_customer_ix_demo rebuild compress

Hiện tại, Oracle không cung cấp bất kỳ trình tư vấn tự động hóa nào để xác định các chỉ mục nào nên được nén. Hầu hết các lợi ích thu được bằng cách nén chỉ mục đòi hỏi phải lập kế hoạch đúng bằng các quản trị viên cơ sở dữ liệu (DBA) dày dạn kinh nghiệm có các kiến thức sâu sắc về Oracle CBO.

Mặt khác, tính năng nén bảng đã được đưa vào trong Bản phát hành 2 của Oracle 9i. Có thể sử dụng tính năng này để nén toàn bộ các bảng, các phân vùng bảng và các khung nhìn cụ thể hóa. Có thể áp dụng tính năng nén này cho tất cả các phân vùng hoặc một số phân vùng. Mặc dù tính năng nén bảng làm việc được với một bảng chưa phân vùng, nhưng sử dụng nén bảng cho các bảng chưa phân vùng theo các khối lượng công việc OLTP có thể không nên làm vì khi chèn và cập nhật, hiệu năng có thể bị ảnh hưởng. Trong việc nén bảng Oracle, các giá trị trùng lặp được loại bỏ trong một khối cơ sở dữ liệu và thông tin được lưu trữ để tái tạo dữ liệu chưa được nén trong khối đó.

Ví dụ sau đây cho thấy cách tạo bảng phân vùng có nén.

Liệt kê 6. Tạo bảng có nén
CREATE TABLE costs_demo (
   prod_id NUMBER(6), time_id DATE,
   unit_cost NUMBER(10,2), unit_price NUMBER(10,2))
PARTITION BY RANGE (time_id)
   (PARTITION costs_old
       VALUES LESS THAN (TO_DATE('01-JAN-2003', 'DD-MON-YYYY')) COMPRESS,
    PARTITION costs_q1_2003
       VALUES LESS THAN (TO_DATE('01-APR-2003', 'DD-MON-YYYY')),
    PARTITION costs_q2_2003
       VALUES LESS THAN (TO_DATE('01-JUN-2003', 'DD-MON-YYYY')),
    PARTITION costs_recent VALUES LESS THAN (MAXVALUE));

Để chuyển một bảng thành một bảng nén, hãy sử dụng alter table <table name> move compress. Tuy nhiên, một bảng nén không cho phép thêm hoặc bớt các cột.

Trong DB2 9.7, tính năng nén hàng, còn gọi là nén sâu, nén các hàng dữ liệu bằng cách thay thế các mẫu của các giá trị lặp lại qua các hàng bằng các chuỗi ký hiệu ngắn hơn. Trong số các kỹ thuật nén dữ liệu khác nhau có sẵn trong DB2 9.7, tính năng nén hàng mang lại khả năng tiết kiệm vùng lưu trữ lớn nhất. Nén hàng đòi hỏi tạo ra một từ điển lưu trữ một ánh xạ giữa các mẫu lặp lại hoặc các mục nhập và các khóa số. Thuật toán nén đủ thông minh để không nén các hàng sẽ không mang lại bất kỳ sự tiết kiệm vùng đĩa đáng kể nào.

Nén hàng của DB2, không giống như tính năng nén khóa của Oracle, không cần chỉ rõ các khóa.

Cho phép nén ở mức bảng riêng thông qua các lệnh CREATE TABLE hay ALTER TABLE. Ví dụ:

Liệt kê 7. Tạo/thay đổi bảng bằng COMPRESSION YES
CREATE TABLE Sales COMPRESS YES 
ALTER TABLE Sales COMPRESS YES

Để đạt được hiệu quả tương tự bằng cách sử dụng Trung tâm điều khiển DB2, trong lúc định nghĩa cột (bước thứ hai trong trình thủ thuật tạo bảng), hãy đảm bảo rằng bạn đánh dấu chọn hộp kiểm, Store table data in a compressed format (Lưu trữ dữ liệu bảng theo định dạng nén) nằm ở dưới cùng của ô (như hiển thị trong biểu đồ dưới đây).

Hình 12. Trung tâm điều khiển DB2 - Tạo bảng có nén
Ảnh chụp màn hình: hiển thị tùy chọn lực chọn để lưu dữ liệu bảng dưới dạng nén

Chỉ xây dựng từ điển bảng khi một hoạt động REORG được thực hiện, sau hoạt động này dữ liệu trong bảng có thể được nén. Từ điển này được cập nhật với mọi hoạt động REORG tiếp theo. Dữ liệu nén được lưu giữ cả trên đĩa và bộ nhớ và DB2 cũng nén dữ liệu người dùng được lưu trữ trong các tệp ghi nhật ký, do đó làm giảm kích thước của tệp bản ghi nhật ký.

Lưu ý rằng mỗi phân vùng của một bảng có phân vùng có thể có các từ điển nén khác nhau và một phân vùng của một bảng trong DPF có thể có các từ điển nén khác nhau.

Ngoài nén hàng dữ liệu, DB2 9.7 còn cung cấp có các cơ chế nén khác bao gồm:

  • Nén giá trị mặc định và giá trị NULL (V8 GA): Nén với dữ liệu chiều dài 0, bằng không (null) trong các cột có chiều dài thay đổi được và giá trị mặc định của hệ thống.
  • Tạo cụm nhiều chiều (V8 GA): Triển khai thực hiện một dạng nén chỉ mục bằng cách sử dụng các chỉ mục khối, một mục nhập chỉ mục cho hàng ngàn bản ghi.
  • Nén sao lưu dự phòng cơ sở dữ liệu (V8 FP4): Nén làm cho các ảnh sao lưu dự phòng nhỏ hơn.
  • Phân tích cú pháp XML.

Các tính năng tự quản

Có một vài cải tiến điều chỉnh được cung cấp trong Oracle 11g. Oracle đã tự động hóa các vùng điều chỉnh sau đây:

  • Trình cố vấn định kích thước tệp bản ghi nhật ký làm lại (Redo Logfile Sizing Advisor) - Tính năng này đề xuất kích thước tối ưu của các tệp bản ghi nhật ký làm lại để tránh cho các thiết bị Vào/Ra (I/O) đĩa quá tải do việc tạo điểm kiểm tra thường xuyên.
  • Điều chỉnh điểm kiểm tra tự động (Automatic Checkpoint Tuning) - Bây giờ cơ sở dữ liệu Oracle có thể tự điều chỉnh việc tạo điểm kiểm tra để đạt được các lần phục hồi tốt có ảnh hướng ít đến khả năng thông qua bình thường. Bạn không còn phải thiết lập các tham số liên quan đến điểm kiểm tra nữa.
  • Điều chỉnh bộ nhớ chia sẻ tự động (Automatic Shared Memory Tuning) – Việc điều chỉnh bộ nhớ chia sẻ tự động sẽ tự động cấu hình các tham số liên quan đến bộ nhớ của Vùng bộ nhớ hệ thống (SGA) (bộ nhớ sẵn của bộ đệm, vùng chia sẻ) thông qua các thuật toán tự điều chỉnh. Nó đơn giản hóa việc cấu hình cơ sở dữ liệu, đảm bảo sử dụng hiệu quả nhất bộ nhớ có sẵn và cải thiện hiệu năng.
  • Giám sát hủy và khôi phục giao dịch (Transaction Rollback and Recovery Monitoring) - Tính năng này cho phép bạn đánh giá phải mất bao lâu để hủy giao dịch. Bạn cũng có thể giám sát tiến trình của các giao dịch đang được khôi phục và ước tính tốc độ khôi phục giao dịch trung bình.
  • Điều chỉnh SQL (SQL Tuning) – Trình cố vấn điều chỉnh SQL (SQL Tuning Advisor) tự động điều chỉnh các câu lệnh SQL chi phí cao.
  • Trình quản lý lưu trữ tự động (Automatic Storage manager - ASM) - Trình quản lý lưu trữ tự động đơn giản hóa việc quản lý hoặc các tệp có liên quan của Oracle.

Oracle cũng cung cấp một số trình cố vấn chẳng hạn như các trình cố vấn phân đoạn và làm lại. Trình cố vấn phân đoạn dựa vào mức độ phân mảnh vùng bên trong một đối tượng và vì thế, đưa ra lời khuyên về một đối tượng có là một ứng cử viên tốt cho hoạt động chia nhỏ trực tuyến mới không. Đồng thời, trình cố vấn này đưa ra các bản ghi về xu hướng phát triển lịch sử của các đoạn và đã tỏ ra có nhiều thông tin đặc biệt cho việc lập kế hoạch dung lượng.

Mặt khác, trình cố vấn làm lại (Undo Advisor) giúp các quản trị viên đưa ra các đánh giá đúng trong việc định kích thước vùng bảng làm lại theo cả hai tính năng hồi tưởng và không hồi tưởng. Nó khuyên các quản trị viên trong việc thiết lập UNDO_RETENTION một cách thích hợp để tránh vấn đề 'ảnh chụp màn hình quá cũ' đã có từ lâu.

DB2 9.7 có nhiều tính năng tự quản để hỗ trợ trong quản lý môi trường của nó, đó là tự cấu hình, tự chữa bệnh, tự tối ưu hóa và tự bảo vệ. Bằng cách cảm nhận và đáp ứng với các tình huống xảy ra, điện toán tự quản đẩy gánh nặng về quản lý một môi trường điện toán từ các quản trị viên cơ sở dữ liệu cho công nghệ.

Điều chỉnh bộ nhớ tự động

DB2 9.7 có một tính năng tự điều chỉnh bộ nhớ gọi là Trình quản lý bộ nhớ tự điều chỉnh (Self Tuning Memory Manager); trình quản lý này làm đơn giản hóa nhiệm vụ cấu hình bộ nhớ bằng cách tự động thiết lập các giá trị cho một số tham số cấu hình bộ nhớ. Khi được phép, các trình điều chỉnh tự động hoạt động như người điều vận sẽ tìm ra tài nguyên bộ nhớ có sẵn và phân phối chúng đến một số khách hàng tiêu dùng bộ nhớ cho cơ sở dữ liệu một cách động. Bộ nhớ tự điều chỉnh chỉ áp dụng cho các cơ sở dữ liệu chỉ có một phân vùng.

Cấu hình tự động

Với lệnh AUTOCONFIGURE bạn có thể tính toán và hiển thị các giá trị ban đầu cho các tham số kích thước vùng bộ đệm, các tham số cấu hình cơ sở dữ liệu và các tham số cấu hình quản lý cơ sở dữ liệu, với tùy chọn áp dụng cho các giá trị được đề xuất này.

Quản lý lưu trữ tự động

Lưu trữ tự động gia tăng tự động kích thước cơ sở dữ liệu của bạn trên các hệ thống đĩa và tệp và vì nó tự động gia tăng kích thước của cơ sở dữ liệu, nên nó loại bỏ việc yêu cầu các quản trị viên cơ sở dữ liệu (DBA) phải quản lý các thùng chứa lưu trữ. Khi bạn tạo ra các cơ sở dữ liệu DB2 9.7 tính năng quản lý lưu trữ tự động được bật lên theo mặc định.

Bảo trì tự động

DB2 9.7 có các khả năng bảo trì tự động được sử dụng để tự động thực hiện các hàm bảo trì như sau:

  • Các sao lưu dự phòng cơ sở dữ liệu tự động, cung cấp khả năng sao lưu dự phòng toàn bộ cơ sở dữ liệu được thực hiện khi cần.
  • Thu thập số liệu thống kê tự động. DB2 xác định số liệu thống kê nào cần thiết và cần được cập nhật rồi tự động thực hiện tiện ích RUNSTATS trong nền tảng.
  • Tổ chức lại chỉ mục và bảng tự động. DB2 xác định có tổ chức lại một bảng hoặc chỉ mục hay không bằng cách kiểm tra định kỳ các bảng và các chỉ mục đã có số liệu thống kê của chúng được cập nhật và tạo lịch trình các hoạt động này bất cứ khi nào chúng cần.

Các công cụ

Chúng ta sẽ xem xét các công cụ trong các lĩnh vực khác nhau như các công cụ tạo và bảo trì cơ sở dữ liệu, mạng, GUI quản trị, điều chỉnh hiệu năng, chuyển dịch dữ liệu và sao lưu phục hồi. Hình 13 cho thấy các công cụ GUI của DB2 9.7.

Hình 13. Các công cụ GUI của DB2 9.7
Các công cụ dòng lệnh, các công cụ quản trị chung, các công cụ thông tin, các công cụ giám sát và các công cụ thiết lập

Chúng ta hãy xem xét cách thực hiện các nhiệm vụ tương tự trong Oracle và DB2 9.7.

Tạo và bảo trì cơ sở dữ liệu

Oracle cung cấp Trình trợ lý cấu hình cơ sở dữ liệu dbca (Database Configuration Assistant) như là công cụ GUI để tạo ra các cơ sở dữ liệu. Để bảo trì cơ sở dữ liệu, Oracle cung cấp Trình quản lý doanh nghiệp Oracle (Oracle Enterprise Manager). Có thể tạo và bảo trì các cơ sở dữ liệu DB2 từ Trung tâm điều khiển DB2.

Mạng

Oracle cung cấp Trình trợ lý cấu hình mạng netca (Network Configuration Assistant) để cấu hình mạng. Ngoài ra, bạn có thể sử dụng Trình quản lý mạng Oracle (Oracle Network Manager) để cấu hình đặt tên dịch vụ, người nghe, các máy chủ hồ sơ và các máy chủ đặt tên Oracle. DB2 sử dụng lệnh CATALOG để ghi danh mục các nút và các cơ sở dữ liệu. Việc ghi danh mục cũng có thể được thực hiện bằng cách sử dụng hoặc dòng lệnh DB2 hoặc GUI của Trình trợ lý cấu hình của DB2 (DB2 Configuration Assistant GUI).

Quản trị

Trình quản lý doanh nghiệp Oracle cung cấp một loạt các khả năng quản trị cho các tác vụ hằng ngày của các quản trị viên. Trung tâm điều khiển DB2 cung cấp các hàm tương tự như Trình quản lý doanh nghiệp Oracle. Ngoài Trung tâm điều khiển DB2, bạn cũng có thể sử dụng bộ xử lý dòng lệnh DB2 để ban hành các câu lệnh DDL và DML. Tiện ích này cũng giống như tiện ích SQLPLUS của Oracle. Hình 14 cho thấy bộ xử lý dòng lệnh DB2.

Hình 14. Bộ xử lý dòng lệnh DB2
Ảnh chụp màn hình: Nhập lệnh db2 để chuyển sang chế độ CLP

Cũng có thể ban hành các lệnh từ Trung tâm điều khiển, như trong Hình 15.

Hình 15. GUI của Trung tâm điều khiển (phiên bản GUI của bộ xử lý dòng lệnh DB2)
Ảnh chụp màn hình: ô trên cùng hiển thị lệnh hiện tại, ô dưới đáy hiển thị các kết quả và lịch sử lệnh

Điều chỉnh hiệu năng

Trình quản lý doanh nghiệp Oracle đi kèm với gói quản lý thay đổi (Change Management), gói Điều chỉnh (Tuning) và gói Chẩn đoán (Diagnostic). DB2 cung cấp Trình giám sát hoạt động (Activity Monitor), Trình phân tích sự kiện (Event Analyzer), Trung tâm sức khỏe (Health Center), Trình quản lý giao dịch đang có vấn đề (Indoubt Transaction Manager) và Trình hiển thị trực quan bộ nhớ (Memory Visualizer) làm các công cụ giao diện đồ họa (GUI) cho các nhiệm vụ điều chỉnh hiệu năng.

Di chuyển dữ liệu

Oracle cung cấp SQL Loader (sqlldr) để nạp dữ liệu theo định dạng văn bản có dấu phân cách. Có thể sử dụng tiện ích nhập khẩu (imp) và xuất khẩu (exp) để thực hiện xuất và nhập khẩu logic. DB2 cũng cung cấp các tiện ích nhập khẩu, xuất khẩu và nạp dữ liệu tương tự . Để di chuyển dữ liệu giữa các nền tảng, DB2 cung cấp tiện ích db2move.

Sao lưu và khôi phục

Oracle cung cấp Trình quản lý khôi phục (Recovery Manager) như là một tùy chọn để sao lưu dự phòng nóng. Việc sao lưu dự phòng cơ sở dữ liệu DB2 có thể được thực hiện bằng cách sử dụng lệnh sao lưu dự phòng hoặc Trung tâm điều khiển DB2.

Trình quản lý doanh nghiệp của Oracle 11g đi kèm với các biểu đồ tổng quan về hiệu năng mới. Giao diện HTML của Trình quản lý doanh nghiệp Oracle nâng cao cung cấp một điểm truy cập trung tâm đến tất cả các số liệu thống kê liên quan đến hiệu năng của cơ sở dữ liệu và tạo điều kiện giám sát và chẩn đoán đầy đủ.

Ngoài các giao diện đi kèm với DB2 9.7 còn có một công cụ phát triển ứng dụng miễn phí, dựa trên khung công tác Eclipse gọi là IBM Data Studio (Xưởng dữ liệu IBM). IBM Data Studio là một trung tâm một cửa để tạo, chỉnh sửa, gỡ lỗi, triển khai và thử nghiệm các thủ tục đã lưu của DB2 và các hàm do người dùng định nghĩa. Bạn cũng có thể sử dụng IBM Data Studio để phát triển các ứng dụng SQLJ và tạo, chỉnh sửa và chạy các câu lệnh SQL và các truy vấn XML.

Bạn có thể tải về IBM Data Studio (Xưởng dữ liệu IBM) từ trang web developerWorks.

Để biết thêm chi tiết về IBM Data Studio hãy xem hướng dẫn này trong developerWorks. Để xem các ví dụ và các tính năng, hãy tham khảo bài Trang web Các tính năng và các lợi ích của IBM Data Studio trong developerWorks.


Tóm tắt

Trong bài này chúng tôi đã giới thiệu cho bạn DB2 9.7 cho Linux, UNIX và Windows bằng cách dùng kiến thức hiện tại của bạn về Oracle 11g làm đòn bẩy. Chúng tôi đã mô tả ngắn gọn về kiến trúc DB2, các quá trình nền, mô hình bộ nhớ, bảo mật, các công cụ và v.v. Có nhiều điểm tương đồng giữa Oracle và DB2 9 và chúng tôi đã chỉ ra một số điểm khác biệt để bạn có thể sử dụng kiến thức hiện tại của mình để trở nên thành công với DB2 9.7.

Bảng 3 tóm tắt các sự khác biệt và các điểm tương đồng giữa Oracle và DB2 mà chúng ta đã thảo luận.

Bảng 3. Tóm lược các khái niệm của Oracle so với DB2
OracleDB2Bình luận
Cá thể (instance)Cá thể (instance)Một cá thể DB2 có thể chứa một vài cơ sở dữ liệu.
Cơ sở dữ liệu Cơ sở dữ liệu
initSID.ora OR SPFILEDBM CFG và DB CFGDB2 sử dụng hai mức cấu hình: - Cấu hình trình quản lý cơ sở dữ liệu (DBM CFG) (ở mức cá thể) - Cấu hình cơ sở dữ liệu (DB CFG) (ở mức cơ sở dữ liệu) Giống như trong Oracle, rất nhiều tham số cấu hình này có thể được thay đổi động.
Các vùng bảngCác vùng bảngDB2 hỗ trợ các vùng bảng SMS và DMS. Các vùng bảng DMS tương tự như các vùng bảng của Oracle.
Các khối dữ liệuCác trangDB2 hỗ trợ các kích thước trang như sau: 4k, 8k, 16k, 32k. Một hàng phải vừa khít với bất kỳ trong các kích thước trang đó. Nó không thể kéo dài sang các trang khác giống như trong các trang của Oracle.
Các quy môCác quy mô
Các tệp dữ liệuCác thùng chứa vùng bảng DMSCác thùng chứa cho các vùng bảng DMS có thể là các thiết bị phần cứng hoặc các tệp.
Các tệp bản ghi nhật ký làm lạiCác tệp bản ghi nhật ký giao dịch
Các bộ đệm dữ liệuCác vùng bộ đệm.DB2 không có một tập các vùng bộ đệm định sẵn, nhưng bạn có thể tạo ra bao nhiêu vùng bộ đệm tùy ý. Một vùng bộ đệm của một kích thước trang cụ thể phải tồn tại trước khi tạo ra một vùng bảng có kích thước trang này.
SGA (Vùng bộ nhớ chia sẻ)Trình quản lý bộ nhớ và bộ nhớ chia sẻ cơ sở dữ liệu
Từ điện dữ liệuDanh mục
Bộ nhớ sẵn thư việnBộ nhớ sẵn gói
Vùng lớnVùng bộ nhớ đặc biệt heap của tiện ích
Bộ nhớ sẵn Từ điện dữ liệu Bộ nhớ sẵn danh mục
Vùng bảng SYSTEM Vùng bảng SYSCATSPACE

Tài nguyên

Học tập

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

  • Tải về phiên bản dùng thử miễn phí của DB2 for Linux, UNIX, và Windows.
  • Bây giờ bạn có thể sử dụng DB2 miễn phí. Tải về DB2 Express-C, một ấn bản miễn phí của DB2 Express Edition dành cho cộng đồng, cung cấp các tính năng dữ liệu cốt lõi tương tự như ấn bản DB2 Express và cung cấp một cơ sở vững chắc để xây dựng và triển khai ứng dụng.
  • Tải về các phiên bản đánh giá sản phẩm của IBM và nhận các công cụ phát triển ứng dụng thực hành và các sản phẩm trung gian từ DB2, Lotus®, Rational®, Tivoli®, và WebSphere®.

Thảo luận

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=696632
ArticleTitle=Tận dụng các kỹ năng Oracle 11g của bạn để tìm hiểu DB2 9.7 cho Linux, UNIX và Windows
publish-date=03242011