Csdl Db2 - Slide

Post on 09-Aug-2015

66 views 6 download

Transcript of Csdl Db2 - Slide

HỆ QUẢN TRỊ CƠ SỞDỮ LIỆU

DB2 EXPRESS – C 9.5

Mai Thanh Trúc (Ma.)

NỘI DUNG

n Phần 1: Tổng quan và cài đặtn Giới thiệu DB2 Express – Cn Tính năng và các sản phẩmn Cài đặt DB2n Môi trường của DB2n Các công cụ của DB2

NỘI DUNG

n Phần 2: Quản trị cơ sở dữ liệun Kiến trúc của DB2n Kết nối máy khách DB2n Làm việc với các đối tượng dữ liệun Di chuyển dữ liệun Bảo mật cơ sở dữ liệun Sao lưu và phục hồin Bảo trìn Truy cập đồng thời và khoá

NỘI DUNG

n Phần 3: Phát triển ứng dụngn Các thủ tục SQL PLn Hàm nội tuyến (Inline SQL PL), Hàm người

dùng tự định nghĩa (UDF), xử lý sự kiện bẫy (Triggers)

n SQL/XML và Xqueryn Phát triển với Ngôn ngữ lập trình

Tham khảo

n Tài nguyên DB2 Express – C tại www.ibm.com/db2/express/

n Tài liệu dành cho người học tập và nghiên cứu tại www.channelDB2.com/oncampus/www.ibm.com/db2/express/students.htmlhttp://www.ibm.com/developerworks/db2/

n Cộng đồng người phát triển ứng dụng Việt Nam tại http://www.ibm.com/developerworks/vn/

Tổng quan và Cài đặt DB2

n DB2 Express-C là gì?n Các tính năng liên quan và các sản phẩmn Cài đặt DB2 Express – Cn Môi trường của DB2n Các công cụ DB2

Tổng quan và Cài đặt DB2

n DB2 Express-C là gì?n Các tính năng liên quan và các sản phẩmn Cài đặt DB2 Express – Cn Môi trường của DB2n Các công cụ DB2

DB2 Express – C là gì?

n Một sản phẩm dòng DB2 của IBMn Ra đời 6/1983, chạy trên máy chủ

(Mainframe) với z/OSn Khoảng giữa những năm 1990, bắt đầu có

DB2 chạy trên các máy Desktopn Hiện nay có DB2 chạy trên z/OS (mainframe),

trên iSeries (AS400 – OS400), trên LUW (Linux, Unix, Windows)

n DB2 9.5 ra đời 1/2006n Phiên bản hiện nay là DB2 9.7

DB2 Express – C là gì?

n DB2 Express – C là ấn bản miễn phí, không giới hạn, dễ sử dụng (C = Community)n Nhà phát triển phần mềm CSDL khách -

chủn ISVs (Independent software vendor) – nhà

cung cấp phần mềm độc lập, cho thuê phần cứng, cung cấp giải pháp

n Các công ty vừa và nhỏn Nghiên cứu, học tập

DB2 Express – C là gì?

n Đầy đủ tính năng cơ trên trên nền hệ điều hành Linux, Unix, Windows

n Chạy trên nền tảng 32 bit hoặc 64 bitn Tối ưu cho bộ xử lý 2 lõi và 2GB RAMn Bao gồm cả pureXML

DB2 Express – C là gì?

n Đặc điểm khi sử dụng DB2 Express – Cn Tự do phát triển: miễn phí khi phát triển các

sản phẩm phần mềm trên hệ quản trị CSDL DB2 Express – C

n Tự do triển khai: miễn phí khi ứng dụng DB2 Express – C vào hoạt động sản xuất kinh doanh

n Tự do phân phối: miễn phí cả khi đóng gói vào một sản phẩm phần mềm khi phân phối

n Không giới hạn: không giới hạn về kích thước CSDL cũng như số lượng kết nối và người sửdụng

DB2 Express – C là gì?

n Máy chủ DB2

DB2 Express – C là gì?

n Máy khách DB2

DB2 Express – C là gì?

n Ngôn ngữ phát triểnRuby trên nền Rails, C/C++(ODBC và SQL nhúng), JDBC và SQLJ, COBOL, Borland, Python, PHP, Perl, Ngôn ngữ .NET, OLE – DB, ADO, Dịch vụ Web (Web Service), SQL, Microsoft Office: Excel, Access, Word

DB2 Express – C là gì?

n Phiên bản (version) và ấn bản (edition) DB2n Phiên bản là bản phát hành được bổ sung

thêm một số tính năng mới và sửa lỗi (8.1 và 8.2 là 2 lần phát hành của DB2 8)

n Ấn bản là những gói sản phẩm với chức năng khác nhau (phiên bản DB2 9.5 cócác ấn bản DB2 Express – C, DB2 Express, DB2 Workgroup, DB2 Enterprise)

DB2 Express – C là gì?

n Chuyển sang ấn bản khácn Nâng cấp lên ấn bản khác trên cùng một

máy tính, chỉ cần cài đè ấn bản mới lên trên DB2 Express – C (sao lưu dữ liệu trước khi thực hiện)

n Nâng cấp lên một máy mới, sử dụng chung hệ điều hành với máy cũ chỉ cần cài ấn bản trên máy tính mới, sao lưu dữ liệu trên máy tính cũ, và khôi phục lại nó trên máy mới

DB2 Express – C là gì?

n Hỗ trợ kỹ thuậtn Bản quyền 12 thángn Hỗ trợ kỹ thuật từ cộng đồng

DB2 Express – C là gì?

n Một số phần mềm miễn phí liên quann Bộ công cụ phát triển IBM Data Studion Máy chủ nhúng DB2 9 Embedded Application

Servern Mở rộng tìm kiếm DB2 9.5 Net Search

Extendern Hỗ trợ phát triển ứng dụng Web (Ruby on

Rails, Web 2.0 Starter Toolkit for IBM DB2)

Tổng quan và Cài đặt DB2

n DB2 Express-C là gì?n Các tính năng liên quan và các sản phẩmn Cài đặt DB2 Express – Cn Môi trường của DB2n Các công cụ DB2

Các tính năng của sản phẩm

n Chức năng DB2 Express – C (miễn phí)n Nhân của DB2n Trung tâm điều khiển (Control Center), Data

Studio, và các công cụ quản trịn pureXMLn 2GB bộ nhớ và 2 bộ vi xử lýn Linux, Windows và Solaris (x86)

Các tính năng của sản phẩm

n Chức năng DB2 (có phí)

Tổng quan và Cài đặt DB2

n DB2 Express-C là gì?n Các tính năng liên quan và các sản phẩmn Cài đặt DB2 Express – Cn Môi trường của DB2n Các công cụ DB2

Cài đặt DB2 Express – C

n Điều kiện trước khi cài đặtn Hệ điều hành Linux, Solaris (x86), Windows

(2000, 2003, XP, Vista)n Vi xử lý 32bit, 64bit, PowerPC (Linux)n Sử dụng tối đa 2 CPU, 2GB RAM (4 CPU,

4GB RAM cho phí bản quyền 12 tháng)n Quyền cài đặt trên hệ điều hành (Root trên

Linux, nhóm quản trị hoặc có quyền cài đặt trên Windows)

Cài đặt DB2 Express – C

n Hướng dẫn cài đặt từng bướcn Windows: chạy SETUP.EXE trong EXPn Linux: chạy db2setup trong EXP

Cài đặt DB2 Express – C

n Hướng dẫn cài đặt từng bước

Cài đặt DB2 Express – C

n Hướng dẫn cài đặt từng bước

Cài đặt DB2 Express – C

n Hướng dẫn cài đặt từng bước

Cài đặt DB2 Express – C

n Hướng dẫn cài đặt từng bước

Cài đặt DB2 Express – C

n Hướng dẫn cài đặt từng bước

Cài đặt DB2 Express – C

n Ví dụ: Cài đặt một máy chủ DB2 trên hệ điều hành Windows và tạo CSDL mẫu

Tổng quan và Cài đặt DB2

n DB2 Express-C là gì?n Các tính năng liên quan và các sản phẩmn Cài đặt DB2 Express – Cn Môi trường của DB2n Các công cụ DB2

Môi trường của DB2 Express – C

n Giới thiệu

Môi trường của DB2 Express – C

n Các thể hiện (Instances)

Môi trường của DB2 Express – C

n Các thể hiện (Instances)

Môi trường của DB2 Express – C

n Các thể hiện (Instances)

Môi trường của DB2 Express – C

n Các thể hiện (Instances)n Tạo một Instance

n db2icrt <tên thể hiện>n Chuyển đổi giữa các Instance

n set db2instance = <tên thể hiện>n Linux: chuyển người sử dụng bằng su

n Hiển thị danh sách các instance trên Servern db2ilist

n Hiển thị instance hiện tạin db2 get instance

Môi trường của DB2 Express – C

n Các thể hiện (Instances)

Liệt kê các thể hiện đang hoạt động

db2 get instance

Liệt kê các thể hiện đang cótrong hệ thống

db2ilistLoại bỏ một thể hiểndb2idropTạo một thể hiển mớidb2icrtDừng thể hiện hiện tạidb2stopKhởi động thể hiện hiện tạidb2start

Môi trường của DB2 Express – C

n Các cơ sở dữ liệu (Databases)

Môi trường của DB2 Express – C

n Các cơ sở dữ liệu (Databases)n Tạo CSDL trong một instance

n db2 create database mybd1n Hiển thị danh sách các CSDL trong instance

n db2 list db directoryn Một số lệnh làm việc với database

Kết nối đến một CSDLdb2 connect to <database name>

Xoá một CSDLdb2 drop databaseTạo một CSDL mớidb2 create database

Môi trường của DB2 Express – C

n Các cơ sở dữ liệu (Databases)

Môi trường của DB2 Express – C

n Các cơ sở dữ liệu (Databases)n Tạo một CSDL trên instance khác

n db2 list db directory n set db2instance=myinst n db2 create database mydb1 n set db2instance=db2

n Sử dụng Control Center

Môi trường của DB2 Express – C

n Không gian bảng trong CSDL

Môi trường của DB2 Express – C

n Không gian bảng trong CSDL

Môi trường của DB2 Express – C

n Không gian bảng trong CSDLn SYSCATSPACE: nơi chứa các bảng danh

mục (catalog)n TEMPSPACE1: được sử dụng khi cần thêm

không gian để xử lý thao tác (như sắp xếp)n USERSPACE1: được sử dụng để lưu trữ các

bảng CSDL người dùng khi không có không gian riêng để lưu trữ nó.

n IBMDEFAULTBP: vùng đệm dữ liệun LOGS: tệp nhật lý dùng để phục hồi dữ liệu

Môi trường của DB2 Express – C

n Không gian bảng trong CSDL

Môi trường của DB2 Express – C

n Cấu hình DB2n Các biến môi trườngn Tệp cấu hình quản

trị CSDL (dbm cfg)n Tệp cấu hình CSDL

(db cfg)n Đăng ký lý lịch DB2

Môi trường của DB2 Express – C

n Cấu hình DB2n Các biến môi trường

là biến được thiết lập ở hệ điều hành, là một DB2INSTANCE.

n Ví dụ:n set db2instance =

myinst

Môi trường của DB2 Express – C

n Cấu hình DB2n Tệp cấu hình quản

trị CSDL (dbm cfg) gồm các tham số liên quan đến thểhiện và các CSDL trong đó.

n Có thể cấu hình bằng dòng lệnh hoặc Control Center

Môi trường của DB2 Express – C

n Cấu hình DB2n Xem nội dung tệp

cấu hìnhn get dbm cfg

n Cập nhật tệp cấu hình

n update dbm cfg using <para> <val>

n update dbm cfg using DFTDBPATH D:

Môi trường của DB2 Express – C

n Cấu hình DB2

Môi trường của DB2 Express – C

n Cấu hình DB2n Tệp cấu hình CSDL

(db cfg) gồm các tham số tác động đến từng CSDL

n Có thể cấu hình bằng dòng lệnh hoặc Control Center

Môi trường của DB2 Express – C

n Cấu hình DB2n Xem nội dung tệp

cấu hìnhn get db cfgn get db cfg for <db>

n Cập nhật tệp cấu hình

n update db cfg for <db> using <para> <value>

n update db cfg for sample using DLCHKTIME 10000

Môi trường của DB2 Express – C

n Cấu hình DB2

Môi trường của DB2 Express – C

n Cấu hình DB2n Đăng ký lý lịch DB2

(profile) bao gồm các tham số có thểtrên một nền cụ thểvà có thể thiết lập thành toàn cục (ảnh hưởng tất cả các thể hiện) hoặc từng lớp thể hiện (ảnh hưởng riêng từng thể hiện)

Môi trường của DB2 Express – C

n Cấu hình DB2n Một số lệnh điều khiển các biến đăng ký lý lịch

DB2

Thiết lập giá trị cho một tham số

db2set <para> = <val>

Liệt kê tất cả các biến đăng ký lý lịch DB2

db2set –lr

Liệt kê tất cả các biến đăng ký lý lịch DB2 hiện tại được thiết lập

db2set –all

Môi trường của DB2 Express – C

n Cấu hình DB2n Một số biến đăng ký lý lịch DB2 thường dùng

Lưu trữ tên của bản sao DB2 hiện đang sử dụng

DB2_COPY_NAME

Ngăn chặn những người chưa được định danh kết nối với DB2 (Windows)

DB2_EXTSECURITY

Chỉ định giao thức được khởi động khi công cụ quản trị CSDL được khởi động

DB2COMM

Môi trường của DB2 Express – C

n Máy chủ quản trị DB2 (DAS)n Là tiến trình nền chạy trên máy chủ DB2 cho

phép các máy khách quản trị máy chủ DB2 qua giao diện đồ hoạ

n Chỉ có một DAS cho tất cả các instancen Được tạo lúc cài đặt DB2n Một số lệnh

n db2admin create / db2admin dropn db2admin start / db2admin stop

Môi trường của DB2 Express – C

n Máy chủ quản trị DB2 (DAS)

Tổng quan và Cài đặt DB2

n DB2 Express-C là gì?n Các tính năng liên quan và các sản phẩmn Cài đặt DB2 Express – Cn Môi trường của DB2n Các công cụ DB2

Công cụ của DB2 Express – C

n Công cụ của DB2n Tổng quann Trung tâm điều khiển (Control Centre)n Cửa sổ soạn thảo lệnh (Command Editor)n Cửa sổ lệnh (Command Windows)n Trình trợ giúp SQL (SQL Assist)n Trung tâm tác vụ (Task Center)n Nhật ký (Journal)

Công cụ của DB2 Express – C

n Công cụ của DB2

Công cụ của DB2 Express – C

n Công cụ của DB2

Công cụ của DB2 Express – C

n Control Centern Là công cụ quản trị chính của DB2n Cho phép thực hiện:

n Hỗ trợ để xem xét hệ thống DB2n Tạo, sửa và quản lý các CSDLn Quản lý các đối tượng trong CSDL (tables,

views, indexes, …)n Chạy các công cụ GUI khác

Công cụ của DB2 Express – C

n Control Centern Chọn cách hiển thị của Control Center khi bắt

đầu chạy ứng dụng (Menu Tools/Customize Control Center)

Công cụ của DB2 Express – C

n Control Centern Có thể chạy Control Center băng nhiều cách

n Qua Start Menun Chạy db2cc từ cửa sổ lệnhn Chọn biểu tượng Control Center trên thanh

công cụ của bất ký ứng dụng DB2 GUI nào n Chạy từ biểu tượng DB2 trên khay hệ thống

Công cụ của DB2 Express – C

n Control Center

Cây đối tượng

Danh sách đối tượng

Chi tiết đối tượng

Công cụ của DB2 Express – C

n Command Editorn Sử dụng Command Editor có thể thực hiện

các câu lệnh DB2 và câu lệnh truy vấn SQL, …

n Có thể chạy Command Editor như sau:n Qua Start Menun Chạy db2ce từ cửa sổ lệnhn Chọn biểu tượng Comamnd Editor trên thanh

công cụ Control Centern Từ Tools Menu trong Control Center

Công cụ của DB2 Express – C

n Command Editor (tiếp)n Có thể nhúng Command Editor vào trong

Control Centern Phải chuột vào một CSDL và chọn Queryn Chọn đường link Query trong phần chi tiết đối

tượng khi đang đang chọn một CSDL, table hay view nào đó.

Công cụ của DB2 Express – C

n Command Editor (tiếp)

Nơi nhập lệnh

Cửa sổkết quả

Thêm kết nối CSDL

CSDL đang kết nối

Ký tự sửdụng báo

hết câu lệnh

Công cụ của DB2 Express – C

n Command Windows /CLPn Cửa sổ lệnh để thực hiện các câu lệnh bằng

dòng lệnh (db2cmd, tương tự cmd)n Chỉ sử dụng trên Windows, sử dụng Linux

Shell trên Linuxn Có thể thực hiện được câu lệnh db2 (db2==>)

Công cụ của DB2 Express – C

n Trình trợ giúp SQL (SQL Assist)

Công cụ của DB2 Express – C

n Trung tâm tác vụ (Task Center)

Công cụ của DB2 Express – C

n Trung tâm tác vụ (Task Center)n Cho phép tạo ra những tác vụ với giao diện

đồ hoạ như chạy các lệnh của DB2, các lệnh của hệ điều hành, các kịch bản thực thi, …

n Các tác vụ sau vẫn có thể thực hiện cho dùtác vụ trước thực hiện không thành công

n Chỉ thực hiện khi đã tạo một CSDL Tools Catalog

Công cụ của DB2 Express – C

n Nhật ký (Journal)

Công cụ của DB2 Express – C

n Nhật ký (Journal)n Cung cấp cho người quản trị một nhật ký về

các hoạt động của hệ thống. Nó gồm:n Task His.: tất cả các công việc được lên lịch đã

được thực hiện và tình trạng hoạt động của chúng

n Database His.: bản ghi nhớ các hoạt động lênh CSDL (sao lưu, phục hồi, …)

n Messages: nhật ký thông điệp phản hồi từ các DB2 Tools

n Notification Log: lưu trữ thông điệp cấp hệ thống, bao gồm cả các lỗi nghiêm trọng

Quản trị Cơ sở dữ liệun Kiến trúc của DB2n Kết nối máy khách DB2n Làm việc với các đối tượng dữ liệun Di chuyển dữ liệun Bảo mật cơ sở dữ liệun Sao lưu và phục hồin Bảo trìn Truy cập đồng thời và khoá

Quản trị Cơ sở dữ liệun Kiến trúc của DB2n Kết nối máy khách DB2n Làm việc với các đối tượng dữ liệun Di chuyển dữ liệun Bảo mật cơ sở dữ liệun Sao lưu và phục hồin Bảo trìn Truy cập đồng thời và khoá

Kiến trúc của DB2

n Mô hình xử lý của DB2n Mô hình bộ nhớ của DB2n Mô hình lưu trữ của DB2

Kiến trúc của DB2

n Mô hình xử lý của DB2n Quy ước ký hiệu:

n Chữ nhật: biểu diễn tiến trình (process)n Eslip: biểu diễn luồng xử lý

Kiến trúc của DB2

n Mô hình xử lý của DB2

Kiến trúc của DB2

Daemon tự động. Nó dùng để thực hiện các tác vụ từ phía máy khách như hiển thị tình trạng, tự động bảo trì, kế hoạch hoạt động.

db2acd

Cơ chế (động cơ) điều khiển chính trong DB2. Trong v9.5, chỉ có duy nhất một tiến trình xử lý đa luồng cho tất cả các thành phần. Tất cả các EDUs (Engine Dispatchable Units) đều nằm trong tiến trình này. Không có tiến trình này, CSDL không thể hoạt động.

db2sysc, db2syscs (Win)

n Mô hình xử lý của DB2 (tiến trình chính)

Kiến trúc của DB2

DB2 Watchdog, là mức trên của cơ chế xử lý chính db2sysc, sẽ giải phóng tài nguyên khi kết thúc db2sysc bất bình thường

db2wdog

Tiến trình xử lý đối với các hãng khác. Các mã lệnh của các hãng khác IBM sẽ chạy bên ngoài cơ chế này, và như vậy một chương trình không phải của IBM vẫn có thể tương tác với DB2.

db2vend

Các tiến trình xử lý khác chạy các mã lệnh (gồm cả thủ tục lưu trữ hàm do người dùng tự định nghĩa) trên máy chủ nằm ngoài tường lửa

db2fmp

n Mô hình xử lý của DB2 (tiến trình chính)

Kiến trúc của DB2

Luồng điều khiển chính của hệ thống. Luồng này dùng để khởi động (start), tắt (stop) và quản lý các thể hiện (instance) đang hoạt động

db2sysc

Luồng lắng nghe (listener) các yêu cầu qua giao thức TCP/IP

db2tcpcm

Tác nhân (agent) thực thi những thao tác CSDL thay cho những ứng dụng (ít nhất có 1 tác nhân trên một kết nối, tuỳ thuộc vào bộ tập trung kết nối (Connection Concentrator) được thiết lập)

db2agent

n Mô hình xử lý của DB2 (luồng chính)

Kiến trúc của DB2

Tác nhân con (subagent) chủ động được sinh ra nếu tham số INTRA_PARALLEL = YES (dbm cfg). Nó sẽ thực thi các thao tác CSDL thay cho các ứng dụng. db2agent sẽ kết hợp công việc giữa các tác nhân con khác nhau.

db2agntp

Bộ đọc dữ liệu vào/ra không đồng bộ (tham sốNUM_IOSERVERS của database)

db2pfchr

Bộ ghi dữ liệu vào/ra không đồng bộ (tham sốNUM_IOCLEANERS của database)

db2pclnr

n Mô hình xử lý của DB2 (luồng chính)

Kiến trúc của DB2

n Mô hình xử lý của DB2 (luồng chính)n Bộ tập trung kết nối (Connection Concentrator)

n Hỗ trợ quản lý một số lượng lớn người sử dụng kết nối đồng thời

n Bộ tập trung kết nối sẽ được thiết lập khi (dbm cfg) tham số max_connection > max_coordagents

Kiến trúc của DB2

n Mô hình bộ nhớ của DB2

Kiến trúc của DB2

n Mô hình lưu trữ của DB2n Trang và phạm vi (Pages & Extents)n Vùng nhớ đệm (buffer pool)n Không gian bảng (Table Space)

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (trang / phạm vi)n Trang là đơn vị lưu trữ nhỏ nhất của DB2, với

kích thước cho phép là 4, 8, 16, 32Kn Phạm vi là một nhóm các trangn DB2 làm việc với nhiều phạm vi trong cùng

thời điểmn Kích thước trang và phạm vi được định nghĩa

khi làm việc với vùng nhớ đệm và không gian bảng

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (vùng nhớ đệm)n Là vùng bộ nhớ thực (real cache) cho dữ liệu

bảng và chỉ mụcn Cải thiện tốc độ thực thi bằng giảm vào/ra

tuần tự trực tiếp và nâng cấp thực thi không đồng bộ. DB2 đoán trước trang nào cần thiết, đọc chúng từ đĩa vào vùng đệm, để sẵn sàng sử dụng.

n Cấp phát với đơn vị nhớ là các trang.n Mỗi CSDL cần ít nhất một bộ đệmn Có ít nhất một bộ đệm cho không gian bảng

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (tạo vùng đệm)n Vùng đệm được tạo cho từng CSDLn Có thể tạo vùng đệm:

n Sử dụng lệnh create bufferpooln Sử dụng Control Center

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (tạo vùng đệm)

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (không gian bảng)n Là một không giản sử dụng để lưu trữ các

bảng, là một giao diện trừu tượng nằm giữa các bảng logic và vùng lưu trữ vật lý của hệthống (bao gồm vùng nhớ đệm và đĩa)

n Tập hợp của một hoặc nhiều “container” (các file, thư mục, các thiết bị khác)

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (không gian bảng)n Đặc điểm của không gian bảng

n Kích thước trang của không gian bảng là 4, 8, 16, 32KB. Kích thước này phải tương ứng với kích thước trang của bộ đệm

n Tên vùng đệm tương ứng với không gian bảngn Kích thước phạm vi: số trang được ghi vào một

“container” trước khi ghi lượt tiếp theon Kích thước nạp trước: số trang dữ liệu sẽ được

đọc trước khi cần nâng cao hiệu năng thực hiện

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (không gian bảng)n Các loại không gian bảng

n Thông thường: thời dành cho User, được tạo ra một cách thông thường (userspace1)

n Lớn: thường được sử dụng để lưu trữ dữ liệu cókích thước lớn hoặc các dữ liệu LOB (long or large object). Các chỉ số cũng có thể được lưu trữ luôn trong không gian này.

n Tạm thời:§ Của hệ thống: DB2 sử dụng cho các thao tác nội

bộ của hệ thống (TEMPSAPCE1)§ Của người dùng: được sử dụng cho người dùng

tạo ra các bảng tạm thời

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (không gian bảng)n Quản lý không gian bảng

n Quản lý bởi hệ thống (System Managed Storage – SMS)

n Quản lý bởi CSDL (Database Managed Storage – DMS)

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

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (không gian bảng)n Quản lý không gian bảng

n Quản lý bởi hệ thống (System Managed Storage – SMS)§ Hệ điều hành quản lý không gian này § Dễ dàng trong quản lý và được chứa trong các tệp.§ Không gian không được cấp phát trước nhưng

dung lượng tăng tự động§ Khi đã được cấp phát, vị trí lưu trữ không thay đổi.§ Dữ liệu, chỉ mục, dữ liệu LOB không được trải

nhiều trên những không gian bảng khác nhau

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (không gian bảng)n Quản lý không gian bảng

n Quản lý bởi CSDL (Database Managed Storage – DMS)§ DB2 quản lý không gian bảng này§ Cần sự can thiệp của người quản trị§ “Container” có thể là tệp được cấp phát trước, hoặc

những thiết bị lưu trữ khác§ “Container” có thể thay đổi kích thước, xoá, thêm§ Dữ liệu, chỉ mục, dữ liệu LOB có thể nằm trên các

không gian khác nhau nên có hiệu suất tốt

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (không gian bảng)n Quản lý không gian bảng

n Quản lý bởi lưu trữ tự động § Mong muốn như “một cửa đơn giản để quản lý lưu

trữ”§ Sử dụng tương tự không gian bảng SMS nhưng

hiệu suất tốt và linh hoạt như DMS§ Không định nghĩa tường minh chỗ chứa. Nó được

tự động xác định theo đường dẫn§ Tăng kích thước hay bổ sung thêm chỗ mới là do

DB2 quản lý§ Định nghĩa lại đường dẫn qua database RESTORE

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (không gian bảng)n Quản lý không gian bảng

n Quản lý bởi lưu trữ tự động (ví dụ)§ Tạo CSDL được lưu trữ tự động

Lưu trữ tự động theo mặc địnhCREATE DATABASE DB1Lưu trữ tự động chỉ định tường minhCREATE DATABASE DB1 AUTOMATIC STORAGE YESLưu trữ tự động theo mặc định, chỉ ra đường dẫnCREATE DATABASE DB1 ON /data/path1, /data/path2Lưu trữ tự động không được phépCREATE DATABASE DB1 AUTOMATIC STORAGE NO

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (không gian bảng)n Quản lý không gian bảng

n Quản lý bởi lưu trữ tự động (ví dụ)§ Tạo không gian bảng lưu trữ tự động

Lưu trữ tự động cho KGB được cho phép theo mặc địnhCREATE TEMPORARY TABLESPACE TEMPTS

Lưu trữ tự động KGB được cho phép chỉ định tường minhCREATE TABLESPACE TS2 MANAGED BY AUTOMATIC

STORAGELưu trữ tự động không tường minhCREATE TABLESPACE TS1 INITIALSIZE 500 K

INCREASESIZE 100 K MAXSIZE 100 M

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (không gian bảng)n Quản lý không gian bảng

n Dữ liệu lưu trữ trong không gian bảng

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (không gian bảng)n Quản lý không gian bảng

n Dữ liệu lưu trữ trong không gian bảng§ Không gian bảng 4K với 8 trang cho mỗi phạm vi

(4K x 8 = 32K)§ Sử dụng 3 chỗ chứa trong không gian bảng DMS

Kiến trúc của DB2

n Mô hình lưu trữ của DB2 (không gian bảng)n Quản lý không gian bảng

n Tạo không gian bảng bằng Control Center

Quản trị Cơ sở dữ liệun Kiến trúc của DB2n Kết nối máy khách DB2n Làm việc với các đối tượng dữ liệun Di chuyển dữ liệun Bảo mật cơ sở dữ liệun Sao lưu và phục hồin Bảo trìn Truy cập đồng thời và khoá

Kết nối máy khách DB2

n Thư mục DB2n Yêu cầu cài đặt tại máy chủn Yêu cầu cài đặt tại máy kháchn Các phương thức khác để cài đặt kết nối

Kết nối máy khách DB2

n Thư mục DB2: n là các tệp nhị phân lưu trữ thông tin từ các

CSDL mà có thể kết nối đếnn Có 4 thư mục

n Thư mục CSDL hệ thốngn Thư mục CSDL nội tạin Thư mục nútn Thư mục DCS

Kết nối máy khách DB2

n Thư mục DB2: n Thư mục CSDL hệ thống

n Chứa danh mục các CSDL mà hệ thống đang quản lý (gồm cả CSDL nội tại và từ xa)

n Là các con trỏ trỏ tới thư mục CSDL nội tạin Là các con trỏ trỏ tới thư mục nút (node)n Câu lệnh: list db directory

Kết nối máy khách DB2

n Thư mục DB2: n Thư mục CSDL nội tại (local)

n Chứa thông tin về những CSDL nội tại mà cóthể kết nối được

n Câu lệnh: list db directory on <drive path>

Kết nối máy khách DB2

n Thư mục DB2: n Thư mục CSDL nút (node)

n Chứa thông tin để kết nối đến một CSDL ở xa.n Khi sử dụng TCP/IP, thông tin gồm địa chỉ IP

của máy DB2 ở xa và địa chỉ cổng (port) của thểhiện chứa CSDL

n Câu lệnh: list node directory

Kết nối máy khách DB2

n Thư mục DB2: n Thư mục DCS

n Chỉ sử dụng khi cài đặt phần kết nối đến máy chủ DB2 sử dụng x/OS

n Câu lệnh: list dcs directory

Kết nối máy khách DB2

n Trợ giúp cấu hình (Configuration Assistant):n Công cụ GUI hỗ trợ cấu hình các kết nối đến

các máy chủ DB2 ở xan Chạy ứng dụng

n Windows Start Menu: IBM DB2\DB2COPY1\Set-up tools\Configuration Assistant

n Control Center: Tools Menu\Configuration Assistant

n Dòng lệnh: db2ca

Kết nối máy khách DB2

n Cài đặt trên máy chủn Máy chủ cần thiết lập 2 tham số liên quan

của instance cho phép kết nốin db2comm: giao thức sẽ sử dụng để hỗ trợ kết

nối từ máy kháchn svcename (service name): tên dịch vụ hoặc số

hiệu cổng (port) của Instance chứa CSDL cho phép kết nối

Kết nối máy khách DB2

n Cài đặt trên máy chủn Thiết lập quan CA

n db2comm à Db2 Registryn svcename à DBM Configuration

(Communication)n Thiết lập qua CC

n db2comm à chọn Instance\Set up communications …

n svcename à chọn Instance\Configure Parameters …

Kết nối máy khách DB2

n Cài đặt trên máy chủn Thiết lập bằng dòng lệnh

n db2comm à db2setdb2set db2comm=TCPIP

n svcename à update dbm cfg using svcename <port # or service name>update dbm cfg using svcename 50001

n Ví dụ: thiết lập tham số máy chủ

Kết nối máy khách DB2

n Cài đặt trên máy khách

Kết nối máy khách DB2

n Cài đặt trên máy khách

Kết nối máy khách DB2

n Cài đặt trên máy kháchn Hoặc cũng có thể kết nối thông qua

n Configuration AssistantAdd Database using Wizard

n Control CenterAll Database \ Add

Kết nối máy khách DB2

n Cài đặt trên máy kháchn Những thông tin cần thiết để kết nối từ máy

khách đến máy chủn Tên CSDL muốn kết nốin Số hiệu cổng (port) của thể hiện DB2 chứa

CSDL. Cũng có thể sử dụng tên dịch vụ nếu tồn tại thực thể tương ứng trong tệp dịch vụ TCPIP

n ID của người dùng và mật khẩu đăng nhập CSDL của máy chủ

Kết nối máy khách DB2

n Các phương thức khác để cài đặt kết nối

Kết nối máy khách DB2

n Các phương thức khác để cài đặt kết nối

Kết nối máy khách DB2

n Các phương thức khác để cài đặt kết nốin Tìm kiếm từ máy khách

n Cấp độ DAS§ Discover = Search/Know§ get admin cfg§ update admin cfg

using <para> <val>n Cấp độ Instance

§ get dbm cfg§ update dbm cfg

using <para> <val>

Kết nối máy khách DB2

n Các phương thức khác để cài đặt kết nốin Tìm kiếm từ máy khách

n Cấp độ Database§ get db cfg§ get db cfg for <db>§ update db cfg for <db>

using <para> <value>n Có thể kết xuất (export)

để hỗ trợ cài đặt cho nhiều máy khách hoặc máy chủ

Quản trị Cơ sở dữ liệun Kiến trúc của DB2n Kết nối máy khách DB2n Làm việc với các đối tượng dữ liệun Di chuyển dữ liệun Bảo mật cơ sở dữ liệun Sao lưu và phục hồin Bảo trìn Truy cập đồng thời và khoá

Làm việc với các đối tượng DL

n Sơ đồ (Schema)n Bảng (Tables)n Khung nhìn (Views)n Chỉ mục (Indexes)n Toàn vẹn tham chiếu (Referential Integrity)

Làm việc với các đối tượng DL

n Sơ đồ (Schema)n một không gian tên (name space) cho tập

hợp các đối tượng trong CSDLn Được sử dụng để:

n Cung cấp chỉ dẫn về quyền sở hữu (ownership) đối tượng hoặc mối quan hệ với đối tượng nào đó

n Gom các đối tượng có liên quan n Tên của tất cả các đối tượng CSDL, theo tiêu

chuẩn, đều có 2 phần<tên sơ đồ>.<tên đối tượng>

Làm việc với các đối tượng DL

n Sơ đồ (Schema)n Khi kết nối đến CSDL mà không chỉ rõ

schema, DB2 sẽ chọn định danh (ID) của người dùng hiện tại đang kết nối đến CSDL làm tên schema

Làm việc với các đối tượng DL

n Bảng (Tables)n Là tập hợp dữ liệu có mối quan hệ với nhau

một cách hợp lý theo cột và hàng

Làm việc với các đối tượng DL

n Bảng (Tables) – kiểu dữ liệu

Làm việc với các đối tượng DL

n Bảng (Tables) – Dữ liệu lớn (LOB)

Làm việc với các đối tượng DL

n Bảng (Tables) – Dữ liệu người dùng tự định nghĩa (User-Defined Types)

Làm việc với các đối tượng DL

n Bảng (Tables) – Dữ liệu người dùng tự định nghĩa (User-Defined Types)

Làm việc với các đối tượng DL

n Bảng (Tables) – Giá trị Nulln Đại diện cho một trạng thái giá trị không xác

địnhn Có thể thiết lập giá trị một cột trong bảng

không được phép Null

Làm việc với các đối tượng DL

n Bảng (Tables) – Bảng danh sách hệ thốngn Mỗi CSDL có danh sách bảng hệ thống riêngn Lưu trữ các siêu dữ liệu về các đối tượng

CSDLn Có thể sử dụng các câu lệnh truy vấn như

những bảng khác

Làm việc với các đối tượng DL

n Bảng (Tables) – Bảng danh sách hệ thốngn Có 3 sơ đồ (schema) để nhận dạng các bảng

danh sách hệ thốngn SYSIBM: chứa các bảng cơ sở, tối ưu hoá sử

dụng cho DB2n SYSCAT: các khung nhìn (view) cơ sở dựa trên

các bảng SYSIBM, tối ưu sự dễ sử dụngn SYSSTAT: các số liệu thông kê trong CSDL

§ ExampleSYSCAT.TABLESSYSCAT.INDEXESSYSCAT.COLUMNS

Làm việc với các đối tượng DL

n Bảng (Tables) – khai báo bảng tạm thờin Là bảng được tạo ra trong bộ nhớ, được sử

dụng một ứng dụng và tự động xoá khi ứng dụng kết thúc

n Chỉ có thể được truy cập bởi ứng dụng tạo ra chúng

n Không sinh ra các bản ghi trong bảng danh sách hệ thống

n Hiệu quả truy cập bảng cao (không bị khoáhàng, không phải xác thực, không ghi nhật ký)

Làm việc với các đối tượng DL

n Bảng (Tables) – cột định danh (identity)n Là cột các con số được tạo ra tự động, có giá

trị duy nhất trên mỗi dòngn Chỉ tối đa một cột định danh trên một bảngn Tạo giá trị trên cột định danh có 2 cách:

n Luôn được sinh ra: các giá trị được sinh ra bởi DB2, ứng dụng không được phép sinh giá trị

n Sinh ra mặc định: giá trị được cung cấp bởi ứng dụng, hoặc nếu không có thì DB2 sinh ra. Không đảm bảo tính duy nhất của dữ liệu

Làm việc với các đối tượng DL

n Bảng (Tables) – cột định danh (identity)

Làm việc với các đối tượng DL

n Bảng (Tables) – đối tượng tuần tự(sequence object)n Đối tượng tuần tự sinh ra một số duy nhất,

hoạt động như một bảng độc lập

Làm việc với các đối tượng DL

n Khung nhìn (Views)n Là sự thể hiện dữ liệu được lưu trữ trong

bảngn Dữ liệu sẽ tồn tại khi được gọi tớin Thông tin về khung nhìn được chứa trong

SYSCAT.VIEWS, SYSCAT.VIEWDEP, SYSCAT.TABLES.

Làm việc với các đối tượng DL

n Chỉ mục (Indexes)n Là tập hợp các khoá được sắp xếp theo mục

ở các dòng trong bảngn Đặc điểm

n Kiểu chỉ mục tăng hoặc giảmn Khoá của chỉ mục có thể là duy nhất hoặc khôngn Nhiều cột có thể sử dụng làm chỉ mục

n Sử dụng công cụ trợ giúp Design Advisor

Làm việc với các đối tượng DL

n Toàn vẹn tham chiếu (Referential Integrity)n Cho phép CSDL quản lý được mối quan hệ

giữa các bảng

Tiện ích di chuyển dữ liệu

n Tổng quann Exportn Importn Load & Set Integrityn db2moven db2look

Tiện ích di chuyển dữ liệu

n Tổng quann Tiện ích di chuyển dữ liệu là công cụ được

sử dụng để di chuyển dữ liệu trong cùng một CSDL sang CSDL khác trên cùng nền (platform) hoặc khác nền

Tiện ích di chuyển dữ liệu

n Tổng quann ASC = ASCIIn DEL = Delimited ASCII – dữ liệu được lưu trữ

dưới dạng văn bản, có thể mở xem bằng bất kỳtrình soạn thảo nào

n WSF = Worksheet Format – định dạng có thể di chuyển dữ liệu sang bảng tính (Excel, Lotus123)

n IXF = Integrated Exchange Format – định dạng không chỉ bao gồm dữ liệu mà còn cả ngôn ngữ DDL (Data Definition Language). Đảm bảo được tính đầy đủ của dữ liệu

Tiện ích di chuyển dữ liệu

n Exportn Kết xuất dữ liệu từ bảngn Làm việc với IXF, DEL, WSFn Có thể thực hiện bằng câu lệnh hoặc Control

Center

Tiện ích di chuyển dữ liệu

n Importn Chèn dữ liệu từ bảng (tương đương câu lệnh

SQL Insert)§ Kích hoạt các bẫy (trigger), các ràng buộc có hiệu

lực, sử dụng BUFFERPOOLn Có thể thực hiện bằng câu lệnh hoặc Control

Center

Tiện ích di chuyển dữ liệu

n Loadn Chèn dữ liệu từ bảng theo cách trực tiếpn Tốc độ thực hiện nhanh, không sử dụng vùng

đệm, các bẫy không được kích hoạt, ràng buộc không có hiệu lực

n Có thể thực hiện bằng câu lệnh hoặc Control Center

Tiện ích di chuyển dữ liệu

n db2moven Có thể làm việc với cả một CSDLn Chỉ làm việc với tệp IXFn Không có trong Control Center

db2move sample exportdb2move sample import

Tiện ích di chuyển dữ liệu

n db2lookn Trích rút dữ liệu dưới dạng câu lệnh DDL, không

gian bảng thành tệp kịch bảnn Có thể sử dụng câu lệnh hoặc Control Center

Quản trị Cơ sở dữ liệun Kiến trúc của DB2n Kết nối máy khách DB2n Làm việc với các đối tượng dữ liệun Di chuyển dữ liệun Bảo mật cơ sở dữ liệun Sao lưu và phục hồin Bảo trìn Truy cập đồng thời và khoá

Bảo mật cơ sở dữ liệu

n Tổng quann Xác thực (authentication)n Quyền hạn (authorization)n Nhóm PUBLICn GRANT và REVOKE

Bảo mật cơ sở dữ liệu

n Tổng quann DB2 sử dụng 2 cách

xác thựcn Dịch vụ bảo mật ngoàin Kiểm soát truy cập

bên trong nội tạin Xác thực

(authentication)n Định danh người sử

dụng

Bảo mật cơ sở dữ liệu

n Tổng quann Quyền hạn

(authorization)n Kiểm tra người sử

dụng đã được xác thực có đủ quyền hạnthực hiện thao tác

Bảo mật cơ sở dữ liệu

n Xác thực (authentication)

Bảo mật cơ sở dữ liệu

n Xác thực (authentication)n Tham số AUTHENTICATION trong DBM

CFGn Các giá trị:

n SERVER (mặc định): xác thực tại máy chủn CLIENT: xác thực tại máy kháchn SERVER_ENCRYPT: xác thực tại máy chủ

nhưng có mã hoán SQL_AUTHENTICATION_DATAENC: xác thực

tại máy chủ thêm sự kết nối phải mã hoán SQL_AUTHENTICATION_DATAENC_CMP:

Bảo mật cơ sở dữ liệu

n Quyền hạn (authorization)n Quyền hạn bao gồm quyền (Authorities) và

các đặc quyền (Privileges)n Đặc quyền là quyền cho phép thực hiện một

thao tác nào đó trên CSDL (Insert, Create,…)n Quyền là một loại hành động bao gồm nhiều

đặc quyền

Bảo mật cơ sở dữ liệu

n Quyền hạn (authorization)

Bảo mật cơ sở dữ liệu

n Quyền hạn (authorization) – các cấp

Bảo mật cơ sở dữ liệu

n Quyền hạn (authorization)n Có thể cấp quyền cho một nhóm người sử

dụng trên OS, có thể thiết lập các tham sốSYSADM_GROUP, SYSCTRL_GROUP, …trong DBM CFG theo nhóm của OS

update dbm cfg using SYSADM_GROUP <group>n Mỗi thể hiện có nhóm quyền riêngn Trên Windows, ngầm định nhóm quản trị

Windows có quyền SYSADM. Trên Linux, nhóm người sở hữu thể hiện là SYSADM

Bảo mật cơ sở dữ liệu

n Quyền hạn (authorization) – DBADMn DBADM (quyền quản trị CSDL): người có

quyền cao nhất về quản trị một CSDL. Đây không có một quyền cụ thể

connect to <db>grant DBADM on database on user <userid>

n Phải là quyền SYSADM mới thực hiện được lệnh gán này

n DBADM không có quyền tạo không gian bảng vì không gian bảng liên quan đến containers (đĩa) và vùng đệm (bộ nhớ)

Bảo mật cơ sở dữ liệu

n Nhóm PUBLICn Là một nhóm bên trong DB2n Mỗi User được xác nhận bởi OS hoặc dịch

vụ chứng thực đều được ngầm định là thành viên nhóm PUBLIC

n Một số quyền được tạo sẵn cho nhóm PUBLIC khi CSDL được tạo CONNECT, CREATE TAB, IMPLICIT_SCHEMA, BINDADD

n Có thể huỷ quyền của nhóm PUBLIC để tăng tính bảo mật

Bảo mật cơ sở dữ liệu

n Lệnh GRANT và REVOKE

Bảo mật cơ sở dữ liệu

n Lệnh GRANT và REVOKEn Có thể kiểm tra quyền và việc cấp quyền qua

Control Center

Quản trị Cơ sở dữ liệun Kiến trúc của DB2n Kết nối máy khách DB2n Làm việc với các đối tượng dữ liệun Di chuyển dữ liệun Bảo mật cơ sở dữ liệun Sao lưu và phục hồin Bảo trìn Truy cập đồng thời và khoá

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)n Sao lưu (backup)n Phục hồi (recovery)

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)n Nhật ký CSDL ghi lại các hành động của

những giao dịch (transactions). Trong trường hợp sự cố, có thể khôi phục (playback/redo) những giao dịch đã được thực hiện

n Việc ghi lại những thay đổi trong CSDL vào nhật ký được thực hiện sau lệnh COMMIT

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)n Không gian bảng (tablespace) và nhật ký

(log) đều được ghi trên ổ cứng. Do đó, khuyến cáo là nên được cất trên những ổcứng khác nhau

n Khi có sự thay đổi (giả sử UPDATE), những trang dữ liệu thay đổi sẽ được cất trong vùng đệm (bộ nhớ). Những giá trị cũ và mới sẽ được cất trong Log (đôi khi thì tức thời, đôi khi do một vùng đệm đầy)

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)n Nếu thực hiện COMMIT ngay sau UPDATE,

tất cả dữ liệu cũ và mới sẽ được ghi vào Log ngay lập tức

n Khi điều kiện thoả mãn, dữ liệu thay đổi mới được ghi lên không gian bảng trên đĩa

n CHNGPGS_THRES: chỉ định tỷ lệ phần trăm những trang đã thay đổi (dirty)

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)n Các kiểu nhật ký

n Nhật ký sơ cấp (LogPrimary): được cấp phát sẵn

n Nhật ký thứ cấp (LogSecond): được cấp phát khi cần thiết và sẽ được xoá khi tất cả các kết nối đến CSDL bị ngắt

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)n Các kiểu ghi nhật ký

n Ghi vòng tuần tự (Circular logging): không lưu trữ riêng, có thể bị ghi đè

n Lưu trữ (Archival logging): không bị xoá bất kỳnội dung nào, một số thông tin được lưu trữonline, một số được lưu trữ bên ngoài

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)n Các kiểu ghi nhật ký

n Ghi vòng tuần tự (Circular logging):

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)n Các kiểu ghi nhật ký

n Ghi vòng tuần tự (Circular logging): P1, P2, P3 là nhật ký sơ cấp; S1, S2 là nhật ký thứ cấp§ Khi có một giao dịch, nhật ký được ghi vào P1 và

sau đó là P2, …§ Nếu có lệnh COMMIT, thay đổi được ghi vào không

gian bảng, P1, P2 có thể được ghi đè lại từ đầu vìkhông cần thiết nữa

§ Nếu chưa COMMIT mà không gian bảng thiếu, sẽcấp phát tiếp S1, S2. Khi giao dịch vẫn tiếp tục mà đạt ngưỡng LOGSECOND thì sẽ xuất hiện thông báo lỗi và giao dịch sẽ được quay lui (rollback)

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)n Các kiểu ghi nhật ký

n Lưu trữ (Archival logging):§ Thiết lập tham số LOGRETAIN là YES§ Tệp nhật ký không bị xoá, có thể lưu trữ online

hoặc offline§ Nhật ký lưu trữ offline có thể lưu trữ trên băng từ§ Đảm bảo việc khôi phục lại những dữ liệu cũ khi

gặp sự cố

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)n Các kiểu ghi nhật ký

n Lưu trữ (Archival logging):

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)n Cấu hình nhật ký qua Control Center

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)n Các tham số của nhật ký

n Logbufsz: kích thước bộ nhớ được sử dụng như bộ đệm cho các bản ghi nhật ký trước khi ghi lên đĩa

n Logfilsz: kích thước của mỗi nhật ký đã cấu hình (4KB)

n Logprimary: số bản nhật ký sơ cấp với kích thước logfilsz đã tạo

n Logsecond: số tệp nhật ký phụ được tạo và sửdụng khi cần thiết

Sao lưu và phục hồi

n Nhật ký CSDL (Database Logging)n Các tham số của nhật ký (cont.)

n Logpath/newlogpath: vị trí các nhật ký hoạt động hoặc lưu trữ trong tương lai

n Mirrorlogpath: đường dẫn của nhật ký ảnhn Loghead: tên tệp nhật ký hoạt động hiện hànhn Userexit: cho phép chương trình Userexit thực

hiện sao chép nhật ký ngoại tuyếnn Softmax: giới hạn sự mất mát của việc khôi

phục hỏngn Logretain: thiết lập chế độ ghi nhật ký lưu trữ

Sao lưu và phục hồi

n Sao lưu (backup)n Cho phép tạo ra một bản sao CSDL tại thời

điểm thực thiBACKUP DB sample TO C:\Backups

n Có thể sao lưu trực tuyến (người dùng có thểkết nối đến CSDL khi đang sao lưu) hoặc ngoại tuyến (Offline – người dùng không cóthể kết nối đến CSDL khi đang sao lưu)

n Có thể thực hiện trên Control Center

Sao lưu và phục hồi

n Sao lưu (backup)n Ví dụ về tên file được Backup

Sao lưu và phục hồi

n Khôi phục (Recovery)n Là phục hồi (restore) một CSDL từ phần dữ

liệu đã được sao lưu (backup)n Phục hồi dữ liệu từ các bản ghi nhật ký

Sao lưu và phục hồi

n Khôi phục (Recovery)n Các kiểu khôi phục CSDL

n Khôi phục dữ liệu hỏng (crash/restart database): khi hệ thống gặp sự cố và phải khởi động lại, hệthống kích hoạt lệnh Restart Database để phục hồi các giao dịch khi trước để đảm bảo CSDL ởtrạng thái phù hợp nhất

n Khôi phục dữ liệu theo phiên bản: khôi phục lại CSDL từ một bản đã được sao lưu (backup). CSDL sẽ được trả lại trạng thái như khi sao lưu, và những giao dịch sau đó bị mất

Sao lưu và phục hồi

n Khôi phục (Recovery)n Các kiểu khôi phục CSDL (cont.)

n Khôi phục dữ liệu theo thời gian: cho phép vừa sử dụng sao lưu/ phục hồi, vừa sử dụng lệnh ROLLFORWARD để xác định thời điểm phục hồi giúp làm giảm tối đa mất mát dữ liệu

Sao lưu và phục hồi

n Khôi phục (Recovery)n Khôi phục CSDL

Sao lưu và phục hồi

n Khôi phục (Recovery)n Khôi phục CSDL (một số lưu ý với backup và

restore)n Sao lưu trên OS 32bit, phục hồi trên OS 64n Khôi phục được cả CSDL đang tồn tạin Tạo được CSDL mới từ file đã backupn Có thể sao lưu và khôi phục theo không gian

bảng, không cần toàn bộ CSDLn Có khả năng khôi phục dữ liệu đến một ổ đĩa

khác với vùng cần khôi phục

Sao lưu và phục hồi

n Khôi phục (Recovery)n Khôi phục CSDL (một số lưu ý với backup và

restore)n Cho phép sao lưu những thay đổi (delta) hoặc

tăng dần (incremental)n Có khả năng phục hồi cả những bảng đã bị xoán Không thể sao lưu ở OS này và phục hồi ở OS

khác

Quản trị Cơ sở dữ liệun Kiến trúc của DB2n Kết nối máy khách DB2n Làm việc với các đối tượng dữ liệun Di chuyển dữ liệun Bảo mật cơ sở dữ liệun Sao lưu và phục hồin Bảo trìn Truy cập đồng thời và khoá

Bảo trì

n Tổng quann REORGn RUNSTATSn REBIND

Bảo trì

n Tổng quann Sau quá trình thực hiện, hệ thống CSDL có

nhiều thay đổi. Bảo trì nhằm tối ưu hoá lại hệthống nhằm nâng cao hiệu suất

Bảo trì

n REORGn Sau quá trình truy xuất, bảng và chỉ mục bị

phân mảnhn REORG tái ghép mảnh và tổ chức lại dữ liệu

để tối ưu hiệu quả lưu trữ và truy xuất từng bảng.

n Có thể trực tuyến (online) hay không (offline)n Offline nhanh và tối ưu hơn nhưng không cho

phép truy xuất đến bảngn Online cho phép truy xuất đến bảng nhưng sử

dụng nhiều tài nguyên hơn, phù hợp bảng nhỏ

Bảo trì

n REORG

n Có thể thực hiện qua Control Center

Bảo trì

n RUNSTATS (thông số thống kê)n DB2 có một cơ chế tối ưu thông minh để khai

thác dữ liệu hiệu quả. Để thực hiện cần có sốliệu thống kê trước.

n Số liệu thống kê của CSDL cần được cập nhật (như số lượng cột, các kiểu DL cột, số lượng bản ghi, kích thước chỉ mục, )

n Do số lượng thống kê không được cập nhật tự động nên lệnh RUNSTAT hỗ trợ cập nhật những số liệu thống kê cho cơ chế tối ưu

Bảo trì

n RUNSTATS (thông số thống kê)

n Có thể thực hiện qua Control Center

Bảo trì

n BIND/REBINDn Áp dụng cho những ứng dụng nhúng SQL,

thủ tục lưu trữ SQL sau khi chạy RUNSTAT

Bảo trì

n BIND/REBIND

Bảo trì

n Lựa chọn bảo trìn Có 3 cách:

n Thủ côngn Tạo kịch bản thực hiện bảo trìn Bảo trì tự động (cấu hình cho từng CSDL qua

Control Center)

Quản trị Cơ sở dữ liệun Kiến trúc của DB2n Kết nối máy khách DB2n Làm việc với các đối tượng dữ liệun Di chuyển dữ liệun Bảo mật cơ sở dữ liệun Sao lưu và phục hồin Bảo trìn Truy cập đồng thời và khoá

Truy cập đồng thời và khoá

n Tổng quann Truy cập đồng thờin Khoán Khoá leo thang

Truy cập đồng thời và khoá

n Tổng quann Giao dịch

n Tập hợp dòng lệnh mà khi thực hiện được coi như các câu lệnh riêng lẻ

n Nếu một trong những dòng lệnh thật bại coi như toàn bộ giao dịch thất bại và các dòng lệnh đã được thực hiện đến điểm thất bại sẽ được quay lui (rollback) về giá trị ban đầu

n Giao dịch kết thúc với dòng lệnh COMMIT, vàbắt đầu một giao dịch mới

Truy cập đồng thời và khoá

n Tổng quann Giao dịch

Truy cập đồng thời và khoá

n Tổng quann Truy cập đồng thời

n Nhiều người cùng truy cập đến cùng một CSDL tại cùng thời điểm

n Việc truy cập phải đảm bảo tính an toàn và toàn vẹn dữ liệu

Truy cập đồng thời và khoá

n Tổng quann Truy cập đồng thời

Truy cập đồng thời và khoá

n Tổng quann Khoá

n Khoá được dùng để tạm thời ngăn những ứng dụng truy cập đến khi thao tác kết thúc

n Nếu số khoá tăng lên có nghĩa là số truy cập đồng thời ít đi

n Khoá sẽ tự động xuất hiện hỗ trợ một thao tác và giải phóng khi thao tác kết thúc (Commit hoặc Rollback)

Truy cập đồng thời và khoá

n Tổng quann Khoá

n Có 2 loại kho᧠Khoá chia sẻ (S – share locks): được sử dụng khi

ứng dụng muốn đọc và ngăn cản cập nhật từnhững thao tác khác

§ Khoá dành riêng (X – exclusive locks): được sửdụng khi một ứng dụng muốn cập nhật, xoá hay thêm một dòng

Truy cập đồng thời và khoá

n Tổng quann Khoá

Truy cập đồng thời và khoá

n Truy cập đồng thờin DB2 được thiết kế cho nhiều người truy cậpn Khi không điều khiển truy cập đồng thời, có

thể phát sinh:n Mất dữ liệu cập nhậtn Đọc không cam kếtn Đọc không lặp lạin Đọc thừa

Truy cập đồng thời và khoá

n Truy cập đồng thờin Mất dữ liệu cập nhật: dữ liệu của ứng dụng sau

làm thay đổi dữ liệu ứng dụng trước

Truy cập đồng thời và khoá

n Truy cập đồng thờin Đọc không cam kết: đọc dữ liệu chưa được cập

nhật hoàn toàn

Truy cập đồng thời và khoá

n Truy cập đồng thờin Đọc không lặp lại: không cho dữ liệu giống nhau

sau những câu lệnh thực hiện như nhau

Truy cập đồng thời và khoá

n Truy cập đồng thờin Đọc ảo: đọc thêm những dòng dữ liệu không có

thực

Truy cập đồng thời và khoá

n Truy cập đồng thờin Các mức cô lập

n DB2 cung cấp các mức khác nhau để bảo vệ sựcô lập dữ liệu§ Đọc với không cam kết (Uncommitted Read - UR)§ Ổn định con trỏ (Cursor Stability - CS)§ Đọc ổn định (Read Stability - RS)§ Đọc lặp lại (Repeatable Read - RR)

Truy cập đồng thời và khoá

n Truy cập đồng thờin Các mức cô lập

n Đọc với không cam kết § Cung cấp mức cô lập thấp nhất đồng thời có mức

truy nhật đồng thời cao nhất§ Không có sự khoá dòng khi đọc nếu không có sự

thâm nhập để xoá hoặc sửa một bảng hoặc thao tác cập nhật dữ liệu

§ Vấn đề được ngăn ngừa: mất dữ liệu khi cập nhật§ Vấn đề tồn tại: đọc với không cam kết, đọc không

lặp lại, đọc ảo

Truy cập đồng thời và khoá

n Truy cập đồng thờin Các mức cô lập

n Ổn định con trỏ§ Cấp cô lập mặc định, tạo một mức độ khoá tối thiểu§ Dòng hiện hành của con trỏ (cursor) sẽ bị kho᧠Nếu là dòng chỉ đọc, khoá sẽ được giữ cho đến khi

một dòng mới được lấy hoặc thao tác thực hiện bịngắt

§ Nếu dòng được cập nhật, khoá sẽ được giữ đến khi thao tác thực hiện kết thúc

Truy cập đồng thời và khoá

n Truy cập đồng thờin Các mức cô lập

n Ổn định con trỏ§ Vấn đề được ngăn ngừa: mất dữ liệu khi cập nhật,

đọc với không cam kết§ Vấn đề tồn tại: đọc không lặp lại, đọc ảo

Truy cập đồng thời và khoá

n Truy cập đồng thờin Các mức cô lập

n Đọc ổn định§ Tất cả các dòng trong phạm vi ứng dụng làm việc

đều bị kho᧠Con trỏ truy cập sẽ khoá tất cả các dòng đủ tiêu

chuẩn trong tập hợp kết quả§ Mức độ khoá vừa phải§ Vấn đề được ngăn ngừa: mất dữ liệu khi cập nhật,

đọc với không cam kết, đọc không lặp lại§ Vấn đề tồn tại: đọc ảo

Truy cập đồng thời và khoá

n Truy cập đồng thờin Các mức cô lập

n Đọc lặp lại§ Mức độ khoá cao nhất, truy cập đồng thời thấp nhất§ Khoá giữ tất cả các dòng đang được xử lý để xây

dựng tập hợp kết quả, những dòng không cần thiết trong tập hợp kết quả cuối cùng có thể bị khoá

§ Không ứng dụng nào có thể thay đổi một dòng (thêm, xoá, sửa) nếu dòng đó ảnh hưởng đến tập hợp kết quả cho đến khi thao tác công việc được hoàn tất

Truy cập đồng thời và khoá

n Truy cập đồng thờin Các mức cô lập

n Đọc lặp lại§ Cơ chế này đảm bảo những câu truy vấn tương tự

nhau của cùng một ứng dụng sẽ nhận được kết quả giống nhau tại cùng một thời điểm

§ Vấn đề được ngăn ngừa: mất dữ liệu khi cập nhật, đọc với không cam kết, đọc không lặp lại, đọc ảo

§ Vấn đề tồn tại: không còn

Truy cập đồng thời và khoá

n Truy cập đồng thờin Các mức cô lập

n So sánh các mức cô lập

Truy cập đồng thời và khoá

n Truy cập đồng thờin Các mức cô lập

n Đặt mức cô lập§ Có nhiều mức cô lập

§ Phiên làm việc trong ứng dụng§ Kết nối§ Câu lệnh

§ Mức cô lập bình thường được xác định tại phiên làm việc hoặc tại mức ứng dụng

§ Khi không chỉ rõ mức cô lập, mặc định sử dụng con trỏ ổn định

Truy cập đồng thời và khoá

n Truy cập đồng thờin Các mức cô lập

n Đặt mức cô lập

Truy cập đồng thời và khoá

n Truy cập đồng thờin Các mức cô lập

n Đặt mức cô lập

Truy cập đồng thời và khoá

n Khoá leo thangn Mỗi khoá trong DB2 sử dụng một phần bộ

nhớn Khi bộ tối ưu cho rằng tốt hơn là để một khoá

trên toàn bộ bảng thay vì khoá nhiều hàng thìxảy ra sự leo thang khoá

Truy cập đồng thời và khoá

n Khoá leo thang

Truy cập đồng thời và khoá

n Khoá leo thangn Có 2 tham số CSDL liên quan đến khoá

n LockList: số lượng bộ nhớ (trang 4K) dữ trữ đểquản lý những khoá trong mọi ứng dụng được nối. Trên Windows, mặc định là 50 lần của trang (200K)

n MaxLocks: phàn trăm cực đại của toàn bộ danh sách khoá cho một ứng dụng (mặc định 22%)

Truy cập đồng thời và khoá

n Khoá leo thangn Với những giá trị ngầm định, khoá leo thang

xuất hiện khi một ứng dụng yêu cầu hơn 44K trong tổng số bộ nhớ khoá (200K * 22%)

n Tăng giá trị của 2 tham số sẽ làm giảm sựxuất hiện thường xuyên của khoá leo thang

n Khoá leo thang không tốt cho hiệu năng nhưng làm giảm xung đột

n Tệp nhật ký:

Truy cập đồng thời và khoá

n Chờ khoá (Lock wait)n Khi 2 hoặc nhiều ứng dụng cần thực hiện

phép toán trên cùng đối tượng, một trong số đó có thể phải chờ để nhận được khoá

n Locktimeout (db cfg):n Ngầm định -1: chờ vô hạnn Thời gian đợi được tính bằng giây

Truy cập đồng thời và khoá

n Bế tắc (deadlocks)n Xảy ra khi hai hay nhiều ứng dụng cùng kết

nối đến một CSDLn Mỗi ứng dụng lại chiếm dụng một phần tài

nguyên mà nó đang phục vụ cho nhu cầu khác

Truy cập đồng thời và khoá

n Bế tắc (deadlocks)n Ví dụ mô phỏng tình huống

n Mở 2 cửa sổ CLP (CLP1 và CLP2)n CLP1:

db2 connect to sampledb2 +c update employee set firstnme = 'Mary' where

empno = '000050‘+c: không yêu cầu DB2 tự động cam kết lệnh này,

giữ lại khoá sau khi thực hiện

Truy cập đồng thời và khoá

n Bế tắc (deadlocks)n Ví dụ mô phỏng tình huống

n CLP2:db2 connect to sampledb2 +c update employee set firstnme = ‘Tom’ where

empno = ‘000030’n CLP1:

db2 +c select * from employee where empno = ‘000030’

n CLP2:db2 +c select * from employee where empno =

‘000050’

Truy cập đồng thời và khoá

n Truy cập đồng thời và thực tiễn khoá tốt nhấtn Thường xuyên sừ dụng COMMIT để giao

dịch ngắn nhấtn Chỉ ghi nhật ký giao dịch khi có yêu cầun Tẩy dữ liệu đã sử dụng nhanh chóng

n Thực hiện CSDL theo lô/nhóm

Truy cập đồng thời và khoá

n Truy cập đồng thời và thực tiễn khoá tốt nhấtn Đặt tham số LOCKTIMEOUT cho CSDL (30

– 120), không nên để -1n Không yêu cầu dữ liệu nhiều hơn cần thiết

trong mỗi thao tác của ứng dụng

Phát triển ứng dụng

n Các thủ tục SQL PLn Hàm nội tuyến (inline SQL PL), hàm

người dùng tự định nghĩa (UDF), xử lý sựkiện bẫy lỗi (triggers)

n SQL/XML và Xqueryn Phát triển với Ngôn ngữ lập trình

Phát triển ứng dụng

n Các thủ tục SQL PLn Hàm nội tuyến (inline SQL PL), hàm

người dùng tự định nghĩa (UDF), xử lý sựkiện bẫy lỗi (triggers)

n SQL/XML và Xqueryn Phát triển với Ngôn ngữ lập trình

Thủ tục lưu trữ SQL PL

n Tổng quan về thủ tục lưu trữn IBM Data Studion Stored Procedure

Thủ tục lưu trữ SQL PL

n Tổng quan về thủ tục lưu trữ

Thủ tục lưu trữ SQL PL

n Tổng quan về thủ tục lưu trữn Thủ tục lưu trữ là một đối tượng CSDL, có

thể đóng gói các câu lệnh SQL và nghiệp vụ

n Lưu trữ hợp lý cho phép nâng cao hiệu suất thực hiện cũng như giảm băng thông mạng

n Thủ tục lưu trữ được thực hiện và quản lý bởi DB2

Thủ tục lưu trữ SQL PL

n Tổng quan về thủ tục lưu trữn Thủ tục lưu trữ có thể được viết bằng SQL

PL, C/C++, Java, Cobol, ngôn ngữ hỗ trợCLR (Common Language Runtime), OLE

n Lợi ích của Thủ tụcn Bảo mậtn Hiệu năng

n Tập trung vào thủ tục SQL PL và tính đơn giản và phổ biến

Thủ tục lưu trữ SQL PL

n IBM DATA STUDIOn Là công cụ hỗ trợ phát triển và quản lý các

ứng dụng CSDLn Được xây dựng trên nền tảng Eclipsen Giao diện IDE cho phép:

n Tạo, sửa đổi và xoá các đối tượng CSDL trong DB2

n Phát triển các ứng dụng SQLJn Tạo, sửa, kiểm tra lỗi các thủ tục lưu trữ SQL

(SQL Stored Procedure) và Javan Thực hiện di chuyển dữ liệu thuận tiện

Thủ tục lưu trữ SQL PL

n IBM DATA STUDIOn Giao diện IDE cho phép:

n Phát triển các hàm người đùng tự định nghĩa (UDFs)

n Tối ưu hoá các truy vấnn …

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Có thể sử dụng bằng Command Editor

connect to samplecreate procedure p1 begin … end

n Có thể sử dụng IBM Data Studion Bước 1: Tạo một Projectn Bước 2: Tạo một thủ tụcn Bước 3: Biên dịch thủ tụcn Bước 4: Chạy thủ tục

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Cấu trúc cơ bản một thủ tục

n <statement>: một câu lệnh hoặc một nhóm câu lệnh nằm trong đoạn BEGIN … END

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Cấu trúc cơ bản một thủ tục

n Các thuộc tính tuỳ chọnLANGUAGE SQL: ngôn ngữ sử dụng trong thủ tục. Có thể

sử dụng LANGUAGE C hoặc LANGUAGE JAVARESULT SETS <n>: sử dụng nếu thủ tục trả về tập kết

quả <n>SPECIFIC my_unique_name: xác định tên duy nhất được

gán cho thủ tục. Thủ tục có thể nạp chồng (nhiều thủtục trùng tên với tham số khác nhau). Với SPECIFIC, cóthể gán một tên duy nhất cho tất cả các thủ tục này.

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Tham số

n Tất cả các tham số phải có khi gọi thủ tụcCALL proc (10, ?, 5)

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Tham số

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Chú thích

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Câu lệnh ghép

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Khai báo biến

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Phép gán

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Con trỏ (cursor): trỏ tới tập kết quả trả về

bởi SELECT

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Con trỏ (cursor):

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Câu lệnh điều khiển:

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Câu lệnh điều khiển (ví dụ CASE):CREATE PROCEDURE UPDATE_DEPT (IN p_workdept)LANGUAGE SQLBEGIN

DECLARE v_workdept CHAR(3);SET v_workdept = p_workdept;

CASE v_workdeptWHEN 'A00' THEN

UPDATE department SET deptname = 'D1';WHEN 'B01' THEN

UPDATE department SET deptname = 'D2';ELSE

UPDATE department SET deptname = 'D3';END CASE

END

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Câu lệnh điều khiển (ví dụ IF):CREATE PROCEDURE UPDATE_SAL (IN empNum CHAR(6), INOUT rating SMALLINT)LANGUAGE SQLBEGIN

IF rating = 1 THENUPDATE employee SET salary = salary * 1.10, bonus = 1000 WHERE empno = empNum;

ELSEIF rating = 2 THENUPDATE employee SET salary = salary * 1.05, bonus = 500 WHERE empno = empNum;

ELSEUPDATE employee SET salary = salary * 1.03, bonus = 0 WHERE empno = empNum;

END IF;END

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Câu lệnh điều khiển (ví dụ FOR):

CREATE PROCEDURE P()LANGUAGE SQLBEGIN ATOMIC

DECLARE fullname CHAR(40);

FOR v AS cur1 CURSOR FOR SELECT firstnme, midinit, lastname FROM employee

DO SET fullname = v.lastname || ',' || v.firstnme ||' ' || v.midinit;INSERT INTO tnames VALUES (fullname);

END FOR;END

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Câu lệnh điều khiển (ví dụ WHILE):

CREATE PROCEDURE sum_mn (IN p_start INT,IN p_end INT, OUT p_sum INT)

SPECIFIC sum_mnLANGUAGE SQLsmn: BEGINDECLARE v_temp INTEGER DEFAULT 0;DECLARE v_current INTEGER;SET v_current = p_start;WHILE (v_current <= p_end) DO

SET v_temp = v_temp + v_current;SET v_current = v_current + 1;

END WHILE;p_sum = v_current;END smn;

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Câu lệnh điều khiển (ví dụ LOOP):

CREATE PROCEDURE ITERATOR()LANGUAGE SQLBEGIN

DECLARE v_deptno CHAR(3); DECLARE v_deptname VARCHAR(29); DECLARE at_end INTEGER DEFAULT 0;DECLARE not_found CONDITION FOR SQLSTATE '02000';DECLARE c1 CURSOR FOR SELECT deptno, deptname FROM department ORDER BY deptno;DECLARE CONTINUE HANDLER FOR not_found SET at_end = 1;OPEN c1;

ins_loop: LOOPFETCH c1 INTO v_deptno, v_deptname; IF at_end = 1 THEN

LEAVE ins_loop;ELSEIF v_dept = 'D11' THEN

ITERATE ins_loop;END IF;INSERT INTO department (deptno, deptname) VALUES ('NEW', v_deptname);

END LOOP; CLOSE c1;

END

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Xử lý lỗi và điều kiện:

n Hai từ khoá SQLCODE và SQLSTATE đểxác định thành công hay không khi thực thi một câu lệnh SQL

n Hai từ khoá này phải khai báo tường minh trong thủ tục

DECLARE SQLCODE INTDECLARE SQLSTATE CHAR(5)

n Giá trị các biến được thiết lập sau mỗi thao tác SQL

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Xử lý lỗi và điều kiện:

n SQLCODE§ = 0, thành công§ > 0, thành công có cảnh báo§ < 0, không thành công§ = 100 không tìm thấy dữ liệu

n SQLSTATE§ Thành công: SQLSTATE ‘00000’§ Không thấy: SQLSTATE ‘02000’§ Cảnh báo: SQLSTATE ’01XXX’§ Trường hợp đặc biệt: các giá trị khác

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Xử lý điều kiện:

n Cần tạo trình xử lý điều kiện với những yếu tố:§ Điều kiện mà nó phải xử lý§ Nơi phục hồi lại quá trình thực thi (CONTINUE,

EXIT hoặc UNDO)§ Hành động được thi hành để xử lý điều kiện

n Các loại điều khiển (handler)§ CONTINUE§ EXIT§ UNDO

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Xử lý điều kiện:

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn SQL động:

n Toàn bộ câu lệnh không được xác định trước, chỉ được nhận biết trong chế độ RUN-TIME

n Được khuyến cáo dùng cho DDL để tránh sai sót xảy ra khi đóng gói

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn SQL động:

n Có thể được thực thi theo hai cách§ EXECUTE IMMEDIATE: ý tưởng để thực thi thủ

tục SQL đơn§ PREPARE + EXECUTE: ý tưởng để thực thi đa

thủ tục SQL

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn SQL động:

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Gọi thủ tục (từ CLI):

Thủ tục lưu trữ SQL PL

n STORED PROCEDUREn Gọi thủ tục (từ VB.NET):

Phát triển ứng dụng

n Các thủ tục SQL PLn Hàm nội tuyến (inline SQL PL), hàm

người dùng tự định nghĩa (UDF), xử lý sựkiện bẫy lỗi (triggers)

n SQL/XML và Xqueryn Phát triển với Ngôn ngữ lập trình

Hàm – bẫy lỗi

n Nội tuyến (inline SQL PL)n Là ngôn ngữ PL SQL được sử dụng độc

lập, không nằm trong một thủ tục nàon SQL nội tuyến chỉ hỗ trợ một số câu lệnh

(không phải tất cả câu lệnh PL SQL): DECLARE, SET, CASE, FOR, GOTO, IF, RETURN, SIGNAL, WHILE, ITERATE, LEAVE

n Ví dụ về hàm nội tuyến

Hàm – bẫy lỗi

n Hàm người dùng định nghĩa (UDFs)n Luôn trả lại một giá trịn Nhiều hàm được định nghĩa sẵn: n Có thể sử dụng các ngôn ngữ khác nhau:

SQL PL, C/C++, JAVA, CLR, OLEn Có hai loại hàm: hàm vô hướng (Sclara

Function) và hàm bảng (Table Function)

Hàm – bẫy lỗi

n Hàm người dùng định nghĩa (UDFs)n Hàm vô hướng

n Là hàm trả lại giá trị đơnn Không chứa các câu lệnh SQLn Nhiều hàm đã được định nghĩa sẵn (build-in

function)n Có thể định nghĩa thêm hàm mới (bằng

Command line hoặc Data Studio)

Hàm – bẫy lỗi

n Hàm người dùng định nghĩa (UDFs)n Hàm vô hướng

Hàm – bẫy lỗi

n Hàm người dùng định nghĩa (UDFs)n Hàm vô hướng

Hàm – bẫy lỗi

n Hàm người dùng định nghĩa (UDFs)n Hàm bảng

n Trả lại một bảng dữ liệu các hàngn Có thể gọi trong mệnh đề FROM của truy vấnn Có thể sử dụng các câu lệnh INSERT,

UPDATE, DELETEn Tương tự như VIEW nhưng có hiệu quả thực

hiện cao hơn

Hàm – bẫy lỗi

n Hàm người dùng định nghĩa (UDFs)n Hàm bảng

Hàm – bẫy lỗi

n Hàm người dùng định nghĩa (UDFs)n Hàm bảng

Hàm – bẫy lỗi

n Bẫy lỗi (Trigger)n Trigger là đối tượng CSDL được định

nghĩa trên một bảng và tự động thực hiện khi có một trong những thao tác INSERT, UPDATE, DELETE được thực hiện trên bảng đó

n Các thao tác là nguyên nhân để các Trigger được thực thi gọi là SQL triggering

Hàm – bẫy lỗi

n Bẫy lỗi (Trigger)n Có 3 loại bẫy lỗi

n Bẫy trước (before): § Được thực hiện trước khi một dòng được thay đổi§ Các thao tác thực hiện trong bẫy này không kích

hoạt những bẫy khác (không sử dụng các lệnh INSERT, UPDATE, DELETE trong bẫy)

n Bẫy sau (after):§ Được thực thi sau khi SQL triggering thực hiện

thành công§ Các thao tác thực hiện trong bẫy này kích hoạt

những bẫy khác (16 cấp) và hỗ trợ các lệnh INSERT, UPDATE, DELETE

Hàm – bẫy lỗi

n Bẫy lỗi (Trigger)n Có 3 loại bẫy lỗi

n Bẫy thay thế (instead of)§ Được định nghĩa trong View§ Thay thế cho các bẫy khác khi thực hiện cập nhật

dữ liệu trên View

Hàm – bẫy lỗi

n Bẫy lỗi (Trigger)n Bẫy trước:

Hàm – bẫy lỗi

n Bẫy lỗi (Trigger)n Bẫy trước:

Hàm – bẫy lỗi

n Bẫy lỗi (Trigger)n Bẫy sau: