- Startup open: Khởi động instance, mount và mở database trong các mode unrestricted mode Cho phép tất cả các user có thể truy nhập, restricted mode Hạn chế với DBA Trong quá trình khởi
Trang 14 Quản lý một Oracle Instance
4.1 Start up vμ shut down Oracle Server
Một CSDL Oracle sẽ không sẵn sàng cho tới khi quản trị viên CSDL khởi động Oracle instance và mở
một database Các bước khởi động:
- Khởi động (Start an instance)
- Kết nối với CSDL (Mount the database)
- Mở CSDL (Open the database)
Lệnh khởi động và tắt cơ sở dữ liệu bằng Sqldba (với Oracle 8 là svrmgrl)
Trong sqldba để khởi động database dùng lệnh startup để khởi động Có thể khởi động cơ sở dữ liệu
theo các quá trình tùy thuộc vào tham biên của lênh startup
- Startup nomount: Khởi động instance mà không mount database
- Startup mount: Khởi động instance và mount the database nhưng vẫn đóng nó
- Startup open: Khởi động instance, mount và mở database trong các mode unrestricted mode
(Cho phép tất cả các user có thể truy nhập), restricted mode (Hạn chế với DBA )
Trong quá trình khởi động, Oracle sử dụng các file tham số để lấy các thông số mặc định phục vụ cho
việc khởi tạo Cấp phát vùng nhớ SGA và khởi động các tiến trình nền
Quá trình shut down cũng diễn ra theo ba giai đoạn:
- Đóng CSDL (Close the database)
- Thu hồi kết nối tới CSDL (Dismount the database)
- Dừng (Shut down the database)
Để tắt cơ sở dữ liệu đang hoạt động dùng lệnh shutdown với các tham số normal, immediate, abort
- Shutdown normal: Trong quá trình thực hiện lệnh không có một kết nối mới nào cho phép,
database sẽ đợi cho đến khi các kết nối kết thúc, lần khởi động sau database không yêu cầu
bất cứ một thủ tục hồi phục nào
- Shutdown immediate: Trong quá trình thực hiện lệnh, các lệnh từ phía client đều bị kết thúc,
các kết nối tới database đều bị chấm dứt ngay tức khắc, tất các các thao tác và các xử lý chưa
commit đều bị rolled back
- Shutdown abort: Trong quá trình thực hiện lệnh, các lệnh từ phía client đều bị kết thúc, các
kết nối tới database đều bị chấm dứt ngay tức khắc, tất các các thao tác và các xử lý chưa
commit đều không bị rolled back
4.2 Tạo vμ lưu giữ cấu hình
Các bước tạo và lưu cấu hình:
- Kích hoạt Oracle Enterprise Manager Console
- Truy nhập vào với tên và mật khẩu quản trị hệ thống [sysman]/[manager]@[host]
- Chọn, kích hoạt Oracle Instance Manager trong Oracle Enterprise Manager Console
Trang 2- Chọn mục innitialization parameters (tham số khởi tạo) trong cây phân cấp Giá trị của tham
số sẽ hiện lên và có thể thay đổi được Lưu giữ lại các thay đổi
- Xác nhận các tham số thay đổi
• Tạo và sử dụng các file tham số
File tham số thường là file initsid.ora, đây là file có khuôn dạng text Mặc định, file này được đặt ở
thư mục có đường dẫn $ORACLE_HOME/dbs đối với hệ điều hành UNIX và đặt ở thư mục
%ORACLE_HOME%\database đối với hệ điều hành Windows NT Trong bản Oracle 8i trên Windows
NT, file này được đặt ở thư mục có đường dẫn %ORACLE_HOME%\admin\sid\pfile
Các thông số trong file này sẽ được đọc vào trong quá trình khởi động Oracle Enterprise Manager
Console hay Instance Manager cho phép DBA có thể xem và sửa các tham số khởi tạo
• Sử dụng các tham số
Các tham số trong file initsid.ora có thể ảnh hưởng tới hiệu quả sử dụng CSDL Các thông số
trong file tham số bao gồm:
• Kích thước của vùng System Global Area (SGA) để tối ưu hiệu suất
• Đặt mặc định cho database và instance
• Đặt các hạn chế đối với user hayprocess
• Đặt các hạn chế đối với tài nguyên CSDL
• Xác định các thuộc tính vật lý của database, như kích thước của block
• Chỉ ra các control files, archived log files, ALERT file, và trace file locations
4.3 Một số quy tắc đối với các tham số
• Các giá trị được chỉ ra theo khuôn dạng: keyword=giá trị
• Tất cả các tham số đều là tuỳ chọn (không bắt buộc)
• Server đều có giá trị mặc định đối với mỗi tham số Các giá trị này là tuỳ theo hệ điều hành và tuỳ
theo tham số
• Các tham số có thể được chỉ ra theo các thứ tự khác nhau
• Phần chú dẫn được bắt đầu bằng ký hiệu #
• Các tham số là ký tự được đặt trong dấu nháy kép
• Cũng có thể included các file bởi từ khoá IFILE
• Các giá trị là tập hợp được đặt trong dấu ngoặc đơn và được ngăn cách nhau bởi dấu phẩy
Một số tham só cơ bản:
BACKGROUND_DUMP_DEST Xác định nơi tiến trình nền đặt các file để ghi vào (LGWR,
DBWn, )
COMPATIBLE Phiên bản Server tương thích với instance, mặc định là 8.1.0
CONTROL_FILES Tên của các control files
Trang 3DB_BLOCK_BUFFERS Số lượng blocks cached trong SGA
DB_NAME Định danh CSDL từ 8 ký tự trở xuống Tham số này chỉ cần
thiết khi tạo mới một database
SHARED_POOL_SIZE Kích thước của shared pool tính theo đơn vị byte
USER_DUMP_DEST Nơi các file user debugging được tạo thay cho các tiến trình
người sử dụng
Các tham số có thể thay đổi:
IFILE Tên của file tham số được include vào file tham số hiện thời
Cho phép có thể được lồng tối đa là ba cấp
LOG_BUFFER Số byte được cấp phát cho redo log buffer trong SGA
MAX_DUMP_FILE_SIZE Kích thước tối đa của trace files, được xác định bằng số lượng
block của hệ điều hành
PROCESSES Số lượng tối đa các tiến trình hệ điều hành có thể kết nối với
instance
SQL_TRACE Cho phép hoặc không cho phép sử dụng tiện ích SQL trace
đối với mỗi user session
TIMED_STATISTICS Cho phép hoặc không cho phép định thời gian trong các
trace files và trong điều khiển màn hình
Các giai đoạn khởi động và tắt:
Trang 45 Tạo CSDL
5.1 Chuẩn bị
• Chuẩn bị hệ điều hành
Đảm bảo có đủ bộ nhớ cho SGA và thực hiện các tiến trình của Oracle một cách hiệu quả Đảm bảo
có đủ vùng không gian trên đĩa để lưu trữ CSDL, các file log, file điều khiển, các file dữ liệu
Cần có kế hoạch bố trí, phân bổ các file: cần ít nhất hai bản sao các file điều khiển, file log của CSDL
và được đặt ở hai nơi khác nhau
Bên cạnh đó, cần xem xét đến tính chất của dữ liệu lưu trữ để từ đó xác định được cấu trúc thích hợp
cho CSDL nhằm: giảm thiểu việc phân đoạn, giảm thiểu nội dung lưu trữ và vẫn phân tách được các
đối tượng
Cần quan tâm tới tổ chức các file hệ thống, làm sao cho vẫn có thể quản lý một cách dễ dàng khi thêm
thêm mới user, tạo mới CSDL,… Việc này có thể thực hiện được nhờ vào kiến trúc tối ưu mềm dẻo
(Optimal Flexible Architecture -OFA)
Cấu trúc OFA:
• ORACLE_BASE: thư mục gốc
• ORACLE_HOME thư mục con chứa phần mềm Oracle software và các dữ liệu
• Phân biệt giữa các product file, các file công cụ và các file cục bộ bằng cách tạo các thư mục
riêng
• Chuẩn bị các file tham số
Việc chẩn bị file tham số cần thiết khi tạo CSDL bằng tay
Đặt SID theo cú pháp: C:\set ORACLE_SID = U16
Sử dụng tiện ích ORADIM để tạo file serrvice, file mật khẩu
C:\>ORADIM -NEW -SID sid [-INTPWD internal_pwd][SRVC svrcname]
[MAXUSERS number][STARTMODE auto,manual][-PFILE filename]
Tạo mới file initSID.ora với các thông số giống như trong file init.ora Thay đổi các thông số trong file
này cho phù hợp
Ví dụ:
db_name = U10
instance_name = U10
service_names = U10
db_files = 1024
control_files =
("C:\ORA815\oradata\U10\control01.ctl",
"C:\ORA815\oradata\U10\control02.ctl")
db_file_multiblock_read_count = 8
db_block_buffers = 2048
shared_pool_size = 4194304
log_checkpoint_interval = 10000
log_checkpoint_timeout = 1800
processes = 50
Trang 5parallel_max_servers = 5
log_buffer = 32768
…
Trong các tham số đó, có ít nhất ba tham số cần được khai báo:
• db_name: Tên CSDL Tham số này cần thiết khi tạo mới CSDL với độ dài nhiều nhất 8 ký tự Tên
này phải phù hợp với tên sử dụng trong lệnh CREARE DATABASE
• control_files: danh sách các file điều khiển Danh sách này có ít nhất là 02 file
• b_block_buffers: xác định kích thước của database block Kích thước này sẽ không thể thay
đổi sau khi tạo CSDL
5.2 Tạo CSDL
Có thể tạo CSDL bằng công cụ Database Configuration Assistant hoặc có thể tạo CSDL trực tiếp
bằng tay, thông qua câu lệnh CREATE DATABASE
• Sử dụng Database Configuration Assistant
Database Configuration Assistant cho phép tạo CSDL theo các chế độ:
• Typical: tự động cài đặt một CSDL chuẩn và thiết đặt các file tham số khởi tạo mặc định
• Customer: cho phép người tạo có thể tạo CSDL tuỳ theo ý muốn Ví dụ: người tạo có thể thiết đặt
các file dữ liệu, file điều khiển và file log cho phù hợp Định lại kích thước các vùng tablespace,
extent Đặt các tham số bộ nhớ,
Database Configuration Assistant cho phép chọn môi trường điều hành CSDL
• Xử lý giao dịch trực tuyến (Online transaction processing - OLTP): áp dụng cho hệ thống xử lý
nhiều giao dịch đồng thời (lên đến hàng nghìn, hàng triệu giao dịch đồng thời)
• Hệ thống hỗ trợ quyết định (Decision Support System - DSS): áp dụng cho hệ thống xử lý nhiều
truy vấn phức tạp Cho phép lấy ra một lượng ít bản ghi từ các truy vấn phức tạp
• Tạo CSDL bằng lệnh Script của SQL
Thiết đặt môi trường hệ điều hành: các tham số hệ thống được xác định trong registry của Windows
NT Các tham số hệ thống được đặt trong HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
Các tham số bao gồm:
• ORACLE_HOME: thư mục cài đặt phần mềm ORACLE
• ORACLE_SID: tên của các Instance của Oracle chạy trên cùng một máy Các tên này cần được
đảm bảo là duy nhất
• ORACLE_BASE: không nhất thiết phải có Tham số này được đưa ra để tương thích với OFA
• ORA_NLS33: Là cần thiết khi tập hợp ký tự sử dụng trong CSDL không phải là US7ASCII
• PATH: đường dẫn tìm kiếm Bao gồm luôn cả ORACLE_HOME\BIN
Các bước tạo CSDL:
Connect bằng tên và mật khẩu của SYSDBA
Khởi động Instance (no MOUNT) Ví dụ: SQL>STARTUP NOMOUNT PFILE= initU16.ora
Tạo CSDL bằng lệnh CREATE DATABASE Ví dụ:
Trang 6CREATE DATABASE U16
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXLOGHISTORY 100
LOGFILE
GROUP 1 ('/DISK3/log1a.rdo',/DISK4/log1b.rdo’) SIZE 1 M,
GROUP 2 ('/DISK3/log2a.rdo',/DISK4/log2b.rdo’) SIZE 1 M
DATAFILE
'/DISK1/system01.dbf' size 50M autoextend on
CHARACTER SET WE8ISO8859P1;
Cú pháp lệnh CREATE DATABASE:
CREATE DATABASE [database]
[CONTROLFILE REUSE]
[LOGFILE [GROUP integer] filespec
[, [GROUP integer] filespec] ]
[MAXLOGFILES integer]
[MAXLOGMEMBERS integer]
[MAXLOGHISTORY integer]
[MAXDATAFILES integer]
[MAXINSTANCES integer]
[ARCHIVELOG|NOARCHIVELOG]
[CHARACTER SET charset]
[NATIONAL CHARACTER SET charset]
[DATAFILE filespec [autoextend_clause]
[, filespec [autoextend_clause] ]]
filespec :== ’filename’ [SIZE integer][K|M] [REUSE]
autoextend_clause :==
[AUTOEXTEND {OFF
|ON [NEXT integer[K|M]]
[MAXSIZE {UNLIMITED|integer[K|M]}]
}
]
- Database: Tên của CSDL được tạo
- CONTROLFILE REUSE: Tên file tham số đã tồn tại được sử dụng
- LOGFILE GROUP: Tên của log file được sử dụng
- MAXLOGFILES: số lượng tối đa các log file group cho CSDL
- MAXLOGMEMBERS: số lượng tối đa các log file member đối với một log file group
- MAXLOGHISTORY: số lượng tối đa các redo log trong một group
- DATAFILE filespec: tên file dữ liệu được sử dụng
- AUTOEXTEND: cho phép hoặc không cho phép mở rộng tự động các file dữ liệu
- MAXDATAFILES: kích thước khởi tạo của một d
- MAXINSTANCES: Số lượng lớn nhất các instance có thể đồng thời mount và open CSDL
Trang 7- ARCHIVELOG: Xác định ràng redo log cần để ở chế độ archive trước khi được dùng lại
- NOARCHIVELOG: Xác định ràng redo log cần được dùng lại mà không cần đặt chế độ
archive
- CHARACTER SET, NATIONAL CHARACTER SET: chuẩn ký tự mà CSDL sử dụng để lưu giữ
các dữ liệu
Oracle cung cấp sẵn file script để tạo CSDL đặt tại thư mục: ORACLE_HOME\RDBMS\ADMIN
Các bước tạo CSDL trong Window NT
Dùng Tool tạo script file, sau đó chạy script file này Các bước cụ thể như sau:
1 Chuẩn bị tên database, SID, block size, controll file, data file
2 Dùng Oradim tạo service
3 Tạo parameter file
4 Startup nomount
5 Tạo database (CREATE DATABASE)
6 Tạo tablespace
7 Tạo rollback segment
8 chạy script file
9 Config listener
10 Nối client-server
6 Tạo các khung nhìn từ điển dữ liệu vμ các package chuẩn
6.1 Từ điển dữ liệu
Từ điển dữ liệu là phần rất quan trọng của Oracle database, bao gồm một tập hợp các bảng, khung
nhìn (chỉ đọc) cung cấp các thông tin về những sự kết hợp trong CSDL
Từ điển dữ liệu được cập nhật bởi Oracle server mỗi khi có một câu lệnh định nghĩa dữ liệu (DDL) được
thực hiện và đôi khi là với cả các lệnh thao tác dữ liệu (DML)
Nội dung của từ điển dữ liệu:
• Định nghĩa tất cả các schema objects trong CSDL như(tables, views, indexes, clusters, synonyms,
sequences, procedures, functions, packages, triggers, and so on)
• Quy định vùng không gian cho các schema objects hiện thời được sử dụng
• Giá trị mặc định cho các cột
• Các thông tin về ràng buộc toàn vẹn
• Tên của các người sử dụng
• Privileges và roles được phân cho mỗi người sử dụng
• Các thông tin xác nhận, như quyền truy cập, cập nhật vào các schema objects của người dùng
• Các thông tin CSDL chung khác
Từ điển dữ liệu bao gồm hai phần
Trang 8• Bảng cơ sở - Base table: chứa các thông tin về những sự kết hợp trong CSDL Base table được tạo
tự động bởi Oracle server ngay sau khi tạo xong CSDL Các thông tin trong base table phần lớn
được lưu trữ ở dạng mã hoá Nên khó có thể truy cập trực tiếp được Ví dụ: base table INS$, chứa
thông tin về các chỉ số trong database
• Khung nhìn từ điển dữ liệu - Data dictionary views: Phần lớn các user lấy thông tin từ các khung
nhìn vì ở đây các thông tin đều không ở dạng mã hoá Các thông tin này là các thông tin tổng hợp
được lấy ra từ các base table
Sử dụng từ điển dữ liệu
• Chỉ có Oracle server mới có thể viết, thay đổi nội dung của từ điển dữ liệu Oracle server ghi lại
các thay đổi trong cấu trúc CSDL, xác nhận, gán quyền, cấu trúc dữ liệu
• Người sử dụng chỉ có quyền xem nội dung thông tin của từ điển dữ liệu thông qua câu lệnh SQL
Phân loại khung nhìn từ điển dữ liệu
• DBA: khung nhìn của người quản trị CSDL Đó là tất cả những gì trong các schemas Khung nhìn
này có tiếp đầu ngữ là dba_ Ví dụ: dba_objects; nó cho xem tất cả các khung nhìn tổng thể của
toàn bộ CSDL Chỉ những người sử dụng được gán mức quyền hệ thống mới có thể truy xuất vào
các khung nhìn có tiếp đầu ngữ DBA Ví du:
SELECT owner, object_name, object_type
FROM dba_objects;
• ALL: khung nhìn mở rộng của sử dụng; tức là những gì mà người sử dụng có thể truy cập Khung
nhìn này có tiếp đầu ngữ là all_ Ví dụ: all_objects; nó cho phép xem tất cả các thông tin về
schema object mà người sử dụng có quyền truy cập Ví dụ:
SELECT owner, object_name, object_type
FROM all_objects;
• USER: khung nhìn người sử dụng; tức là những gì trong schema của người sử dụng Khung nhìn
này có tiếp đầu ngữ là user_
SELECT object_name, object_type
FROM user_objects;
Một vài ví dụ về từ điển dữ liệu:
• General overview
• Schema objects
• Space allocation
- DBA_FREE_SPACE
• Database structure
- DBA_DATA_FILES
Dynamic performance view
Trang 9• Dynamic performance view hay còn gọi là bảng ảo Ghi lại tất cả các hoạt động (activity) của
CSDL hiện thời Các khung nhìn này có tiếp đầu ngữ là V_$, synonym V$
Các bảng cơ sở của từ điển dữ liệu được tạo tự động ngay sau khi CSDL được tạo Trong trường hợp
tạo CSDL bằng tay, ta vẫn có thể tạo được bằng cách chạy file scripts File này được đặt ở thư mục có
đường dẫn %ORACLE_HOME%\rdbms\admin Có 02 file scripts cần quan tâm:
• catalog.sql: tạo các khung nhìn và synonym từ điển dữ liệu chung
• catproc.sql: chạy các scripts cần thiết
6.2 Store Program
Store Program là cac hàm, thủ tục được tạo lập và lưu trữ ngay trong từ điển dữ liệu dưới dạng một
schema object Nó bao gồm một tập hợp các câu lệnh SQL
Sử dụng để truy cập và thao tác đối với dữ liệu trong CSDL thông qua các câu lệnh PL/SQL
Không chỉ chạy với các thủ tục viết bằng PL/SQL, quản trị viên CSDL còn có thể cài đặt Jserver
component cho phép Oracle server có thể thực hiện được các thủ tục viết bằng ngôn ngữ Java Để
thực hiện được việc này, trước tiên cần ánh xạ các tên thủ tục, tham số tương ứng và kiểu trả về sang
ngôn ngữ PL/SQL
Oracle server cho phép tích hợp cả với các thủ tục viết bằng ngôn ngữ C (được đặt trong các thư viện
chung dll)
Việc sử dụng cac Store Program mang lại một số lợi ích:
• Giảm thời gian biên dịch
• Có thể gọi các thủ tục viết bằng ngôn ngữ C/Java bằng lời gọi SQL, PL/SQL
• Đảm bảo việc bảo mật dữ liệu Người sử dụng không truy xuất trực tiếp vào dữ liệu mà thông qua
các thủ tục, hàm
• Các thủ tục là dùng chung, tức là nhiều người dùng chỉ cần dùng cùng một thủ tục để truy cập vào
CSDL
6.3 Package
Package là một tập hợp các biến, hằng, cursors, thủ tục, hàm, ngoại lệ được đặt cùng với nhau trong
trong CSDL tạo thành một đơn vị riêng biệt Người sử dụng hoặc các ứng dụng khác có thể gọi các
hàm, thủ tục trong package để thực hiện các công việc của mình
Một package được chia làm hai phần:
• Phần khai báo: để giao tiếp với bên ngoài, trong phần này có định nghĩa các kiểu, biến, hằng,
exception (ngoại lệ), cursors, và tên các hàm, thủ tục (có đầy đủ thám số và kiểu trả về) trong
package
• Phần thân: Bao gồm các hàm và thủ tục được cài đặt cụ thể theo ngôn ngữ PL/SQL Trong phần
này cũng có khi bao gồm cả các hàm, thủ tục chỉ thực hiện trong package
Các hàm trong package sau khi đã được ghi và biên dịch thì có thể được sử dụng chung cho cả các
ứng dụng khác Lợi điểm chính của package là sau lời gọi, toàn bộ package đều được nạp vào trong
bộ nhớ
Các ứng dụng khác chỉ có thể tham chiếu tới các biến, hàm khai báo trong phần package
specification Cú pháp:
Trang 10EXECUTE | EXEC <tên package>.<tên hàm>[tham số];
EXECUTE | EXEC <tên package>.<tên biến> := <giá trị>;
Oracle cung cấp một số package có sẵn để thực hiện các công việc đặc biệt
• DBMS_SESSION: để tạo các câu lệnh SQL Ví dụ: SET_ROLE, SET_SQL_TRACE
• DBMS_UTILITY: cung cấp nhiều thủ tục tiện ích Ví dụ: ANALYZE_SCHEMA,
COMPILE_SCHEMA, DB_VERSION
• DBMS_SPACE: cung cấp các thông tin có sẵn về vùng trống segment Ví dụ: UNUSED_SPACE,
FREE_BLOCKS
• DBMS_ROWID: cung cấp thông tin ROWID Ví dụ: ROWID_INFO
• DBMS_SHARED_POOL: Lưu và thôi lưu các package trong shared pool Ví dụ: KEEP, UNKEEP
• DBMS_LOB: cung cấp các thủ tục thao tác trên các kiểu dữ liệu BLOB và CLOB
6.4 Trigger
Trigger là các đoạn chương trình được thực hiện ngầm định bởi Oracle server mỗi khi có một sự kiện
xác định xảy ra Trigger chỉ thực hiện khi sự kiện tương ứng với nó xảy ra Các thủ tục trigger có thể
được viết bởi ngôn ngữ PL/SQL, Java hay C
Sử dụng trigger
• Điều khiển giá trị các cột một cách tự động
• Ngăn chặn các giao dịch không hợp lệ
• Đảm bảo bảo mật dữ liệu
• Đảm bảo toàn vẹn trong CSDL phân tán
• Đảm bảo các ràng buộc tương ứng với quy tắc tác nghiệp
• Đảm bảo tính trong suốt
Các phần của một trigger
• Sự kiện kích hoạt - triggering event: sự kiện database, sự kiện do người sử dụng, câu lệnh SQL
gây ra việc kích hoạt trigger
• Trạng thái trigger - trigger restriction: được xác định bởi một biến logic Trigger chỉ có thể xảy ra
nếu giá trị của nó là TRUE Trigger sẽ không thể thực hiện được nếu trạng thái của nó là FALSE
hay UNKNOWN
• Nội dung trigger - trigger action: tập hợp các câu lệnh sẽ được thực hiện khi trigger được kích hoạt
Ví dụ:
CREATE OR REPLACE TRIGGER log_logon
AFTER LOGON ON DATABASE
WHEN (USER = ’SYS’ OR USER LIKE ’OPS$%’)
BEGIN
INSERT INTO sys.event_log
VALUES (’Logon ’ || USER || ’ at ’
|| TO_CHAR(sysdate, ’YYYY-MM-DD HH24:MI:SS’));