Chào mừng các bạn
-((`(`vŽ)--*** MasterSpy *** --(`vŽ)`))- - Kiến trúc Oracle
ღLONELYღ
  Home
  => Cách tạo một trang web cho riêng mình !
  => Một số địa chỉ trang web hay dành cho bạn, ....cho tôi !
  => 5 bước cơ bản để diệt tận gốc Spyware
  => 10 điều “lính mới” nên biết
  => 10 bước để lập kế hoạch cho nghề nghiệp tương lai của bạn
  => 15 LỜI KHUYÊN HỌC TIẾNG ANH
  => 21 kho lưu dữ liệu miễn phí trên Internet
  => PHƯƠNG PHÁP XỬ LÝ LOGIC VỊ TỪ
  => 50 cuốn sách văn học cần đọc
  => Những bài học từ Adam Khoo
  => Dùng Admodify.net để quản trị và phục hồi Exchange 2003
  => Cuộc đời của Albert Einstein
  => Cảnh giác với hacker và keylogger!
  => Phần mềm miễn phí giúp bảo vệ computer khi online
  => Học thi - cần ăn uống hợp lý
  => Hacker “oánh” mỗi PC chỉ mất 39 giây
  => Xác định nguyên nhân máy tính tự khởi động !
  => Diệt virus Autorun
  => Bấm dây mạng !
  => Bảo vệ mắt khi sử dụng máy tính !
  => Blog ra đời như thế nào?
  => Bài tập Pascal kiểu bản ghi !
  => Hướng dẫn ôn tập lập trình Pascal căn bản !
  => Cách Diệt Virus
  => Cách gỡ bỏ thủ công Symantec Antivirus an toàn (Phần I)
  => Tổng hợp các lệnh ngoài DOS
  => Cài HIREN BOOTCD vào ổ cứng để cứu hộ
  => Cài windows media player 11 ( không cần active window)
  => Cấu hình mạng ADSL cho người dùng tại nhà
  => Thiết Lập Sevice trong windows XP (giúp máy chạy nhanh hơn)
  => Giới Thiệu Centos
  => Chẩn đoán lỗi của màn hình !
  => Chọn DNS truy cập mạng !
  => Kinh nghiệm phòng chống virus, spyware
  => Trắc nghiệm nghiệp vụ kế toán bằng tiếng Anh !
  => Hướng dẫn chụp hình bằng webcam
  => Tổng Hợp Code Dùng Trong Việc Tạo BLOG
  => Công dụng của các dịch vụ trong Windows
  => Sử dụng Popcap game mãi mãi !
  => Cử nhân CNTT không làm CNTT
  => Tìm hiểu DNS.Các bước thiết lập khi mới đăng ký tên miền
  => Làm DNS server online
  => Nội dung định nghĩa về vật chất của Lê Nin
  => Đọc và ... suy nghĩ !
  => Đôi điều về bảo mật hệ thống mạng trong công ty!
  => Khắc phục lỗi 999 Error của Yahoo
  => Chuyển dữ liệu của ổ C từ FAT32 thành NTFS
  => Gỡ password CMOS bằng cách nào?
  => Phần I: Cơ bản về lỗi "màn hình xanh" trong Windows
  => Tổng quan về Group Policy - từ đơn giản đến phức tạp !
  => Gửi nhiều file qua Yahoo Mail
  => Từ XP cài Hacao Linux 2.16 Pro (file ISO) vào đĩa cứng (LiveCD)
  => Chịu thuế và không chịu thuế
  => Hội thảo qua mạng với NetMeeting
  => HOST Free
  => Hướng dẫn download trên megaupload
  => KGB nén File từ 450MB còn 1.43MB rất tiện chia sẻ file trên mạng
  => Khắc phục rớt mạng liên tục
  => Kiến trúc Oracle
  => Thành công trên giảng đường đại học
  => Kỹ thuật Photoshop cơ bản !
  => Kinh nghiệm học tiếng ANH
  => KInh nghiệm học TOÁN CAO CẤP
  => Đôi điều về quá trình làm luận văn (Phần 2)
  => Làm theme cho Blog 360
  => Chia sẻ những điều học được từ cách làm việc theo nhóm
  => Vạch kế hoạch cho tương lai
  => Các Lệnh Cơ Bản trong LINUX
  => Lịch sử các nước ĐẾ QUỐC
  => Lịch sử Việt Nam
  => Links những trang web hay
  => Tạo mail server online bằng IP Động
  => Tự làm giao diện cho Yahoo Mash!
  => Mấy điểm cần tránh
  => Hỏi về IPHONE
  => Máy tính không khởi động từ ổ đĩa cứng!...?
  => MIÊU TẢ SẢN PHẨM MÁY IN hp1320
  => Phá Deep Freeze - Cướp lấy password!!!
  => Những "tuyệt chiêu" chọn mua laptop cũ
  => NHỮNG NGUYÊN TẮC CƠ BẢN CỦA BÁO CHÍ
  => Tìm hiểu nhân của hệ điều hành Linux
  => Sửa lỗi NTLDR is missing
  => Ổ cứng chóng hỏng vì... điều hòa nhiệt độ
  => Những phím tắt thông dụng trong Photoshop 7.0
  => Phím tắt trong WORDS
  => Bí mật của PHỤ NỮ
  => Hướng dẫn post hình lên mạng, và 1 số website để upload hình
  => Chương trình quản lý số điện thoại !
  => Quản lý các mạng Windows dùng script - Phần 2: Hoàn chỉnh script -
  => Cấu hình cho máy in N2500
  => Xóa nick của mình trong Friend List của người khác
  => Rollback Rx Pro:
  => User và pass của một số router
  => Giải pháp sao lưu trực tuyến miễn phí (Phần cuối)
  => Vài điều về Scanner
  => Chọn hệ điều hành của bạn
  => Làm server online tận dụng đường truyền ADSL
  => Thuật toán - Cấu trúc dữ liệu
  => So sánh Oracle và SQL Server ?
  => Cấu hình các công nghệ bảo vệ mạng Windows XP SP2 trên một máy tính
  => Tổng quan về tiết kiệm điện khi sử dụng máy tính !
  => Phần IV: Xử lý sự cố phần cứng
  => CÁC VẤN ĐỀ VỀ SỨC KHỎE PHỤ NỮ
  => Sử dụng phím tắt với Internet Explorer 7
  => SỰ PHÁT TRIỂN CỦA SINH VẬT
  => Nguồn gốc máng cỏ giáng sinh
  => Sưu tầm câu đố !
  => SVCHOST
  => Phòng chống virus cho mạng máy tính doanh nghiệp: kinh nghiệm thực tế
  => Các lệnh căn bản trong ngôn ngữ html
  => Sức mạnh của card đồ họa !
  => Cách tải Nhạc nét
  => Triết học và tâm sự của các nhà giáo
  => Phát triển chiều cao
  => Tăng tốc toàn bộ máy tính bằng tay
  => Tăng tốc WinXP
  => Chống mất cắp cho laptop với Laptop Alarm
  => Tạo file ghost!
  => Tạo một CSS layout từ một bản thiết kế (Phần 1 đến 8)
  => Tạo nick ảo trong Yahoo Messenger
  => Tết Đoan Ngọ bắt đầu từ giữa trưa
  => Thói quen tốt: Nghĩ vậy mà không phải vậy
  => Thomas Edison & những phát minh vĩ đại -
  => Windows Vista: các thủ thuật nhỏ khi sử dụng
  => Thủ thuật Blog 360
  => Thủ thuật Internet Explorer 7
  => Thủ thuật tăng tốc cho Windows
  => Thủ thuật Visual basic
  => Thủ thuật Yahoo! Messenger
  => Yahoo Messenger
  => Khám phá mạng xã hội Yahoo! Mash
  => Mẹo tìm kiếm
  => Tìm kiếm trong Excel
  => Tóc hợp khuôn mặt
  => Tokyo - Một chuyến đi
  => Mười quy luật then chốt về Bảo mật
  => Tổng hợp tất cả các kỹ thuật vượt tường lửa
  => Trang trí USB
  => Thuật toán - Cấu trúc dữ liệu CRC (Cyclic Redundancy Check)
  => Các Tuyệt kỹ khiến phái nữ phải ngã lòng
  => CÁCH UP ẢNH QUA HOST TẠI DIỄN ĐÀN
  => Quản lý danh sách bạn chat trong Yahoo! Messenger
  => Error Doctor 2007
  => TuneUp Utilities® 2007
  => Bộ gõ tiếng Việt: Unikey
  => Hướng dẫn viết bài
  => Tường lửa mới trong Windows Vista và Windows Server Longhorn
  => Web 2.0 không chỉ là công nghệ
  => Các website hữu ích về du học bậc sau đại học tại Hoa Kỳ
  => Wi-fi và an toàn thông tin
  => Thuật toán - Cấu trúc dữ liệu So khớp chuỗi với các ký tự wildcard
  => Xóa địa chỉ và homepage
  => USB không cho ghi
  => Yêu cầu của Quản trị mạng
  => Cách Add Feed trong Blog 360
  => Cách tạo theme trong suốt
  => Đề cương KT-Chính Trị
  Contact
  Guestbook
  Story
  Kiếm tiền thật dễ dàng

Biển xanh ... cát trắng

 

 

Kiến trúc Oracle

Oracle Server được chia thành 2 thành phần chính: Oracle Database và Oracle Instance. Trong từng thành phần của Oracle, lại được chia thành các thành phần nhỏ hơn, mỗi một thành phần này đều được quản lý bằng Auto hoặc Manually. Các bạn có thể down file Orace Server Architecture (đính kèm dưới) để có cái nhìn tổng quan hơn. Hy vọng rằng, cùng với ngôn ngữ C, chúng ta sẽ có thêm kiến thức về một trong những hệ quản trị CSDL lớn là Oracle. Tôi rất vui lòng được trao đổi về những kiến thức đã được học với mọi người.

Note: Trong Oracle, Pro C là thành phần không thể thiếu đối với Programmer, ngoài PL/SL, Pro C còn được biết đến như một ngôn ngữ điều khiển rất mạnh.
Tôi xin được lấy luôn cái thread này làm chủ đề cho bài post ngày hôm nay, vì trong giới hạn, sẽ không thể post nguyên một chương, do đó, tôi sẽ chia thành từng phần nhỏ.

Chương I/ Tổng quan về các thành phần chính.
Kiến trúc Oracle bao gồm một số các thành phần chính như sau:

*Oracle Server: Là tập hợp các file, tiến trình (processes) và cấu trúc bộ nhớ trong Oracle Server.
- Chú ý:Đối với phần cấu trúc bộ nhớ, tôi chắc sẽ có một vài người đặt câu hỏi Oracle là một soft - production, tại sao lại liên quan đến cấu trúc bộ nhớ, xin thưa, bộ nhớ và quản lý bộ nhớ trong Oracle liên quan tới rất nhiều chương, đối với Logical components là những thiết lập parameter sao cho phù hợp, đối với Physical Memory, chính là Virtual Memory của bộ nhớ thực trong máy tính; riêng đối với phần Virtual Memory, Fund I chỉ dừng lại ở mức khái niệm, các cách thức tối ưu hóa bộ nhớ để Oracle chạy ổn định ra sao, sẽ được bàn đến trong môn học Tuning)

Tuy nhiên, không phải tất cả các thành phần này sẽ được sử dụng khi thực hiện một câu lệnh SQL, một số trong số chúng được dùng để hỗ trợ và cải thiện phần thực thi của database, để đảm bảo rằng database sẽ được phục hồi (recover) tại một thời điểm xảy ra sự kiện nào đó gây ra lỗi cho phần mềm hoặc phần cứng (Lấy ví dụ: System Crash là một nguyên nhân dẫn đến tình trạng phục hồi database).

Oracle Server bao gồm 2 thành phần chính là: Oracle Instance và Oracle Database.

* Oracle Instance: Là một tập hợp các tiến trình ngầm và cấu trúc bộ nhớ. Instance bắt buộc phải được khởi động để truy cập vào dữ liệu trong cơ sở dữ liệu (Database). Mỗi một thời gian Instance được khởi động, một SGA - System Global Area được chỉ định và các tiến trình ngầm của Oracle cũng sẽ được khởi động. Các tiến trình ngầm thực thi một số các hàm mà các hàm này có chức năng thay mặt cho các tiến trình thực hiện. Chúng thực thi các hàm này một cách chặt chẽ, mặt khác, lại được Oracle quản lý bằng nhiều chương trình khác nhau đối với một user. Các tiến trình ngầm thực thi việc vào ra Input/Output (I/O) và giám sát các tiến trình khác của Oracle nhằm tối ưu hóa các hoạt động.

*Oracle Database: Một Oracle database là một tập hợp các file hệ thống được hiểu như các file Database mà cung cấp các thông tin về những thiết bị lưu trữ vật lý và thông tin về Database. Những file Database được sử dụng để đảm bảo rằng dữ liệu được quản lý một cách chắc chắn và có thể được phục hồi nếu có trường hợp Error xảy ra của một Instance.

*Một số file chính khác: Ko phải là những file Database, được dùng để thiết lập các Instance, xác nhận quyền hạn cho user và phục hồi dữ liệu trong trường hợp thiết bị lưu trữ bị failed. (Xem mô hình - diagram của Oracle Server).

*Các tiến trình dành cho Server và User: Các tiến trình này được đòi hỏi như những tiến trình chạy chính khi một câu lệnh SQL được thực thi, tuy nhiên, các tiến trình khác cũng có thể giúp cho Server hoàn thành việc thực hiện một câu lệnh SQL.

*Một số các tiến trình khác: Có nhiều tiến trình tồn tại và được sử dụng bởi những tính năng khác nhau, ví dụ: Advanced Queing, Real Application Cluster, Shared Server, Advanced Replication...

Trên đây là mô hình chung cho Oracle, từ đây trở đi, một số thuật ngữ tôi sẽ để nguyên, không chuyển sang tiếng Việt, giúp cho mọi người không bị loãng.
Bài tiếp theo, tôi sẽ giới thiệu về Oracle Database, các thành phần của Oralce Database..
Mục đích chung của một Database là để lưu trữ và lấy các thông tin liên quan. Một Oracle Database là một tập hợp của cấu trúc vật lý - Physical và cấu trúc logic - Logical. Cấu trúc Physical của một Database là một tập hợp các file hệ thống trong một Database. Một Oralce Database bao gồm 3 loại file chính sau:
- Data Files: Bao gồm những dữ liệu thực, hiện có trong Database
- Online Redo Log Files: Bao gồm các bản ghi việc thay đổi Database (Có thể phục hồi lại data - dữ liệu trong tình huống bị lỗi - failure)
- Control Files: Bao gồm các thông tin cần thiết dùng để bảo trì và quản lý, xác nhận tính toàn vẹn của Database.

Một số các loại cấu trúc file quan trọng khác:
- Parameter Files: Được dùng để xác định các đặc điểm của một Oracle Instance. Lấy ví dụ: Nó bao gồm các tham số (parameters) xác định kích cỡ cấu trúc bộ nhớ trong một SGA - System Global Area.
- Password Files: Xác nhận quyền hạn của users khi khởi động và tắt một Oracle Instance.
- Archived Redo Log Files: Là những bản copy của Redo Log Files, rất cần thiết dành cho việc phục hồi data khi thiết bị lỗi - failure.

Riêng đối với Oralce Database, từng thành phần kể cả các thành phần nằm ngoài sẽ được quản lý riêng biệt, và kiến thức dành cho việc quản lý này sẽ chia thành từng chương cho mỗi một thành phần.
3 thành phần thuộc cấu trúc vật lý của Oracle là:
- Control Files
- Data Files
- Online Redo Log Files

Với 3 thành phần này là những chương riêng biệt quản lý chúng.
Oracle Instance là một tập hợp của các cấu trúc thành phần SGA (System Global Area) và các tiến trình ngầm (Background Processes) được sử dụng để quản lý một Database. Một Instance được xác định bởi các phương thức chỉ định tới hệ điều hành. Instance có thể mở và sử dụng một database tại một thời điểm
__________________
Bây giờ, chúng ta sẽ đi tìm hiểu thêm về Memory Structure
Memory Stucture bao gồm 2 vùng nhớ:
- System Global Area (SGA): Được chỉ định khi một Instance được khởi động, và là thành phần cơ bản của một Oralce Instance
- Program Global Area (PGA): Được chỉ định khi một Server Process được khởi động (PGA chúng ta sẽ bàn đến sau)
* System Global Area là một tập hợp các cấu trúc bộ nhớ - memory sau:
- Shared Pool
- Database Buffer Cache
- Redo Log Buffer
Và có thêm 2 cấu trúc memory nằm ngoài. nhưng cũng được cấu hình ùng với SGA :
- Large Pool
- Java Pool.

SGA còn được gọi là Shared Global Area, nó được sử dụng để lưu trữ thông tin về Database và chia sẻ bởi các tiến trình Database khác, nó bao gồm thông tin về dữ liệu - data, quản lý - control của Oracle Server và được chỉ định trong bộ nhớ ảo - virtual memory của máy tính sử dụng Oracle.

Để có thể xem được phần chỉ định dành cho SGA là bao nhiêu, các bạn có thể dùng câu lệnh sau:

SQL> Show SGA;

*Dynamic SGA: Bắt đầu từ Oracle 9i, khái niệm Dynamic SGA là một khái niệm cho phép thực thi cơ sở hạ tầng thay đổi việc thiết lập SGA mà không cần phải Shutdown Instance.

* Size (kích cỡ) của SGA được xác định bởi các tham số đầu vào (Initial Parameters) như sau:
- DB_CACHE_SIZE: Size vùng đệm (cache) của một block chuẩn. Default - mặc định là 48MB trên UNIX và 52MB trên NT
- LOG_BUFFER : Số lượng byte được chỉ định dành cho Redo Log Buffer
- SHARED_POOL_SIZE: Size tính bằng đơn vị byte dành cho toàn bộ vùng chia sẻ của SQL và PL/SQL. Default là 16MB, với một số OS dùng chuẩn 64bit, mặc định sẽ là 64MB
- LARGE_POOL_SIZE: Size dành riêng cho Large Pool, Default là 0 - Zero.
- JAVA_POOL_SIZE: Size dành riêng cho Java Pool, Default là 24MB.
Do đó, size dành cho SGA sẽ không được vượt quá parameter SGA_MAX_SIZE trừ đi giá trị của các parameter trên.

Đến đây, các bạn có thể hỏi tôi: "Nếu tôi thấy hứng thú học Oracle, đồng ý và tán thành với bài viết của bạn, nhưng không lẽ, tôi cứ đọc chay mãi thôi sao?". Tất nhiên rằng, các bạn sẽ không học chay, bởi vì, một hai bài đầu chỉ là những kiến thức đầu tiên, do đó, với kinh nghiệm bản thân tôi, sẽ rất khó nhớ mãi đến tận những bài sau, khi chúng ta hình dung ra được thế nào là Oracle Server. Lời khuyên dành cho các bạn: Hãy ra ngoài tiệm đĩa CD - với giá chỉ...8000 VND, bạn có thể mang cả thế giới về nhà..

Lời khuyên thứ 2: Các bạn có thể thắc mắc rằng, tôi không biết Install Oracle, đúng là vậy, bởi vì sẽ có rất nhiều những điều chúng ta không biết trong quá trình Install, do đó, nếu bất kỳ ai trong forum, cảm thấy khó khăn về việc Install Oracle, xin cứ PM bằng YM cho tôi, hoặc gửi email. Tôi sẽ vui lòng giải đáp cho các bạn.
Tôi chắc rằng, mọi người khi mới làm quen với một môi trường mới, tất nhiên sẽ gặp khó khăn trong việc tiếp xúc, làm quen và vận hành thật tốt, có thể ai đó cũng đã học qua Oracle, các bạn đó sẽ biết được rằng hệ thống chứng chỉ của Oracle có 2 chứng chỉ quan trọng nhất: OCA, OCP.

OCA bao gồm 2 môn: Introduction to SQL và Fundamental I.
OCP bao gồm 2 môn: Fundamental II và Tuning.

Với OCA, 2 môn SQL và Fund I là 2 môn căn bản và quan trọng nhất để có thể tiếp xúc được với Oracle. Introduction to SQL là môn học giúp cho những người đầu tiên hiểu được ngôn ngữ sequel, thực tế, SQL không được gọi là một ngôn ngữ lập trình, điều này chắc hẳn ai cũng biết, SQL giúp cho người học có những kiến thức về truy vấn, thao tác truy vấn đối với Database. Fund I là môn học giới thiệu về kiến trúc Oracle, những thành phần cơ bản trong Oracle Server. 2 môn trên hoàn toàn độc lập với nhau về kiến thức, nhưng lại có sự quan hệ vô cùng chặt chẽ với nhau. Về ý kiến cá nhân của tôi: Với những người có điều kiện học Oracle, tất nhiên Introduction to SQL sẽ là môn học đầu tiên, nhưng không phải vì lý do như thế mà chúng ta - những người tự học lại phải tuân theo quy ước này. Lý do: Các câu lệnh truy vấn - query dùng trong môn Fund I, gần như chỉ dừng lại ở mức lấy thông tin từ các view động hoặc data dictionary, chứ không đi sâu vào việc sắp xếp, chọn hay nhóm thông tin như bắt buộc phải học ở môn Introduction to SQL.
Do đó, tôi hoàn toàn có cơ sở để tin rằng, tôi post từng chương trong môn Fund I lên, sẽ giúp cho các bạn có cái nhìn tổng quan về kiến trúc Oracle.
Tiếp theo đó, khi đã hoàn thành nhiệm vụ, tức là post đủ Volume Fund I, nếu có điều kiện, tôi sẽ post tiếp Volume Introduction to SQL.

Xin cảm ơn mọi người đã ủng hộ, chúc mọi người sức khỏe và thành công!
- SGA được xác định bởi tham số SGA_MAX_SIZE
- Được chỉ định và ghi lại tại "granule"
- Chỉ định tại vùng liền kề của Virtual Memory.

Granule là một thuật ngữ chỉ việc cấp phát vùng nhớ liền kề với Virtual Memory, kích thước (Size) của một Granule phụ thuộc vào việc đánh giá tổng toàn bộ size của SGA. Như hình minh họa trên, tôi show ra giá trị size của parameter SGA_MAX_SIZE.
Hình dưới minh họa cho thấy tổng toàn bộ size của SGA.

Các thành phần khác (Database Buffer Cache, Shared Pool, và Large Pool) đều được cho phép lớn thêm hay thu gọn tùy thuộc vào khung xương Granule của chúng. Tại thời điểm một Instance được Startup, Oracle Server sẽ cấp phát đầu vào dành cho Granules, và một trong trong các Granule được dành cho không gian địa chỉ SGA_MAX_SIZE (đơn vị tính bằng byte). Khi Instance tiếp tục được load (Đừng ngạc nhiên khi tôi nói rằng một Instance được Startup không có nghĩa rằng nó được Startup một cách triệt để, có thêm từng giai đoạn Startup mà mỗi một giai đoạn đó là một trong những cách để thiết lập lại các tham số hoặc dùng để Recover, tuy nhiên, nó thuộc phạm vi các chương sau) thì nếu có bao nhiêu các thành phần, sẽ có bấy nhiêu các Granule tương ứng với chúng. Một SGA tối thiểu bao gồm 3 Granules, một dành cho Fixed SGA (bao gồm cả Redo Buffer), một dành cho Database Buffer Cache và một dành cho Shared Pool.
__________________


Để kết thúc buổi tối ngày hôm nay, (11h roài, chuẩn bị...nghẻo chứ ) tôi sẽ giới thiệu với mọi người về Shared Pool. (Mọi người nhìn lại hình vẽ minh họa Shared Pool trong phần Oracle Instance).

*Shared Pool được dùng để lưu trữ:
- Hầu hết tất cả các câu lệnh đã được dịch (executed) SQL
- Hầu hết các xác nhận data gần đây nhất (used data definition)
*Nó bao gồm 2 việc thực thi các cấu trúc bộ nhớ liên quan:
- Library Cache
- Data Dictionary Cache
* Được xác định kích cỡ (size) bằng tham số SHARED_POOL_SIZE

Môi trường Shared Pool bao gồm 2 thành phần "Fixed Size" và "Variable Size". Cấu trúc Fixed là những phần có size có kích cỡ tương đối giống nhau, nhưng ngược lại, cấu trúc Variable Size lại có thể phát triển hoặc thu gọn lại dựa trên những yêu cầu chương trình của người dùng. Kích cỡ thực tế của Fixed và Variable được xây dựng dựa trên các tham số đầu vào và làm việc bằng một thuật toán ngầm định của Oracle.

Kích cỡ cùa Shared Pool: Bởi vì Shared Pool được dùng để chia sẻ một cách toàn diện, ví dụ như kế hoạch thực thi một câu lệnh SQL, một gói - package PL/SQL, các Procedures, các hàm hay các thông tin về con trỏ, nên nó bắt buộc phải được xác định size để điều chỉnh một cách thích hợp với cả 2 vùng Fixed và Variable. Vùng nhớ được cấp phát dành cho Shared Pool được xác định bằng tham số - parameter SHARED_POOL_SIZE mà hình minh họa trên, tôi đã show ra. Tất nhiên, nó hoàn toàn có thể được Resize - điều chỉnh lại kích cỡ, và bằng câu lệnh ALTER SYSTEM SET. (Nhưng nên nhớ rằng, sau khi thực hiện câu lệnh này, nó phải tương ứng với tổng toàn bộ kích thước của SGA và không được vượt quá size của SGA_MAX_SIZE)



Như hình minh họa ở trên, tôi set lại parameter Shared_Pool_Size của Oracle trở lại 32MB, hình trên tôi đang để ở 50MB. Tuy nhiên, khi tôi cố gắng set size của nó lên 64MB, thì Oracle thông báo rằng không đủ bộ nhớ để thiết lập tới 64MB.
Giới thiệu về 3 môi trường làm việc chính trong Oracle

Một số bạn sẽ có thể thắc mắc về môi trường làm việc trong Oracle, nhân tiện, tôi cũng xin giới thiệu sơ qua về 3 môi trường làm việc chính với Oracle

- Môi trường đầu tiên là môi trường i*SQL/Plus


Chữ "i" có nghĩa là Internet, đây là sản phẩm riêng biệt của Oracle dành cho môi trường mạng (Oracle 9i). Sau khi Install xong Oracle, nếu PC của bạn chỉ cần có network card, bạn có thể thiết lập môi trường dùng Browser IE hoặc FireFox. Ở môi trường i*SQL/Plus, công việc thường được làm là lấy thông tin và viết các script.


- Môi trường thứ 2 là môi trường SQL*Plus, đây cũng là một sản phẩm của Oracle, và có từ bản Oracle 7. Môi trường này thường được dùng để thao tác truy vấn.



- Môi trường thứ 3 là môi trường dùng command, trong môi trường này, thường được dùng để làm công tác quản trị hơn là lấy data.
Do đó, với Volume Fund I, tôi dùng môi trường này, và các bạn đừng quá ngạc nhiên, nếu các bạn về nhà tìm mãi mà không thấy SQL> đâu nhé


Ngoài ra, trong Oracle, có thêm một công cụ nữa (chức năng và tính chất của WorkSheet tôi chưa tìm hiểu, nhưng hoàn toàn có thể làm việc như các công cụ trong môi trường đã nêu)
Library Cache and Data Dictionary Cache

Chúng ta xem đến 2 thành phần của Shared Pool
* Library Cache
- Lưu giữ thông tin về những câu lệnh SQL và PL/SQL được sử dụng gần đây nhất.
- Khả năng chia sẻ các câu lệnh dùng chung
- Được quản lý bởi ít nhất một thuật toán LRU (đây là thuật toán Oracle xây dựng ngầm định để quản lý)
- Bao gồm 2 cấu trúc:
+ Vùng Shared SQL
+ Vùng Shared Pl/SQL
- Size được xác định bởi size của Shared Pool

Giải thích: Size của Library Cache được xác định dựa trên size của Shared Pool, vùng nhớ sẽ được cấp phát khi một câu lệnh được phân tích hoặc là một chương trình được gọi. Nếu size của Shared Pool quá nhỏ, những câu lệnh vẫn được reload lại một cách liên tục trong Library Cache, tuy nhiên nó sẽ bị ảnh hưởng tới công việc thực thi này.

* Data Dictionary Cache
- Là một tập hợp của những công việc xác định được dùng gần đây nhất trong Database
- Bao gồm thông tin về Database Files, Tables (bảng), Indexes (chỉ mục), Columns (cột), Users (người dùng), Privileges (quyền), và các đối tượng Database khác (other Database Objects).
- Trong suốt quá trình phân tích, Server Process sẽ lấy thông tin từ Data Dictionary để quyết định xem việc truy cập vào các object và tính đúng đắn của chúng (Validate).
- Vùng đệm lưu trữ dành cho thông tin trong Data Dictionary sẽ tận dụng những khoảng thời gian dành cho việc truy vấn và thực hiện các câu lệnh DML (Data Manipulation Language - thuật ngữ này được học trong môn Introduction to SQL)
- Size được xác định bởi Shared Pool size

Giải thích: Data Dictionary Cache được tham khảo như một vùng đệm dành cho data dictionary (hoặc vùng đệm dành cho Row). Các thông tin về Database (User account data, Data File names, Segment name, Extent location, Table description, và quyền hạn dành cho user - user privileges: Các thuật ngữ này sẽ được xem xét tới trong các chương sau mà mỗi một thuật ngữ là một chương dành riêng để quản lý chúng) được lưu trong một bảng có tên là Data Dictionary Table. Khi Server cần đến các thông tin này, Data Dictionary Table sẽ được đọc - read, và các thông tin được trả lại trong quá trình tìm kiếm sẽ được lưu tại Data Dictionary Cache.

Lưu ý: Toàn bộ thông tin về Size đều phụ thuộc vào Shared Pool Size (bởi vì Shared Pool bao gồm 2 thành phần vừa nêu) và được quản lý bên trong (internally) bởi Database. Nếu như Data Dictionary Cach có size quá nhỏ, thì Database sẽ truy vấn Data Dictionary Tables theo kiểu lặp đi lặp lại. Những câu lệnh truy vấn được thực hiện theo phương pháp đệ quy toán học.

Lưu ý thứ 2: Trong bất kỳ các sản phẩm Test nào dành cho việc thi chứng chỉ OCA, đều có một câu : "Which stores SQL statement in the most recent time?", do đó, chúng ta phải nắm vững kiến thức dành cho Oracle Instance, mà Shared Pool là một thành phần trong đó.
__________________
Database Buffer Cache


Chúng ta xem xét đến thành phần Database Buffer Cache:
- Lưu trữ các bản copy của thành phần Data Block (lưu ý, Data Block khác với OS block) mà được lấy ra từ Data Files
- Khả năng thực thi lớn khi tập hợp hoặc nâng cấp dữ liệu (Obtain and Update Data)
- Được quản lý bởi thuật toán LRU
- Tham số DB_BLOCK_SIZE xác định size dành cho block chính.

Giải thích: Khi một câu lệnh truy vấn được thực hiện, Oracle sẽ tiến hành tìm kiếm trong Database Buffer Cache để xác định bất kỳ block nào cần dùng. Nếu block không được tìm tháy trong Database Buffer Cache, Server thực hiện đọc block từ Data File và đặt một bản copy vào trong Database Buffer Cache. Bởi vì có một số yêu cầu tiếp theo đó cũng đòi hỏi cùng một hoặc nhiều block như vậy khi tìm trong vùng nhớ, nên các yêu cầu này sẽ không cần đến vùng nhớ physical, mà thay vào đó, Oracle sẽ thực thiện thuật toán LRU ngầm định để xác định xem có đủ vùng đệm gần đây được truy cập vào hay không, để tạo thành một vùng nhớ mới cho những block này trong Database Buffer Cache.

Databse Buffer Cache bao gồm các thành phần độc lập sau:
- DB_CACHE_SIZE
- DB_KEEP_CACHE_SIZE
- DB_RECYCLE_CACHE_SIZE
Chúng ta có thể thay đổi một cách động (dynamically) size bằng câu lệnh:
SQL> ALTER SYSTEM SET.
Ví du: SQL> ALTER SYSTEM SET DB_CACHE_SIZE = 96M;

Tham số DB_CACHE_ADVICE là một tham số tập hợp các số liệu thống kê dành cho việc dự báo và lên kế hoạch thật tốt cho Size của các cache trên. Tham số này có 2 chế độ: ON/OFF. Recommen là ON.
Để minh họa cho điều trên, tôi đưa ra hình dưới đây



Ngoài lề: Tuy nhiên, như chúng ta đã hình dung, công việc thực hiện thiết lập các tham số này thực sự là rất khó khăn và phức tạp. Tại sao tôi lại nói như vậy, các bạn có thể đã có một ít kiến thức về Oracle Server, như các bài ở trên, các bạn đơn giản có thể lấy thông tin từ SGA, Shared Pool, thực hiện các phép tính cộng trừ để có thể resize các tham số lên một mức nào đó. Nhưng đó là đối với Database trong việc test, thử hình dung, hằng ngày, một công ty luôn có các đơn hàng lớn, data luôn luôn được đặt trong tình trạng Update và Query, thì công việc này thực sự là khó khăn, nếu như không có một chính sách cụ thể, rõ ràng, lường trước được những j có thể xảy ra hàng ngày, hàng giờ. Sai một ly, đi một dặm, đến bây giờ, ai đó trong số các bạn hiểu qua về Oracle Server, sẽ hiểu được tầm quan trọng trong việc quản lý RDBMS như thế nào.

*Bắt đầu từ bây giờ, chúng ta sẽ làm quen với một khái niệm mới: View động. View động là những bảng động, trong đó chứa các thông tin cụ thể về các tham số, cũng như các objects khác (user accout, user profile..). View động này được phân biệt bằng "V$...".

Đối với dữ liệu thống kê của Database Buffer Cache, chúng ta có thể truy vấn bằng view động: V$DB_CACHE_ADVICE.
Các bạn xem hình mình họa ở dưới đây:

__________________
Redo Log Bufer



Chúng ta xem xét đến thành phần cuối cùng của SGA - Redo Log Buffer:
- Ghi lại toàn bộ sự thay đổi của Data Block trong Database
- Mục đích chính là Recovery - phục hồi
- Các sự thay đổi ghi lại trong quá trình gọi một Redo vào (Redo Entries)
- Redo Entries chứa đựng thông tin về việc tái thiết hoặc thay đổi lại
- Size được xác định bằng tham số LOG_BUFFER

Giải thích: Redo Log Buffer là một vùng đệm vòng tròn chứa đựng thông tin về sự thay đổi của Data Block. Các thông tin này được lưu trữ vào một khái niệm gọi là Redo Entries. Redo Entries chứa đựng các thông tin cần thiết để tái tạo các dữ liệu trước đó khi thực hiện các câu lệnh như INSERT, UPDATE, DELETE, CREATE, ALTER hoặc DROP.
__________________
Tổng kết một chút nhé

Chúng ta đã đi qua một chặng đường ngắn, xem xét xong thành phần SGA, trong SGA gồm những gì. Bây giờ chúng ta sẽ ngắm nghía đến thành phần còn lại trong Memory Structure - PGA : Program Global Area. Để đưa ra một cái nhìn cụ thể về kiến trúc của Oracle Server và cấu trúc từng thành phần trong đó, tôi đã upload lên forum sơ đồ này, nhưng để các bạn tiện theo dõi, tôi post lại hình đó dưới đây

__________________
Program Global Area



Nào, trước khi chúng ta bắt tay vào tìm hiểu thành phần PGA trong cấu trúc bộ nhớ của 1 Instance, chúng ta cùng nhau nhìn lướt qua mô hình PGA nhé.

Với đặc tả như trên ( PGA là một vùng nhớ dự trữ dành cho mỗi một tiến trình của một user kết nối tới Database), tôi xin bổ sung thông tin từ Fund I về đặc tả PGA như sau:

* When the Server process is stared, the PGA is allocated: Khi một tiến trình Server được khởi động, PGA sẽ được cấp phát và sẽ được thu hồi khi tiến trình ngắt quãng hoặc dừng lại và chỉ được sử dụng bởi duy nhất một process.

Như mô hình trên, các bạn sẽ thấy rằng sẽ có 2 loại Server là : Dedicated Server và Shared Server. Thực ra, khái niệm về Dedicated và Shared Server cũng gần giống như một mô hình ở đó 1 Server đáp ứng cho một User Process - Dedicated Server, và 1 Server đáp ứng cùng một lúc với nhiều User Process.

Trong Fund I này, chúng ta sẽ không thảo luận nhiều về 2 mô hình Dedicated và Shared Server (bởi vì cái chúng ta cần là ngâm cứu các thành phần riêng biệt của Instance và Database mà. )

Giải thích: PGA là một vùng nhớ chứa đựng thông tin về dữ liệu và điều khiển cho một tiến trình Server (Single Server Process) hoặc một tiến trình ngầm (Single Background Process). Trái ngược với SGA được chia sẻ cho nhiều tiến trình, PGA là một vùng nhớ chỉ được sử dụng bởi duy nhất một tiến trình. Sự biến thiên của vùng nhớ PGA phụ thuộc bởi một Instance đang chạy trong môi trường Dedicated Server hay là Shared Server. Nói chung, PGA bao gồm các thành phần như sau:
- Private SQL Area
- Session Memory
- SQL Work Area

Có một số sự khác nhau giữa việc cấp phát vùng nhớ cho PGA trong Dedicated Server và Shared Server, tuy nhiên, nó không nằm trong phạm vi Fund I, do đó, tôi xin không đưa ra chi tiết.
__________________
Trước khi chúng ta đi vào tìm hiểu các thành phần, tính chất và nội dung của từng thành phần nằm trong nhóm tiến trình ngầm, tôi xin được đưa ra hình minh họa dưới đây kèm theo lời giải thích.



Kiến trúc Oracle bao gồm 5 tiến trình ngầm (từ đây, xin được viết theo thuật ngữ - Background Process) bắt buộc. Có thêm một vài Background Processes rất quan trọng nữa nằm trong danh sách của Oracle, khi khởi động một Instance, các Background Process này sẽ được Turn on Option của chúng (đặt ở chế độ ON/OFF), tuy nhiên các Background Processes này lại không được giới thiệu trong Fund I, ngoại trừ duy nhất ARCn - Archiver sẽ được giới thiệu bổ sung trong chương quản lý Redo Log Files.
__________________
Background Process - Database Wirter (DBWn)



Background Process DBWn sẽ ghi lại khi xảy ra một trong các sự kiện sau:
- Checkpoint xuất hiện (khái niệm checkpoint chúng ta sẽ bàn ở chương Quản lý Redo Log File)
- Dirty buffers đạt ngưỡng
- Không có bất kỳ Free Buffer
- Thời gian ngừng xuất hiện
- Yêu cầu về kiểm tra mô hình RAC (Real Application Cluster - mô hình này không được xem xét tới trong phạm vi Fund I)
- Tablespace đặt trong tình trang OFFLINE hay READ ONLY(Tablespace là một thành phần cực kỳ quan trọng trong Oracle Database, khái niệm, quản lý và cấp phát chúng ra sao sẽ có một chương riêng biệt)
- Table bị DROP hoặc TRUNCATE (DROP và TRUNCATE là 2 câu lệnh nằm trong nhóm DDL - Data Definition Language - Volume Introduction to SQL)
- Tablespace được đặt tại trạng thái BEGIN BACKUP (trạng thái này sẽ được bàn đến trong Fund II - phần Backup và Recovery)

Giải thích: Khi tiến trình Server ghi lại việc thay đổi data blocks trong Database Buffer Cache hoặc để phục hồi, DBWn sẽ ghi lại những Dirty buffers (chúng ta có thể hiểu một cách nôm na Dirty Buffer là những vùng đệm lưu trữ nhưng không chính thức được ghi lại) từ Database Buffer Cache tới Data Files. Nó đảm bảo rằng, phải có một số lượng đủ và cần thiết của Free Buffer (Vùnd đệm được phép ghi đè ghi một tiến trình Server cần đọc blocks từ Data Files) chắc chắn có trong Database Buffer Cache. Việc thực thi Database do đó sẽ được cải thiện bởi vì các tiến trình của Server sẽ thay đổi chỉ ở trong Database Buffer Cache.
Lưu ý: Tiến trình Server và tiến trình người dùng (Server Process và User Process) sẽ được tôi giới thiệu tại các bài sau.

Một số khái niệm trên, có thể chúng ta chưa hình dung rõ cơ chế hoạt động của chúng, nhưng như tôi đã nói, với chương I, chỉ mang tính chất tham khảo và giới thiệu qua cho mọi người về kiến trúc của một Oracle Server, nên chúng ta không cần phải quá quan tâm đến công việc của từng thành phần, mà chỉ ghi nhớ sự hoạt động nào xảy ra khi chúng được gọi đến, nếu có.
__________________
Log Writer (LGWR)



Background Process LGWR sẽ tiến hành công việc ghi lại một cách tuần tự từ Redo Log Buffer tới Online Redo Log File khi xuất hiện 1 trong các tình huống sau:
- Khi một transaction commit (Transaction và Commit là 2 khái niệm nằm trong DCL - Data Control Language; Volume Introduction to SQL)
- Khi Redo Log Buffer xuất hiện tình trạng one-third đã đầy (One - third là một khái niệm được mô tả trong chương quản lý Redo Log File, có thể giới thiệu sơ qua ở đây: Redo Log bao gồm ít nhất 2 Group dành riêng cho việc Undo, mỗi một Group có 3 members, cứ sau mỗi lần 1 Group được ghi đầy, thì sẽ có một Log Switch, tức là việc dịch chuyển từ Group này sang Group khác. Tình trạng One-third xuất hiện khi một trong 3 Group này đã đầy và xuất hiện Log Switch).
- Khi có hơn 1MB việc thay đổi bản ghi trong Redo Log Buffer
- Trước khi Background Process DBWn ghi lại việc sửa đổi các block trong Database Buffer Cache tới Data files.
- Sau mỗi 3 giây.

Bởi vì công việc Redo rất cần thiết cho việc phục hồi dữ liệu (Data Recovery), nên LGWR sẽ xác nhận tình trạng Commit chỉ sau khi Redo được ghi xuống Storage Unit (Bất kỳ thiết bị lưu trữ vật lý nào).
__________________
System Monitor



Trong trường hợp Oracle Instance bị lỗi, bất kỳ thông tin nào trong SGA đều không được ghi xuống thiết bị lưu trữ và bị mất, hay lỗi xảy ra đối với OS cũng có thể là nguyên nhân gây ra lỗi ở Oracle Instance. Sau khi việc thất thoát này xảy ra, Background Process sẽ tự động thực thi việc phục hồi Instance khi Database được start trở lại (lưu ý một chút: Tất cả những hoạt động của Background Process đều có một câu hỏi trong bất kỳ software dùng để thi nào). Công việc phục hồi một Instance sẽ bao gồm các bước sau:
- Roll thẳng đến việc trở lại việc phục hồi dữ liệu chưa được ghi lại trong data files nhưng không ghi xuống Online Redo Log File. Các dữ liệu này sẽ không được ghi xuống thiết bị lưu trữ bởi vì việc thất thoát của SGA trong suốt quá trình Instance bị lỗi. Với tiến trình này, SMON sẽ đọc những Online Redo Log Files và xác nhận sự thay đổi trong Online Redo Log File với data block.
- Start Database mà users có thể truy cập vào. Bất kỳ dữ liệu bị khóa lại bởi transaction chưa được phục hồi sẽ ngay lập tức hiện hữu.
- Roll ngược lại tới transaction chưa được phục hồi, và chúng sẽ được Roll Back trở lại bởi SMON hoặc bởi một tiến trình Server độc lập khi chúng truy cập vào dữ liệu bị khóa
__________________
Process Monitor - PMON



Background Process PMON sẽ làm sạch sau khi những tiến trình bị lỗi:
- Roll back (Roll back cũng là một khái niệm trong DCL - Volume Introduction to SQL) đến transaction hiện tại của users
- Giải phóng toàn bộ những bảng và dòng bị khóa hiện tại
- Giải phóng những tài nguyên hiện tại được giữ bởi user
- Khởi động lại "dead dispatcher".
Khái niệm Dead Dispatcher sẽ được trình bày trong môn Fund II
Check point background Process - CKPT



Check point là một sự kiện, được gọi đến khi Background Process DBWn ghi lại tất cả những việc thay đổi nằm trong SGA, bao gồm cả việc Commit hay Uncommit dữ liệu tới Data Files.
Cứ mỗi 3 giây, CheckPoint - CKPT lại lưu lại dữ liệu trong Control File để xác định rằng nơi nào nằm trong Online Redo Log File là nơi công việc phục hồi được bắt đầu. Mục đích của một CKPT là để đảm bảo rằng tất cả những vùng đệm nằm trong Database Buffer Cache khi thay đổi trước đó một quãng thời gian sẽ được ghi xuống Data file. Vị trí này (được gọi là vị trí Check point) là nơi công việc phục hồi bắt đầu tại thời điểm Instance bị lỗi. Trước Oracle 9i, điều này được thực hiện tại thời điểm kết thúc một Online Redo Log File. Trong sự kiện của một Log Switch, CKPT cũng ghi lại các thông tin về một Check point vào phần đầu của Data Files.

CheckPoint Background Process sẽ được bắt đầu với một trong các lý do sau:
- Đảm bảo rằng việc thay đổi Data Block trong bộ nhớ sẽ được ghi lại vào thiết bị lưu trữ một cách an toàn và đều đặn phòng ngừa trường hợp lỗi xảy ra đối với hệ thống hoặc Database.
- Giảm bớt thời gian yêu cầu cho công việc phục hồi Instance. Chỉ cho phần vào dành cho Online Redo Log Files cùng với điểm cuối của CKPT là không cần thiết cho tiến trình phục hồi.
- Đảm bảo rằng tất cả các Commit data sẽ được ghi vào Data Files trong khi Shutdown.

Thông tin check point được ghi bởi CKPT bao gồm: Điểm checkpoint, số lần thay đổi hệ thống, nơi Online Redo Log File bắt đầu phục hồi, thông tin về Logs...

Chú ý: CKPT sẽ không ghi lại data block tới thiết bị lưu trữ hoặc các Redo block tới Online Redo Log Files.
__________________
Archiver (ARCn)



ARCn là một Background Process tùy chọn, tuy nhiên, nó lại là phần chủ yếu để phục hồi một Database khi xuất hiện lỗi. Vì Online Redo Log File khi đầy, tự động Oracle sẽ bắt đầu ghi đến một Online Redo Log File kế tiếp. Tiến trình của việc chuyển giao này được gọi là Log Switch (khái niệm này tôi đã đề cập tới trong phần Redo Log Buffer). Lấy ví dụ ta có 3 Online Redo Log Files, cứ sau mỗi một lần 1 Online Redo Log File được ghi đầy, thì nó sẽ chuyển tiếp đến Online Redo Log File khác, tuần tự như vậy, và khi quay ngược trở lại Online Redo Log File ban đầu, Oracle sẽ ghi đè lên những thông tin mới. Chính vì thế ARCn sẽ lưu lại phần thay đổi đầu tiên của một Log Switch, tránh tình trạng bị ghi đè lên trong Redo Log Group (1 Group bao gồm 3 Online Redo Log Files). Tuy nhiên, vì việc Transfer dữ liệu là xảy ra thường xuyên, do đó, Archive Log Files sẽ tăng dung lượng nhanh một cách đáng kể, chính vì nguyên nhân này, nó được gọi là một Background Process tùy chọn của Oracle.
ARCn có 2 tùy chọn : NOARCHIVELOG Mode và ARCHIVELOG Mode.

Ngoài lề: Khi cấu hình một Database, DBA sẽ dựa vào cấu hình của cơ sở hạ tầng, nhằm quyết định có nên để chế độ ARCHIVELOG hay NOARCHIVELOG. Tuy nhiên, Recommend là Yes.
__________________
Database Hierarchy



Chúng ta đã xem xét qua cấu trúc của một Oracle gồm những gì, bây giờ trước khi đi vào thành phần còn lại của Oracle Server là Oracle Database, xin mời các bạn ngắm nghía sơ đồ trên.
__________________
Giải thích sơ qua về sơ đồ trên
- Đối với một hệ quản trị, việc phân ra 2 loại cấu trúc là Physical và Logical nhằm định nghĩa và tạo sự gắn kết giữa 2 cấu trúc này. Tưởng chừng như một cấu trúc vật lý chỉ đơn giản là lưu trữ những thông tin mà cấu trúc Logic tạo ra trong quá trình hoạt động, nhưng hãy nhìn trên sơ đồ, một cấu trúc vật lý bao gồm 3 tầng: Application, Data Files (Các bạn đã nghe nói nhiều đến Data File, cá rằng các bạn vẫn chưa hình dung ra Data Files có sự liên hệ chặt chẽ và tính quan trọng như thế nào đối với một Database) và OS block.
- Một Application là một ứng dụng nào đó được viết nhằm hỗ trợ cho DB phục vụ công việc j, chẳng hạn như một trigger viết riêng tạo sequence.
- Một Data File là một file vật lý được Oracle lưu trữ dưới dạng file nhị phân, Data File này bao gồm các thông số về quá trình làm việc của Oracle, và nó thuộc về một hoặc nhiều Tablespaces (Lại khái niệm mới, chán chết đi được ).
- OS block là một đơn vị tính của hệ điều hành, đơn vị tính này có thể là Bit, byte, KB... tùy thuộc từng OS. Và một Data File có thể có một hoặc nhiều OS block. Chẳng hạn như, Data File có dung lượng là 10MB, nhưng cũng có thể là 100MB. Ở phần sau, các bạn sẽ biết thêm một loại file thuộc tầng vật lý là Control File (mô hình tôi đã đưa ra trên bài trước).

* Như vậy, với tầng cấu trúc vật lý, Oracle không quá là phức tạp, thế nhưng, cái phức tạp trong Oracle lại chính là tầng Logic. Hãy thử nhìn lại sơ đồ trên, bạn sẽ thấy rằng bắt đầu từ tầng logic là Database, tiếp đó đến Tablespace, tiếp đó đến Segment, Extent và Data block. Sự sắp xếp theo kiểu phân nhánh này chỉ rõ ra: Một Database có thể có nhiều Tablespace, ngược lại, 1 hoặc nhiều Tablespace chỉ thuộc về một Database. Cấu trúc đó sẽ tiếp diễn đối với các thành phần còn lại.
Vì rằng, trong chương I là chương chủ yếu giới thiệu, các thành phần của Database sẽ là từng chương quản lý và vận hành chúng.

*Nói sâu thêm một chút về Data block: Ở tầng logical này, Data block là đơn vị nhỏ nhất, được tính bằng byte. Do đó, các bạn hãy nhìn lại các bài tôi post ở trên, 1 trong số các bài đó các bạn sẽ thấy tôi set một parameter có dung lượng là bao nhiêu, dung lượng này chính là data block.
__________________
Logical Structure!


Tính chất tổng quát của Logical Structure:
- Quyết định xem không gian vật lý của một Database sẽ được sử dụng như thế nào
- Mô hình Hierarchy bao gồm tablespaces, segments, extents và data blocks.
Mô hình Hierarchy là mô hình:
- Một Ora DB bao gồm ít nhất một tablespace
- Một Tablespace bao một hoặc nhiều segments
- Một Segment bao gồm một hoặc nhiều extents
- Một Extent được cấu thành từ data block

*Tablespace:
Dữ liệu trong một Ora DB sẽ được lưu trong Tablespace
- Một Ora DB có thể là một nhóm nhỏ thuộc đặt trong không gian logic, không gian logic này được gọi là Tablespace
- Tại một thời điểm, một tablespace chỉ có thể thuộc về một DB
- Mỗi một Tablespace là một tập hợp gồm một hoặc nhiều các file OS, và nó được gọi là Data File
- Một Tablespace có thể được đặt tại trạng thái Online khi một DB đang chạy
- Ngoại trừ System Tablespace hoặc một tablespace với trạng thái kích hoạt Undo Segment, thì có thể được phép chuyển sang chế độ Offline.
- Tablespace có thể chuyển đổi từ trang thái đọc/ghi sang trạng thái chỉ đọc

* Data File (Physical structure)
- Mỗi một tablespace trong một Ora DB đều có một hoặc nhiều files gọi là Data File. Chúng là cấu trúc vật lý đảm bảo tính phù hợp đối với hệ điều hành Oracle đang hoạt động trên đó
- Một data file chỉ có thể thuộc về 1 tablespace, tất nhiên rồi.
- Oracle Server có thể tạo một data file dành cho một tablespace bằng việc chỉ định không gian trong thiết bị lưu trữ cộng với một không gian nhỏ hơn dành cho phần head nếu vượt quá.
- Người quản trị DB (DBAs) có thể thay đổi dung lượng của một data file sau khi chúng được tạo ra hoặc có thể chỉ định chúng được phép tự động nâng dung lượng như là một đối tượng nằm trong tablespace.

*Segment
- Một segment là một không gian được cấp phát dành cho một không gian lưu trữ logic trong phạm vi của một tablespace.
- Một segement không được phép trải dài trên nhiều tablespace, và chúng chỉ có thể thuộc về 1 tablespace, tuy nhiên, một segment có thể có nhiều data files thuộc về cùng một tablespace.
- Mỗi một segment đều được cấu thành từ một hoặc nhiều extents

*Extent
- Không gian cấp phát cho một segment này, và khi segment nâng dung lượng (grow), các extents có thể được thêm vào segment. DBA có thể quản lý việc thêm extent vào segment.
- Một extent là một tập hợp các Oracle Block liền kề nhau
- Một exten không thể trải rộng trên nhiều data files.

*Data Block
Oracle Server quản lý không gian lưu trữ nằm trong data file, và chúng được gọi là Data block hay Oracle block.
- Oracle data block là đơn vị lưu trữ nhỏ nhất mà Oracle Server có thể cấp phát không gian, đọc hoặc ghi
- Một data block tương thích với một hoặc nhiều block của OS cấp phát cho những Data files đã tồn tại
- Size chuẩn của 1 data block sẽ được chỉ định bởi tham số đầu vào DB_BLOCK_SIZE khi Database được khởi tạo

- Một Data block size có thể là một tập hợp của nhiều Block size khác trong OS để tránh việc không thể truy xuất vào ra I/O
- Maximum của Data block phụ thuộc vào hệ điều hành
__________________
Logical Structure!

Em xin được tiếp tục.

Phân loại Tablespace
Một database gồm có ít nhất một tablespace là tablespace SYSTEM là nơi lưu trữ thông tin hệ thống,ngoài ra còn có các tablespace khác nơi chứa dữ liệu của các user Non-SYSTEM tablespace.

Tablespace SYSTEM
.Sẽ tự động được tạo khi database tạo.
.Có trong tất cả các database dùng cho hoạt động của database
.Chứa thông tin về các data dictionary view,các định nghĩa của store procedure,pakage và các database trigger.
.Chứa SYSTEM Undo segment.
.Chứa SYSTEM rollback segment( Chúng ta sẽ có cả một chương nói về vấn đề này)
.Không nên chứa dữ liệu của user mặc dù có thể

Non-Tablespace
.Có thể lưu trữ rollback segment,temporary segment,data segment,index segment
.Giúp cho quản trị database linh hoạt hơn.

Tạo tablespace băng câu lệnh SQL
Cú pháp:
CREATE TABLESPACE tablespace
DATAFILE filespec [autoextend_clause]
[, filespec [autoextend_clause]]...
[MINIMUM EXTENT integer[K|M]]
[DEFAULT storage_clause]
[PERMANENT|TEMPORARY]
[ONLINE|OFFLINE]

storage_clause:= =
STORAGE ( [INITIAL integer[K|M]]
[NEXT integer[K|M]]
[MINEXTENTS integer]
[MAXEXTENTS {integer|UNLIMITED}]
[PCTINCREASE integer]

VD:
CREATE TABLESPACE app_data
DATAFILE
/DISK4/app01.dbf SIZE 100M,
/DISK5/app02.dbf SIZE 100M
MINIMUM EXTENT 500K
DEFAULT STORAGE ( INITIAL 500K
NEXT 500K
MINEXTENTS 3
MAXEXTENTS 500
PCTINCREASE 50);

.INITIAL định nghĩa kích cỡ của extend đầu tiên.Kích cỡ nhỏ nhất của extend đầu tiên là 2 block là 2*DB_BLOCK_SIZE .Kích cỡ mặc định là 5 block là *DB_BLOCK _SIZE.
.NEXT ưng với kích thước của exten thứ 2.Kích cỡ tối thiểu là 1 block= 1*DB_BLOCK_SIZE.Mặc định là 5 block=5*DB_BLOCK_SIZE
.MINEXTENTS sỗ lựong extend được tạo khi mỗi khi extend được tạo.Kích cỡ nhỏ nhất và mặc định là 1
.PCTINCREASE phần trăm tăng dung lượng của extend(grow) được xác định theo kích thước

Với: Sizen kích thước của extent thứ n
Ví dụ: NEXT = 200K,PCTINCREASE = 50. Ta tính được extent thứ hai = 200K, extent thư ba = 300K, extent thứ tư = 450K

.MAXEXTENTS xác định số lượng tối đa exend có trong segment.giá trị lớn nhất theo mặc định phục thuộc vào block dữ liệu ,giá trị này cũng có thể gắn với UNLIMITED tương tương với 2147483645
Note: Trong Oracle, Pro C là thành phần không thể thiếu đối với Programmer, ngoài PL/SL, Pro C còn được biết đến như một ngôn ngữ điều khiển rất mạnh.
Cái này Bác TA24hg nói đúng rồi đó. Pro C không chỉ đơn giản như vậy đâu.
Nếu bạn thật sự làm việc vói các sản phẩm của Oracle thì bạn mơi thấy nó quan trọng thế nào. Ngoài Pro C, Java cũng là thành phần rất quan trọng trong Oracle. Nếu bạn làm bằng PL/SQL thì sẽ dùng kết hợp rất nhiều hai khái niệm Proc, java để tạo thủ tục... Tất nhiên nếu bạn mới chỉ làm về các ứng dụng Oracle thì bạn ít quan tam đến 2 khái niệm này. Nhưng khi đi sâu, tôi tin rằng bạn phải tìm hiểu nó.
Mình cũng rất hi vọng, có nhiều ngừoi thảo luận về Proc, java và cả PL/SQL trong Oracle. Không biết E đưa vấn đề này có được không Bác Admin vi đây là diễn đàn C/C++. Có gì bác chỉ giáo. hiiiiiiiiiiiiiiiiiiiiiiiiiii
Today, there have been 12 visitors (43 hits) on this page!
=> Do you also want a homepage for free? Then click here! <=
Đến với thành phố biển Vũng Tàu