Download - Oracle_DBAdmin v2.0

Transcript
Page 1: 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

Page 2: Oracle_DBAdmin v2.0

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

Page 3: Oracle_DBAdmin v2.0

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

Page 4: Oracle_DBAdmin v2.0

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

Page 5: Oracle_DBAdmin v2.0

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

Page 6: Oracle_DBAdmin v2.0

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

Page 7: Oracle_DBAdmin v2.0

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

Page 8: Oracle_DBAdmin v2.0

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

Page 9: Oracle_DBAdmin v2.0

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

Page 10: Oracle_DBAdmin v2.0

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

Page 11: Oracle_DBAdmin v2.0

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

Page 12: Oracle_DBAdmin v2.0

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

Page 13: Oracle_DBAdmin v2.0

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

Page 14: Oracle_DBAdmin v2.0

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

Page 15: Oracle_DBAdmin v2.0

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

Page 16: Oracle_DBAdmin v2.0

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

Page 17: Oracle_DBAdmin v2.0

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

Page 18: Oracle_DBAdmin v2.0

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

Page 19: Oracle_DBAdmin v2.0

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

Page 20: Oracle_DBAdmin v2.0

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

Page 21: Oracle_DBAdmin v2.0

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

Page 22: Oracle_DBAdmin v2.0

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

Page 23: Oracle_DBAdmin v2.0

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

Page 24: Oracle_DBAdmin v2.0

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

Page 25: Oracle_DBAdmin v2.0

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

Page 26: Oracle_DBAdmin v2.0

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

Page 27: Oracle_DBAdmin v2.0

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

Page 28: Oracle_DBAdmin v2.0

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

Page 29: Oracle_DBAdmin v2.0

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

Page 30: Oracle_DBAdmin v2.0

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

Page 31: Oracle_DBAdmin v2.0

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

Page 32: Oracle_DBAdmin v2.0

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

Page 33: Oracle_DBAdmin v2.0

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

Page 34: Oracle_DBAdmin v2.0

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

Page 35: Oracle_DBAdmin v2.0

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

Page 36: Oracle_DBAdmin v2.0

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

Page 37: Oracle_DBAdmin v2.0

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

Page 38: Oracle_DBAdmin v2.0

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

Page 39: Oracle_DBAdmin v2.0

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

Page 40: Oracle_DBAdmin v2.0

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

Page 41: Oracle_DBAdmin v2.0

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

Page 42: Oracle_DBAdmin v2.0

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

Page 43: Oracle_DBAdmin v2.0

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

Page 44: Oracle_DBAdmin v2.0

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

Page 45: Oracle_DBAdmin v2.0

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

Page 46: Oracle_DBAdmin v2.0

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

Page 47: Oracle_DBAdmin v2.0

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

Page 48: Oracle_DBAdmin v2.0

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

Page 49: Oracle_DBAdmin v2.0

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

Page 50: Oracle_DBAdmin v2.0

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

Page 51: Oracle_DBAdmin v2.0

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

Page 52: Oracle_DBAdmin v2.0

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

Page 53: Oracle_DBAdmin v2.0

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

Page 54: Oracle_DBAdmin v2.0

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

Page 55: Oracle_DBAdmin v2.0

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

Page 56: Oracle_DBAdmin v2.0

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

Page 57: Oracle_DBAdmin v2.0

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

Page 58: Oracle_DBAdmin v2.0

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

Page 59: Oracle_DBAdmin v2.0

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

Page 60: Oracle_DBAdmin v2.0

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

Page 61: Oracle_DBAdmin v2.0

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

Page 62: Oracle_DBAdmin v2.0

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

Page 63: Oracle_DBAdmin v2.0

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

Page 64: Oracle_DBAdmin v2.0

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

Page 65: Oracle_DBAdmin v2.0

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

Page 66: Oracle_DBAdmin v2.0

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

Page 67: Oracle_DBAdmin v2.0

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

Page 68: Oracle_DBAdmin v2.0

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

Page 69: Oracle_DBAdmin v2.0

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

Page 70: Oracle_DBAdmin v2.0

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

Page 71: Oracle_DBAdmin v2.0

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

Page 72: Oracle_DBAdmin v2.0

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

Page 73: Oracle_DBAdmin v2.0

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

Page 74: Oracle_DBAdmin v2.0

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

Page 75: Oracle_DBAdmin v2.0

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

Page 76: Oracle_DBAdmin v2.0

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

Page 77: Oracle_DBAdmin v2.0

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

Page 78: Oracle_DBAdmin v2.0

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

Page 79: Oracle_DBAdmin v2.0

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

Page 80: Oracle_DBAdmin v2.0

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


Top Related