Hệ quản trị CSDL ORACLE là hệ thống quản trị dữ liệu lớn, hỗ trợ rất mạnh cho khả năng quản lý kho dữ liệu, cơ sở dữ liệu phân tán trên các hệ thống thông tin lớn, phân cấp. Sức mạnh vượt trội của ORACLE 9i là khả năng quản lý kho dữ liệu, truy xuất dữ liệu từ xa, phân tán, hỗ trợ cho hệ thống phân tích trực tuyến (OLAP).
Quản lý tên cơ sở dữ liệu toàn cục trong cơ sở dữ liệu phân tán
Trong hệ thống cơ sở dữ liệu phân tán, mỗi cơ sở dữ liệu có một tên toàn cục (Global Database Name) duy nhất dùng để xác định cơ sở dữ liệu. Tên cơ sở dữ liệu toàn cục gồm hai thành phần là tên cơ sở dữ liệu (Database Name) và tên miền (Domain Name). Tên cơ sở dữ liệu từ một đến tám ký tự. Tên miền phải theo chuẩn qui ước của internet, các mức trong tên miền phải được cách nhau bởi dấu chấm. Sau đây là ví dụ về đặt tên cho CSDL toàn cục trong ORACLE:
DB_NAME
|
DB_DOMAIN
|
Global Database Name
|
DAOTAO
|
DHKT.EDU.VN
|
DAOTAO.DHKT.EDU.VN
|
SINHVIEN
|
DHKT.EDU.VN
|
SINHVIEN.DHKT.EDU.VN
|
THUVIEN
|
DHKT.EDU.VN
|
THUVIEN.DHKT.EDU.VN
|
Để xem tên cơ sở dữ liệu toàn cục ta sử dụng câu lệnh :
SELECT * FROM GLOBAL_NAME
Để thay đổi tên cơ sở dữ liệu toàn cục ta dùng cú pháp:
ALTER DATABASE RENAME GLOBAL_NAME TO databasename.domain
Ví dụ để đổi tên cơ sở dữ liệu toàn cục TKTH.DHKT.EDU.VN thành KHOA.DHKT.EDU.VN ta làm như sau:
ALTER DATABASE RENAME GLOBAL_NAME TO KHOA.DHKT.EDU.VN
Tạo các liên kết cơ sở dữ liệu trong hệ thống CSDL phân tán
Để hỗ trợ cho các ứng dụng truy xuất dữ liệu trong hệ thống CSDL phân tán ta cần tạo các liên kết dữ liệu (Database links) giữa các nguồn dữ liệu ở xa (Remote Database). Một Database link là một con trỏ trên CSDL cục bộ (local database) cho phép bạn truy cập các đối tượng dữ liệu trên một CSDL ở xa (remote database). ORACLE cho phép tạo các Database Links bằng câu lệnh SQL và bằng giao diện đồ họa.
Tạo các Database Links sử dụng câu lệnh SQL:
Database Link Private
CREATE DATABASE LINK "DAOTAO.DHKT.EDU.VN" CONNECT TO "CHUC" IDENTIFIED BY "chuc" USING 'DMDAOTAO'
Database Link Public
CREATE PUBLIC DATABASE LINK "DAOTAO.DHKT.EDU.VN"
CONNECT TO "CHUC"
IDENTIFIED BY "chuc"
USING 'DMDAOTAO'
Tạo Database Link sử dụng giao diện đồ họa trong Oracle
Sau khi thiết lập Database Link thành công, ta có thể truy xuất dữ liệu từ xa thông qua tên của Database link
Ví dụ, từ CSDL cục bộ DATAWH ta muốn xem nội dung của bản môn học trong CSDL từ xa đào tạo qua Database Link DAOTAO.DHKT.EDU.VN, ta sử dụng câu lệnh SQl như sau:
SELECT * FROM MONHOC@DAOTAO.DHKT.EDU.VN
Đóng và xóa Database Links
Để đảm bảo an toàn khi truy cập các CSDL từ xa qua hệ phân tán, nếu không cần thiết thì nên đóng hoặc xóa các Database Links.
Đóng Database Link sử dụng câu lệnh SQL như sau:
ALTER SESSION CLOSE DATABASE LINK Linkname;
Để đóng Database Links DAOTAO.DHKT.EDU.VN
ALTER SESSION CLOSE DATABASE LINK DAOTAO.DHKT.EDU.VN
Để xóa các Database Links ta sử dụng câu lệnh SQL như sau:
DROP [PUBLIC] DATABASE LINK dblink;
Ví dụ để xóa Database Links DAOTAO.DHKT.EDU.VN
DROP DATABASE LINK DAOTAO.DHKT.EDU.VN
Giải quyết vấn đề trong suốt vị trí trong ORACLE
Trong hệ thống CSDL phân tán, yêu cầu về trong suốt vị trí đối với người sử dụng dữ liệu là rất quan trọng, người dùng không cần biết dữ liệu được lưu trữ vật lý ở đâu trong hệ thống mạng. Nếu bạn đã tạo các Database Links cần thiết, người sử dụng có thể truy cập vào các đối tượng dữ liệu ở xa như thể trên máy cục bộ, vấn đề này gọi là trong suốt vị trí, ẩn đi các chức năng phân tán từ phía người sử dụng.
ORACLE triển khai ba cách để tạo tính trong suốt vị trí như sau:
- Sử dụng khung nhìn (View) để tạo trong suốt vị trí
- Sử dụng bí danh (Synonyms) để tạo trong suốt vị trí
- Sử dụng thủ tục (Procedures) để tạo trong suốt vị trí
Sử dụng khung nhìn (View) để tạo trong suốt vị trí
Những View cục bộ có thể cung cấp mức trong suốt vị trí đối với CSDL cục bộ hoặc CSDL từ xa trong CSDL phân tán.
Giả sử có bảng KHOA trong CSDL cục bộ DMDAOTAO và bảng GIANGVIEN trong CSDL từ xa qua DB_link có tên TKTH.DHKT.EDU.VN, ta có thể tạo một khung nhìn nối thông tin từ các CSDL cục bộ và từ xa như sau:
CREATE VIEW V1 ASSELECT b.MAGV, b.HODEM, b.TEN, a.TENKHOAFROM CHUC.KHOA a, CHUC.GIANGVIEN@TKTH.DHKT.EDU.VN bWHERE a.MAKHOA=b.MAKHOA
Khi người dùng sử dụng view V1 để xem dữ liệu bằng lệnh SELECT * FROM V1, người sử dụng không cần biết dữ liệu được lưu trữ vật lý ở đâu và được lấy từ bao nhiêu bảng.
Sử dụng bí danh (Synonym) để tạo trong suốt vị trí
Bí danh rất hữu ích trong cả hai môi trường CSDL phân tán và tập trung, sử dụng bí danh là bạn đặt tên lại cho đối tượng CSDL để sử dụng, với CSDL phân tán bí danh làm cho người sử dụng không quan tâm đến dữ liệu đang ở đâu trong hệ phân tán mà chỉ biết tên bí danh của đối tượng CSDL. Một điều cần chú ý khi dùng bí danh là nếu đối tượng CSDL bị di chuyển hoặc đổi tên thì ta phải thay đổi bí danh cho phù hợp.
Ta có thể tạo bí danh trên các đối tượng dữ liệu sau:
Tables, Views, Materialized Views, Procedures, Functions, Packages
Cú pháp để tạo bí danh:
CREATE [PUBLIC] synonym_name
FOR [schema.] object_name[@Database_link_name]
Trong đó:
public: Từ khóa xác định rằng bí danh có thể sử dụng cho mọi người dùng, nếu không có từ khóa PUBLIC thì câu lệnh trên sẻ tạo ra bí danh riêng (Private) chỉ được sử dụng cho người ta ra bí danh
synonym_name: tên bí danh dùng để tham chiếu đến đối tượng CSDL
schema: Lược đồ nơi chứa đối tượng CSDL
object_name: tên đối tượng CSDL được tham chiếu ví dụ như table, view, procedure,...
Database_link_name: Xác định CSDL truy xuất từ xa.
Ví dụ, tạo bí danh GV_TKTH để xem thông tin về giảng viên của khoa thống kê tin học chứa trong CSDL từ xa của khoa thống kê tin học qua Database Link TKTH.DHKT.EDU.VN như sau:
CREATE PUBLIC SYNONYM GV_TKTHFOR CHUC.GIANGVIEN@TKTH.DHKT.EDU.VN
Ta có thể xem tất cả các giáo viên của khoa TKTH bằng cách sử dụng bó danh như sau
SELECT * FROM GV_TKTH Sử dụng thủ tục để tạo trong suốt vị trí
Sử dụng PL/SQL để tạo các thủ tục cục bộ tham chiếu đến CSDL từ xa
Giả sử ta viết thủ tục APPEND trong CSDL cục bộ DMDAOTAO để bổ sung các môn học của khoa thống kê vào bảng MONHOC của CSDL từ xa của khoa thống kê tin học qua Database Link TKTH.DHKT.EDU.VN như sau:
Ta có thể sử dụng bí danh (Synonym) kết hợp với thủ tục để tạo mức trong suốt tốt hơn.
Ví dụ tạo bí danh MONH để truy xuất đến bảng MONHOC trong CSDL từ xa TKTH.DHKT.EDU.VN và trong thủ tục DEL_MH cục bộ trên CSDL DMDAOTAO sử dụng bí danh MH để xóa các môn học với mã môn học được xác định
Sử dụng thủ tục cục bộ gọi thủ tục từ xa
Giả sử đăng nhập vào CSDL cục bộ để tạo thủ tục cục bộ DMDAOTAO:
CONNECT chuc/chuc@DAOTAO
Tạo thủ tục cục bộ DEL_RM:
CREATE PROCEDURE DEL_RM(S CHAR) ASBEGINCHUC.DEL_MONHOC@TKTH.DHKT.EDU.VN(S);END;
Sau đó đăng nhập vào CSDL ở xa TKTH.DHKT.EDU.VN và tạo thủ tục DEL_MONHOC
CONNECT chuc/chuc@TKTH.DHKT.EDU.VN
CREATE PROCEDURE DEL_MONHOC(S CHAR) ASBEGINDELETE FROM MONHOCWHERE MAMH=S;END;
Khi người dùng hoặc ứng dụng đăng nhập vào CSDL DMDAOTAO cục bộ gọi thủ tục DEL_RM(2150112) thủ tục này gọi thủ tục từ xa DEL_MONHOC trên CSDL từ xa TKTH.DHKT.EDU.VN để xóa môn học có mã là 2150112
Các câu lệnh DML chuẩn có hỗ trợ truy xuất CSDL từ xa tạo tính trong suốt cho người dùng
SELECT, INSERT, UPDATE, DELETE, LOCKTABLE, SELECT.... FOR UPDATE (Có thể không hỗ trợ cho hệ thống không thuần nhất)
Ví dụ: Từ CSDL DMDAOTAO ta tạo liên kết có tên TKTH.DHKT.EDU.VN để truy xuất đến CSDL từ xa ở khoa thống kê tin học (TKTH). Sau đó ta sử dụng lệnh Insert để bổ sung các môn học của khoa thống kê quản lý (có mã môn học bắt đầu bằng 215) từ kho dữ liệu DMDAOTAO xuống kho CSDL từ xa của khoa TKTH
Đăng nhập vào CSDL DMDAOTAO và thực hiện lệnh Insert như sau:
INSERT INTO MONHOC@TKTH.DHKT.EDU.VNSELECT * FROM MONHOC
WHERE MAMH LIKE '215%'
Chú ý: Oracle không cho phép thực hiện các câu lệnh DDL như CREATE, ALTER, DROP từ xa Truy vấn từ xa và truy vấn phân tán
Truy vấn từ xa (Remote Query): Truy vấn thông tin từ một hoặc nhiều bảng ở xa nhưng tất cả chúng đều lưu trữ trong 1 node. Ví dụ xem nội dung bảng MONHOC của Schame CHUC trong CSDL từ xa TKTH.DHKT.EDU.VN
SELECT * FROM CHUC.MONHOC@TKTH.DHKT.EDU.VN
Cập nhật từ xa (Remote Update): Sửa dữ liệu từ 1 hay nhiều bảng trong cùng một node.
Ví dụ: Từ CSDL cục bộ DMDAOTAO, muốn thay đổi tên của môn học có mã số 2150182 thành Database trên CSDL từ xa TKTH.DHKT.EDU.VN ta thực hiện câu lệnh sau
UPDATE MONHOC@TKTH.DHKT.EDU.VN
SET TENMH='Database'
WHERE MAMH='2150182'
Truy vấn phân tán (Distributed Query):Truy vấn lấy thông tin từ hai hay nhiều node khác nhau trong hệ phân tán. Ví dụ sau đây mô tả từ CSDL cục bộ DATAWH truy vấn tới bảng Giảng viên trong CSDL từ xa có Database Link là DAOTAO.DHKT.EDU.VN và bảng Khoa trong CSDL từ xa có Database Link là TKTH.DHKT.EDU.VN
Cập nhật phân tán (Distributed Update)
Cập nhật dữ liệu trên 2 hay nhiều nút, có thể sử dụng PL/SQL, các thủ tục hoặc trigger bao gồm hai hay nhiều cập nhật từ xa trên các nút khác nhau.
Thủ tục UPDATE_DIST dưới đây từ CSDL cục bộ DATAWH thực hiện sửa đổi tên của môn học có mã 215018 trên 2 CSDL từ xa là DAOTAO.DHKT.EDU.VN VÀ TKTH.DHKT.EDU.VN Thành "Database".
Tạo bảng từ các truy vấn phân tán từ xa
Từ CSDL DATAWH tạo bảng TONGHOP sử dụng truy vấn phân tán truy xuất dữ liệu trong các CSDL từ xa là GIANGVIEN@DAOTAO.DHKT.EDU.VN và KHOA@TKTH.DHKT.EDU.VN