DB2 9.7: Chạy các ứng dụng Oracle trên DB2 9.7 cho Linux, UNIX và Windows pdf

33 411 0
DB2 9.7: Chạy các ứng dụng Oracle trên DB2 9.7 cho Linux, UNIX và Windows pdf

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

DB2 9.7: Chạy các ứng dụng Oracle trên DB2 9.7 cho Linux, UNIX và Windows DB2 9.7 cung cấp cho các ứng dụng đã phát triển trên Oracle một sự gắn kết chặt chẽ với sự hỗ trợ PL/SQL và nhiều hơn nữa Serge Rielau, Kiến trúc sư SQL, STSM, IBM Toronto Lab Tóm tắt: IBM® DB2® 9.7 cho Linux®, UNIX® và Windows® có sự hỗ trợ sẵn sàng cho các phương ngữ SQL của Oracle và PL/SQL. Điều này cho phép nhiều ứng dụng đã viết theo Oracle được thực hiện theo DB2. Trong bài viết này, hãy đón nhận một tổng quan mức cao về khả năng tương thích Oracle có nghĩa là gì trong DB2. Cho dù bạn muốn chuyển ứng dụng tùy chỉnh của bạn sang DB2 hoặc mở rộng sự hỗ trợ của nhà cung cấp DBMS của bạn sang DB2, thì bây giờ là lúc của bạn. Mục lục  Động lực  DB2 9.7 bổ sung thêm các tính năng tương thích của Oracle  Điều khiển tương tranh  Các kiểu dữ liệu mới  Tạo khuôn mẫu ẩn và độ phân giải kiểu  Thư viện hàm lập sẵn mở rộng trong DB2  Hỗ trợ phương ngữ Oracle SQL  DB2 hỗ trợ cho PL/SQL  DB2 cung cấp các gói lập sẵn phổ biến  Các phần mở rộng JDBC cho riêng Oracle  Sự hỗ trợ của kịch bản lệnh SQL*Plus khi sử dụng CLPPlus  Cho phép DB2 kéo và thả càng dễ dàng càng tốt  Đánh giá sự hỗ trợ cho DB2  Các hạn chế  Tóm tắt  Câu hỏi thường gặp Động lực Tháng 3 vừa rồi, tại một cuộc thuyết trình CeBIT mà tôi đã tổ chức về DB2 9.7, tôi đã đốt cháy một bộ loa máy tính 110V do tôi đã không thận trọng cắm nó vào lưới điện 230V của nước Đức mà không cho qua một biến áp. Trong cùng chuyến đi đó, tôi cũng đã phá hỏng bộ sạc điện cho bàn chải đánh răng chạy điện của tôi và máy cạo râu của tôi với các sự cố tương tự. Bỏ qua sự bất lực của tôi như là bài học từ các sai lầm sang một bên, việc này xảy ra như không có gì bất ngờ đúng như một trong các câu châm ngôn yêu thích của tôi (không rõ nguồn gốc) là "Vấn đề với các tiêu chuẩn là có bao nhiêu tiêu chuẩn". Trong thế giới của các hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS), chúng tôi may mắn có ít nhất ba tiêu chuẩn chính và vô số các sự thay đổi theo các tiêu chuẩn đó:  ANSI SQL và ANSI SQL/PSM  Oracle SQL và PL/SQL  Sybase và Microsoft TSQL Hình 1 mô tả bằng một sơ đồ Venn cách các phương ngữ SQL chồng lên nhau: Hình 1. Sự hỗ loạn Babylon của SQL Bất cứ khi nào bạn viết một ứng dụng, bạn phải tiến hành lựa chọn sử dụng nhà cung cấp RDBMS nào. Một khi bạn đã thực hiện sự lựa chọn đó, về cơ bản bạn được cam kết. Bất kỳ cố gắng nào để chuyển đổi các nhà cung cấp để tận dụng giá thấp hơn, công nghệ tốt hơn hoặc quan hệ đối tác tốt hơn bị cản trở do mã thừa kế cần được viết lại nhiều hơn, trước khi nó có thể được dùng với một RDBMS khác. Ngoài ra, bộ kỹ năng của bạn không thể chuyển từ một sản phẩm này sang một sản phẩm khác dễ dàng như bạn mong đợi. IBM DB2 9.7 cho Linux, UNIX và Windows (DB2) nhằm hạ thấp đáng kể những rào cản này cho các ứng dụng được viết cho Oracle khi cho phép các ứng dụng đó chuyển sang DB2. Điều này cung cấp cho các khách hàng và các nhà cung cấp khả năng lựa chọn một DBMS đựa theo sự xuất sắc của nó, chứ không theo lịch sử ứng dụng. DB2 9.7 bổ sung thêm các tính năng tương thích của Oracle Để cho phép một ứng dụng được viết cho một RDBMS chạy trên nền khác gần như không cần thay đổi, nhiều đoạn mã phải nằm đúng vị trí. Các cơ chế khóa, các kiểu dữ liệu, SQL, ngôn ngữ theo thủ tục khác nhau nằm trên máy chủ và thậm chí cả các giao diện khách hàng được chính ứng dụng sử dụng cần phải được liên kết không chỉ theo cú pháp, mà còn theo ngữ nghĩa. Tất cả các bước này đã được thực hiện trong DB2. Các thay đổi là ngoại lệ, không phải là quy luật (IBM có thể nhanh chóng đánh giá các thay đổi của ứng dụng cần thiết). Bảng 1 cung cấp một tổng quan ngắn gọn về các tính năng thường được sử dụng: Bảng 1. Các tính năng thường được sử dụng Oracle > DB2 Điều khiển tương tranh > Hỗ trợ có sẵn Phương ngữ SQL > Hỗ trợ có sẵn PL/SQL > Hỗ trợ có sẵn Các gói PL/SQL > Hỗ trợ có sẵn Các gói kèm theo > Hỗ trợ có sẵn Khách hàng JDBC với các phần mở rộng > Hỗ trợ có sẵn Kịch bản lệnh SQL*Plus > Hỗ trợ có sẵn Với DB2 9.7, bạn không cần chuyển một ứng dụng nữa. Bạn chỉ kích hoạt ứng dụng. Trong trường hợp của một ứng dụng đóng gói, nó có thể chia sẻ một nguồn cho cả hai DB2 và Oracle. Nói cách khác, việc cho phép một ứng dụng Oracle chuyển sang DB2 không trở nên phức tạp hơn việc kích hoạt một Chương trình-C được viết cho HP-UX để chạy trên AIX. Điều khiển tương tranh Trong quá khứ, một trong những sự khác biệt nổi bật nhất giữa Oracle và DB2 là cách tiếp cận để kiểm soát điều khiển tương tranh. Các cụm từ dễ nhớ là: "Những người đọc không cản trở những người viết và những người viết không cản trở những người đọc". Bảng 2. Hành vi tương tranh của Oracle Giao dịch đang chờ xử lý Hành vi Giao dịch mới Người đọc không ngăn chặn Ngư ời đọc Người đọc không ngăn chặn Ngư ời viết Người viết không ngăn chặn Ngư ời đọc Người viết ngăn chặn Ngư ời viết Không đi vào chi tiết về các mức cô lập, chỉ cần nói rằng đa số các ứng dụng có sử dụng Sự cô lập mức câu lệnh (Statement Level Isolation) mặc định của Oracle sẽ chỉ làm việc tốt khi sử dụng mặc định của DB2 về Sự ổn định của con trỏ (Cursor Stability-CS). Tuy nhiên, theo truyền thống, CS đã được triển khai sao cho những người viết ngăn chặn những người đọc và trong một số trường hợp, những người đọc có thể ngăn chặn những người viết. Lý do là ở chỗ, theo truyền thống, một giao dịch dưới sự cô lập CS sẽ "chờ kết quả" của các thay đổi của một giao dịch tương tranh đang chờ xử lý. Bảng 3. Hành vi tương tranh của DB2 truyền thống với CS Giao dịch đang chờ xử lý Hành vi Giao dịch mới Người đọc không ngăn chặn Ngư ời đọc Người đọc hiếm khi ngăn chặn Ngư ời viết Người viết ngăn chặn Ng ười đọc Người viết ngăn chặn Ngư ời viết Hóa ra là không có lý do ngữ nghĩa nào là tại sao một giao dịch đang chạy dưới sự cách ly CS lại chờ kết quả khi gặp phải một hàng đã thay đổi. Một hành vi thỏa đáng tương tự là đọc các phiên bản đã cam kết hiện tại của dòng đã thay đổi. Hành vi này đã được thực hiện trong DB2 9.7. Điều đã xảy ra là DB2 đơn giản lấy ra phiên bản hiện đã cam kết hiện tại của một hàng bị khóa từ nhật ký (log). Trong hầu hết các trường hợp chung, hàng đó vẫn còn nằm trong bộ đệm log do sự thay đổi này vẫn chưa được cam kết. Nhưng ngay cả khi hàng đã được viết ra và cũng đã bị ghi đè trong bộ đệm log DB2 sẽ biết chính xác tìm nó ở đâu, để cho một IO sẽ đưa phiên bản mong muốn vào nhóm bộ đệm (bufferpool). Hãy tưởng tượng (xem Hình 2) một người dùng đang cập nhật một tên trong một bảng nhân viên. Trước khi người dùng đó đã cam kết thay đổi, một người dùng khác quét bảng này. Theo truyền thống, người sử dụng thứ hai sẽ phải đợi cho người sử dụng đầu tiên cam kết hoặc khôi phục (rollback). Nhờ đọc dữ liệu đã cam kết hiện tại, hoạt động quét của người dùng thứ hai sẽ đơn giản lấy ra phiên bản của hàng từ bộ đệm log mà nó không chứa các thay đổi của người sử dụng đầu tiên. Hình 2. Những người viết không ngăn chặn những người đọc Điều quan trọng cần lưu ý rằng hành vi này:  Không đưa vào đối tượng mới nào như là một đoạn khôi phục.  Không có chi phí hiệu năng nào cho người viết do log cần phải được viết không theo hệ thống.  Không thể gây ra bất cứ tình hình nào như một "bản chụp quá cũ" vì trong trường hợp không chắc có xảy ra tệp log cần thiết đã được lưu trữ (trong khi một giao dịch vẫn còn mở!), DB2 chỉ đơn giản sẽ khôi phục lại và đợi khóa để đi tiếp. Ngoài những thay đổi này, các kỹ thuật tránh phải thêm khóa đã được đưa vào DB2 để loại bỏ một người đọc đang nắm giữ một khóa theo chế độ cô lập CS. Bảng 3. Hành vi tương tranh của DB2 mới với CS Giao dịch đang chờ xử lý Hành vi Giao dịch mới Người đọc không ngăn chặn Ngư ời đọc Người đọc không ngăn chặn Ngư ời viết Người viết không ngăn chặn Ngư ời đọc Người viết ngăn chặn Ngư ời viết Như bạn thấy, các hành vi tương tranh bây giờ giống hệt với các hành vi của Oracle. Thực tế, cơ sở dữ liệu DB2 vừa mới được tạo ra thể hiện hành vi này theo mặc định. Các kiểu dữ liệu mới Tâm điểm của mỗi cơ sở dữ liệu là dữ liệu của nó. Các kiểu không khớp hoặc các ngữ nghĩa của các kiểu này không khớp có thể tác động đến khả năng cho phép một ứng dụng chuyển sang ứng dụng RDBMS khác. Do đó để cho phép các ứng dụng Oracle chạy trên DB2, điều quan trọng là phải hỗ trợ các kiểu cơ sở không tiêu chuẩn, như là chuỗi, các ngày tháng và các số. Ngoài việc điều chỉnh các kiểu cơ sở này, có các kiểu khác, phức tạp hơn được sử dụng phổ biến trong PL/SQL của Oracle, nó đã được thêm vào trong DB2 9.7 Bảng 5. Các kiểu dữ liệu DB2 mới Kiểu dữ liệu Mô tả NUMBER Sự hỗ trợ NUMBER và NUMBER (p [, s]) đã được thêm vào dựa trên DECFLOAT (với bản tăng tốc phần cứng Power6) và s ố thập phân (DECIMAL). VARCHAR2 Hoạt động của kiểu VARCHAR2 bao gồm các chuỗi rỗng đang được hiểu như là NULL và kéo theo sự đối chiếu phân biệt khoảng trống. Oracle DATE Một cơ sở dữ liệu trong chế độ DATE bao gồm thành phần TIME ngoài ngày tháng của lịch. TIMESTAMP(n) Thang đo phân số của giây có thể được chọn bất kỳ giữa 0 (ngày + thời gian) lên đến 12 (pico giây). BOOLEAN Kiểu này có thể được sử dụng trong logic thủ tục, các biến v à các tham số cho các thường trình. VARRAY Sự hỗ trợ mảng (ARRAY) trong các thủ tục đã được mở rộng để [...]... mà các chuỗi và các số không thể được so sánh ở đó, trừ khi các chuỗi và các số này là khuôn mẫu rõ ràng đối với các chuỗi và các số khác Thật không may, khi một ứng dụng Oracle sử dụng cách định kiểu yếu trong SQL của nó, ứng dụng đó đã quên biên dịch theo DB2 từ trước Trong DB2 9.7, việc tạo khuôn mẫu ẩn (hay định kiểu yếu) đã được thêm vào Đó là, các chuỗi và các con số có thể được so sánh, gán và. .. biến và các hằng số Các con trỏ Khởi tạo gói  Các từ đồng nghĩa chung trên các gói DB2 cung cấp các gói lập sẵn phổ biến Một số các ứng dụng Oracle sử dụng các gói do RDBMS cung cấp Đặc biệt, các thư viện cung cấp việc tạo báo cáo, e-mail hoặc truyền thông chéo có thể rất phổ biến Để tạo điều kiện hỗ trợ các ứng dụng này cho DB2, DB2 cung cấp các gói được liệt kê trong Bảng 7: Bảng 7 DB2 cung cấp các. .. chuyển đổi sử dụng được ngay trung bình là 90 đến 99% Hình 9 Tỷ lệ trung bình 98% cho các câu lệnh được hỗ trợ Các hạn chế PL/SQL, thư viện gói kèm theo và CLPPlus hiện nay không có sẵn cho DB2Express, DB2 Express-C và DB2 Personal Editions (các ấn bản dành cho DB2 cá nhân) Tóm tắt Nhờ trợ giúp của SQL nhiều phương ngữ vốn có, DB2 9.7 cho phép hỗ trợ dễ dàng các ứng dụng Oracle chuyển sang DB2 Các nhà cung... sang DB2 Chỉ cần các điều chỉnh tối thiểu trên cơ sở ngoại lệ hoặc di chuyển một ứng dụng sang DB2, hoặc sửa đổi một ứng dụng sao cho cùng một nguồn có thể hoạt động dựa vào cả DB2 và cả Oracle Các bước có thể đơn giản như: 1 Thiết lập các biến đăng ký cần thiết: o db2set DB2_ COMPATIBILITY_VECTOR=ORA o db2set DB2_ DEFERRED_PREPARE_SEMANTICS=YES 2 Khởi động lại trình quản lý cơ sở dữ liệu: o db2stop o db2start... trong các hàm được hỗ trợ giữa hai sản phẩm hàm ý một sự thành công của hộp bên ngoài được cải thiện rất nhiều cho phép một ứng dụng Oracle chuyển sang DB2 Hỗ trợ phương ngữ Oracle SQL Bài viết này, cho đến nay, đã trình bày sự tương tranh, các kiểu dữ liệu, định kiểu và các hàm Tuy nhiên, các khác biệt giữa Oracle và DB2 vẫn còn tiếp Các kết cấu thực sự của các phương ngữ SQL, các từ khóa và các ngữ... các đối tượng sang DB2 trên một cơ sở ngoại lệ Hình 7 Kéo và thả các lược đồ Oracle vào DB2 khi sử dụng IBM Data Movement Tool Đánh giá sự hỗ trợ cho DB2 Để cho phép ứng dụng của bạn chuyển sang DB2 9.7 dễ dàng vậy sao? Câu trả lời đương nhiên là, còn tùy IBM có một công cụ bên trong có tên là MEET DB2, có thể phân tích tất cả các đối tượng trong cơ sở dữ liệu Oracle của bạn và cho điểm nó Nó tạo một...hỗ trợ các phương thức kiểu dáng VARRAY và cú pháp INDEX BY Ngoài các mảng thông thường, DB2 cũng hỗ trợ các mảng kết hợp Kiểu hỗn hợp này có thể được sử dụng trong các biến và các ROW TYPE tham số và như là một phần tử cho các mảng và các mảng kết hợp Ref Cursor type Các con trỏ có thể được gán cho các biến hoặc chuyển qua xung quanh khi sử dụng các tham số Tạo khuôn mẫu ẩn và độ phân giải... else)  các vòng lặp while  := phép gán  các biến và hằng cục bộ  #PRAGMA EXCEPTION và xử lý các trường hợp ngoại lệ  Các dạng khác nhau cho các vòng lặp (phạm vi, con trỏ và truy vấn)  %TYPE and %ROWTYPE giữ chặt các biến và các tham số cho các đối tượng khác  Các giao dịch #PRAGMA AUTONOMOUS, cho phép các thủ tục nào thực thi trong một giao dịch riêng Hỗ trợ đối tượng PL/SQL Có thể sử dụng PL/SQL... khuyến cáo cho hầu hết các ứng dụng không quan trọng) Hình 6 Kéo và thả các lược đồ Oracle vào DB2 khi sử dụng IBM Data Movement Tool 5 Di chuyển các lược đồ dự kiến từ Oracle sang DB2 khi sử dụng triển khai tương tác (xem Hình 7) Trong chế độ triển khai tương tác, bạn thấy một cây-dẫn hướng (nav-tree) hiển thị tất cả các đối tượng được trích ra từ cơ sở dữ liệu Oracle Chọn tất cả các đối tượng và thực... thực hiện các bộ kích hoạt Độ phân giải tên tự nhiên DB2 9.7 không yêu cầu các khung nhìn nội tuyến Ngoài ra, các tên cột có thể dễ dàng thừa kế từ các toán tử set (tập hợp) như UNION Điều này hoàn thành tổng quan về các thay đổi được thực hiện với DB2 để cho các ứng dụng Oracle gửi đi SQL dựa vào cơ sở dữ liệu có thể chạy hầu như không thay đổi Tuy nhiên, có các phần chính của nhiều ứng dụng đang . DB2 9. 7: Chạy các ứng dụng Oracle trên DB2 9. 7 cho Linux, UNIX và Windows DB2 9. 7 cung cấp cho các ứng dụng đã phát triển trên Oracle một sự gắn kết chặt chẽ với sự hỗ trợ PL/SQL và nhiều. IBM DB2 9. 7 cho Linux, UNIX và Windows (DB2) nhằm hạ thấp đáng kể những rào cản này cho các ứng dụng được viết cho Oracle khi cho phép các ứng dụng đó chuyển sang DB2. Điều này cung cấp cho các. IBM® DB2 9. 7 cho Linux®, UNIX và Windows có sự hỗ trợ sẵn sàng cho các phương ngữ SQL của Oracle và PL/SQL. Điều này cho phép nhiều ứng dụng đã viết theo Oracle được thực hiện theo DB2.

Ngày đăng: 07/08/2014, 09:22

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan