Download - Oracle_DBAdmin v2.0
Công ty cổ phần Tài Ngân - BFCHà Nội, tháng 4 năm 2001.
- www.orafaq.com- asktom.oracle.com- technet.oracle.com
Đào tạo Oracle cơ bảnGiáo trình Kiến trúc và Quản trị
Oracle 8i
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Mục lục
Mục lục..........................................................................................................2
Hình vẽ..........................................................................................................5
1 Giới thiệu.................................................................................................6
1.1 Mục tiêu khoá học....................................................................................61.2 Kiến trúc Oracle Server............................................................................6
2 Cấu trúc bộ nhớ và các tiến trình nền của csdl Oracle.................................6
2.1 Cấu trúc bộ nhớ Oracle Server.................................................................72.2 Các quá trình (process)............................................................................82.3 Các cấu trúc liên kết người sử dụng với một Oracle Instance...................82.4 Xử lý một câu lệnh SQL..........................................................................112.5 Xử lý câu lệnh thao tác dữ liệu...............................................................122.6 Xử lý COMMIT.........................................................................................12
3 Làm quen với Oracle Server.....................................................................13
3.1 Xác nhận phân quyền sử dụng...............................................................133.2 Các công cụ quản trị CSDL Oracle cơ bản..............................................133.3 DBA Management Pack..........................................................................16
4 Quản lý một Oracle Instance....................................................................17
4.1 Start up và shut down Oracle Server......................................................174.2 Tạo và lưu giữ cấu hình..........................................................................174.3 Một số quy tắc đối với các tham số........................................................18
5 Tạo CSDL................................................................................................20
5.1 Chuẩn bị.................................................................................................205.2 Tạo CSDL................................................................................................21
6 Tạo các khung nhìn từ điển dữ liệu và các package chuẩn.........................23
6.1 Từ điển dữ liệu........................................................................................236.2 Store Program........................................................................................256.3 Package..................................................................................................256.4 Trigger....................................................................................................26
7 Bảo trì các file điều khiển - Contron files.................................................27
7.1 Control file..............................................................................................277.2 Tạo nhiều control file..............................................................................277.3 Lấy thông tin về control file....................................................................28
8 Bảo trì các Redo log files.........................................................................29
8.1 Redo log file...........................................................................................298.2 Redo log file group và Redo log file member..........................................318.3 Phân tích và ghi nhận các redo log file...................................................32
9 Quản lý Tablespaces và Data files............................................................33
9.1 Cấu trúc logic của database...................................................................339.2 Tablespace..............................................................................................349.3 Quản lý tablespace.................................................................................36
10 Cấu trúc lưu trữ......................................................................................40
10.1 Các cấu trúc lưu trữ chính của Oracle....................................................4010.2 Segments - phân loại segments.............................................................4110.3 Quản lý bộ nhớ đối với segment.............................................................42
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 2
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
11 Quản lý Rollback Segments.....................................................................43
11.1 Rollback segments.................................................................................4311.2 Quản lý rollback segment.......................................................................4411.3 Thông tin về rollback segment...............................................................46
12 Quản lý Tables........................................................................................47
12.1 Table - Phân loại table............................................................................4712.2 Quản lý table..........................................................................................4812.3 Thông tin về table..................................................................................51
13 Quản lý Indexes......................................................................................52
13.1 Phân loại Index.......................................................................................5213.2 Quản lý Index.........................................................................................5413.3 Thông tin về index..................................................................................56
14 Duy trì toàn vẹn dữ liệu (Maintaining data integrity)................................57
14.1 Các dạng toàn vẹn dữ liệu......................................................................5714.2 Tạo các constraint..................................................................................5814.3 Lấy thông tin về các constraint..............................................................59
15 Nạp dữ liệu.............................................................................................60
15.1 Nạp dữ liệu trực tiếp...............................................................................6015.2 Sử dụng công cụ SQL* Loader................................................................60
15.2.1 Các file được sử dụng bởi SQL* Loader.................................................6115.2.2 Các Phương pháp nạp dữ liệu bằng SQL loader....................................6115.2.3 Cách sử dụng SQL*Loader....................................................................62
15.3 Tổ chức lại dữ liệu..................................................................................6315.3.1 Export:.................................................................................................6315.3.2 Import:.................................................................................................64
16 Quản trị người sử dụng...........................................................................65
16.1 Tạo một người sử dụng mới....................................................................6516.2 Thay đổi thuộc tính của user..................................................................6516.3 Xoá user.................................................................................................66
17 Quản trị các Privilege..............................................................................66
17.1 Quyền hạn – Privileges...........................................................................6617.2 System privilege.....................................................................................67
17.2.1 Thông tin về system privilege..............................................................6717.2.2 Gán quyền hệ thống............................................................................6817.2.3 Thu hồi quyền hệ thống.......................................................................6917.2.4 Ví dụ minh hoạ về gán và thu hồi quyền..............................................69
17.3 Object privilege......................................................................................6917.3.1 Thông tin về Object privilege...............................................................7017.3.2 Gán Object privilege............................................................................7017.3.3 Thu hồi Object privilege.......................................................................7017.3.4 Ví dụ minh hoạ về thu hồi Object privilege..........................................71
18 Quản lý Roles.........................................................................................71
18.1 Roles......................................................................................................7118.1.1 Lợi ích của việc sử dụng role................................................................7118.1.2 Một số role định sẵn (predefined)........................................................71
18.2 Quản lý role............................................................................................7218.2.1 Tạo roles..............................................................................................7218.2.2 Thay đổi role........................................................................................7218.2.3 Gán role...............................................................................................7318.2.4 Điều khiển role.....................................................................................74
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 3
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
18.2.5 Kích hoạt và ngưng kích hoạt role.......................................................7418.2.6 Thu hồi role..........................................................................................7418.2.7 Drop role..............................................................................................75
18.3 Hiển thị thông tin về các role.................................................................75
19 Sử dụng hỗ trợ ngôn ngữ quốc tế (NLS)....................................................77
19.1 NLS.........................................................................................................7719.2 Chọn tập ký tự........................................................................................77
19.2.1 Các loại tập ký tự.................................................................................7719.2.2 Chọn tập ký tự.....................................................................................78
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 4
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Hình vẽ
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 5
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
1 Giới thiệu
1.1 Mục tiêu khoá học
Kết thúc khoá học, học viên phải nắm được các kiến thức sau.
Khởi động và tắt Oracle Database
Tạo Database
Quản lý các file Database Oracle
Quản lý các tablespaces, segments, extents, blocks
Quản lý người dùng, quyền truy nhập, tài nguyên
Sử dụng khả năng hỗ trợ ngôn ngữ chính thống (National Language Support - NLS)
1.2 Kiến trúc Oracle Server
H×nh vÏ 1 Kiến trúc Oracle Server
Một Oracle server gồm:
2 Cấu trúc bộ nhớ và các tiến trình nền của csdl Oracle
Oracle Server là một hệ quản trị CSDL quan hệ đối tượng cho phép quản lý thông tin một cách tổng hợp, toàn diện, và có tính mở. Oracle tạo ra và sử dụng các cấu trúc bộ nhớ để hoàn thành một số công việc. Ví dụ, bộ nhớ lưu trữ mã chương trình đang được thực hiện và dữ liệu dùng chung của các user.
Oracle Instance là kết hợp của các tiến trình nền và các cấu trúc bộ nhớ của Oracle Server. Oracle Instance cần được khởi tạo trước khi truy nhập vào CSDL. Oracle instance gồm:
System Global Area - SGA: Vùng bộ nhớ được sử dụng để lưu trữ các thông tin CSDL chia sẻ cho các tiến trình CSDL.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 6
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Các tiến trình nền: Thực hiện các chức năng của từng tiến trinhg cụ thể. Điều khiển vào ra, cung cấp các cơ chế xử lý song song nâng cao hiệu quả và độ tin cậy.
Oracle chiếm một vùng của hệ thống khi một instance được khởi tạo và giải phóng vùng đó khi instance được shuts down. Mỗi instance có một vùng hệ thống riêng gọi là system global area.
2.1 Cấu trúc bộ nhớ Oracle Server
Các tiến trình xử lý khác: Các tiến trình của người dùng, các đoạn chương trình được viết bằng câu lệnh SQL. Server sẽ xử lý các câu lệnh được gửi đến bởi người dùng.
Các database file: Là các file của hệ điều hành, lưu trữ các thông tin CSDL thực sự dưới dạng vật lý. Chúng được sử dụng để đảm bảo tính nhất quán của dữ liệu, có thể phục hồi lại khi xảy ra sự cố hỏng hóc.
Các file khác: các file không phải CSDL, để lưu giữ cấu hình, thiết lập quyền của người sử dụng, phục hồi CSDL.
Các database file Oracle
CSDL Oracle là một tập hợp các đơn vị dữ liệu có quan hệ với nhau. CSDL Oracle bao gồm ba kiểu file:
Datafile - File dữ liệu: Chứa toàn bộ dữ liệu trong CSDL. Dữ liệu được lưu trong các bảng, tuy nhiên các file dữ liệu cũng chứa các từ điển dữ liệu. Các file dữ liệu có đặc điểm:
- Một file dữ liệu có thể kết hợp với chỉ một CSDL.
- File dữ liệu có các tính chất cho phép nó tự động thay đổi kích thước khi CSDL hết khoảng trống.
- Một hoặc vài file dữ liệu hình thành nên một đơn vị logic lưu trữ gọi là tablespace.
Redo logs file: Chứa bản ghi các thay đổi trong CSDL. Một CSDL cần có ít nhất 02 redo log file.
Control file - File điều khiển: Chứa các thông tin cần thiết cho bảo trì và đảm bảo tính toàn vẹn của dữ liệu.
Các file chính khác
Các file tham số: Quy định các tính chất của Oracle instance.
File mật khẩu để xác nhận đặc quyền cho phép người sử dụng khởi động và tắt một Oracle instance.
Archived redo log files là bản off line của các redo log files chứa các thông tin cần thiết để phục hồi dữ liệu.
Oracle Instance
Oracle Instance: Là kết hợp của các tiến trình nền và các cấu trúc bộ nhớ. Oracle Instance cần được khởi tạo để truy nhập vào CSDL.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 7
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
System Global Area - SGA: Vùng bộ nhớ được sử dụng để lưu trữ các thông tin CSDL chia sẻ giữa các tiến trình CSDL. SGA bao gồm một vài cấu trúc bộ nhớ chính:
- Shared pool: Lưu các câu lệnh SQL được thực hiện gần nhất và các dữ liệu trong từ điển dữ liệu.
- Database buffer cache: Lưu trữ các dữ liệu được sử dụng gần nhất..
- Redo log buffer: Được sử dụng cho việc lần lại các thay đồi trong CSDL và được thực hiện bởi các tiến trình nền.
Các tiến trình nền: Thực hiện các chức năng thay cho lời gọi tiến trình xử lý tương ứng. Điều khiển vào ra, cung cấp các cơ chế xử lý song song nâng cao hiệu quả và độ tin cậy. Tùy theo từng cấu hình mà Oracle instance có các tiến trình nền:
- Database Writer (DBW0): Ghi lại các thay đổi trong database buffer cache ra các file dữ liệu.
- Log Writer (LGWR): Ghi lại các thay đổi được đăng ký trong redo log buffer vào các redo log files.
- System Monitor (SMON): Kiểm tra sự nhất quán trong CSDL.
- Process Monitor (PMON): Dọn dẹp lại tài nguyên khi các tiến trình của Oracle gặp lỗi.
- The Checkpoint Process (CKPT): Cập nhật lại trạng thái của thông tin trong file điều khiển và file dữ liệu mỗi khi có thay đổi trong buffer cache.
2.2 Các quá trình (process)
2.3 Các cấu trúc liên kết người sử dụng với một Oracle Instance
Share Pool
Trong bước phân tích, Server xử dụng một vùng trong SGA gọi là shared pool để biên dịch câu lệnh SQL. Shared pool gồm có hai thành phần chính:
Library cache: Chứa thông tin về các câu lệnh SQL được xử lý trong một cấu trúc vùng nhớ gọi là shared SQL area. Bao gồm:
- Toàn bộ nội dung câu lệnh SQL
- Cây phân tích (parse): một phiên bản được phân tích của câu lệnh
- Cách thức thực hiện: sơ đồ thực hiện câu lệnh - execution plan.
Trong trường hợp một câu lệnh SQL được thực hiện lại va sơ đồ thực hiện câu lệnh của câu lệnh vẫn còn thì Server sẽ không cần phải phân tích lại câu lệnh. Library cache làm tăng hiệu quả thực hiện câu lệnh SQL.
Data dictionary cache: là một tập hợp các định nghĩa được sử dụng trong CSDL. Nó bao gồm các thông tin về database files, tables, indexes, columns, users, privileges, và các database objects khác.
Kích thước của Shared Pool: được khởi tạo bởi tham số SHARED_POOL_SIZE.
Database Buffer Cache
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 8
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Chức năng của Database Buffer Cache: Khi một truy vấn được xử lý, tiến trình Server sẽ tìm trong database buffer cache các block mà nó cần. Nếu block không tìm thấy trong database buffer cache, tiến trình Server sẽ đọc các block từ các file dữ liệu và đặt một bản copy của nó vào buffer cache. Oracle server sử dụng giải thuật least recently trong việc quản lý cache.
Kích thước của Database Buffer Cache bằng với kích thước của một Oracle block và được xác định bởi tham số DB_BLOCK_SIZE.
Số các buffers được định bởi tham số DB_BLOCK_BUFFERS
Program Global Area
Program Global Area hay Process Global Area (PGA) là vùng nhớ chứa dữ liệu và các thông tin điêu khiển cho một tiến trình server hay một tiến trình nền. Không giống với SGA - dùng chung cho nhiều tiến trình, là vùng dành riêng cho một tiến trình. PGA không chía sẻ và chỉ được ghi bởi các server process. PGA bao gồm các thành phần chính:
Vùng sắp xếp: được sử dụng cho bất kỳ một yêu cầu sắp xếp nào của câu lệnh
Thông tin về phiên: bao gồm thông tin về quyền người sử dụng và các thống kê thực thi cho 1 phiên..
Trạng thái cursor: Chỉ ra mức xử lý hiện tại của câu lệnh SQL;
Vùng Stack: Chứa các biến khác của sesstion
Redo Log Buffer
Các tính chất của Redo Log Buffer:
Kích thước được xác định bởi tham số: LOG_BUFFER
Lưu lại các thay đổi trong instance: các block bị thay đổi, vị trí thay đổi, và các giá trị mới trong a redo entry. Redo entry không phân biệt các kiểu block; nó đơn giản chỉ ghi lại các byte thay đổi trong block.
Sử dụng tuần tự: Redo log buffer được sử dụng một cách tuần tự, các thay đổi trong một giao dịch được thực hiện xen kẽ với các thay đổi trong một giao dịch khác.
Đây là một circular buffer, nó sẽ được sử dụng lại khi đầy.
Rollback Segment
Trước khi thay đổi, tiến trình Server sẽ lưu các giá trị cũ vào một rollback segment. Gọi là before-image, được sử dụng để:
Undo các thay đổi khi giao dịch bị rolled back
Cho phép đọc nhất quán đảm bảo các giao dịch khác không thay đổi các dữ liệu chưa được commit bằng lệnh DML.
Khôi phục lại dữ liệu khi có sự cố.
Rollback segment như tables, index tồn tại trong data file và các rollback block được đưa vào database buffer cache nếu cần.
Rollback segment được tạo bởi DBA. Các thay đổi đối với Rollback segment đều được lưu vào redo log file.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 9
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Các thay đổi trong rollback segments được ghi lại trong redo log buffer.
Log writer
Thực hiện ghi lại tuần tự từ redo log buffer vào redo log file theo các tình huống sau:
Khi COMMIT một giao dịch.
Khi redo log buffer đầy 1/3.
Khi thay đổi của các bản ghi trong redo log buffer lớn hơn 1 MB
Trước khi DBW0 ghi các block bị thay đổi trong bộ đệm ra file dữ liệu.
Các Instance Processes khác
Database Writer (DBW0): ghi lại các vùng đệm bị thay đổi (dirty buffers) trong database buffer cache ra file các dữ liệu, đảm bảo đủ số lượng bộ nhớ.
System Monitor (SMON): Trong trường hợp Oracle instance bị lỗi, các thông tin trong SGA chưa kịp lưu lên đĩa sẽ bị mất. Tiến trình nền PMON sẽ thực hiện khôi phục một cách tự động ngay khi CSDL được mở lại. Việc này được tiến hành theo các bước:
- Khôi phục các dữ liệu chưa kịp ghi lên file dữ liệu nhưng đã lưu vào online log redo.
- Mở CSDL và cho phép các user truy nhập vào
- Khôi phục lại các giao dịch chưa commit.
- Kết hợp các vùng không gian kề nhau trong file dữ liệu. Và phân bổ lại các segment, trả lại vùng trống trong các file dữ liệu.
Process Monitor (PMON):thực hiện dọn dẹp sau khi các tiến trình bị lỗi.
- Khôi phục lại các giao dịch hiện thời của người sử dụng\
- Giải phóng các bảng, dòng dữ liệu đang bị khóa (locked)
- Giải phóng các tài nguyên dành riêng cho người sử dụng
Archiving Process: cho phép đặt chế độ lưu trữ ARCHIVELOG và NOARCHIVELOG.
- Trong chế độ NOARCHIVELOG: chỉ các dữ liệu trong bộ nhớ SGA bị mất, các dữ liệu trên đĩa vân được lưu giữ. Dữ liệu đã commit có thể khôi phục lại.
- Trong chế độ ARCHIVELOG: các thay đổi đối với CSDL đều được lưu ra online redo log file. Chế độ này được đặt mặc định trong CSDL.
Checkpoint (CKPT): sử dụng để đồng bộ hóa các file dữ liệu
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 10
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
2.4 Xử lý một câu lệnh SQL
Các tiến trình người dùng và tiến trình server là các tiến trình chính xử lý các câu lệnh SQL. Tuy nhiên cũng còn có một số tiến trình khác xử lý câu lệnh SQL.
Các tiến trình user và server được sử dụng để kết nối một user với một Oracle instance.
Một vài tiến trình nền, cấu trúc SGA, và các database file được sử dụng để xử lý câu lệnh SQL.
- Các truy vấn yêu cầu một tiến trình mở rộng cho phép trả về nhiều dòng dữ liệu.
- Các câu lệnh thao tác dữ liệu (Data manipulation language - DML) yêu cầu các tiến trình mở rộng để lưu vào log file các thay đổi.
- Xử lý Commit đảm bảo các thay đổi dữ liệu trong giao dịch có thể được phục hồi.
Một vài thành phần khác (tiến trình nền) của server không tham gia vào quá trình xử lý nhưng làm tăng tính thực thi và dùng để phục hồi CSDL.
Kết nối với CSDL
Kết nối
Kết nối (connection) là cách giao tiếp giữa một user process và một Oracle server. Một database user có thể kết nối với Oracle server theo ba cách:
User truy nhập vào hệ điều hành chạy Oracle instance và khởi động các ứng dụng, công cụ để truy nhập vào CSDL.
User khởi động các ứng dụng, công cụ trên máy tại chỗ và kết nối với máy tính co Oracle instance thông qua đường mạng. Cách này còn gọi là client-server.
Máy tính của user sẽ giao tiếp thông qua một ứng dụng hoặc network server đang được kết nối với một máy tính có chạy Oracle instance.
Phiên - Sessions
Session là một kết nối cụ thể giữa một user với một Oracle server. Session bắt đâu khi một user được xác nhận bởi một Oracle server và kết thúc khi user ra khỏi theo cách thông thường hoặc bất thường.
Xử lý một truy vấn
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 11
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Các truy vấn nếu thành công sẽ trả về một loạt các dòng dữ liệu. Có ba giai đoạn chính trong xử lý một truy vấn.
Parse: Câu lệnh SQl được biên dịch qua user process và server process, Kết quả biên dịch sẽ được tải vào vùng chia sẻ xử lý lệnh SQL. Gồm các việc
- Tìm và copy câu lệnh SQL hiện thời vào shared pool.
- Kiểm tra cú pháp câu lệnh SQL
- Tìm trong từ điển dữ liệu xem có các table và column được dùng trong câu lệnh SQL.
- Khoá đối tượng. Các định nghĩa về đối tượng sẽ không đổi trong quá trình thực hiện lệnh.
- Kiểm tra quyền truy nhập của user vào các schema tham chiếu
- Xác định cách thức thực hiện lệnh tối ưu.
- Tải và thực hiện câu lệnh trong vùng chia sẻ xử lý lệnh SQL.
Execute: ở thời điểm này Oracle Server đã có đầy đủ thông tin và nguồn cần thiết vì lệnh đã được thực hiện. Với câu lệnh SELECT tiserver process đã chuẩn bị dữ liệu hiển thị.
Fetch: Các đòng dữ liệu được chọn, sắp xếp (nếu cần) và trả về cho user. Phụ thuộc vào số dòng kết quả mà 1 hoặc 1 vài fetch cần để chuyển kết quả cho user.
2.5 Xử lý câu lệnh thao tác dữ liệu
Các bước thực hiện
Bao gồm hai pha thực hiện chính:
Parse: tương tự như trong xử lý truy vấn.
Execute: yêu câu có thêm các tiến trình mở rộng làm thay đổi dữ liệu
Pha thực hiện lệnh
Nếu dữ liệu và các rollback blocks chưa có trong buffer cache, tiến trình Server sẽ đọc dữ liệu từ các file dữ liệu vào buffer cache.
Tiến trình server process đặt locks đối với các dòng dữ liệu bị thay đổi.
Trong redo log buffer, tiến trình server sẽ ghi lại các thay đổi phục vụ cho việc rollback dữ liệu.
Tiến trình Server lưu lại before-image đối với rollback block và cập nhật block dữ liệu. Các thay đổi này được thực hiện trong database buffer cache.
Lưu ý: Các thay đổi đối với blocks sẽ được ghi lại trong bộ nhớ mà chưa được ghi ngay lên đĩa.
2.6 Xử lý COMMIT
Fast COMMIT
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 12
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Oracle sử dụng Fast COMMIT đảm bảo các thay đổi đã được kết chuyển có thể được khôi phục lại khi có sự cố.
System Change Number
Khi kết chuyển một giao dịch, Oracle server sẽ gán một system change number (SCN) cho một giao dịch. SCN có tính duy nhất trong CSDL. Với việc sử dụng SCN, Oracle server có thể kiểm tra nhất quán mà không phụ thuộc vào dữ liệu hay thời gian trong hệ điều hành.
Các bước trong xử lý COMMIT
Tiến trình Server sẽ tạo một bản ghi kết chuyển cùng với một SCN (system change number) trong redo log buffer.
LGWR ghi lại tất cả redo log buffer và cả commit record vào redo log files. Oracle server đảm bảo các thay đổi sẽ không bị mất ngay cả khi Oracle instance bị lỗi.
Thông báo hoàn thành việc COMMIT cho người dùng.
Tiến trình server lưu lại các thông tin xác định giao dịch đã hoàn tất và hủy bỏ các resource locks giải phóng tài nguyên.
ưu điểm của Fast COMMIT
Viết tuần tự vào các log files nhanh hơn là viết vào block khác trong data file.
Lưu lại các thông tin thay đổi một cách tối thiểu vào trong các log files cũng như datafile.
Trong trường hợp có nhiều giao dịch yêu cầu COMMIT cùng một lúc, instance sẽ chuyển các redo lock record thành một lần ghi.
Kích thước của giao dịch không ảnh hưởng tới thời gian thực hiện thao COMMIT.
3 Làm quen với Oracle Server
3.1 Xác nhận phân quyền sử dụng
Việc phân quyền sử dụng là cần thiết trong công việc quản trị. Có hai user account được tạo tự động và được gán quyền DBA: SYS và SYSTEM.
SYS: được tạo tự động và gán quyền DBA. Mật khẩu truy nhập được nạp vào trong khi cài đặt. Có quyền sở hữu các bảng và các từ điển dữ liệu trong CSDL.
SYSTEM: được tự động tạo ra với mật khẩu ban đầu là manager và cũng được gán quyền DBA. Tuy nhiên, SYSTEM còn được sở hữu cả một số table, view mở rộng chứa các thông tin sử dụng cho các tools của Oracle.
Các phương thức xác nhận quyền:
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 13
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
H×nh vÏ 2 Phương thức xác nhận quyền
3.2 Các công cụ quản trị CSDL Oracle cơ bản
Công cụ Diễn giải
SQL*Plus Line Mode
Một tiện ích sử dụng cho việc công quản trị như starting up, shutting down, hoặc phục hồi CSDL
Oracle Enterprise Manager
Giao diện đồ họa để thực hiện việc quản trị, điều khiển và thay đổi một hoặc nhiều CSDL
SQL*Loader Tiện ích sử dụng để nạp các file bên ngoài vào trong các bảng của Oracle
Export or Import utility
Tiện ích sử dụng để exporting hoặc importing dữ liệu theo khuôn dạng của Oracle
Password File utility
Tiện ích sử dụng để tạo file mật khẩu trong CSDL
Trong bài này, một số công cụ được sử dụng cho việc quản trị CSDL sẽ được giới thiệu:
Universal Installer
Oracle Enterprise Manager
Oracle Configuration Assistant
Oracle Universal Installer
Đưa ra các giải pháp cài đặt trên các nền phù hợp Java (Java-enabled platforms). Quá trình cài đặt sẽ tự động dò tìm các phụ thuộc giữa các components và platform.
Kiến trúc mềm dẻo tối ưu (Optimal Flexible Architecture - OFA): OFA tổ chức các database file theo kiểu và cách sử dụng. OFA cung cấp:
Phương thức cài đặt các CSDL Oracle và các ứng dụng
Dễ dàng quản trị: sao lưu, phục hồi
Nâng cao hiệu quả bằng cách giảm bớt các tranh chấp trên đĩa của các file dữ liệu, file quản trị,…
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 14
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Dễ dàng quản trị nhiều Oracle home trên cùng một máy bằng việc phân tách các file trên các vùng đĩa khác nhau.
Oracle Enterprise Manager
Oracle Enterprise Manager
Oracle Enterprise Manager - OME là phương tiện cho phép có được cái nhìn tổng thể về toàn bộ hệ thống. Trong đó có cây phân cấp và các hình ảnh đồ họa về các đối tượng và quan hệ giữa chúng trong hệ thống.
OME có các tiến trình Intelligent Agent processes cho phép quản lý từ xa các dịch vụ chung - common services như jobs, events,… một cách dễ dàng.
OME cũng bao gồm cả những ứng dụng quản lý chuyên biệt: DBA Management Pack, Advanced Management Packs.
Bên cạnh đó, OME còn cung cấp một lượng lớn các hàm APIs cho phép tích hợp với các hệ thống quản lý ứng dụng khác, bao gồm cả các hệ thống quản lý của Oracle và không phải của Oracle.
Kiến trúc OME
Kiến trúc OME là mở rộng của kiến trúc Client/Server, nó có kiến trúc ba lớp.
Lớp thứ nhất chứa các Java-based console và các ứng dụng tích hợp cho phép cài đặt và chạy bởi các Web browser.
Lớp thứ hai là Oracle Management Server - OMS. Chức năng chính của OMS là xử lý và quản trị tất cả các tác vụ của hệ thống, tập trung quản lý và phân phối điều khiển giữa các clients và các nút điều khiển - managed nodes.
OEM sử dụng Oracle Enterprise Manager repository để duy trì dữ liệu hệ thống, dữ liệu ứng dụng và các trạng thái của các thực thể điều khiển phân tán trong hệ thống, cho phép người dùng có thể truy cập và chia sẻ các vùng dữ liệu lưu trữ.
Lớp thứ ba bao gồm các đích như databases, nodes và các dịch vụ quản lý khác.
Các dịch vụ chung
OEM có các dịch vụ cho phép quản lý các nodes qua mạng (network)
Dịch vụ phục hồi - Discovery service: OEM tự động khôi phục (định vị) tất cả các CSDL và các dịch vụ chạy trên managed nodes, một khi các nodes được xác định. Các dịch vụ này bao gồm Web servers, listeners, machines, parallel servers, video servers, và các services khác.
Job Scheduling System: cho phép thực hiện tự động, lặp lại các tác vụ. Hệ thống cho phép tạo và quản lý các jobs, lên kế hoạch thực hiện chúng, cho phép xem và chia sẻ thông tin xác định các Jobs với các quản trị hệ thống khác.
Event Management System: cho phép quản lý môi trường mạng (network environment) xử lý các trường hợp mất dịch vụ, thiếu hoặc hết vùng lưu trữ, và các vấn đề khác như sử dụng tài nguyên CPU. Mỗi khi các event được phát hiện, người quản trị có thể thông báo hoặc sửa nó.
Bảo mật - Security: các tham số bảo mật xác định cho từng services, objects, và administrators.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 15
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Shared Repository
OEM là một hệ thống đa người dùng - multiuser system. Mỗi quản trị viên có một account riêng để đăng nhập vào hệ thống. Tùy theo việc thiết đặt quyền hạn, mà quản trị viên có thể truy cập vào các dữ liệu lưu trong kho trung tâm, kho được chia sẻ cho tất cả các quản trị viên của OEM để thực hiện công việc quản lý.
Oracle Configuration Assistant
Configuration Assistant là công cụ cho phép tạo các shared repositories, đặt lại cấu hình cho các OMS và thiết đặt các local console (đơn vị điều khiển cục bộ). Configuration Assistant được tự động khởi động ngay sau khi hoàn tất quá trình cài đặt của Universal Installer. Nó cũng có thể được khởi động bằng tay (chạy lệnh %emrepmgr từ dấu nhắc hệ thống).
Oracle Enterprise Manager Console
Bao gồm cả cây phân cấp và hình ảnh đồ họa biểu diễn các đối tượng trong hệ thống.
- Các nút có biểu tượng cho phép gọi các ứng dụng khác để cùng thực hiện việc quản trị các tác vụ. Việc này cũng có thể thực hiện thông qua mục chọn tương ứng trên menu.
- Navigator hay object explorer được tổ chức dưới dạng cây phân cấp, cho phép xem các Oracle services trong mạng làm việc. Navigator cho phép quản trị viên có thể browse các Oracle services, như databases, listeners, nodes, và name servers, qua đó có thể sửa đổi các tính chất của các đối tượng; ví dụ: người dùng có thể thay đổi nội dung của bảng.
- Job system cho phép thực hiện các tác vụ từ xa liên quan tới listeners, databases. Job system dựa trên các thủ tục trong Tool Control Language (TCL) engine.
H×nh vÏ 3 Oracle Enterprise Manager Console
- Menu cho phép khởi tạo các ứng dụng quản trị khác và thực hiện nhiều tác vụ khác nhau.
- Map hay topographical view cho phép các Oracle services có thể được gộp lại tùy theo quan hệ về không gian, chức năng, hay cả hai. Map view cho phép người sử dụng tập trung vào các đối tượng cần quản lý.
- Event system điều khiển và thông báo các trạng thái của hệ thống.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 16
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
3.3 DBA Management Pack
DBA Management Pack là tập hợp các ứng dụng chuẩn, được cung cấp cùng với OEM bao gồm:
Instance Manager: điều khiển CSDL sẵn có và định nghĩa việc khởi tạo các tham số đối với mỗi instance cụ thể
Security Manager: quản lý người dùng và phân quyền.
Storage Manager: tổ chức các database file và thực hiện quản lý rollback segments.
Schema Manager: tạo và duy trì các objects như tables, indexes, và views.
SQL*Plus Worksheet: giao diện dòng lệnh, cho phép thực hiện các câu lệnh SQL, PL/SQL, các lệnh của SQL*Plus, và các lệnh DBA đặc biệt như startup và shutdown.
Các Tools và wizards quản lý dữ liệu: để nạp và tổ chức lại dữ liệu trong CSDL.
Các Tools và wizards quản lý sao lưu: để sao lưu và phục hồi CSDL và quản lý các redo log files.
Lu ý : Các ứng dụng này có thể gọi từ OEM hoặc gọi trực tiếp từ hệ điều hành.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 17
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
4 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.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 18
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
- 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
- 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:
Tham số Diễn giải
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 19
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
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.
DB_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:
Tham số Diễn giả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:
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 20
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
5 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
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 21
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
processes = 50
parallel_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.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 22
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
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ụ:
CREATE 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
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 23
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
- 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
- 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
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 24
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
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
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
- DICTIONARY - DICT_COLUMNS
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 25
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Schema objects
- DBA_TABLES - DBA_TAB_COLUMNS- DBA_OBJECTS - DBA_CONSTRAINTS
Space allocation
- DBA_ SEGMENTS - DBA_EXTENTS- DBA_FREE_SPACE
Database structure
- DBA_DATA_FILES- DBA_ROLLBACK_SEGS- DBA_TABLESPACES
Dynamic performance view
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.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 26
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
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:
EXECUTE | 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
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 27
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Đả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’));
COMMIT;
END;
Tên trigger: log_logon
Trigger này sẽ được kích hoạt ngay sau khi người sử dụng logon tới một instance.
Trigger này sẽ được kích hoạt nếu người sử dụng là SYS hay bắt đầu bởi OPS$.
Khi trigger được kích hoạt nó sẽ thêm mới một dòng dữ liệu vào bảng event_log.
7 Bảo trì các file điều khiển - Contron files
7.1 Control file
Control file trong một database là các file nhị phân cần thiết cho việc khởi động và hoạt động của database. Mỗi control file được kết hợp với duy nhất một Oracle database.
Control file được cập nhật bởi Oracle server trong quá trình sử dụng database, Các thông tin trong control file chỉ có thể được sửa đổi bởi Oracle server; DBA hay những người sử dụng khác không cáo quyền sửa đổi control file.
Control file chứa
Tên của database.
Định danh của database.
Time stamp lúc tạo lập database.
Tên, vị trí của các file dữ liệu.
Thông tin về tablespace.
Log history.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 28
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Vị trí và trạng thái của các archived logs.
Vị trí và trạng thái của backups.
Số log sequence number hiện thời.
Thông tin checkpoint.
Control file có hai phần
Reusable - có thể dùng lại
Not reusable - không thể dùng lại
7.2 Tạo nhiều control file
Cùng với online redo log files, Oracle cho phép có thể có nhiều các control file được mở ra và ghi vào đồng thời. Có thể mở tới 8 control file.
Ta có thể tạo nhiều control file theo hai cách
Tạo nhiều control file ngay sau khi CSDL được tạo lập
Thêm vào các control file, khi CSDL đã được tạo lập.
Các bước tạo control file
Tắt (shut down) database
Sao chép control file hiện thời
Thêm mới tên control file ở tham số CONTROL_FILES
Khởi động lại database
Mục đích của việc tạo nhiều control file: đảm bảo an toàn trước những sai, lỗi của chính các file điều khiển. Một điều cần lưu ý là các bản sao của các control file cần được đặt tại các vùng đĩa vật lý khác nhau.
Trong trường hợp một control file bị lỗi, ta có thể khởi động lại instance và sử dụng bản sao của các control file mà không cần phải thực hiện khôi phục lại database.
7.3 Lấy thông tin về control file
Thông thường các thông tin về hệ thống được lưu trong các base table. Ta có thể dễ dàng lấy được các thông tin liên quan tới các control file bằng câu lệnh SQL. Thông tin về các control file được lưu trong base table có synonym là V$controlfile. Ví dụ:
SQL> SELECT name
2 FROM v$controlfile;
NAME
-----------------------/
DISK1/control01.con
/DISK2/control02.con
2 rows selected.
Để có được thông tin về các section khác nhau của cùng một control file, ta có thể xem trong view V$controlfile_record_section. Ví dụ:
SQL>SELECT type, record_size, records_total, records_used
2 FROM v$controlfile_record_section
3 WHERE type=’DATAFILE’;
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 29
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
TYPE RECORD_SIZ RECORDS_TO RECORDS_US
------------- ---------- ---------- ----------
DATAFILE 180 30 4
1 row selected.
Ta cũng có thể tham khảo thêm trong các bảng sau:
V$PARAMETER
V$BACKUP
V$DATAFILE
V$TEMPFILE
V$TABLESPACE
V$ARCHIVE
V$LOG
V$LOGFILE
V$LOGHIST
V$ARCHIVED_LOG
V$DATEBASE
8 Bảo trì các Redo log files
8.1 Redo log file
Oracle Server duy trì các online redo log file nhằm đảm bảo việc giảm thiểu việc mất mát dữ liệu. Redo log file ghi lại tất cả các thay đổi đối với dữ liệu trong vùng database buffer cache.
Redo log file có thể được sử dụng trong tình huống khôi phục lại các dữ liệu đã commit nhưng chưa kịp ghi ra các data files khi instance gặp phải sự cố.
Cấu trúc của redo log file
Quản trị viên CSDL có thể điều chình Oracle database để duy trì nhiều online redo log file tránh việc mất mát thông tin CSDL.
Nhóm các online redo log: Là tập hợp nhiều online redo log file giống y hệt nhau. Tiến trình nền LGWR sẽ đồng thời ghi lại cùng một thông tin vào tất cả các online log file. Oracle Server yều cầu có ít nhất là 02 online redo log file. Mỗi một online redo log file trong một group gọi là một member (thành viên)
Tạo lập các redo log file ban đầu
Các online redo log file được khởi tạo trong khi CSDL được tạo. Có một vài tham số cần quan tâm:
Tham số MAXLOGFILES trong lệnh CREATE DATABASE: ứng với số lượng tối đa các online redo log groups. Giá trị của MAXLOGFILES tuỳ thuộc vào từng hệ điều hành.
Tham số MAXLOGMEMBERS trong lệnh CREATE DATABASE xác định số lượng tối đa các thành viên (members) trong mỗi một nhóm (group). Giá trị của MAXLOGMEMBERS tuỳ thuộc vào hệ điều hành.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 30
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Tham số khởi tạo LOG_FILES xác định số lượng tối đa các log groups có thể được mở khi database đang mở.
Tiến trình nền LGWR
Oracle Server ghi lại tất cả các thay đổi đối với CSDL vào vùng đệm redo log buffer. Tiến trình nền LGWR sẽ thực hiện việc ghi các thay đổi từ redo log buffer ra các online redo log file khi
Một giao dịch commits (kết chuyển)
Redo log buffer đầy
Có lớn hơn 1MB các bản ghi thay đổi trong redo log buffer
Quá thời gian timeout (thông thường là 3 giây)
Trước khi DBWn ghi lại các block thay đổi trong database buffer cache ra các data files
Log switches
LGWR ghi ra online redo log file một cách tuần tự. Khi đầy một online redo log file group nó tiếp tục chuyển sang group khác. Sự kiện LGWR chuyển sang một group khác để ghi khi một online redo log file group đã đầy gọi là một log switch.
Checkpoint
Checkpoint hay điểm đánh dâu, tại đó tiến trình nền CKPT cập nhật lại tất các header của tất cả các data file và control file để phản ánh sự thay đổi.
Checkpoint có thể xảy theo các tình huống
Tại các thời điểm có log switch
Khi Instance bị tắt (normal, immediate, abort)
Xảy ra do được định sẵn bởi các tham số: LOG_CHECKPOINT_INTERVAL, FAST_START_IO_TARGET, LOG_CHECKPOINT_TIMEOUT
Khi có yêu cầu trực tiếp của quản trị viên.
Việc lưu trữ các redo log file
Có hai chế độ xử lý các redo log file
NOARCHIVELOG: Trong chế độ này, các online redo log files sẽ bị ghi đè mỗi khi online redo log file bị đầy, hay xảy ra log switches.
ARCHIVELOG: Các groups ứng với các online redo log files đã đầy sẽ được lưu giữ. Do tất cả các thay đổi đối với database đều được ghi lại trong online redo log files nên quản trị viên CSDL có thể cập nhật và khôi phục lại CSDL ngay cả với các dữ liệu chưa được commit mà không sợ mất mát.
Thông tin về log group
Thông tin về log group được lưu trong một vài view khác nhau.
V$thread: cho biết số lượng online redo log groups, log group hiện thời, và sequence number tương ứng. Ví dụ:
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 31
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
SQL> SELECT groups, current_group#, sequence#
2 FROM v$thread;
GROUPS CURRENT_GR SEQUENCE#
---------- ---------- ----------
2 1 689
1 row selected.
V$log: cho biết thông tin về các online redo log file.
SQL> SELECT group#, sequence#, bytes, members, status
2 FROM v$log;
GROUP# SEQUENCE# BYTES MEMBERS STATUS
--------- ---------- -------- --------- ---------
1 688 1048576 1 CURRENT
2 689 1048576 1 INACTIVE
2 rows selected.
Có các trạng thái:
UNUSED: online redo log file group vẫn chưa được sử dụng.
CURRENT: là online redo log group hiện thời. Ngầm định online redo log group này là active.
ACTIVE: online redo log group là active (kích hoạt).
CLEARING: log đang được tạo lại.
CLEARING_CURRENT: log file hiện thời đang được làm rỗng.Log ở trạng thái này khi có lỗi xảy ra trong lúc switch.
INACTIVE: online redo log group không còn cần thiết cho vệc khôi phục instance.
V$logfile: tên của các member trong một group.
SQL> SELECT *
2> FROM v$logfile;
GROUP# STATUSMEMBER
----------------- -----------------------------
1 /DISK3/log1a.rdo
2 /DISK4/log2a.rdo
Điều khiển log switch và checkpoint
Đặt chế độ sử dụng log switch
SQL> ALTER SYSTEM SWITCH LOGFILE;
Đặt chế độ sử dụng checkpoint
SQL> ALTER SYSTEM SWITCH LOGFILE;
8.2 Redo log file group và Redo log file member
Thêm mới Redo log file group
Cú pháp:
ALTER DATABASE [database]
ADD LOGFILE [GROUP integer] filespec
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 32
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
[, [GROUP integer] filespec]...]
GROUP: tên giá trị của group. Nếu bỏ qua tham số này, Oracle Server sẽ tự sinh giá trị phù hợp
Ví dụ:
ALTER DATABASE ADD LOGFILE
(‘/DISK3/log3a.rdo’,
‘/DISK4/log3b.rdo’) size 1M;
Thêm mới Redo log file member
Cú pháp:
ALTER DATABASE [database]
ADD LOGFILE MEMBER
[ ’filename’ [REUSE]
[, ’filename’ [REUSE]]...
TO {GROUP integer
|(’filename’[, ’filename’]...)
}
]...
Ví dụ:
ALTER DATABASE ADD LOGFILE MEMBER
‘/DISK4/log1b.rdo’ TO GROUP 1,
‘/DISK4/log2b.rdo’ TO GROUP 2;
Đổi tên redo log file
Cú pháp:
ALTER DATABASE [database]
RENAME FILE ’filename’[, ’filename’]...
TO ’filename’[, ’filename’]...
Drop một online redo log file group
ALTER DATABASE [database]
DROP LOGFILE
{GROUP integer|(’filename’[, ’filename’]...)}
[,{GROUP integer|(’filename’[, ’filename’]...)}]...
Drop một redo log file member
Cú pháp:
ALTER DATABASE [database]
DROP LOGFILE MEMBER ’filename’[, ’filename’]...
Làm rỗng các online redo log file
Cú pháp:
ALTER DATABASE [database]
CLEAR [UNARCHIVED] LOGFILE
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 33
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
{GROUP integer|(’filename’[, ’filename’]...)}
[,{GROUP integer|(’filename’[, ’filename’]...)}]...
8.3 Phân tích và ghi nhận các redo log file
LogMiner
LogMiner là công cụ cung cấp các thủ tục cho phép xử lý các redo log file và chuyển đổi chúng thành các câu lệnh SQL tiện lợi cho việc phân tích và thực hiện chúng trong database.
Các thủ tục phân tích redo log file
Phân tích redo log file dựa trên từ điển, do đó cần tạo file từ điển trước khi phân tích. Tham số UTL_FILE_DIR chỉ ra đường dẫn tới file từ điển được sử dụng.
Các thủ tục phân tích redo log file nằm trong package DBMS_LOGMNR. Một số thủ tục chính cần quan tâm:
Tạo file từ điển: DBMS_LOGMNR_D.BUILD
Chỉ ra log file cần phân tích: DBMS_LOGMNR.ADD_LOGFILE
Khởi tạo LogMiner: DBMS_LOGMNR.START_LOGMNR
Dừng LogMiner: DBMS_LOGMNR.END_LOGMNR
Các thông tin phân tích
Các thông tin phân tích được đặt trong các view:
V$LOGMNR_DICTIONARY: thông tin về từ điển đang sử dụng.
V$LOGMNR_PARAMETERS: thông tin về các thông số
V$LOGMNR_CONTENTS: nội dung của các redo log file được phân tích
9 Quản lý Tablespaces và Data files
9.1 Cấu trúc logic của database
H×nh vÏ 4 Cấu trúc phân cấp lưu trữ CSDL
Kiến trúc lưu trữ của Oracle database có hai cấu trúc
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 34
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Cấu trúc vật lý: database bao gồm tập hợp các control files, online redo files và data files.
Cấu trúc logic: database bao gồm các tablespaces, segments, extents và data blocks.
Tablespace
Khi một database được tạo, nó sẽ được chia thành nhiều đơn vị logic gọi là các tablespace. Phần dữ liệu được lưu giữ ở mức logic là tablespace sẽ tương ứng với mức vật lý là các data files. Một tablespace có thể có một hay nhiều data files. Tablespace được dùng để:
Điều khiển vùng lưu trữ đĩa vật lý cho từng database
Chỉ định từng khoảng đĩa cho từng user
Chỉ định nơi lưu trữ dữ liệu
Một tablespace có thể chia nhỏ hơn về mặt logic thành các segments.
Data files
Là cấu trúc vật lý thực sự lưu giữ dữ liệu. Các data files có cấu trúc phù hợp với hệ điều hành cụ thể. Data file có một số tính chất sau:
Một data file chỉ thuộc về một tablespace.
Kích thước của data file vẫn có thể thay đổi bởi quản trị viên CSDL cả sau khi data file đó được tạo lập.
Segments (phân đoạn)
Là vùng không gian cấp cho một cấu trúc lưu trữ logic đặc trưng nào đó (ví dụ như table) trong một tablespace.
Một tablespace có thể có nhiều segments
Một segments không thể trải rộng qua nhiều tablespace, tuy nhiên vẫn có thể trải rộng trên nhiều data files
Một segment được tạo bởi một hay nhiều extents (khoảng trống).
Extents (khoảng trống)
Là khoảng trống cấp cho một segment.
Các extents tạo nên một segment
Một extent được tạo nên bởi một hay nhiều blocks đặt liên tiếp nhau.
Một extent chỉ nằm trong một data file nhất định.
Data blocks
Oracle Server quản lý không gian lưu trữ theo từng đơn vị nhỏ thuộc một data file gọi là block hay data block.
ở mức nhỏ nhất, dữ liệu được lưu trong các data blocks. Oracle Server quản lý: cấp phát, đọc, ghi theo từng đơn vị là data block.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 35
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Kích thước của một data block là xác định đối với từng database. Tham số khởi tạo database, DB_BLOCK_SIZE quy định kích thước của block.
Thông thường, kích thước của data block là một số nguyên lần kích thước một block của hệ điều hành (Ví dụ: Windows FAT32, 1 block của hệ điều hành (cluster)= 4 sector = 4*512 bytes) Điều này sẽ tối ưu được số lần truy xuất vào ra dữ liệu của hệ điều hành.
Kích thước tối đa của một block tuỳ thuộc vào hệ điều hành.
9.2 Tablespace
Phân loại tablespace
Tablespace được phân ra làm hai loại SYSTEM và non-SYSTEM.
SYSTEM tablespace: được tạo và nhất thiết phải có trong mỗi database. Nó lưu trữ các từ điển dữ liệu, bao gồm cả các store program unit. SYSTEM tablespace chứa các SYSTEM rollback segment và không chứa các dữ liệu của người sử dụng.
Non_SYSTEM tablespace: Phân tách các dữ liệu ứng dụng, rollback, temporary. Nó điều khiển (control) vùng không gian trống dành cho các user’s object.
Tempoary tablespace
Được sử dụng cho việc sắp xếp, làm nơi lưu giữ các đối tượng tạm thời
Tempoary không lưu giữ các đối tượng thường chú
Tạo temporary tablespace
Sử dụng câu lệnh: CREATE TEMPORARY TABLESPACE. Ví du:
CREATE TEMPORARY TABLESPACE temp
TEMPFILE ’/DISK2/temp_01.dbf’
SIZE 500M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE CREATE TEMPORARY TABLESPACE temp
TEMPFILE ’/DISK2/temp_01.dbf’
SIZE 500M
EXTENT MANAGEMENT LOCAL
UNIFORM SIZE 10M;
Sử dụng Oracle Enterprise Manager:
- Vào tablespace folder, bấm chuột phải rồi chọn Create.
- Chọn page General của cửa sổ Create tablespace. Đặt tuỳ chọn là temporary.
- Bấm ADD để tạo các data file tương ứng cho tablespace.
- Bấm nút Create, tablespace temporary sẽ được tạo lập.
Tạo một tablespace
Cú pháp:
CREATE TABLESPACE tablespace
DATAFILE datafile_clause]
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 36
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
[, datafile_clause]...
[MINIMUM EXTENT integer[K|M]]
[LOGGING|NOLOGGING]
[DEFAULT storage_clause ]
[ONLINE|OFFLINE]
[PERMANENT|TEMPORARY]
[extent_management_clause]
DATAFILE: tên của các data files thuộc vào tablespace.
MINIMUM EXTENT: đảm bảo kích thước của các segments trong tablespace là một số nguyên. (ký hiệu K hoậc M tương ứng với kilobytes hay megabytes)
LOGGING: chỉ ra rằng tất cả các bảng, indexes, partitions trong tablespace sẽ thay đổi việc viết vào redo log.
NOLOGGING: ngược với LOGGING
DEFAULT: chỉ ra các tham số lưu trữ mặc định đối với các đối tượng được tạo trong tablespace.
ONLINE: tablespace có thể dùng được ngay sau khi tạo.
OFFLINE: tablespace chưa thể dùng được ngay sau khi tạo
PERMANENT: tablespace có thể lưu giữ các đối tượng thường chú.
TEMPORARY: tablespace chỉ sử dụng để chứa các đối tượng trung gian (temporary)
extent_management_clause: cách thức quản lý các extents của tablespace
datafile_clause :== filename
{SIZE integer[K|M] [REUSE] | REUSE }
[autoextend_clause]
SIZE: kích thước của file (xác định theo đơn vị K hay M)
REUSE: sử dụng file có sẵn
Autoextend_clause: cho phép hay không cho phép mở rộng các file dữ liệu
Huỷ bỏ tablespace
Sử dụng câu lệnh:
DROP TABLESPACE tablespace
[INCLUDING CONTENTS [CASCADE CONSTRAINTS]]
- INCLUDING CONTENTS: drop tất cả các segments trong tablespace
- CASCADE CONSTRAINTS: drop tất cả các tham chiếu ràng buộc toàn vẹn tới các bảng bên ngoài tablespace
Ví dụ:
DROP TABLESPACE app_data INCLUDING CONTENTS;
Sử dụng Oracle Enterprise Manager:
- Vào tablespace folder, chọn tablespace cần thay đổi.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 37
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
- Bấm chuột phải rồi chọn Remove
- Bấm Yes để hoàn tất công việc
9.3 Quản lý tablespace
Quản lý không gian trong tablespace
Có thể quản lý các extent trong tablespace theo hai chế độ:
Quản lý bằng các từ điển: Oracle server sẽ cập nhật bảng tương ứng trong từ điển dữ liệu mỗi khi extent được cấp phát (allocated) hay thu hồi (deallocated).
Quản lý cục bộ: Oracle server ánh xạ trạng thái của mỗi block với một nhóm các bits của một extent gọi là bitmap.
Đặt chế độ quản lý theo kiểu từ điển hay cục bộ theo mệnh đề:
extent_management_clause :==
[ EXTENT MANAGEMENT
{ DICTIONARY | LOCAL
{ AUTOALLOCATE | UNIFORM [SIZE integer[K|M]] } } ]
DICTIONARY: tablespace được quản lý theo chế độ từ điển
LOCAL: tablespace được quản lý theo chế độ cục bộ
AUTOALLOCATE: hệ thống sẽ tự động có chế độ quản lý phù hợp.
UNIFORM: table space được quản lý với các extents đồng nhất, có cùng kích thước.
Thay đổi, điều chỉnh khả năng lưu trữ của tablespace
Sử dụng câu lệnh:
ALTER TABLESPACE tablespace
{ MINIMUM EXTENT integer[K|M]
| DEFAULT storage_clause }
Ví dụ:
ALTER TABLESPACE app_data
MINIMUM EXTENT 2M;
ALTER TABLESPACE app_data
DEFAULT STORAGE (
INITIAL 2M
NEXT 2M
MAXEXTENTS 999 );
Sử dụng Oracle Enterprise Manager :
- Vào tablespace folder, chọn tablespace cần thay đổi.
- Trong page Extents sẽ hiện ra các thông số tương ứng của table space.
- Điều chỉnh các thông số này cho phù hợp rồi chọn Apply.
Đặt chế độ hoạt động cho tablespace, online hay offline
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 38
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Khi tablespace là online, người sử dụng có thể truy cập dữ liệu vào tablespace. Trong trường hợp offline, người dùng sẽ không thể truy cập vào đó. Vì nhiều lý do khác nhau: để quản lý quyền truy nhập của người dung, tạo dữ liệu backup, phục hồi lại tablespace trong khi database đang mở, di chuyển các datafile trong khi database đang mở,… Quản trị viên có thể đặt lại chế độ hoạt động của tablespace là online hay offline.
Sử dụng câu lệnh:
ALTER TABLESPACE tablespace
{ONLINE
|OFFLINE [NORMAL|TEMPORARY|IMMEDIATE|FOR RECOVER]}
với các tuỳ chọn:
- NORMAL: đẩy toàn bộ data files trong tablespace ra khỏi vùng SGA
- TEMPORARY: thực hiện kiểm tra các online data files trong tablespace.
- IMMEDIATE: bỏ qua các thao tác kiểm tra cần thiết
- FOR RECOVER: sử dụng khi phục hồi tablespace.
Ví du:
ALTER TABLESPACE app_data OFFLINE;
TABLESPACE app_data ONLINE;
Sử dụng Oracle Enterprise Manager:
- Vào tablespace folder, chọn tablespace cần thay đổi.
- Bấm chuột phải rồi chọn offline
- Bấm Yes để hoàn tất công việc
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 39
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Đặt trạng thái Read-only cho tablespace
Sử dụng câu lệnh:
ALTER TABLESPACE tablespace READ [ONLY | WRITE]
Ví du:
ALTER TABLESPACE app_data READ ONLY;
Sử dụng Oracle Enterprise Manager:
- Vào tablespace folder, chọn tablespace cần thay đổi.
- Bấm chuột phải rồi chọn Make Read-Only
- Bấm Yes để hoàn tất công việc
Thay đổi kích thước của data files
Sử dụng câu lệnh:
Thêm mới data file
ALTER TABLESPACE tablespace
ADD DATAFILE filespec [autoextend_clause]
[, filespec [autoextend_clause]]...
autoextend_clause :== [ AUTOEXTEND { OFF|ON[NEXT integer[K|M]]
[MAXSIZE UNLIMITED | integer[K|M]] } ]
- AUTOEXTEND OFF|ON: tự động thay đổi kích thước của data file
- NEXT: vùng đĩa cấp phát cho data file khi cần thêm các extents
- MAXSIZE: vùng đĩa tối đa được cấp cho data file
- UNLIMITED: không hạn chế cấp phát không gian đĩa cho data file
Ví dụ:
ALTER TABLESPACE app_data
ADD DATAFILE ’/DISK6/app_data_04.dbf’
SIZE 200M
AUTOEXTEND ON
NEXT 10M
MAXSIZE 500M;
Thay đổi kích thước data file hiện có
ALTER DATABASE [database]
DATAFILE ’filename’[, ’filename’]...autoextend_clause
Sử dụng Oracle Enterprise Manager:
- Vào datafiles folder, chọn data file cần thay đổi.
- Đặt tuỳ chọn Enable Auto Extend trong page Auto Extend. Định kích thước mới
- Bấm Apply để hoàn tất công việc
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 40
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Với cách làm trên, Oracle sẽ tự động thay đổi kích thước của data files cho phù hợp. Ta cũng có thể thay đổi kích thước của data files một cách trực tiếp:
ALTER DATABASE [database]
DATAFILE ’filename’[, ’filename’]...
RESIZE integer[K|M]
Bổ sung data files vào tablespace
Sử dụng câu lệnh:
ALTER TABLESPACE tablespace
ADD DATAFILE filespec [autoextend_clause]
[, filespec [autoextend_clause]]...
ví dụ:
ALTER TABLESPACE app_data
ADD DATAFILE ’/DISK5/app_data_03.dbf’
SIZE 200M;
Sử dụng Oracle Enterprise Manager:
- Vào tablespace folder, chọn tablespace cần thay đổi.
- Bấm chuột phải rồi chọn Add Datafiles.
- Page General sẽ hiện lên một bảng cho phép nạp mới một data file.
- Chọn Create.
Di chuyển các data file
Sử dụng câu lệnh:
ALTER TABESPACE tablespace
RENAME DATAFILE ’filename’[, ’filename’]...
TO ’filename’[, ’filename’]...
Ví dụ:
ALTER TABLESPACE app_data
RENAME
DATAFILE ’/DISK4/app_data_01.dbf’
TO ’/DISK5/app_data_01.dbf’;
Các bước:
- Đặt chế độ offline cho tablespace
- Di chuyển file dữ liệu tương ứng bằng hệ điều hành
- Chạy câu lệnh trên
- Đặt lại chế độ offline cho tablespace
Hoặc:
ALTER DATABASE [database]
RENAME FILE ’filename’[, ’filename’]...
TO ’filename’[, ’filename’]...
Ví dụ:
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 41
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
ALTER DATABASE
RENAME FILE ’/DISK1/system_01.dbf’
TO ’/DISK2/system_01.dbf’;
Cách làm:
- Tắt database
- Di chuyển file dữ liệu tương ứng bằng hệ điều hành
- Mount lại với hệ điều hành
- Thực hiện câu lệnh ở trên
- Mở lại database
Các thông tin từ điển dữ liệu
Để có thể có các thông tin cần thiết ta có thể tham khảo một số view sau:
Thông tin về tablespace: DBA_TABLESPACES, V$TABLESPACE
Thông tin về data files: DBA_DATA_FILES, V$DATAFILE
Thông tin về các file trung gian: DATA_TEMP_FILES, V$TEMPFILE
10 Cấu trúc lưu trữ
10.1 Các cấu trúc lưu trữ chính của Oracle
Cấu trúc lưu trữ
Chương trước đã trình bày cấu trúc lưu trữ trong Oracle. Cấu trúc lưu trữ bao gồm hai mức physical và logic. ở mức logic, database bao gồm nhiều tablespaces. Mỗi tablespace lại tiếp tục được chia thành nhiều segments. Phần này sẽ giới thiệu chủ yếu về các segments.
Thông tin về cấu trúc lưu trữ
Thông tin về cấu trúc lưu trữ được lưu giữ trong từ điển dữ liệu. Ta có thể dùng câu lệnh SQL để lấy được các thông tin này. Các thông tin này có thể lấy được từ các view: DBA_TABLESPACES, DBA_SEGMENTS, DBA_DATà_FILES, DBA_EXTENTS, DBA_FREE_SPACE.
Ví dụ:
Xem số lượng extents và blocks cấp phát cho một segment
SQL> SELECT segment_name,tablespace_name,extents,blocks
2 FROM dba_segments
3 WHERE owner=’SCOTT’;
SEGMENT_NAME TABLESPACE_NAME EXTENTS BLOCKS
------------ --------------- -------- --------
EMP DATA01 5 55
DEPT DATA01 1 5
BONUS DATA01 1 5
SALGRADE DATA01 1 5
5 rows selected.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 42
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Xem thông tin về các extents trong một segment
SQL> SELECT extent_id,file_id,block_id,blocks
2 FROM dba_extents
3 WHERE owner=’SCOTT’
4 AND segment_name=’EMP’;
EXTENT_ID FILE_ID BLOCK_ID BLOCKS
--------- ------- -------- ------
0 4 2 5
1 4 27 5
2 4 32 10
3 4 42 15
4 4 57 20
5 rows selected.
SQL> SELECT tablespace_name, count(*),
2 max(blocks), sum(blocks)
3 FROM dba_free_space
4 GROUP BY tablespace_name;
TABLESPACE_NAME COUNT(*) MAX(BLOCKS SUM(BLOCKS
--------------- -------- ---------- ----------
DATA01 2 1284 1533
RBS 3 2329 2419
SORT 1 1023 1023
SYSTEM 1 5626 5626
TEMP 1 2431 2431
5 rows selected.
10.2 Segments - phân loại segments
Segments (phân đoạn)
Là vùng không gian lưu trữ các đối tượng trong CSDL. Segments sử dụng vùng không gian trong các data files để lưu giữ đối tượng. Segments có thể phân ra làm nhiều kiểu khác nhau.
Table segment
Table là nơi lưu giữ dữ liệu của database. Một table có thể được chia thành các table segment. Trong mỗi table segment, dữ liệu được tập hợp lại nhưng vẫn tách biệt nhau. Các dữ liệu trong một table segment được lưu trên cùng một tablespace.
Index segment
Index được lưu giữ trong index segment. Mỗi một index ứng với một index segment. Mục đích sử dụng segment này là để tìm (lookup) vị trí dòng dữ liệu trong bảng dựa trên một trường khoá.
Rollback segment
Rollback segment được sử dụng bởi các giao dịch có làm thay đổi database. Trước khi thay đổi dữ liệu hay index blocks, các giá trị cũ sẽ được lưu vào các rollback segment. Phục vụ cho việc undo dữ liệu.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 43
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Temporary segment
Trong một vài thao tác (ví dụ: CREATE INDEX, SELECT DISTINCT, SELECT GROUP BY, …) Oracle Server thực hiện việc sắp xếp dữ liệu. Việc sắp xếp cần có khoảng không gian dùng làm trung gian, temporary segment được sử dụng làm vùng trung gian đó.
LOB segment
Trong một vài trường hợp, một cột của Table có thể dùng để chứa các đối tượng lớn (large objects - LOBs) ví dụ: đoạn văn bản text, hình ảnh, video, …Oracle Server lưu giữ các dữ liệu này trên một segment riêng biệt gọi là LOB segment.
LOB index
Khi một LOB segment được tạo, theo ngầm định, Oracle Server cũng sẽ tạo tương ứng một LOB index. LOB index được sử dụng để có thể dễ dàng tìm được dữ liệu trên LOB segment.
Bootstrap segment
Bootstrap segment có chức năng như một cache segment. Nó được tạo khi database được tạo lập, giúp ích cho việc khởi tạo từ điển dữ liệu khi database được mở bởi instance.
10.3 Quản lý bộ nhớ đối với segment
Cấp phát và thu hồi vùng trống
Các vùng trống được cấp phát khi segment được tạo mới (created), mở rộng (extended), thay đổi (altered). Ngược lại, segment sẽ bị thu hồi vùng trống khi nó bị huỷ (drop), thay đổi (altered), cắt bớt (truncated), hay tự động thay đổi kích thước.
ở mức vật lý, các segment là các phần thuộc data file. Trong một data file, block đâu tiên là header block. Dữ liệu có thể ghi vào data file bắt đầu từ block thứ 2 trở đi tạo nên các vùng sử dụng (used extents) và vùng rỗi (free extents).
Blocks
Một block gồm có ba phần chính:
Vùng header: chứa các thông tin data block address, table directory, row directory, và các transaction slots (vùng lưu giữ thông tin về các transactions làm thay đổi dữ liệu trong block) khi các transaction thay đổi các dòng dữ liệu trong block. Vùng header được mở rộng từ trên xuống.
Vùng dữ liệu: chứa các dòng dữ liệu. Dữ liệu được nạp vào block theo chiều từ dưới lên.
Vùng trống: nằm ở giữa của block.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 44
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
H×nh vÏ 5 Cấu trúc một block
Đối với một block, ta cần quan tâm tới một vài thông số chính sau:
INITRANS: số lượng transaction slots trong block lúc khởi tạo. Mặc định là 1 đối với data segment, là 2 đối với index segment.
MAXTRANS: số lượng transaction slots tối đa trong block. Mặc định là 255.
PCTFREE: phần trăm dung lượng dự trữ trong block để có thể đáp ứng được sự tăng trưởng dữ liệu trong block (thay đổi các dữ liệu dẫn đến thay đổi kích thước của dữ liệu). Mặc định là 10%.
PCTUESD: phần trăm dung lượng tối thiểu trong block mà dưới mức này thì có thể insert dòng dữ liệu vào trong block đó. Mặc định là 40%.
Ví dụ: PCTFREE = 20% và PCTUESD = 40%, ta xem xét 4 trường hợp sau.
Các dòng dữ liệu vẫn có thể insert vào trong block cho tới khi phần trăm dung lượng rỗi nhỏ hơn hay bằng 20%
Vượt quá số lượng này, block đó sẽ không thể insert thêm được dữ liệu. Tuy nhiên vẫn có thể updata dữ liệu và việc updata dữ liệu này vẫn có thể làm cho dung lượng sử dụng của block tăng lên.
Sau khi PCTUSED của block lớn hơn 80%, dữ liệu trong block có thể được update và làm cho PCTUSED < 80%. Tuy nhiên, lúc này vẫn không thể insert thêm dòng dữ liệu vào block đó.
Trong trường hợp dữ liệu trong block tiếp tục được cập nhật và làm cho PCTUSED tiếp tục giảm xuống dưới 40%. Lúc này block lại có thể insert được dữ liệu vào.
Phân đoạn dữ liệu trong các segments
Khi segment được tạo, nó được cấp phát không gian trong tablespace. Khi segment giải phóng, nó sẽ trả lại vùng trống cho tablespace. Cứ như vậy, sau một thời gian sẽ xảy ra hiện tượng phân đoạn trong các data file của tablespace.
Dưới đây là phân loại mức độ phân đoạn dữ liệu trong database:
Tablespace Usage Fragmentation
SYSTEM Data dictionary Zero
TOOLS Applications Very low
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 45
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
DATA n Data segments Low
INDEX n Index segments Low
RBS n Rollback segments High
TEMP n Temporary segments Very high*
11 Quản lý Rollback Segments
11.1 Rollback segments
Rollback segment
Khi một tiến trình thay đổi dữ liệu trong database, nó sẽ lưu trữ các dữ liệu và vị trí (location) của dữ liệu trước khi thay đổi nó. Rollback segment là nơi lưu trữ các giá trị đó.
Rollback segment thường được sử dụng cho các transaction. Các transaction sử dụng rollback segment để lưu giá trị ban đầu của các bản ghi trước khi nó có những thay đổi. Tại mỗi thời điểm, một transaction chỉ sử dụng một rollback segment. Tuy nhiên, một rollback segment có thể phục vụ cho nhiều transaction đồng thời.
Phần header của rollback segment lưu giữ thông tin về các transaction hiện đang sử dụng rollback segment đó.
Khi một transaction bắt đầu, Oracle server sẽ bố trí cho transaction đó một vùng không gian để lưu giữ giá trị cũ. Một con trỏ trỏ tới vùng trống được cấp phát cho transaction đó. Khi transaction đó kết thúc, nó sẽ trả lại vùng không gian cho rollback segment.
Các extent được sử dụng theo kiểu tuần tự. Extent này đầy thì lại chuyển tới extent tiếp theo. Khi extent cuối cùng đầy, nó lại quay về extent đầu (nếu extent đầu rỗng). Trong trường hợp tất cả các extent đều không rỗi (used), khi đó cần phải bổ sung thêm extent vào rollback segment.
Khi transaction bắt đầu, cần có một rollback segment phục vụ cho transaction đó. Transaction cũng có thể yêu cầu sử dụng một rollback segment nhất định thông qua câu lệnh. Ví dụ:
SET TRANSACTION USE ROLLBACK SEGMENT rollback_segment;
Rollback segment có thể ở một trong hai trạng thái: Online hay Offline. Nó chỉ có thể sử dụng được khi nó ở trạng thái Online.
Phân loại rollback segment
SYSTEM rollback segment: nằm trong SYSTEM tablespace. Nó được tạo ra ngay khi tạo database. Segment này sử dụng cho việc thay đổi dữ liệu của các đối tượng trong SYSTEM tablespace.
Non-SYSTEM rollback segment: sử dụng cho việc thay đổi các đối tượng không nằm trong SYSTEM tablespace. Segment này lại có thể phân ra làm hai loại con:
- Private rollback segment: phục vụ cho từng instance cụ thể.
- Public rollback segment: phục vụ cho các Oracle Parallel Instance
Deferred rollback segment: được tạo khi tablespace chuyển sang chế độ offline. Sử dụng để có thể rollback các transaction khi tablespace ở trạng thái offline.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 46
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
11.2 Quản lý rollback segment
Tạo rollback segment
Sử dụng câu lệnh:
CREATE [PUBLIC] ROLLBACK SEGMENT rollback_segment
[TABLESPACE tablespace]
[STORAGE ([INITIAL integer[K|M]]
[NEXT integer[K|M]]
[MINEXTENTS integer]
[MAXEXTENTS {integer|UNLIMITED}]
[OPTIMAL {integer[K|M]|NULL}]
)
]
ví dụ:
CREATE ROLLBACK SEGMENT rbs01
TABLESPACE rbs
STORAGE (
INITIAL 100K
NEXT 100K
MINEXTENTS 20
MAXEXTENTS 100
OPTIMAL 2000K );
Lưu ý:
- MINEXTENTS: nhận giá trị thấp nhất là 2
- OPTIMAL: nhận giá trị lớn hơn hoặc bằng kích thước khởi tạo của rollback segment.
Sử dụng Oracle Enterprise Manager :
- Chọn thư mục rollback segment, bấm chuột phải rồi chọn Create
- Trong page General, nhập vào tên rollback segment, chọn tablespace, kiểu, trạng thái.
- Trong page Extents, nhập vào các thông tin lưu trữ.
- Bấm Create để hoàn tất công việc.
Thay đổi kích thước rollback segment
Sử dụng câu lênh:
ALTER ROLLBACK SEGMENT rollback_segment
[STORAGE ( [NEXT integer[K|M]]
[MINEXTENTS integer]
[MAXEXTENTS {integer|UNLIMITED}]
[OPTIMAL {integer[K|M]|NULL}]
)
]
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 47
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
ví dụ:
ALTER ROLLBACK SEGMENT rbs01
STORAGE( MAXEXTENTS 200 );
Sử dụng Oracle Enterprise Manager:
- Chọn rollback segment cần thay đổi
- Thay đổi các thông số tương ứng trong page Storage
- Chọn Apply để hoàn tất công việc
Thu hồi khoảng trống cấp phát
Sử dụng câu lênh:
ALTER ROLLBACK SEGMENT rollback_segment
SHRINK [ TO integer [ K|M ]];
Ví dụ:
ALTER ROLLBACK SEGMENT rbs01
SHRINK TO 4M;
Sử dụng Oracle Enterprise Manager:
- Chọn rollback segment cần thu nhỏ
- Bấm chuột phải rồi chọn Shring
- Nhập kích thước mới rồi bấm OK
Thay đổi trạng thái của rollback segment
Sử dụng câu lênh:
ALTER ROLLBACK SEGMENT rollback_segment OFFLINE | ONLINE;Ví dụ:
ALTER ROLLBACK SEGMENT rbs01 OFFLINE;
Sử dụng Oracle Enterprise Manager:
- Chọn rollback segment cần thu nhỏ
- Bấm chuột phải rồi chọn Take Offline hoặc Take Offline
- Yes để đồng ý.
Huỷ bỏ rollback segment
Sử dụng câu lênh:
DROP ROLLBACK SEGMENT rollback_segment;
Ví dụ:
DROP ROLLBACK SEGMENT rbs01;
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 48
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Sử dụng Oracle Enterprise Manager:
- Chọn rollback segment cần thu nhỏ
- Bấm chuột phải rồi chọn Remove. (Chỉ remove được khi rollback segment ở trạng thái offfline)
- Yes để đồng ý.
11.3 Thông tin về rollback segment
Thông tin cụ thể của rollback segment có thể lấy được trong view: DBA_ROLLBACK_SEGS. Ngoài ra, thông tin về rollback segment còn có thể lấy được từ view: V$ROLLSTAT, V$ROLLNAME
Ví dụ: lấy thông tin về tất cả các rollback segment sử dụng trong database
SQL> SELECT segment_name, tablespace_name, owner, status
2 FROM dba_rollback_segs;
SEGMENT_NAME TABLESPACE_NAME OWNER STATUS
-------------- ----------------- ------ ---------------
SYSTEM SYSTEM SYS ONLINE
RBS1 RBS SYS ONLINE
RBS2 RBS SYS ONLINE
RBS3 RBS SYS OFFLINE
4 rows selected.
12 Quản lý Tables
12.1 Table - Phân loại table
Table
Table là nơi lưu giữ dữ liệu của database. Các dòng dữ liệu trong table được lưu giữ theo một trật tự tuỳ thuộc vào tính chất của table.
Patitioned Table
Để tăng cường tính sẵn dùng (availability) và mở rộng (scalability) đối với các bảng hay được sử dụng đồng thời (hight concurrent usage). Dữ liệu trong một bảng có thể được lưu giữ thành nhiều vùng riêng biệt gọi là partition. Các partition này có thể thuộc các tablespace khác nhau. Oracle Server hỗ trợ việc quản lý các phân vùng của table bằng các giá trị khoá hay các hàm băm.
Index-Organized Table
Trong index-organized table, dữ liệu trong index được lưu trữ theo các giá trị khoá. Do đó không cần phải có lookup table(bảng dũ tỡm) để xác định dòng dữ liệu. Có thể truy xuất trực tiếp tới dữ liêu.
Clustered Table(nhúm bảng)
Clustered table là một kiểu của table, cho phép lưu giữ dữ liệu một cách tối ưu. Clustered table được tạo bởi nhóm các table cùng có chung các data blocks. Các table này có thể có
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 49
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
chung các cột dữ liệu. Dòng dữ liệu trong cluster có thể được truy xuất theo index hay theo hàm băm.
Cấu trúc dòng dữ liệu trong table
Dòng dữ liệu được lưu giữ trong các database blocks dưới dạng các bản ghi có độ dài có thể thay đổi (variable-length records). Các cột tương ứng trên một dòng dữ liệu được lưu trữ theo như thứ tự lúc định nghĩa bảng. Các cột nhận giá trị NULL sẽ không được lưu trữ. Như vậy, số cột dữ liệu giữa các dòng khác nhau có thể là khác nhau.
Cấu trúc mỗi dòng dữ liệu trong table:
Phần đầu: Lưu giữ số lượng cột dữ liệu trên dòng đó, các thông tin ràng buộc, và các trạng thái lock của dòng đó.
Phần dữ liệu: Với mỗi cột, Oracle server lưu giữ độ rộng của cột và giá trị của cột đó tiếp ngay sau.
H×nh vÏ 6 Cấu trúc dòng dữ liệu trong table
Dịch chuyển dòng dữ liệu (Row migration): Khi phần trăm không gian trống quá nhỏ, có thể sẽ không đủ chỗ trống cho việc lưu giữ dòng dữ liệu (trong trường hợp nó được update). Khi đó Oracle Server sẽ di chuyển toàn bộ dòng dữ liệu đó sang một block mới.
Gộp dòng dữ liệu(Row Chaining): Row chaining xảy ra khi dòng dữ liệu quá lớn để đặt vừa một block. Khi đó, Oracle Server sẽ chia dòng dữ liệu đó thành nhiều khúc (chunks) gọi là các row pieces. Mỗi một row piece sẽ được đặt trong block. Các row piece được gộp lại với nhau.
12.2 Quản lý table
Tạo table
Sử dụng câu lệnh:
CREATE TABLE [schema.] table
(column datatype [ , column datatype ] ...)
[TABLESPACE tablespace ]
[ PCTFREE integer ]
[ PCTUSED integer ]
[ INITRANS integer ]
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 50
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
[ MAXTRANS integer ]
[ STORAGE storage-clause ]
[LOGGING | NOLOGGING]
[CACHE | NOCACHE] ]
- TABLESPACE: tên của tablespace lưu giữ table
- PCTFREE: phần trăm không gian trống thuộc block trên mỗi dòng dữ liệu
- PCTUSED: vùng trống nhỏ nhất được sử dụng trên một block
- INITRANS: số lượng transactions entries cho mỗi block
- MAXTRANS: số lượng tối đa các transactions entries cho mỗi block
- STORAGE: cách thức các vùng trống (extents) được cấp phát cho mỗi table.
- LOGGING: việc tạo table được lưu vào trong redo log file
- CACHE: dữ liệu trong table có thể được truy xuất qua cache
Ví dụ:
CREATE TABLE employee(
id NUMBER(7),
last_name VARCHAR2(25),
dept_id NUMBER(7))
PCTFREE 20 PCTUSED 50
STORAGE(INITIAL 200K NEXT 200K
PCTINCREASE 0 MAXEXTENTS 50)
TABLESPACE data;
Có thể tạo table bằng cách copy từ một bảng khác theo cú pháp:
CREATE TABLE [schema.]table
[ LOGGING | NOLOGGING ]
...
AS
subquery
Sử dụng Schema manager:
- Chọn mục Object/Create trong menu bar
- Chọn kiểu Object tương ứng là table, sử dụng Table Wizard để tạo table.
Temporary table (bảng trung gian)
Temporary table lưu giữ giá trị của dữ liệu tồn tại trong khoảng thời gian của transaction hay session.
Tạo temporary table: CREATE GLOBAL TEMPORARY TABLE
Đặt chế độ tồn tại cho dòng dữ liệu trong temprary table
- ON COMMIT DELETE ROWS: dòng dữ liệu chỉ tồn tại trong transsaction
- ON COMMIT PRESERVE ROWS: dòng dữ liệu tồn tại trong cả session.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 51
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Thay đổi các tham số lưu trữ trong table
Sử dụng câu lệnh:
ALTER TABLE [schema.]table
{[ storage-clause ]
[ PCTFREE integer ]
[ PCTUSED integer ]
[ INITRANS integer ]
[ MAXTRANS integer]}
Ví dụ:
ALTER TABLE summit.employee
PCTFREE 30
PCTUSED 50
STORAGE(NEXT 500K
MINEXTENTS 2
MAXEXTENTS 100);
Sử dụng Oracle Enterprise Manager:
- Chọn Table tương ứng
- Thay đổi các giá trị tương ứng trong page Storage
- Chọn Apply để hoàn tất công việc
Cấp phát các Extents (vùng trống) bằng tay
Ta có thể cấp phát các extents bằng tay để điều khiển việc phân bổ các extents của một table giữa các file. Đồng thời tránh việc mở rộng tự động đối với các bảng.
Cú pháp:
ALTER TABLE [schema.]table
ALLOCATE EXTENT [ ([SIZE integer [K|M]]
[ DATAFILE ‘filename’ ]) ]
Ví dụ:
ALTER TABLE summit.employee
ALLOCATE EXTENT(SIZE 500K
DATAFILE ‘/DISK3/DATA01.DBF’);
Việc thay đổi các tham số lưu trữ trong table có thể cải thiện việc sử dụng không gian và giảm thiểu việc dịch chuyển dữ liệu.
High-water mark
Mỗi table có một high-water mark (mức cao nhất) dùng để xác định block cuối cùng trong một table. Khi dữ liệu được nạp vào bảng, high-water mark sẽ dịch chuyển tới block cuối cùng. Và nó sẽ không được dịch chuyển lại khi dữ liệu bị xoá đi. Việc scan dữ liệu của Oracle Server sẽ diễn ra cho tới khi nó gặp được high-water mark của bảng đó. Ta có thể xác định được high-water mark dựa vào hàm xây dựng sẵn bởi Oracle: DBMS_SPACE.UNUSED_SPACE.
Thu hồi vùng trống đã cấp phát
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 52
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Cú pháp:
ALTER TABLE [schema.]table
DEALLOCATE UNUSED [KEEP integer [ K|M ] ]
- KEEP: Oracle Server giải phóng vùng nhớ không sử dụng nhưng sẽ giữ lại một số byte quá high-water mark
Ví dụ:
ALTER TABLE summit.employee
DEALLOCATE UNUSED;
Truncate table
Truncate table sẽ xoá tất cả các dòng dữ liệu trong bảng và giải phóng vùng không gian sử dụng. High-water mark sẽ được đưa về block đầu tiên.
Cú pháp:
TRUNCATE TABLE [schema.] table
[{DROP | REUSE} STORAGE]
Ví dụ:
TRUNCATE TABLE summit.employee;
Drop table
Cú pháp:
DROP TABLE [schema.] table
[CASCADE CONSTRAINTS]
- CASCADE CONSTRAINTS: Xoá các ngoại khoá nằm trong các bảng khác trước khi xoá bảng.
Ví dụ:
DROP TABLE summit.department
CASCADE CONSTRAINTS;
Thay đổi tính chất của table
Ta có thể thay đổi một số tính chất của bảng: drop column, constraints, default value,… thông qua câu lệnh ALTER TABLE.
12.3 Thông tin về table
Thông tin về table được lưu giữ trong các view từ điển đữ liệu: DBA_OBJECTS, DAB_SEGMENTS, DBA_TABLES.
Ví dụ: lấy thông tin về các bảng sở hữu bởi SUMMIT
SQL> SELECT t.table_name, o.data_object_id,
2 s.header_file, s.header_block
3 FROM dba_tables t, dba_objects o, dba_segments s
4 WHERE t.owner=o.owner
5 AND t.table_name=o.object_name
6 AND t.owner=s.owner
7 AND t.table_name=s.segment_name
8 AND t.owner=’SUMMIT’;
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 53
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
TABLE_NAME DATA_OBJECT_ID HEADER_FILE HEADER_BLOCK
---------- -------------- ----------- ------------
CUSTOMER 12743 2 902
DEPARTMENT 12745 2 912
EMPLOYEE 12748 2 927
IMAGE 12751 2 942
INVENTORY 12753 2 952
ITEM 12755 2 962
LONG_TEXT 12758 2 977
ORDERS 12760 2 987
PRODUCT 12762 2 997
REGION 12765 2 1012
TITLE 12768 2 1027
WAREHOUSE 12770 2 1037
12 rows selected.
13 Quản lý Indexes
13.1 Phân loại Index
Index
Index là cấu trúc cho phép truy xuất trực tiếp tới các dòng dữ liệu trong bảng. Index có thể được phân loại tuỳ theo thiết kế logic hay cài đặt vật lý.
Single Column và Concatenated Column:
- Single Column index: chỉ có một cột trong index key
- Concatenated Column index: Index được tạo trên nhiều cột trong một table.
Unique va NonUnique index:
- Unique index: giá trị index xác định duy nhất một dòng dữ liệu trong bảng
- NonUnique index: có nhiều dòng dữ liệu ứng với cùng một giá trị index
Function-base index:
- Giá trị index được xác định thông qua giá trị của một hàm
Partition và NonPartition index:
- Partitioned index: sử dụng cho các bảng lớn, lưu giữ giá trị index tương ứng trên nhiều segments. Partitioned index được sử dụng cho các Partitioned tables.
- NonPartition index: index lưu giữ các giá trị chỉ trên cùng một segment.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 54
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
B-tree Index
H×nh vÏ 7 Cấu trúc B-Tree
Cấu trúc của B-Tree Index: B-Tree Index có cấu trúc dạng cây, trên cùng là một nút gốc, chứa các con trỏ trỏ tới các mức tiếp theo (nhánh) trong index. Mức dưới cùng (lá) là các blocks. Mức nhánh này chứa các index trỏ tới dòng dữ liệu cụ thể trong bảng.
Khuôn dạng của Index Leaf Entries: được chia làm các phần chính sau:
- Entry header: chứa số lượng các cột và lock information
- Cặp các thông số: độ rộng và giá trị khoá index
- ROWID của dòng dữ liệu chứa giá trị khoá
Các tính chất của Index Leaf Entry:
- Các giá trị khoá sẽ được lặp lại nếu có nhiều dòng dữ liệu có cùng giá trị khoá
- Không có index entry ứng với các dòng dữ liệu mà tất cả các cột khoá đều có giá trị NULL
ảnh hưởng của các DML Operations đối với index:
- Thao tác chèn dữ liệu sẽ tương ứng với việc chèn thêm một nút dữ liệu vào cây.
- Xoá dòng dữ liệu sẽ tương ứng với việc xoá về mặt logic một index entry
- Cập nhật dòng dữ liệu sẽ tương ứng với việc xoá index entry ứng với giá trị cũ và thêm mới một index entry ứng với giá trị mới.
Bitmap Index
Là một cách tổ chức khác của Index. Một bitmap index cũng được tổ chức theo kiểu B-tree, Nhưng mỗi nút lá lại chứa một bitmap (bản đồ ánh xạ bit) đối với mỗi giá trị khoá thay vì là danh sách các giá trị ROWID. Mỗi bit trong bitmap tương ứng với một ROWID, và nếu bit được bật thì điều đó có nghĩa rằng dòng dữ liệu tương ứng với ROWID chứa giá trị khoá.
Cấu trúc:
Entry header: : chứa số lượng các cột và các lock information
Giá trị khoá: bao gồm một cặp chiều dài và giá trị ứng với mỗi cột
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 55
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
H×nh vÏ 8 Cấu trúc Bitmap Index
Đánh giá việc sử dụng B-Tree Index và Bitmap Index
B-tree Bitmap
Suitable for high-cardinality
columns
Suitable for low-cardinality
columns
Updates on keys relatively
inexpensive
Updates on keys relatively
expensive
Inefficient for queries using
OR predicates
Efficient for queries using OR
predicates
Useful for OLTP Useful for data warehousing
13.2 Quản lý Index
Tạo index
Sử dụng câu lệnh:
CREATE [ UNIQUE ]INDEX [schema.] index
ON [schema.] table
(column [ ASC | DESC ] [ , column [ASC | DESC ] ] ...)
[ TABLESPACE tablespace ]
[ PCTFREE integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
[ storage-clause ]
[ LOGGING| NOLOGGING ]
[ NOSORT ]
Ví dụ:
CREATE INDEX summit.employee_last_name_idx
ON summit.employee(last_name)
PCTFREE 30
STORAGE(INITIAL 200K NEXT 200K
PCTINCREASE 0 MAXEXTENTS 50)
TABLESPACE indx;
Sử dụng Oracle Enterprise Manager
- Chọn Object/Create
- Chọn đối tượng cần tạo là index
- Đặt các thuộc tính thích hợp trong page General, Storage, Options
- Bấm Create để tạo index
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 56
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Tạo Reverse Key Indexes
Cú pháp:
CREATE [ UNIQUE ]INDEX [schema.] index
ON [schema.] table
(column [ ASC | DESC ] [ , column [ASC | DESC ] ] ...)
[ TABLESPACE tablespace ]
[ PCTFREE integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
[ storage-clause ]
[ LOGGING| NOLOGGING ]
REVERSE
Ví dụ:
CREATE UNIQUE INDEX summit.orders_id_idx
ON summit.orders(id) REVERSE
PCTFREE 30
STORAGE(INITIAL 200K NEXT 200K
PCTINCREASE 0 MAXEXTENTS 50)
TABLESPACE indx;
Tạo Bitmap Indexes
Sử dụng tham số CREATE_BITMAP_AREA_SIZE để chỉ ra dung lượng bộ nhớ cấp phát cho Bitmap.
Cú pháp:
CREATE BITMAP INDEX [schema.] index
ON [schema.] table
(column [ ASC | DESC ] [ , column [ASC | DESC ] ] ...)
[ TABLESPACE tablespace ]
[ PCTFREE integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
[ storage-clause ]
[ LOGGING| NOLOGGING ]
[ NOSORT ]
Ví dụ:
CREATE BITMAP INDEX orders_region_id_idx
ON summit.orders(region_id)
PCTFREE 30
STORAGE(INITIAL 200K NEXT 200K
PCTINCREASE 0 MAXEXTENTS 50)
TABLESPACE indx;
Thay đổi các thông số của index
Để thay đổi các tính chất của index, sử dụng lệnh ALTER INDEX.
Thay đổi tham số lưu trữ của index:
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 57
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Cú pháp:
ALTER INDEX [schema.]index
[ storage-clause ]
[ INITRANS integer ]
[ MAXTRANS integer ]
Ví dụ:
ALTER INDEX summit.employee_last_name_idx
STORAGE(NEXT 400K
MAXEXTENTS 100);
Cấp phát/ thu hồi không gian dành cho index
Cú pháp:
ALTER INDEX [schema.]index
{ALLOCATE EXTENT ([SIZE integer [K|M]]
[ DATAFILE ‘filename’ ])
| DEALLOCATE UNUSED [KEEP integer [ K|M ] ] }
Ví dụ:
ALTER INDEX summit.orders_region_id_idx
ALLOCATE EXTENT (SIZE 200K
DATAFILE ‘/DISK6/indx01.dbf’);
ALTER INDEX summit.orders_id_idx
DEALLOCATE UNUSED;
Xây dựng lại index
Cú pháp:
ALTER INDEX [schema.] index REBUILD
[ TABLESPACE tablespace ]
[ PCTFREE integer ]
[ INITRANS integer ]
[ MAXTRANS integer ]
[ storage-clause ]
[ LOGGING| NOLOGGING ]
[ REVERSE | NOREVERSE ]
Ví du:
ALTER INDEX summit.orders_region_id_idx REBUILD
TABLESPACE indx02;
ALTER INDEX summit.orders_id_idx REBUILD ONLINE;
Huỷ bỏ index
Sử dụng câu lệnh:
DROP INDEX [schema.] index
Ví dụ:
DROP INDEX summit.deptartment_name_idx;
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 58
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Sử dụng Oracle Enterprise Manager
- Chọn Index muốn huỷ
- Chọn Object/remove
- Bấm Yes để huỷ index
13.3 Thông tin về index
Thông tin về index được lưu giữ trong các view từ điển đữ liệu: DBA_INDEXES, DAB_IND_COLUMNS.
Ví dụ: lấy thông tin về các indexes sở hữu bởi SUMMIT
SQL> SELECT index_name, tablespace_name, index_type,
2 uniqueness, status
3 FROM dba_indexes
4 WHERE owner=’SUMMIT’;
INDEX_NAME TABLESPACE_NAME INDEX_TYPE UNIQUENES STATUS
------------ --------------- ---------- --------- ------
EMPLOYEE_LAST_.. INDX NORMAL NONUNIQUE VALID
ORDERS_ID_IDX INDX NORMAL UNIQUE VALID
ORDERS_REGION_.. INDX02 BITMAP NONUNIQUE VALID
3 rows selected.
14 Duy trì toàn vẹn dữ liệu (Maintaining data integrity)
14.1 Các dạng toàn vẹn dữ liệu
Toàn vẹn dữ liệu là yêu cầu đầu tiên của một hệ quản trị CSDL. Có 3 cách để đảm bảo toàn vẹn CSDL
- Mã nguồn
- Database trigger
- Constraint
Chọn cách thức toàn vẹn dữ liệu nào là do người thiết kế chương trình. Người quản trị chỉ kiểm tra và làm theo các yêu cầu toàn vẹn số liệu đã được định sãn. Mã nguồn được chạy tại client vì vậy trong phần này chỉ chú ý tới Database trigger và Constraint.
Database trigger: là một đoạn chương trình PL/SQL thực hiện khi có các hành động insert, update xảy ra trên các column của bảng. Database trigger có thể bật hoặc tắt khi cần. Database trigger thường được dùng để đảm bảo các ràng buộc phức tạp về mặt nghiệp vụ.
Constraint là kỹ thuật để đảm bảo các ràng buộc cố định về mặt nghiệp vụ, Có đặc điểm:
- Tăng khả năng thực thi
- Dễ định nghĩa và sửa đổi bởi vì nó không phải là những đoạn mã phức tạp
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 59
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
- Các ràng buộc chính
- Mềm dẻo
- Có đầy đủ thông tin trong database dictionary.
Có các loại constraint sau:
- NULL/NOT NULL: ràng buộc column trống hoặc không trống, trong ví dụ mệnh đề ràng buộc:
- UNIQUE: Chỉ ra ràng buộc duy nhất, các giá trị của column chỉ trong mệnh đề UNIQUE trong các row của table phải có giá trị khác biệt. Giá trị null là cho phép nêu UNIQUE dựa trên một cột. Vd:
- PRIMARY KEY: Chỉ ra ràng buộc duy nhất (giống UNIQUE), tuy nhiên khoá là dạng khoá UNIQUE cấp cao nhất. Một table chỉ có thể có một PRIMARY KEY. Các giá trị trong PRIMARY KEY phải NOTT NULL.
- FOREIGN KEY ( Referential ): Chỉ ra mối liên hệ ràng buộc tham chiếu giữa table này với table khác, hoặc trong chính 1 table. Nó chỉ ra mối liên hệ cha-con và chỉ ràng buộc giữa FOREIGN KEY bảng này với PRIMARY KEY hoặc UNIQUE Key của bảng khác. Ví dụ quan hệ giữa DEPT và EMP thông qua trường DEPTNO.
- CHECK: Ràng buộc kiểm tra giá trị
14.2 Tạo các constraint
Tạo constraint cùng với việc tạo table.
Tạo constraint cùng với việc chỉnh sửa cấu trúc bảng
Cú pháp như sau:
Tạo constraint tại mức column
column datatype [CONSTRAINT constraint_name]
{[NOT] NULL
| PRIMARY KEY [USING INDEX index_clause]
| UNIQUE [USING INDEX index_clause]
| REFERENCES [schema.]table[(column)]
[ON DELETE CASCADE]
| CHECK (condition)
[DISABLE|ENABLE [VALIDATE|NOVALIDATE]]
Constraint_name : Tên Constraint
USING INDEX index_clause : xác định các tham số cho mệnh đề INDEX
DEFERRABLE : chỉ định Constraint kiểm tra tại điểm cuối của câu lệnh DML
mặc định là NOT DEFERRABLE
Ví dụ:
CREATE TABLE NHANVIEN (
MA NUMBER(7) CONSTRAINT PK_NV PRIMARY KEY
DEFERRABLE
USING INDEX
STORAGE (INITIAL 100k NEXT 100k)
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 60
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
TABLESPACE INDX,
TEN VARCHAR2(25)
CONSTAINT CK_NAME NOT NULL,
MAPHONGBAN NUMBER(7))
TABLESPACE DATA;
Tạo constraint tại mức table
CONSTRAINT constraint_name
{| PRIMARY KEY (column [,column...])
[USING INDEX index_clause]
| UNIQUE (column [,column...])
[USING INDEX index_clause]
| FOREIGN KEY (column [,column...])
REFERENCES [schema.]table[(column)]
[ON DELETE CASCADE]
| CHECK (condition)}
[DISABLE|ENABLE [VALIDATE|NOVALIDATE]]
Để quản lý các constraint dùng lệnh ALTER TABLE. để cho phép hoặc không cho phép constraint đó hoạt động. Cú pháp như sau:
ALTER TABLE [schema.] table
ENABLE [VALIDATE] { CONSTRAINT constraint_name
|PRIMARY KEY
| UNIQUE (COLUMN [,COLUMN]...)}
[USING INDEX index_clause]
[EXCEPTIONS INTO [scheme.].table];
14.3 Lấy thông tin về các constraint
Thông tin về các constraint chứa trong bảng DBA_ CONSTRAINTS.
Bảng EXCEPTIONS được ORACLE dùng để lưu các thông tin về các lỗi ràng buộc
Cách dùng bảng EXCEPTIONS theo các bước sau:
- Nếu bảng EXCEPTIONS chưa được tạo chạy file utlexcpt.sql trong thư mục \RDBMS\ADMIN
Ví dụ để tạo bảng EXCEPTIONS, dùng lệnh
SQL> @%ORACLE_HOME%\RDBMS\ADMIN\utlexcpt;
- Sửa đổi bảng dùng mệnh đề EXCEPTIONS.
SQL> ALTER TABLE EMP
ENABLE VALIDATE CONSTRAINT EMP_DEPT_FK
EXCEPTIONS INTO SYSTEM.EXCEPTION;
SQL> ora-02298 cannot enable em+_dept_fk
- Xác định dữ liệu lỗi được đưa vào bảng EXCEPTIONS
select rowid, empno, ename, deptno
from emp
where rowid in (select row_id from EXCEPTIONs)
for update;
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 61
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
ROWID EMPNO ENAME DEPTNO
---------------------------------------------
AAAeyAADAAAAA1AAA 77 NGUYEN 50
- Làm chuẩn dữ liệu lỗi
Update emp set id = 7777
where rowid = 'AAAeyAADAAAAA1AAA';
- Xoá thông tin về dữ liệu lỗi trong bảng EXCEPTIONS
TRUNCATE TABLE EXCEPTIONS;
ALTER TABLE EMP
ENABLE VALIDATE CONSTRAINT EMP_DEPT_FK
EXCEPTIONS INTO SYSTEM.EXCEPTION;
15 Nạp dữ liệu
Là cách thức chuyển dữ liệu từ bên ngoài hoặc bên trong CSDL vào các bảng (tables) của CSDL. Oracle cung cấp nhiều phương pháp để thực hiện việc nạp dữ liệu vào trong các bảng. Các phương pháp thường dùng có thể kể đến là:
- Nạp dữ liệu trực tiếp
- Sử dụng công cụ SQL* Loader
- Sử dụng công cụ Export và Import
15.1 Nạp dữ liệu trực tiếp
Nạp dữ liệu trực tiếp có thể được sử dụng để sao chép dữ liệu từ một bảng ( table) này tới bảng khác trong cùng một CSDL. Nó gia tăng hiệu quả của các thao tác nạp dữ liệu bằng cách bỏ qua các bộ đệm và viết trực tiếp vào trong datafile.
Cú pháp của lệnh như sau:
INSERT /* APPEND * / INTO [schema.] table
[[ NO] LOGGING]
sub-query;
Trong đó:
- schema: Là tên của người chủ của bảng
- table: Là tên của bảng
- sub-query: là câu lệnh được sử dụng để lấy thông tin yêu cầu để thực hiện lệnh nạp dữ liệu
- LOGGING và NOLOGGING: Tuỳ chọn LOGGING ( Ngầm định) cho phép sinh ra các thực thể tương ứng trong redo log trong quá trình nạp dữ liệu, nhằm mục đích khôi phục lại trạng thái dữ liệu trước đó trong trường hợp nạp dữ liệu có sự cố. NOLOGGING không sinh ra các bản ghi trong redo log, nên trong trường hợp có sự cố không thể quay trở lại trạng thái dữ liệu trước đó
Ví dụ:
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 62
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
INSERT INTO scott.emp
NOLOGGING
SELECT * FROM Scott.old_emp;
15.2 Sử dụng công cụ SQL* Loader
SQL* Loader là tiện ích được sử dụng để nạp dữ liệu từ một file bên ngoài vào trong CSDL Oracle. Đây cũng là công cụ rất mạnh và thường được sử dụng để chuyển dữ liệu từ một hệ thống khác sang cơ sở dữ liệu Oracle. SQL* Loader có thể cho phép:
Có thể sử dụng một hoạch nhiều file đầu vào
Có thể kết hợp nhiều bản ghi trong một bản ghi logic trong quá trình nạp dữ liệu
Các trường đầu vào có thể có chiều dài xác định hoặc thay đổi
Dữ liệu vào có thể ở bất kỳ dạng gì: character, binary, date ...
Dữ liệu có thể nạp từ nhiều thiết bị lưu trữ khác nhau: như đĩa cứng, đĩa mềm, băng từ ...
Dữ liệu có thể nạp vào tròng nhiều bảng cùng llúc trong một lần chạy
Có các tuỳ chọn cho phép thêm dữ liệu hoặc thay thế dữ liệu đang có trong bảng
Có thể thực hiện nạp trực tiếp dữ liệu vào bảng không cần qua các bộ đệm ...
15.2.1Các file được sử dụng bởi SQL* Loader
Trong quá trình nạp dữ liệu, SQL* Loader thường sử dụng hoặc sinh ra các file như sau:
Control file: Xác định khuông dạng đầu vào, bảng đầu ra và các điều kiện tuỳ chọn mà có thể được sử dụng để nạp chỉ những bản ghi phù hợp tìm thấy trong file dữ liệu đầu vào.
Data files: Có chứa dữ liệu với khuuong dạng định nghĩa trong Control file
Parameter files: Là file tuỳ chọn mà có thể được sử dụng để định nghĩa các biến của các dòng lệnh nạp dữ liệu
Log files: được tạo bởi SQL* Loader và có chứa bản ghi được nạp
Bad file: Có chứa các bản ghi bị loại trong quá trình nạp ( ví dụ các bản ghi có khuông dạng không phú hợp)
Discard file: Có chứa tất cả các bản ghi không phù hợp với điều kiện lựa chọn để nạp
15.2.2Các Phương pháp nạp dữ liệu bằng SQL loader.
Phương pháp thông thường: Xây dựng một dãy các hàng ( rows) và sử lệnh SQL INSERT để nạp dữ liệu. Theo cách này các bản ghi đầu vào được phân tích trên cơ sở các đặc điểm của các trường và một mảng các bản ghi được tạo ra được chèn vào bảng chỉ
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 63
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
định trong control file. Các bản ghi mà không phù hợp với tính chất của trưởng sẽ bị loại bỏ . Việc sinh ra redo log được kiểm soát bởi thuộc tính Logging.
Phương pháp trực tiếp: Xây dựng các khối dữ liệu ( blocks) trong bộ nhớ và sau đó ghi trực tiếp vào vùng được xác định cho bảng sẽ được nạp dữ liệu. Redo log không được tạo ra trừ phi CSDL đang trong Archivelog mode. Phương pháp trực tiếp sử dụng các đặc tính của trường để xây dựng toàn bộ các khối (blocks) dữ liệu và viết trực tiếp các block dữ liệu vào Oracle data file.
Nạp trực tiếp bỏ qua các bộ đệm CSDL và chỉ truy nhập SGA nên nó cho phép nhanh hơn phương pháp thông thường nhưng nó lại không thể sử dụng trong mọi trường hợp.
Sau đây là bảng so sánh các sự khác nhau giữa phương pháp thông thường và phương pháp trực tiếp
Phương pháp thông thường Phương pháp trực tiếp
Sử dụng lệnh COMMIT để tạo ra thay đổi dữ liệu một cách cố định
Sử dụng lưu dữ liệu ( data saves)
Các mục Redo log luôn luôn được tạo ra Chỉ tạo ra redo dưới các điều kiện xác định
Tuân theo tất cả các Constraint Chỉ tuân theo các Constrain Primary key, UNIQUE, NOT NULL
Trigger INSERT được bật Trigger INSERT không bật
Có thể nạp dữ liệu vào trong một nhóm bảng
không thể nạp dữ liệu vào trong một nhóm bảng
Các user khác có thể thực hiện các thay đổi trên các bảng này
Các user khác không thể tạo ra các thay đổi trên các bảng này
15.2.3Cách sử dụng SQL*Loader
Các bước sử dụng SQL*Loader.
1. Tạo file nguồn cho việc nhập dữ liệu.
2. Tạo file điều khiển.
3. Thực hiện các quá trình load dữ liệu.
4. Kiểm tra kết quả.
Tạo một file nguồn cho việc nhập dữ liệu(file dữ liệu) là việc cung cấp các dữ liệu dùng cho việc nhập.
Tạo một file điều khiển là việc tạo một file điều khiển để cung cấp cho SQL*Loader những tthông tin sau:
- Tên, vị trí của file dữ liệu.
- ánh xạ các dữ liệu nhập vào các cột của table tương ứng.
- Đặc tả điều kiện cho việc nạp dữ liệu và khuôn dạng dữ liệu cho các cột table.
Cú pháp của việc tạo file điều khiển điển hình như sau:
LOAD DATA
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 64
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
INFILE filename
INTO TABLE table_name
( field_name1 POSITION(start:end) CHAR
field_name2 POSITION(start:end) CHAR)
Ví dụ:
/*tên file là CASE1.CTL*/
LOAD DATA
INFILE 'EMP_DEFT.DAT'
INSERT
INTO TABLE EMP
( EMP_ID SEQUENCE(MAX,1),
F_NAME POSITION (01:35) CHAR,
L_NAME POSITION (36,75) CHAR,
START_DATE SYSDATE )
Có 1 số lượng lớn toán tử SQL có thể dùng cho file điều khiển. Trong SQL có thể dùng bất cứ biểu thức SQL nào.
-Job_title POSITION (34:55) CHAR "UPPER(:job_title)"
-field1 DATE 'mm-dd-yyy' "RTRIM(:field1)"
Thực hiện các quá trình nạp dữ liệu
>SQLLDR username/password CONTROL= control_filename LOG = logfile [keyword= value...]
Trong đó
USERID: Tên và mật khẩu của user sẽ nạp dữ liệu vào.
CONTROL: tên control file (.ctl)
LOG: Tên log file (.log)
BAD: Tên bad file (.bad)
DATA: là file dữ liệu đầu vào
DISCARD: là file chứa các bản ghi không được đưa vào CSDL.
DISCARDMAX: Số lớn nhất các bản ghi DISCARD
SKIP: Số bản ghi bị bỏ qua khi nạp số liệu
LOAD: Số bản ghi được nạp sau khi bỏ qua
ERRORS: Số tối đa các bản ghi bị lỗi cho phép
ROWS: Số row đưa vào vùng đệm trước khi nạp số liệu
DIRECT: Xác định phương pháp trực tiếp (TRUE) hoặc thông thường
Ví dụ:
>SQLLDR scott/tiger CONTROL= case1.ctl LOG = case1.log direct=true
Kiểm tra kết quả: Khi một SQL*Loader thực thi thì sẽ xuất ra 3 file out put file sau:
- Log file.
- Bad record file.
- Discard file.
Các quyền hạn cần có khi sử dụng SQL*Loader:
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 65
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
- Có quyền INSERT trên table.
- Quyền delete table, cần thiết cho việc xóa rỗng table rồi load file.
15.3 Tổ chức lại dữ liệu
Import và Export là dùng để di chuyển dữ liệu vào hoặc ra khỏi cơ sở dữ liệu của Oracle.
Export tạo một bản copy của tất cả các đối tượng của table (table object) và ghi nó vào file ngoài. Import dựa vào file Export đưa dữ liệu trở lại cơ sở dữ liệu. Ngưòi ta thường sử dụng công cụ này trong một số trường hợp sau:
Dùng để lưu trữ dữ liệu.
Nâng cấp vào phiên bản mới của Oracle( chuyển dữ liệu từ version cũ sang version mới).
Xóa tất cả các tablespace.
Nâng cao hiệu suất của cơ sở dữ liệu nhờ việc giảm khả năng phân mảnh dữ liệu lưu trữ.
15.3.1Export:
Export có 3 chế độ Table mode, User mode, Database Mode .
Table mode: Dùng để export các đối tượng bảng. Chúng ta có thể Export các đối tượng sau: Table data, Table definitions, Owner's table grant, constraints, triggers, Indexes và xác định phương thức sử dụng lệnh import.
User mode: Dùng để export toàn bộ đối tượng trong user. Chúng ta có thể export một tập các đối tượng sau như trong chế độ table mode View, Snapshot, Snapshot log, Cluster, Database link, Sequences, Private synonyms, Stored procedure. Nếu User có quyền Export bất kỳ user nào,trong mode này sẽ export toàn bộ các đối tượng của user đó đồng thời các index và trigger do user khác tạo ra trong user’s table. Ngược lại sẽ chỉ export các đối tượng riêng cso của user.
Full Database Mode: Dùng để export toàn bộ đối tượng trong database trừ các đối tượng trong user SYS. Thực hiện việc này cần phải có một số quyền đặc biệt.
Để thực hiện 3 mode trên, user cần có quyền EXP_FULL_DATABASE.
Cú pháp lệnh Export:
Exp [KEYWORD=] {value|(value1,value2,...,valueN) }
[ [ [ . ] KEYWORD=] {value|(value1,value2,...,valueN) } ] ...
Một số tham số của lệnh lệnh Exp
Buffer Kích thước của vùng đệm dữ liệu
File Tên file được đưa ra
Grants Chỉ ra rằng có export các grants hay không
Compress Chỉ ra rằng dữ liệu có nén lại hay không
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 66
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Owner Tên của đối tượng sẽ được export
Ví dụ: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
15.3.2Import:
Chỉ có thể đọc các file được tạo bởi export. Để thực hiện được lệnh này đòi hỏi bạn phải có một số quyền tương ứng. Bạn có thể Import table, Grants, Object, Procedures, Functions và packages.
Cú pháp lệnh Import:
Imp [KEYWORD=] {value|(value1,value2,...,valueN) }
[ [ [ . ] KEYWORD=] {value|(value1,value2,...,valueN) } ] ...
Một số tham số lệnh (Imp)
Fromuser Tên owner user tương ứng với owner trong lệnh exp
Touser Tên user được import
Charset Chỉ character set của export file
Buffer Kích thước của vùng đệm dữ liệu
File Tên file được đưa vào.
Grants Chỉ ra rằng có import có kèm theo grants hay không
Ví dụ: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
16 Quản trị người sử dụng
Một người sử dụng muốn truy cập vào cơ sở dữ liệu có thể được xác nhận bởi một trong những điều sau:
- Cơ sở dữ liệu
- Hệ điều hành
16.1 Tạo một người sử dụng mới
Cú pháp để tạo ra một user mới:
CREATE USER user
IDENTIFIED [ BY PASSWORD/ EXTERNALITY]
[DEFAULT TABLESPACE tablespace}
{TEMPORARY TABLESPACE tablespace}
{Quota [interger [K/M] UNLIMITED ] ON TABLESPACE
{Quota [interger [K/M] UNLIMITED ] ON TABLESPACE].....}
PASSWORD EXPIRE}
ACCOUNT {LOCK/UNLOCK}]
PROFILE [ profile/default}]
Trong đó:
User: Là tên của người sử dụng. Tên này là duy nhất trong cơ sở dữ liệu
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 67
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
by password: Chỉ ra rằng người sử dụng được xác nhận bằng các có sở dũ liệu và nhu cầu để cung cấp password trong khi truy xuất
Externality: Chỉ ra rằng người sử dụng được xác định bởi hệ điều hành
Identified: Mật khẩu của user
Default tablespace: Chỉ định tablespace dùng cho user (ngầm định là system tablespace)
Temporary tablespace: Chỉ tablespace tạm cho user khi thao tác (ngầm định là system tablespace)
Quote: Cho phép user sử dụng khỏang trống trên tablespace là bao nhiêu
Profile: Thiết lập môi trường của user.
Ví dụ: Tạo một người sử dụng Khanh với mật khẩu ktx30
CREATE USER Khanh IDENTIFIED BY ktx30 DEFAULT TABLESPACE users
QUOTA 10M ON users QUOTA 5M ON system PROFILE DEFAULT
Để tạo ra một User mới có thể dùng công cụ enterprise
16.2 Thay đổi thuộc tính của user
Cú pháp:
ALTER USER user
IDENTIFIED [ BY PASSWORD/ EXTERNALITY]
[DEFAULT TABLESPACE tablespace}
{TEMPORARY TABLESPACE tablespace}
{Quota [interger [K/M] UNLIMITED ] ON TABLESPACE
{Quota [interger [K/M] UNLIMITED ] ON TABLESPACE].....}
PASSWORD EXPIRE}
ACCOUNT {LOCK/UNLOCK}]
PROFILE [ profile/default}]
[DEFAULT role1,role2...|ALL|NONE EXCEPT role1,role2...;
Trong đó:
User: Là tên của người sử dụng. Tên này là duy nhất trong cơ sở dữ liệu
by password: Chỉ ra rằng người sử dụng được xác nhận bằng các có sở dũ liệu và nhu cầu để cung cấp password trong khi truy xuất
Externality: Chỉ ra rằng người sử dụng được xác định bởi hệ điều hành
Identified: Mật khẩu của user
Default tablespace: Chỉ định tablespace dùng cho user (ngầm định là system tablespace)
Temporary tablespace: Chỉ tablespace tạm cho user khi thao tác (ngầm định là system tablespace)
Quote: Cho phép user sử dụng khỏang trống trên tablespace là bao nhiêu
Profile: Thiết lập môi trường của user.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 68
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
DEFAULT chỉ ra các role mặc định cho user
16.3 Xoá user
Cú pháp:
DROP USER user [cascade]
trong đó:
Cascade: Xóa tất cả đối tượng trong user's schema trước khi xóa user. Bạn phải chỉ định option này trong khi xóa user mà schema còn có chứa một đối tượng nào đó.
Các User có quyền quản trị ngầm định được tạo trong quá trình cài đặt cơ sở dữ liệu Oracle là User sys và system
Lựa chọn CASCADE drop toàn bộ những đối tượng trong các schema trước khi drop người sủ dụng. Điều này phải được chỉ ra nếu schema chứa bất cứ một đối tượng nào.
Một người sử dụng hiện đang được kết nối với ORA server không thể bị drops
17 Quản trị các Privilege
17.1 Quyền hạn – Privileges
Quyền hạn là khả năng truy nhập vào các đối tượng cơ sở dữ liệu. Trong Oracle mỗi người sử dụng (user) sẽ được gán một số quyền nhất định đối với các đối tượng trong CSDL. Việc gán quyền có thể được thực hiện bởi người quản trị.
Có hai loại quyền hạn cần quan tâm là: System privilege và Object privilege.
Cho phép người dùng có thể thao tác trên một đối tượng CSDL cụ thể. Ví dụ: quyền được tạo, xoá, sửa các table, view, rollback segment, procedure,…
Cho phép người dùng có thể truy cập và thực hiện một thao tác trên một đối tượng cụ thể như: table, view, sequence, procedure, …
17.2 System privilege
Cho phép người dùng có thể thao tác trên một đối tượng CSDL cụ thể. Ví dụ: quyền được tạo, xoá, sửa các table, view, rollback segment, procedure,…
Có khoảng 126 quyền hệ thống (số lượng sẽ tăng lên ở các phiên bản sau). Chúng được phân thành ba loại chính:
Quyền cho phép thực hiện các thao tác hệ thống. Ví dụ: CREATE SESSION, CREATE TABLESPACE,..
Quyền cho phép quản lý các đối tượng sở hữu. Ví dụ: CREATE TABLE
Quyền cho phép quản lý các đối tượng trong các schema khác. Ví dụ: CREATE ANY TABLE.
Các privilege có thể được điều khiển bởi các lệnh DDL như: GRANT và REVOKE.
Ví dụ: một số quyền hệ thống
Phân loại Ví dụ
INDEX CREATE ANY INDEX, ALTER ANY INDEX, DROP ANY INDEX
TABLE CREATE TABLE, CREATE ANY TABLE, ALTER
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 69
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
ANY TABLE, DROP ANY TABLE, SELECT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE
SESSION CREATE SESSION, ALTER SESSION, RESTRICTED SESSION
TABLESPACE CREATE TABLESPACE, ALTER TABLESPACE, DROP TABLESPACE, UNLIMITED TABLESPACE
SYSDBA và SYSOPER privilege
SYSDBA và SYSOPER là hai quyền hệ thống quan trọng trong việc quản trị hệ thống. SYSDBA cho phép người quản trị có thể thực hiện các thao tác trên bất kỳ một đối tượng nào trong database. SYSOPER cho phép thực hiện một số thao tác vận hành trên database.
Ví dụ:
Phân loại Ví dụ
SYSOPER STARTUP, SHUTDOWN, ALTER DATABASE OPEN | MOUNT, ALTER DATABASE BACKUP CONTROLFILE, …
SYSDBA SYSOPER privilege WITH ADMIN OPTION, CREATE DATBASE, RECOVER DATABASE UNTIL
17.2.1Thông tin về system privilege
Thông tin về các system privilege được đặt trong view DBA_SYS_PRIVS. Ví dụ:
SQL> SELECT * FROM DBA_SYS_PRIVS;
GRANTEE PRIVILEGE ADM
---------- --------------- -----...
SUMMIT SELECT ANY TABLE NO
SYS DELETE ANY TABLE NO
SYS EXECUTE ANY TYPE NO
SYS INSERT ANY TABLE NO
SYS SELECT ANY SEQUENCE NO
SYS SELECT ANY TABLE YES
SYS UPDATE ANY TABLE NO
SYSTEM UNLIMITED TABLESPAC YES
...
Thông tin về session hiện thời được lưu trong view SESSION_PRIVS. Ví dụ:
SQL> SELECT * FROM session_privs;
PRIVILEGE
----------------------------------------CREATE
SESSION
ALTER SESSION
CREATE TABLE
SELECT ANY TABLE
CREATE CLUSTER
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 70
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
CREATE SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER
CREATE TYPE
12 rows selected.
17.2.2Gán quyền hệ thống
Sử dụng câu lệnh
Cú pháp:
GRANT {system_priv|role}
[, {system_priv|role} ]...
TO {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
[WITH ADMIN OPTION]
System_priv: quyền được gán
Role: tên role được gán
PUBLIC: gán quyền hệ thống cho tất cả các user
WITH ADMIN OPTION: cho phép người được gán quyền có thể gán quyền này cho người khác.
Ví dụ:
GRANT CREATE SESSION, CREATE TABLE TO managers;
GRANT CREATE SESSION TO scott
WITH ADMIN OPTION;
Sử dụng Oracle Enterprise Manager
- Chọn tên username hay role muốn gán quyền
- Chọn các quyền muốn gán cho username hay role đó trong page System privilege.
- Bấm apply để hoàn tất công việc
17.2.3Thu hồi quyền hệ thống
Cú pháp:
REVOKE {system_priv|role}
[, {system_priv|role} ]...
FROM {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
Lưu ý: lệnh REVOKE chỉ thu hồi các quyền được gán trực tiếp bởi lệnh GRANT.
Ví dụ:
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 71
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
REVOKE CREATE TABLE FROM karen;
REVOKE CREATE SESSION FROM scott;
17.2.4Ví dụ minh hoạ về gán và thu hồi quyền
Ban đầu:
1. DBA gán quyền hệ thống CREATE TABLE cho karen với tuỳ chọn ADMIN OPTION.
2. karen tạo bảng.
3. karen gán quyền CREATE TABle cho scott
4. DBA thu hồi quyền của karen
Kết quả:
Table của karen vẫn tồn tại nhưng karen không có quyền tạo mới bảng. Sau khi karen bị thu hồi quyền, table của scott vẫn tồn tại. Scott vẫn co quyền hệ thống CREATE TABLE.
17.3 Object privilege
Object privilege cho phép người dùng có thể truy cập và thực hiện một thao tác trên một đối tượng cụ thể như: table, view, sequence, procedure, …
Một số quyên đối tượng Object privilege cơ bản:
Object privs Table View Sequence ProcedureALTER + +DELETE + +EXECUTE +INDEX +INSERT + +REFERENCTE +SELECT + + +UPDATE + +
17.3.1Thông tin về Object privilege
Thông tin về các Object privilege gán cho một user cụ thể có thể lấy được từ view DBA_TAB_PRIVS. Ví dụ:
SQL> SELECT * FROM dba_tab_privs
2 WHERE GRANTEE=’SUMMIT’
GRANTEE OWNER TABLE_NAME GRA PRIVILEGE GRA
--------- ----- ----------- ----- ---------- -----
SUMMIT SYS RESUMES SYS READ NO
1 row selected.
Thông tin về quyền hạn của mỗi user đối với mỗi column được lưu trong DAB_COL_PRIVS. Ví dụ:
SQL> SELECT * FROM dba_col_privs;
GRANTEETABLE_NAME COLUMN_NAME GRANTOR PRIVILEGE GRA
------- ---------- ---------- ------- --------- ---
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 72
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
SYSTEM EMPLOYEE ID SUMMITINSERT NO
SYSTEM EMPLOYEE SALARYSUMMITUPDATE NO
2 rows selected.
17.3.2Gán Object privilege
Cú pháp:
GRANT { object_priv [(column_list)]
[, object_priv [(column_list)] ]...
|ALL [PRIVILEGES]}
ON [schema.]object
TO {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
[WITH GRANT OPTION]
Ví dụ:
GRANT EXECUTE ON dbms_pipe TO public;
GRANT UPDATE(first_name, salary) ON
employee TO karen WITH GRANT OPTION;
17.3.3Thu hồi Object privilege
Cú pháp:
REVOKE { object_priv
[, object_priv ]...
|ALL [PRIVILEGES] }
ON [schema.]object
FROM {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
[CASCADE CONSTRAINTS]
- CASCADE CONSTRAINTS: xoá luôn cả các tham chiếu toàn vẹn có liên quan.
Ví dụ:
REVOKE execute ON dbms_pipe FROM scott;
17.3.4Ví dụ minh hoạ về thu hồi Object privilege
Việc thu hồi Object privilege được tiến hành theo kiểu lây truyền (cascade) khi quyền đó được gán kèm theo mệnh đề WITH GRANT OPTION. Ví dụ:
Ban đâu:
1. SCOTT gán quyền SELECT đối tượng EMP cho USER1 kèm theo mệnh đề WITH GRANT OPTION
2. USER1 tiếp tục gán quyền SELECT đối tượng EMP cho USER2.
3. SCOTT thu hồi quyền SELECT của USER1
Kết quả:
Quyền SELECT đối tượng EMP của USER2 cũng bị thu hồi lây truyền.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 73
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
18 Quản lý Roles
18.1 Roles
Oracle cho phép quản lý quyền thông qua các roles. Roles đại diện cho một nhóm quyền được cấp phát cho các user hay cho các roles khác. Roles được đưa ra nhằm làm đơn giản cho việc quản trị database.
Roles có một số tính chất sau:
Việc gán và thu hồi role cho user cũng tương tự như gán và thu hồi các quyền hệ thống.
Role có thể được gán cho các user hay các role khác, ngoại trừ chính nó.
Có thể kích hoạt (enable) hay ngưng kích hoạt (disable) role của mỗi user
Các role khác nhau cần có các tên khác nhau.
Role độc lập với user, role không bị sở hữu bởi user. Có thể gán role cho user.
18.1.1Lợi ích của việc sử dụng role
Giảm bới việc gán quyền. Thay vì việc phải gán cùng một số quyền cho các user. Ta chỉ cần gán các quyền này cho một role. Sau đó, gán role tương ứng cho các user.
Quản lý quyền một cách linh động. Khi các quyền gắn với role thay đổi thì các user được gán role tương ứng cũng sẽ bị thay đổi các quyền.
Việc gán quyền có thể được tiến hành thông qua các lệnh của hệ điều hành hay các tiện ích khác.
Các Object privilege có thể được thu hồi mà không gây hiệu ứng lây truyền (cascade)
Nâng cao hiệu suất. Với việc ngưng kích hoạt role, có thể làm giảm bớt việc kiểm tra và xác nhận quyền.
18.1.2Một số role định sẵn (predefined)
Tên role Diễn giảiCONNECT, RESOURCE Hai role này được đưa ra để tương thích với các phiên bản
trước của Oracle server.DBA Tất cả các quyền hệ thống với cả tuỳ chọn WITH ADMIN
OPTIONEXP_FULL_DATABASE Cho phép export databaseIMP_FULL_DATABASE Cho phép import databaseDELETE_CATALOG_ROLE Quyền DELETE các bảng trong từ điển dữ liệuEXECUTE_CATALOG_ROLE Quyền EXECUTE các package trong từ điển dữ liệuSELECT_CATALOG_ROLE Quyền SELECT dữ liệu tron từ điển dữ liệuBên cạnh những role đó, Oracle Server còn có các role khác cho phép người dùng quản trị databse. Các role này được gọi là OSOPER và OSDBA. Tên của các role này tuỳ thuộc vào từng hệ điều hành cụ thể.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 74
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
18.2 Quản lý role
18.2.1Tạo roles
Sử dụng câu lệnh
Cú pháp:
CREATE ROLE role [NOT IDENTIFIED | IDENTIFIED
{BY password | EXTERNALLY }]
- Role: tên role
- NOT IDENTIFIED: không cần phải xác nhận lại role khi role được kích hoạt
- IDENTIFIED: yêu cầu xác nhận role
- BY password: mật khẩu tương ứng khi xác nhận role
- EXTERNALLY: user cần được xác nhận bởi dịch vụ bên ngoài (ví dụ: dịch vụ của hệ điều hành) trước khi kích hoạt role.
Ví dụ:
CREATE ROLE sales_clerk;
CREATE ROLE hr_clerk
IDENTIFIED BY bonus;
CREATE ROLE hr_manager
IDENTIFIED EXTERNALLY;
Sử dụng Oracle Enterprise Manager
- Kích hoạt ứng dụng Security Manager
- Chọn role folder, bấm chuột phải rồi chọn Create
- Nhập vào tên role và phương thức xác nhận quyền tương ứng.
- Bấm nút Create.
18.2.2Thay đổi role
Sử dụng câu lệnh
Cú pháp:
ALTER ROLE role {NOT IDENTIFIED | IDENTIFIED
{BY password | EXTERNALLY }};
Ví dụ:
ALTER ROLE sales_clerk
IDENTIFIED BY commission;
ALTER ROLE hr_clerk
IDENTIFIED EXTERNALLY;
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 75
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
ALTER ROLE hr_manager
NOT IDENTIFIED;
Sử dụng Oracle Enterprise Manager
- Chọn Role folder tương ứng
- Chọn role
- Xác định phương thức tương ứng của role
- Bấm apply
18.2.3Gán role
Sử dụng câu lệnh
Cú pháp:
GRANT role [, role ]...
TO {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
[WITH ADMIN OPTION]
Ví dụ:
GRANT sales_clerk TO scott;
GRANT hr_clerk,
TO hr_manager;
GRANT hr_manager TO scott
WITH ADMIN OPTION;
Sử dụng Oracle Enterprise Manager
- Chọn User foleder hoặc Role folder tương ứng
- Chọn user hoặc role cần gán quyền
- Chọn role muốn gán trong trong tab role, system privilege
- Bấm apply
18.2.4Điều khiển role
Role mặc định: Một user có thể được gán nhiều role. Role mặc định là các role được tự động gán cho user ngay khi user đó truy nhập vào database.
Cú pháp gán role mặc định:
ALTER USER user DEFAULT ROLE
{role [,role]... | ALL [EXCEPT role [,role]... ] | NONE}
- ALL: gán tất cả role cho user
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 76
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
- EXCEPT: các role không gán mặc định cho user
Ví dụ:
ALTER USER scott
DEFAULT ROLE hr_clerk, sales_clerk;
ALTER USER scott DEFAULT ROLE ALL;
ALTER USER scott DEFAULT ROLE ALL EXCEPT
hr_clerk;
ALTER USER scott DEFAULT ROLE NONE;
18.2.5Kích hoạt và ngưng kích hoạt role
Khi một role được kích hoạt, user có thể sử dụng các quyền gán cho role đó. Ngược lại, user sẽ không sử dụng được các quyền gán cho role nếu role ở trạng thái ngưng kích hoạt (disable). Role có thể được kích hoạt đối với mỗi session.
Việc kích hoạt và ngưng kích hoạt role được thực hiện theo cú pháp
SET ROLE {role [ IDENTIFIED BY PASSWORD ]
[, role [ IDENTIFIED BY PASSWORD ]]...
| ALL [ EXCEPT role [, role ] ...]
| NONE }
- ALL: kích hoạt tất cả các role
- NONE: ngưng kích hoạt tát cả các role
18.2.6Thu hồi role
Sử dụng câu lệnh
Cú pháp:
REVOKE role [, role ]...
FROM {user|role|PUBLIC}
[, {user|role|PUBLIC} ]...
- Role: tên role thu hồi
- User: có role muốn thu hồi
- PUBLIC: thu hồi quyền, role của tất cả các user
Ví dụ:
REVOKE sales_clerk FROM scott;
REVOKE hr_manager FROM PUBLIC;
Sử dụng Oracle Enterprise Manager
- Chọn user hoặc role tương ứng
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 77
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
- Chọn tab Roles hoặc System privilege
- Chọn role cần thu hồi. Bỏ role tương ứng ra khỏi bảng các role cấp phát
- Bấm apply
18.2.7Drop role
Sử dụng câu lệnh
Cú pháp:
DROP ROLE role
Ví dụ:
DROP ROLE hr_manager;
Sử dụng Oracle Enterprise Manager
- Chọn role muốn drop
- Bấm chuột phải, chọn Remove
- Bấm Yes để Drop role
18.3 Hiển thị thông tin về các role
Thông tin về các role có thể lấy được từ các view sau
Role view Diễn giảiDBA_ROLES Các role có trong databaseDBA_ROLE_PRIVS Các role gán cho user hay roleROLE_ROLE_PRIVS Các role gán cho roleDBA_SYS_PRIVS Các quyền hệ thống gán cho user hay roleROLE_SYS_PRIVS Các quyền hệ thống gán cho roleROLE_TAB_PRIVS Các table privilege gán cho roleSESSION_ROLES Các role đang được kích hoạt bởi người sử dụngVí dụ: Xem các role có trong database
SQL> SELECT role, password_required FROM dba_roles;
ROLE PASSWORD
------------------------------ -----------
CONNECT NO
RESOURCE NO
DBA NO
... ..
SELECT_CATALOG_ROLE NO
EXECUTE_CATALOG_ROLE NO
DELETE_CATALOG_ROLE NO
IMP_FULL_DATABASE NO
EXP_FULL_DATABASE NO
SALES_CLERK YES
HR_CLERK EXTERNAL
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 78
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
19 Sử dụng hỗ trợ ngôn ngữ quốc tế (NLS)
19.1 NLS
NLS là tính năng được tích hợp vào trong Oracle để đảm bảo các ứng dụng, thông báo lỗi, sắp xếp ký tự, tiền tệ, … có thể được chuyển đổi tự động giữa các ngôn ngữ thuộc các quốc gia khác nhau.
Hiện tại, Oracle hỗ trợ 45 ngôn ngữ khác nhau thuộc 60 khu vực khác nhau trên thế giới.
Các ngôn ngữ độc lập với hệ thống được điều khiển bởi một số các tham số hệ thống và biến môi trường giữa client và server. Khi đó server và client có thể được chạy tại các địa điểm khác nhau, sử dụng các tập ngôn ngữ khác nhau. Oracle tự động thực hiện việc chuyển đổi tập các ký tự cho phù hợp với quá trình xử lý.
19.2 Chọn tập ký tự
19.2.1Các loại tập ký tự
Oracle hỗ trợ nhiều tập ký tự thuộc các quốc gia khác nhau. Dưới đây là một số tập ký tự tiêu biểu:
Tập ký tự 1 byte
Đối với tập ký tự này, mỗi ký tự được biểu diễn bởi 1 byte. Tập các ký tự tiếng anh chuẩn thuộc loại này. Có hai tập ký tự 1 byte được sử dụng: tập ký tự 7-bit và tập ký tự 8-bit.
Tập ký tự 7-bit: ASCII 7-bit American (US7ASCII)
Tập ký tự 8-bit:
- ISO 8859-1 West European (WE8ISO8859P1)
- EBCDIC Code Page 500 8-bit West European (WE8EBCDIC500)
- DEC 8-bit West European (WE8DEC)
Tập ký tự có độ rộng nhiều byte biến đổi
Đối với tập ký tự này cần phải có nhiều byte mới có thể biểu diễn được một ký tự. Số byte biểu diễn cho một ký tự có thể thay đổi.
Ví dụ:
- Tập ký tự tiếng nhật: Japanese Extended UNIX Code (JEUC)
- Tập ký tự tiếng trung: Chinese GB2312-80 (CGB2312-80)
Tập ký tự có độ rộng cố định
Với tập ký tự này, số byte biểu diễn cho các ký tự khác nhau là như nhau. Điều này tạo nên sự đồng nhất trong tập ký tự, thuận tiện cho việc sắp xếp, chuyển đổi và so sánh.
Ví dụ:
- JA16EUCFIXED,16-bit Japanese (a fixed-width subset of JA16EUC)
- JA16SJISFIXED,16-bit Japanese (a fixed-width subset of JA16SIJS)
Tập ký tự quốc tế (Unicode)
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 79
C«ng ty cæ phÇn tµi ng©n - BFCGi¸o tr×nh kiÕn tróc vµ qu¶n trÞ Oracle 8i
Unicode là tập ký tự tuân theo chuẩn mã hoá ký tự quốc tế cho phép biểu diễn được tất cả các ký tự khác nhau trong máy tính. Đối với phiên bản Unicode version 2.0 có thể biểu diễn được 38,885 ký tự khác nhau.
19.2.2Chọn tập ký tự
Việc chọn tập ký tự tương ứng trong database có thể được thực hiện thông qua mệnh đề: NATIONAL CHARACTER SET trong lệnh CREATE DATABASE. Khi tạo database, cần quan tâm tới sự khác nhau giữa tập ký tự database và tập ký tự quốc gia.
Tập ký tự database là tập ký tự sử dụng để lưu trữ các mã nguồn SQL và PL/SQL. Do đó, nó chỉ có thể là tập ký tự EBCDIC hoặc 7-bit ASCII.
Các kiểu dữ liệu: NCHAR, NVARCHAR2, NCLOB cho phép sử dụng với tập ký tự quốc gia. Trong khi các kiểu dữ liệu: CHAR, VARCHAR2, CLOB chỉ được sử dụng với tập ký tự database.
§µo t¹o kiÕn tróc vµ qu¶n trÞ ORACLE 8i Trang 80