- File dữ liệu data files :chứa đựng tất cả các dữ liệu của CSDL có cấu trúc logic nh các table,index,và chúng đợc lu giữ vật lý trong các file CSDL - File đăng nhập lại reedo log files
Trang 1
Oracle là gì ?
- ORACLE là một bộ phần mềm đợc cung cấp bởi công ty ORACLE , nó bao gồm một bộ xây dựng các ứng dụng và các sản phẩm cuối cùng cho uer (end_uer product)
- Oracle cung cấp một hệ quản trị CSDL mềm dẻo nó bao gồm CSDL Oracle , môi trờng cho việc thiết kế các cơ sở dữ liệu (Designer 2000) và các công cụ phát triển (Developer 2000)
- Hệ quản trị CSDL có tính an toàn , bảo mật cao,tính nhất quán và toàn vẹn dữ liệu ,cho phép các user truy nhập tới CSDL phân tán nh một khối thống nhất Vì vậy nó đợc đánh giá là u việt nhất hiện nay
Kiến trúc cơ bản của oracle
Để thiết kế và quản lý CSDL của ORACLE đợc tốt chúng ta cần phải hiểu đợc kiến trúc cơ bản của ORACLE
-Sơ đồ kiến trúc cơ bản ORACLE nh sau:
Trang 2Database Buffer Cache
Server
User
Files
ARCH
SGA
Buffer
Parameter Files Contro l Files
Offline Storage
CKPT
Database Buffer Cache
Mét CSDL cña ORACLE th× bao gåm c¸c file ®iªu khiÓn (Control files),c¸c file d÷ liÖu (data files) vµ c¸c file ®¨ng nhËp l¹i (Redo log files)
DATABASE ORACLE
Data Files Redo Log Files Control Files
Trang 3- File dữ liệu (data files) :chứa đựng tất cả các dữ liệu của CSDL có cấu trúc logic nh các table,index,và chúng đợc lu giữ vật lý trong các file CSDL
- File đăng nhập lại (reedo log files ):dùng cho các xử lý đăng nhập lại.Nó ghi lại tất cả những thay đổi đợc tạo cho CSDL và chứa các thông tin cho việc khôi phục
- Các file điều khiển (control files ) : ghi lại cấu trúc vật lý của CSDL
- File biến (parameter ) :chứa các tham số cho việc thiết lạp môi trờng làm việc , xác định các đặc tính của các thể hiện ,thờng đợc định danh là
Init.Ora
*Mỗi khi ORACLE bắt đầu SGA đợc định vị và các tiến trình nền đợc bắt
đầu Sự kết hợp của một vùng nhớ đệm và một tiến trình nền đợc gọi là một thể hiện (Instance) của ORACLE
- Các tiến trình nền tơng ứng với các công việc khác nhau phục vụ cho tất cả mọi ngời dùng CSDL
Vd: Tiến trình DBWR đợc dùng để ghi lại đĩa những dữ liệu từ vùng nhớ
đệm CSDL (Database buffer cache)
-Các tiến trình phục vụ (server processes) : khi một user chạy một ứng dụng tơng ứng hoặc một hỏi đáp dữ liệu thì các tiến trình của ngời dùng đợc đa ra ORACLE sẽ đa ra một tiến trình phục vụ để trao đổi yêu cầu với các tiến trình của ngời sử dụng
Các tiến trình phục vụ sau khi thi hành các yêu cầu của ngời sử dụngvà đa trở lại kết quả cho user
+Các thông báo của SQL sẽ đợc thi hành bởi các server process ,các tiến trình phục vụ sẽ đọc khối dữ liệu từ đĩa vào vùng nhớ dữ liệu đợc dùng chung của SGA (vùng Shared pool).Sau đó đa ra kết quả từ các thông báo SQL.Các tiến trình phục vụ có ba giai đoạn:
• Giai đoạn phân tích:kiểm tra cú pháp,kiểm tra quyền truy nhập,đờng dẫn tìm kiếm có hiệu quả nhất rồi xác định cây phân tích…Cây phân tích sẽ
đợc cất giữ trong vùng Shared SQL Area (Thuộc một phần của Shared pool trong SGA)
vùng này chứa các thông tin cho việc thi hành các thông báo SQL
User processes Server processes
Server processes
SGA
Trang 4+Giai đoạn thi hành các thông báo:
gắn cây phân tích tới vùng đệm dữ liệu
+Giai đoạn nhận lại:nhận các dl từ các thông báo của server
*Từ đó ta có thể kết luận về hai kiểu tiến trình (Background process và server processes):chúng đều là những tiến trình nhng chúng khác nhau trong phạm
vi tiến trình của mình.Các tiến trình phục vụ trao đổi các yêu cầu từ
user,còn background processes thi hành những công việc của một instance
*Giới thiệu về SGA(System global area :Vùng bộ nhớ hệ thống): là một tập hợp các vùng bộ nhớ đệm dùng chung các tiến trình khác nhau có một vùng
đệm riêng và SGA đợc định vị bởi ORACLE cho một instance
Các vùng đệm trong SGA:
SGA Shared pool Database Buffer
Server proceses
SGA
Server processes User process
Trang 5• Shared spool: (nh đã nói ở phần server processes)
ngoài ra:kích cỡ của shared pool có thể đợc xác định bởi biến Shared -pool-size
• Database buffer cache (vùng nhớ đệm cơ sở dữ liệu) :
Trứơc khi dl có thể đợc truy nhập một tiến trình phục vụ sẽ đặt dữ liệu vào trong vùng đệm Database buffer cache,vùng đệm này sẽ
đợc cát giữ những bản sao dữ liệu đọc từ đĩa bởi một tiến trình phục vụ
Số block trong vùng này đợc xác định bởi biến DB_Block_buffer (kích thớc của block đợc xác định bởi biến DB_block_size)
• Redo log buffer (Vùng đăng nhập lại) :
Vùng này chứa các thông tin về những thay đổi tới CSDL
.ORACLE sẽ ghi lại những thay đổi tới CSDL trong vùng này tới các Redo log file.Kích cỡ của vùng này đợc xác định bởi biến Log-buffer
*Các tiến trình nền (Backgound processes)
- DBWR: các khối dữ liệu đã đợc sửa đổi trong vùng Database buffer cache
đợc viết trở lại đĩa bởi 1 tiến trình nền DBWR Tiến trình này quản lý vùng Database buffer.Cho nên các tiến trình của user luôn luôn có thể tìm đợc vùng đệm rỗi
-Logwriter ( LGWR): ghi lại tất cả những thay đổi tới CSDL trong vùng Redo log buffer tới đĩa bởi một tiến trình nền có tên LGWR,một tiến trình nền khác là ARCH(Achiver) có thể đợc bắt đầu để lu giữ các thông tin đăng nhập lại trên 1 thiết bị cất giữ đã định trớc (tape,disk)dùng cho việc khôi phục bị thất bại
LGWR viết Redo log buffer vào Redo log files khi:
+ khi user đa ra chỉ thị commit
+ vùng redo log buffer vợt quá 1/3 kích cỡ cho phép của vùng
+ DBWR cần để xoá sạch các khối đệm cho 1 điểm kiểm tra hoặc quá thời gian xuất hiện
- Process Monitor (PMON): thi hành những tiến trình khôi phục khi 1 tiến trình của user bị thất bại
- System monitor (SMON): tự động thi hành việc khôi phục instance
+tái tạo lại kiểu không gian bảng (table space)
- Recover process(RECO):giải quyết những thất bại liên quan tới 1 tiến trình
đợc phân bố
- Checkpoint (CKPT): thay LGWR viết các thông tin dữ liệu từ vùng log buffer tới các header của các file dl và file điều khiển
- LCKn (Lock process): Xử lý tình trạng bế tắc giữa các instance trong hệ tiến trình song song
Trang 6Quản lý việc cất giữ dữ liệu của oracle
- Oracle định vị không gian cho dữ liệu trong CSDL theo :
đon vị nhỏ nhất là các block tiếp đến là extent,segment,tablespace
-
File
* Khối dữ liệu (data block)
-Khối dữ liệu của Oracle là khối nhỏ nhất của công việc I/O nó có thể gồm nhiều khối file vật lý đợc định vị từ file CSDL
-Các khối CSDL đợc gọi là các khối logic.Nó tơng ứngvới một hoặc 0nhiều khối vật lý trên đĩa
- Kích cỡ 1 khối CSDL ORACLE phải đợc xác định trớc khi tạo CSDL và nó
là hằng số trong tất cả các các file của CSDL.Khi CSDL đã đợc thì kích cỡ của nó không thể đợc thay đổi ngoài trừ việc tạo lại CSDL
Kích cỡ thờng 2-:-4 KB đợc xác định bởi biến DB_block_size
- Thành phần của một khối:
TABLESPACE
SEGMENT 100KB
BLOCKS
EXTENT 40KB
EXTENT 40KB EXTENT 60KB EXTENT 60KB
BLOCKS
Trang 7+Header: chứa những thông tin chung trong khối nh địa chỉ khối,kiểu segment…
+Table directory:bao gồm các thông tin về các bảng trong cluster và
đợc sử dụng với các segment hợp lại
+Row data:cất giữ dữ liệu của các table hoặc index
Header Table directory Row directory Freespace Row data
+Row directory:bao gồm các thông tin về các hàng thực sự trong khối +Free space:bao gồm tập các byte trong khối mà còn có sẵn cho việc update,insert,delete,việc điều khiển free space cho việc update,insert,delete trong CSDL bằng cách thay đổi giá trị của các biến:
PCTfree,PCTused,Initrsns,Matrans
+biến PCTfree: xác định tỷ lệ % của khối để sử dụng việc update các hàng đã tồn tại trong khối
Vd:PCT free=20 tức là 20% của khối dùng cho việc update khi tỷ lệ của khối còn rỗi >% của PCTfree thì việc chèn mới cho phép
+Pctused: cho phép 1 khối đợc xem xét lại cho việc chèn các hàng mới,các hàng mới sẽ đợc chèn khi tỷ lệ % của khối đang đợc sử dụng nhỏ hơn giá trị Pctused,giá trị ngầm định = 40
Vd: Pctused =40 thì sau khi không gian đã đợc sử dụng <40% thì hàng mới
có thể đợc insert vào khối này
- Để xác định các transaction đang hoạt động trên 1 khối bởi việc sử dụng 2 biến:
+INITRANS:là số các transaction đa vào lúc bắt đầu có thể xẩy ra
đồng thời đợc định vị trong header của mỗi khối
(ngầmđịnh=1,min=1,max=255)
+Maxtrans:là số lớn nhất các tiến trình đồng thời của khối đợc cung cấp (mặc định là 255,min=1,max=255)
*EXTENT
Là 1 tập các khối kề cận đợc định vị tới 1 segment.Khi 1 đối tợng của CSDL đợc hình thành thì không gian đợc định vị cho nó(các đối tợng có thể là:table,cluster,index,roll back segment,table space)
Trang 8Mỗi segment cần có ít nhất là 1 extent,riêng đoạn khôi phục cần có ít nhất là
2 extent
- Các extent đầu tiên gọi là Initial extent
Các extent tiếp theo gọi là incrmental extent
• Một đối tợng sẽ đợc cấp 1 extent mới nếu tất cả các extent đã định
vị hiện tại của nó đã đợc sử dụng
• Các extent có thể đợc định vị cho đối tợng khác khi segment dùng
nó bị huỷ bỏ hoặc nó thuộc phần cắt bớt đi của segment
-Điều chỉnh extent tới các segment bởi các biến cất giữ sau:
+Initial:xác định kích cỡ của extent đầu tiên đợc định vị cho segment ngầm định là 5 data block
+ Next:xác định kích cỡ của các extent tiếp theo ngầm định là 5 blocks + Maxextents: tổng số lớn nhất các extent cấp cho segment ngầm định là 99
+ Minextents:tổng số extent đợc cấp cho segment khi segment đợc tạo ngầm định là 1
+ PCTỉncease: tỷ lệ % mà mỗi extent tiếp theo đợc phát triển có thể vợt quá extent cuối cùng ngầm định là 50%
+ Optimal: kích cỡ tối u cho 1 đoạn khôi phục mgầm định la null
+Free lits: số danh sách của các khối rỗi cho insert vào bảng ngầm định là 1
*SEMENT : là tập các extent (1 hoặc nhiều) mà chứa đựng tất cả dữ liệu
của 1 kiểu dữ liệu riêng
-Các kiểu segment:
+đoạn dữ liệu (data segment):tập tất cả cá extent mà chúng cất giữ tất cả dữ liệu cho một bảng hoặc 1 cluster
+Index segment:chứa tất cả các dữ liệu chỉ số cho việc tìm kiếm đợc tối u,nhanh chóng
+Temporary Segment:tập các exyent cất giữ các giữ liệu thuộc vào các bảng tạm thời đợc tạo trong suốt sự thi hành 1 sắp xếp
+Roll back segment:tập các extent mà chúng cất giữ các giữ liệu khôi phục cho việc khôi phục lại…
+Boostrap segment:là 1 extent chứa các định nghĩa về từ điển cho các bảng từ điển và đợc nạp vào khi CSDL đợc mở
TABLESPACE
-Dữ liệu trong một cơ sở dữ liệu của Oracle dợc cất giữ logic trên các
tablespace và đợc cất giữ vật lý trong các file cơ sở dữ liệu.Một cơ sở dữ liệu của Oracle có thể bao gồm một hoặc nhiều Tablespace
+ Mỗi một tablespace có một chức năng riêng Tablespace hệ thống dành cho các hoạt đọng cửa hệ thống , Tablespace user dành cho các hoạt động của user
Trang 9MéT Sè LÖNH SQL §Ó HIÓN THÞ TH¤NG TIN VÒ VIÖC CÊT GI÷
- LiÖt kª tÊt c¶ c¸c cét trong tablespace cña ngêi dïng (ser_tablespace) : SQL> Desc dba_tablespaces;
-LiÖt kª c¸c th«ng tin vÒ mçi tablespace
SQL> Select * from Dba_tablespaces;
-HiÖn c¸c Extent cña kh«ng gian rçi trong mçi tablespace :
SQL> Select * from Dba_free_space;
-HiÖn c¸c th«ng tin chung vÒ c¸c file d÷ liÖu thuéc vÒ mçi tablespace : SQL>Select file_name, tablespace_name, bytes from Dba_data_files;
- HiÖn nh÷ng th«ng tin chung vÒ tÊt c¶ c¸c segment trong CSDL :
SQL> Select owner,segment_name,extents,max_extents
from Dba_segments;
+Adiminister the ORACLE database 1 +Oracle7 for application Developers