Chào mừng đến với bài viết "Quản lý kiến trúc lưu trữ trong cơ sở dữ liệu Oracle". Trong thế giới công nghệ thông tin hiện nay, cơ sở dữ liệu đóng vai trò rất quan trọng trong việc lưu trữ và quản lý thông tin cho các ứng dụng và hệ thống.
Oracle là một trong những hệ quản trị cơ sở dữ liệu phổ biến nhất hiện nay, được sử dụng rộng rãi trong các doanh nghiệp và tổ chức trên toàn thế giới.
Trong bài viết này, chúng ta sẽ tìm hiểu về kiến trúc lưu trữ trong cơ sở dữ liệu Oracle và các khái niệm cơ bản liên quan đến quản lý cơ sở dữ liệu.
Chúng ta sẽ khám phá các thành phần của kiến trúc lưu trữ Oracle, bao gồm các đối tượng như bảng, cột, khóa chính, chỉ mục, khóa ngoại và các kiểu dữ liệu. Bên cạnh đó, chúng ta sẽ cũng tìm hiểu về các kỹ thuật quản lý lưu trữ trong Oracle như phân vùng, định dạng và kiểm soát dung lượng lưu trữ.
Với kiến thức được trình bày trong bài viết này, các nhà phát triển, quản trị viên cơ sở dữ liệu và các chuyên gia liên quan đến Oracle sẽ hiểu rõ hơn về kiến trúc lưu trữ của Oracle và có thể áp dụng các kỹ thuật quản lý cơ sở dữ liệu để tối ưu hoá hiệu suất hệ thống.
Hãy bắt đầu khám phá bài viết để có thêm kiến thức về quản lý kiến trúc lưu trữ trong cơ sở dữ liệu Oracle.
Dữ liệu trong Table được lưu trữ như thế nào?
Khi một bảng được tạo ra, một đoạn (segment) cũng được tạo ra để chứa dữ liệu của table này. Một tablespace chứa một tập hợp các segment.
Về logic thì, một bảng chứa các giá trị theo hàng và cột. Một hàng cuối cùng được lưu trữ trong một khối(block) cơ sở dữ liệu dưới dạng một mảnh hàng(Row pieces). Nó được gọi là một mảnh hàng vì, trong một số trường hợp, toàn bộ hàng có thể không được lưu trữ ở một nơi duy nhất.
Điều này xảy ra khi insert 1 hàng quá lớn, nó chỉ vừa đủ cho một khối đơn (hàng liên kết) hoặc khi một lệnh cập nhật làm cho một hàng hiện có trở nên quá lớn, dẫn đến việc không thể để vừa vào không gian trống còn lại trong khối hiện tại (hàng di chuyển).
Mảnh hàng cũng được sử dụng khi một bảng có hơn 255 cột. Trong trường hợp này, các mảnh có thể nằm trong cùng một khối (liên kết trong khối) hoặc trên nhiều khối.
Khối cơ sở dữ liệu – Database Block: Content
Block Header: Block header chứa loại segment (như table hoặc index), địa chỉ khối dữ liệu, table dicrectory, row dicrectory và các transaction slots, mỗi slot chiếm khoảng 23 byte, được sử dụng khi thực hiện các thay đổi trên hàng trong khối. Block header mở rộng từ phía trên xuống.
- Row Data: Đây là dữ liệu thực tế cho các hàng trong khối. Không gian dữ liệu hàng mở rộng từ phía dưới lên.
- Free Space: Không gian trống nằm ở giữa khối, cho phép header và row data space mở rộng khi cần thiết. Row data chiếm không gian trống khi các hàng mới được insert vào hoặc khi các cột của các hàng hiện có được update với các giá trị lớn hơn.
Ví dụ về các sự kiện gây ra mở rộng header:
- Row dicrectory cần thêm mục hàng mới
- Yêu cầu nhiều transaction slots hơn so với cấu hình ban đầu
Ban đầu, không gian trống trong khối là liền kề. Tuy nhiên, các thao tác xóa và cập nhật có thể làm phân mảnh không gian trống trong khối. Không gian trống trong khối được gộp lại bởi máy chủ Oracle khi cần thiết.
Khám phá cấu trúc lưu trữ
Bạn có thể dễ dàng xem các cấu trúc lưu trữ của cơ sở dữ liệu của mình thông qua Enterprise Manager Database Express. Thông tin chi tiết về mỗi cấu trúc có thể được lấy bằng cách chọn cấu trúc đó trong menu storage.
Tạo mới Table Space bằng Oracle Enterprise Manager Database Expresss trong Oracle 12c
Dưới đây là các bước để tạo một tablespace trong Oracle:
- Mở menu Storage và chọn Tablespaces.
- Nhấn Create để bắt đầu quá trình tạo tablespace.
- Nhập tên cho tablespace.
- Chọn Permanent trong trường Tablespace Type. Permanent tablespace lưu trữ các đối tượng cơ sở dữ liệu vĩnh viễn được tạo ra bởi hệ thống hoặc người dùng.
- Chọn Smallfile trong trường Bigfile. Bigfile tablespace được sử dụng với các cơ sở dữ liệu cực lớn, trong đó ASM hoặc các trình quản lý khối lượng logic khác hỗ trợ việc striping hoặc redundant array of independent disks (RAID) và các khối lượng logic có thể mở rộng động.
- Chọn Online trong trường Status. Online có nghĩa là người dùng có thể đọc và ghi vào tablespace sau khi tạo. Đây là mặc định.
- Nhấp vào mũi tên xanh để thêm các tệp dữ liệu vào tablespace.
- Một tablespace phải có ít nhất một tệp.
- Trên trang Thêm Tệp Dữ Liệu, nhập thư mục và tên tệp cho tệp dữ liệu.
- Nhập kích thước tệp mong muốn.
- Chọn "Tự động mở rộng" để tự động mở rộng tệp dữ liệu khi đầy và chỉ định một lượng tăng trong trường Tăng. Điều này sẽ làm cho tệp dữ liệu mở rộng tự động mỗi khi nó hết không gian. Tuy nhiên, nó bị giới hạn bởi phương tiện vật lý trên đó nó đặt.
- Để lại Kích thước Tệp Tối Đa là Không Giới Hạn hoặc nhập kích thước tối đa.
- Nhấn vào mũi tên xanh để tiếp tục.
Kích thước khối (Block Size): Trường này hiển thị kích thước khối được sử dụng cho tablespace đang tạo.
Phân bổ phạm vi (Extent Allocation): Có thể phân bổ phạm vi theo hai cách sau:
- Tự động (Automatic): Còn được gọi là autoallocate, nó chỉ định rằng các kích thước của phạm vi trong tablespace được quản lý bởi hệ thống. Bạn không thể chỉ định Tự động cho tablespace tạm thời.
- Đồng nhất (Uniform): Nó chỉ định rằng tablespace được quản lý với các phạm vi đồng nhất có kích thước mà bạn chỉ định. Kích thước mặc định là 1 MB. Tất cả các phạm vi của tablespace tạm thời đều đồng nhất. Bạn không thể chỉ định Đồng nhất cho một tablespace undo.
Logging:
Phần LOGGING thiết lập giá trị logging mặc định cho bất kỳ đoạn tạo ra trong tablespace. Những thay đổi được thực hiện trên các đối tượng trong tablespace sẽ được ghi vào redo log.
Nếu không kích hoạt logging, bất kỳ việc tải trực tiếp sử dụng SQL*Loader và các hoạt động chèn trực tiếp sẽ không được ghi vào redo log, và đối tượng sẽ không thể phục hồi được trong trường hợp mất dữ liệu. Khi một đối tượng được tạo ra mà không có logging được kích hoạt, bạn phải sao lưu những đối tượng đó nếu bạn muốn phục hồi chúng.
Việc không kích hoạt logging có thể ảnh hưởng đáng kể đến khả năng phục hồi các đối tượng trong tương lai. Hãy sử dụng cẩn thận. Để biết thêm chi tiết về phần LOGGING, xem Oracle Database SQL Reference.
Lưu ý: Nếu chế độ FORCE LOGGING được kích hoạt cho cơ sở dữ liệu, nó sẽ ưu tiên hơn thiết lập logging của tablespace. Cơ sở dữ liệu có thể được đặt vào chế độ FORCE LOGGING tại thời điểm tạo cơ sở dữ liệu hoặc sau khi tạo cơ sở dữ liệu bằng lệnh ALTER DATABASE FORCE LOGGING
Quản lý Không gian phân đoạn: Quản lý Không gian phân đoạn có thể được chỉ định như sau:
- Automatic: Trình quản lý cơ sở dữ liệu Oracle sử dụng các bản đồ bit để quản lý không gian trống trong các phân đoạn. Bản đồ bit mô tả trạng thái của mỗi khối dữ liệu trong một phân đoạn liên quan đến số lượng không gian trong khối dữ liệu có sẵn để chèn các hàng.
Khi có nhiều hoặc ít không gian trở nên khả dụng trong một khối dữ liệu, trạng thái mới được phản ánh trong bản đồ bit. Với các bản đồ bit, cơ sở dữ liệu Oracle quản lý không gian trống tự động hơn. Kết quả là, hình thức quản lý không gian này được gọi là Quản lý Không gian phân đoạn Tự động (ASSM). - Manual: Điều này chỉ định rằng bạn muốn sử dụng các danh sách miễn phí để quản lý không gian trống trong các phân đoạn. Các danh sách miễn phí là danh sách các khối dữ liệu có sẵn không gian để chèn các hàng.
Hình thức quản lý không gian trong các phân đoạn này được gọi là quản lý không gian phân đoạn thủ công vì cần phải chỉ định và điều chỉnh các thông số lưu trữ PCTUSED, FREELISTS và FREELIST GROUPS cho các đối tượng schema được tạo trong tablespace. Điều này được hỗ trợ để tương thích ngược; Tuy nhiên, khuyến khích sử dụng ASSM.
Compression Options:
Nén phân đoạn dữ liệu bị vô hiệu hóa theo mặc định. Kích hoạt nén phân đoạn dữ liệu có thể tiết kiệm dung lượng đĩa, giảm việc sử dụng bộ nhớ trong bộ đệm và tăng tốc độ thực thi truy vấn trong quá trình đọc.
Tuy nhiên, sẽ có chi phí về khả năng tiêu thụ CPU cho tải dữ liệu và DML. Điều này đặc biệt hữu ích trong các hệ thống xử lý phân tích trực tuyến (OLAP), nơi có các hoạt động chỉ đọc kéo dài, nhưng cũng có thể được sử dụng trong các hệ thống xử lý giao dịch trực tuyến (OLTP).
Tổng quan các Tablespace được tạo mặc định khi cài đặt Oracle Database
Các tablespace sau được tạo mặc định khi bạn tạo một cơ sở dữ liệu Oracle:
- SYSAUX: Đây là một tablespace phụ trợ của tablespace SYSTEM. Một số thành phần và sản phẩm sử dụng tablespace SYSTEM hoặc tablespace riêng của chúng trong các phiên bản Oracle Database trước đây bây giờ sử dụng tablespace SYSAUX.
- SYSTEM: Tablespace SYSTEM được sử dụng bởi máy chủ Oracle để quản lý cơ sở dữ liệu. Nó chứa từ điển dữ liệu và các bảng chứa thông tin quản trị về cơ sở dữ liệu. Tất cả chúng được chứa trong schema SYS và chỉ có thể được truy cập bởi người dùng SYS hoặc các người dùng quản trị khác với đặc quyền cần thiết.
- TEMP: Tablespace tạm thời được sử dụng khi bạn thực thi một câu lệnh SQL yêu cầu tạo các phân đoạn tạm thời (như một sắp xếp lớn hoặc tạo một chỉ mục). Giống như mỗi người dùng được chỉ định một tablespace mặc định để lưu trữ các đối tượng dữ liệu được tạo ra, mỗi người dùng cũng được chỉ định một tablespace tạm thời.
Thực tế tốt nhất là xác định một tablespace tạm thời mặc định cho cơ sở dữ liệu, được chỉ định cho tất cả người dùng mới được tạo nếu không được chỉ định khác. Trong cơ sở dữ liệu được cấu hình trước, tablespace TEMP được chỉ định là tablespace tạm thời mặc định.
Điều này có nghĩa là nếu không có tablespace tạm thời được chỉ định khi tài khoản người dùng được tạo, Oracle Database sẽ chỉ định tablespace này cho người dùng. - UNDOTBS1: Đây là tablespace undo được sử dụng bởi máy chủ cơ sở dữ liệu để lưu trữ thông tin undo. Nếu một cơ sở dữ liệu sử dụng Automatic Undo Management, thì nó chỉ có thể sử dụng một tablespace undo duy nhất tại bất kỳ thời điểm nào. Tablespace này được tạo lúc tạo cơ sở dữ liệu.
- USERS: Tablespace này được sử dụng để lưu trữ các đối tượng và dữ liệu người dùng. Nếu không có tablespace mặc định được chỉ định khi tạo người dùng, thì tablespace USERS là tablespace mặc định cho tất cả các đối tượng được tạo bởi người dùng đó. Đối với người dùng SYS và SYSTEM, bảng không gian mặc định là bảng không gian SYSTEM.
Bảng không gian EXAMPLE chứa các schema mẫu có thể được cài đặt khi bạn tạo cơ sở dữ liệu. Các schema mẫu cung cấp một nền tảng chung cho các ví dụ. Tài liệu và tài liệu giảng dạy của Oracle chứa các ví dụ dựa trên các schema mẫu.
Lưu ý: Để đơn giản hóa quản trị, thường có một bảng không gian chỉ cho các chỉ mục.
Một số lệnh Alter trên Tablespace
Sau khi bạn tạo một tablespace, bạn có thể thay đổi nó theo nhiều cách khác nhau khi nhu cầu của hệ thống của bạn thay đổi.
Thay đổi trạng thái:
Một tablespace có thể ở một trong ba trạng thái khác nhau. Bất kỳ 1 trong ba trạng thái sau đây có thể không khả dụng vì tính khả dụng của chúng phụ thuộc vào loại tablespace.
- Read Write: Tablespace này đang hoạt động và có thể đọc và ghi.
- Read Only: Chỉ định chế độ Read Only để thiết lập tablespace trong chế độ chỉ đọc chuyển tiếp. Ở trạng thái này, các Transaction hiện có có thể hoàn thành (commit hoặc roll back), nhưng không thể thực hiện thêm các hoạt động thêm sửa xóa dữ liệu được thao tác (DML) trên các đối tượng trong tablespace.
Bạn không nên setting trạng thái các tablespace SYSTEM hoặc SYSAUX thành chế độ read Only.
Lưu ý: undo và temporary tablespace không được chuyển thành chỉ đọc.
- Offline: Bạn có thể chuyển một tablespace đang hoạt động sang trạng thái offline để phần này của cơ sở dữ liệu tạm thời không khả dụng cho việc sử dụng chung. Khi bạn chuyển nó sang trạng thái offline, bạn có thể sử dụng các tùy chọn sau:
- Normal: Một tablespace có thể được chuyển sang trạng thái offline bình thường nếu không có điều kiện lỗi nào cho bất kỳ tệp dữ liệu nào của tablespace đó.
Oracle Database đảm bảo rằng tất cả dữ liệu được ghi vào ổ đĩa bằng cách lấy một điểm kiểm tra cho tất cả các tệp dữ liệu của tablespace khi chúng được chuyển sang trạng thái offline. - Temporary: Một tablespace có thể được cấu hình về trạng thái offline tạm thời ngay cả khi có điều kiện lỗi của một hoặc nhiều file của tablespace. Cơ sở dữ liệu Oracle sẽ đưa các tệp dữ liệu (chưa bị lỗi) xuống và thực hiện checkpoint trên chúng.
Nếu một hoặc nhiều tệp của tablespace bị lỗi write và bạn setting offline cho tablespace temporary, thì cần phục hồi tablespace trước khi bạn có thể đưa nó trở lại trực tuyến. - Immediate: Một tablespace có thể được offline trực tiếp mà không cần Oracle Database thực hiện checkpoint trên bất kỳ tệp dữ liệu nào.
Khi bạn chỉ định "Immediate", thì bạn phải thực hiện phục hồi media cho tablespace trước khi tablespace có thể được đưa trở lại Online. Bạn không thể setting một tablespace offline ngay lập tức nếu cơ sở dữ liệu đang chạy trong chế độ NOARCHIVELOG.
Lưu ý: Không thể setting offline các tablespace của hệ thống.
- Normal: Một tablespace có thể được chuyển sang trạng thái offline bình thường nếu không có điều kiện lỗi nào cho bất kỳ tệp dữ liệu nào của tablespace đó.
Thêm data file vào tablespace
Changing the size: Bạn có thể thêm không gian vào một tablespace hiện có bằng cách thêm các Data files vào tablespace hoặc thay đổi kích thước của data file hiện có. Để thêm một data file mới vào tablespace, bạn nhấp vào Add Datafile. Sau đó, nhập thông tin về data file trên trang Add Datafile to Tablespace.
Để thêm data file vào tablespace trong SQL*Plus, bạn có thể sử dụng lệnh ALTER TABLESPACE. Ví dụ, để thêm một data file mới vào tablespace có tên là "mytablespace", bạn có thể sử dụng lệnh sau:
ALTER TABLESPACE mytablespace ADD DATAFILE '/path/to/new/datafile.dbf' SIZE 100M;
Lưu ý thay đổi "/path/to/new/datafile.dbf" thành đường dẫn đến tệp tin mới của bạn và "100M" thành kích thước của tệp tin mới.
Lưu ý: Bạn không thể thêm data file bổ sung vào bigfile tablespaces.
Lý do chúng ta kiểm tra loại của tệp dữ liệu nó có, là vì chúng ta không thể thêm tệp dữ liệu vào tablespace big file. Chúng ta chỉ có thể điều chỉnh kích thước của nó. Vui lòng tham khảo tài liệu giới hạn vật lý về kích thước để biết thêm chi tiết:
Tablespaces | Maximum number per database | 64 K. Số lượng tablespace không thể vượt quá số lượng tệp cơ sở dữ liệu vì mỗi tablespace phải bao gồm ít nhất một tệp. |
---|---|---|
Bigfile Tablespaces | Số lượng blocks | Một bigfile tablespace chỉ chứa một tệp dữ liệu hoặc tempfile, có thể chứa đến khoảng 4 tỷ (232) block. Kích thước tệp dữ liệu hoặc tempfile đơn lẻ tối đa là 128 terabytes (TB) cho một tablespace với 32 K block và 32 TB cho một tablespace với 8 K block |
Smallfile (traditional) Tablespaces | Số lượng blocks | Một smallfile tablespace là một tablespace truyền thống của Oracle, có thể chứa tối đa 1022 tệp dữ liệu hoặc tempfile, mỗi tệp có thể chứa đến khoảng 4 triệu (222) block. |
Bạn có thể kiểm tra bằng tablespace của bạn có phải là Bigfile hay không bằng lệnh sau:
select name, bigfile from v$tablespace;
Thay đổi cài đặt Data File trong tablespace
Bạn có thể thay đổi cài đặt của một data file bằng cách mở rộng tablespace trên trang Tablespaces, chọn data file và chọn tác vụ phù hợp trong menu Actions.
Để đưa một data file offline, chọn "Take Offline" từ menu "Set Status".
Để thay đổi kích thước của một tệp dữ liệu hiện có:
- Mở rộng tablespace trên trang Tablespaces và chọn data file.
- Chọn Resize trong menu Actions.
- Sau đó, trên trang Edit Datafile, bạn có thể thay đổi kích thước của tệp dữ liệu.
Bạn có thể làm cho tablespace lớn hơn hoặc nhỏ hơn. Tuy nhiên, bạn không thể làm cho một tệp dữ liệu nhỏ hơn không gian đã sử dụng trong tệp; nếu bạn cố gắng làm như vậy, bạn sẽ nhận được thông báo lỗi sau: ORA-03297: file contains used data beyond requested RESIZE value.
Ngoài ra, cũng có cách thay đổi kích thước tệp dữ liệu trong tablespace bằng SQL*Plus:
- Đầu tiên, bạn cần phải đăng nhập vào SQL*Plus bằng tài khoản quản trị viên của Oracle.
- Sau đó, chạy lệnh sau để tìm tên tablespace và tên datafile cần thay đổi kích thước:
SELECT TABLESPACE_NAME, FILE_NAME, BYTES/1024/1024 AS SIZE_MB
FROM DBA_DATA_FILES
WHERE TABLESPACE_NAME = 'example_tablespacename';
Thay 'example_tablespacename' bằng tên của tablespace mà bạn muốn thay đổi kích thước tệp dữ liệu.
- Tiếp theo, sử dụng lệnh ALTER DATABASE để thay đổi kích thước tệp dữ liệu. Ví dụ, nếu bạn muốn thay đổi kích thước tệp dữ liệu có tên example_datafile.dbf trong tablespace example_tablespacename thành 10GB, bạn có thể chạy lệnh sau:
- ALTER DATABASE DATAFILE '/path/to/example_datafile.dbf' RESIZE 10G;
Thay /path/to/example_datafile.dbf bằng đường dẫn đến tệp dữ liệu cần thay đổi kích thước và 10G là kích thước mới của tệp dữ liệu.
Lưu ý rằng bạn cần có quyền quản trị viên để thực hiện lệnh ALTER DATABASE và thay đổi kích thước tệp dữ liệu.
Drop tablespace trong Oracle Database
Bạn có thể xóa bỏ một tablespace và nội dung của nó (các segment chứa trong tablespace) khỏi cơ sở dữ liệu nếu tablespace và nội dung của nó không còn cần thiết nữa. Bạn phải có quyền DROP TABLESPACE trong hệ thống để xóa một tablespace.
Khi bạn xóa bỏ một tablespace, các con trỏ tệp trong control file của cơ sở dữ liệu liên quan sẽ được xóa bỏ. Nếu bạn đang sử dụng Oracle Managed Files (OMF), các tệp hệ thống vật lý cũng sẽ bị xóa bỏ.
Nếu không sử dụng OMF, bạn có thể tùy chọn chỉ định cho máy chủ Oracle xóa bỏ các tệp hệ thống vật lý (tệp dữ liệu) tạo thành tablespace bị xóa. Nếu bạn không chỉ định cho máy chủ Oracle xóa bỏ các tệp dữ liệu cùng lúc với việc xóa bỏ tablespace, sau đó bạn phải sử dụng các lệnh thích hợp của hệ điều hành của bạn nếu bạn muốn xóa bỏ chúng.
Bạn không thể xóa bỏ một tablespace chứa các segment đang hoạt động. Ví dụ, nếu một bảng trong tablespace đang được sử dụng, hoặc nếu tablespace chứa dữ liệu undo cần thiết để quay lại các giao dịch chưa được commit, thì bạn không thể xóa bỏ tablespace. Tốt nhất là đưa tablespace offline trước khi xóa nó.
Bạn cũng có thể dùng câu lệnh để thực hiện Drop Tablespace. Để thực hiện drop tablespace trong SQLPlus, bạn cần tuân thủ các bước sau:
- Đăng nhập vào SQLPlus bằng tài khoản có quyền DBA.
- Kiểm tra xem tablespace đó có các segment active không bằng lệnh
SELECT COUNT(*) FROM dba_segments WHERE tablespace_name = 'ten_tablespace';
- Nếu kết quả trả về khác 0, có nghĩa là tablespace đó đang chứa các segment active và bạn không thể drop tablespace. Trong trường hợp này, bạn cần phải thực hiện các bước để offline hoặc drop các segment active đó trước.
- Nếu không có segment active, thực hiện lệnh sau để drop tablespace và các file dữ liệu liên quan (nếu cần):
DROP TABLESPACE ten_tablespace INCLUDING CONTENTS AND DATAFILES;
Kiểm tra lại bằng lệnh sau để đảm bảo rằng tablespace đã được xóa:
SELECT COUNT(*) FROM dba_tablespaces WHERE tablespace_name = 'ten_tablespace';
Nếu kết quả trả về là 0, có nghĩa là tablespace đã được xóa thành công.
Lưu ý rằng trước khi thực hiện drop tablespace, bạn nên sao lưu các dữ liệu quan trọng hoặc thực hiện các biện pháp bảo mật khác để tránh mất mát dữ liệu không mong muốn.
Xem thông tin Tablespace
Thông tin về tablespace và data file cũng có thể được truy vấn thông qua các bảng và view sau:
- Thông tin về tablespace: DBA_TABLESPACES, V$TABLESPACE Ví dụ: để lấy thông tin về tất cả các tablespace trong database, ta có thể sử dụng câu lệnh SQL sau:
SELECT tablespace_name, status, contents, extent_management FROM DBA_TABLESPACES; - Thông tin về data file: DBA_DATA_FILES, V$DATAFILE Ví dụ: để lấy thông tin về tất cả các data file trong database, ta có thể sử dụng câu lệnh SQL sau:
SELECT file_name, tablespace_name, bytes, autoextensible FROM DBA_DATA_FILES; - Thông tin về temp file: DBA_TEMP_FILES, V$TEMPFILE Ví dụ: để lấy thông tin về tất cả các temp file trong database, ta có thể sử dụng câu lệnh SQL sau:
SELECT file_name, tablespace_name, bytes, autoextensible FROM DBA_TEMP_FILES;
Oracle managed files(OMF)
Oracle Managed Files (OMF) làm loại bỏ nhu cầu quản lý trực tiếp các system control file trong cơ sở dữ liệu Oracle. Bạn chỉ định các hoạt động dưới dạng các đối tượng cơ sở dữ liệu thay vì tên file. Cơ sở dữ liệu sử dụng các giao diện hệ thống tệp tiêu chuẩn để tạo và xóa các tệp theo nhu cầu cho các cấu trúc cơ sở dữ liệu sau đây:
- Tablespaces
- Redo log files
- Control files
- Archived logs
- Block change tracking files
- Flashback logs
- RMAN backups.
Một cơ sở dữ liệu có thể có một sự kết hợp của các tệp được quản lý bởi Oracle và không được quản lý bởi Oracle. Thư mục hệ thống tệp được chỉ định bằng hai thông số này phải đã tồn tại; cơ sở dữ liệu sẽ không tạo nó. Thư mục cũng phải có quyền để cơ sở dữ liệu có thể tạo các tệp trong đó.
Ví dụ: Bạn có thể sử dụng OMF để tạo ra một bảng trong một tablespace mới mà không cần phải quản lý trực tiếp các tệp hệ thống điều khiển. Khi tạo bảng, bạn chỉ cần chỉ định tablespace và tên bảng, và OMF sẽ tự động tạo các tệp cần thiết để lưu trữ dữ liệu của bảng.
Khi sử dụng Oracle Managed Files để quản lý các tệp trong cơ sở dữ liệu Oracle một cách tự động, người dùng không cần quản lý trực tiếp các tệp trong hệ thống tệp của hệ điều hành. Thay vào đó, người dùng chỉ cần chỉ định các thao tác trên các đối tượng trong cơ sở dữ liệu thay vì tên tệp.
Các tệp được tạo và xóa bởi hệ thống quản lý cơ sở dữ liệu Oracle khi cần thiết cho các cấu trúc cơ sở dữ liệu như tablespace, redo log files, control files, archived logs, block change tracking files, flashback logs và RMAN backups.
Ví dụ, sau khi thiết lập DB_CREATE_FILE_DEST, câu lệnh CREATE TABLESPACE có thể bỏ qua DATAFILE clause. Tệp dữ liệu sẽ được tạo ra tại vị trí được chỉ định bởi DB_CREATE_FILE_DEST. Khi tạo tablespace như vậy, các giá trị mặc định được gán cho tất cả các tham số.
Các tệp quản lý bởi Oracle được đặt tên theo định dạng chuẩn. Tệp quản lý bởi Oracle không nên đổi tên vì cơ sở dữ liệu xác định chúng dựa trên tên của nó. Nếu đổi tên, cơ sở dữ liệu không thể nhận diện chúng như một tệp quản lý bởi Oracle và sẽ không quản lý chúng.
Ví dụ sau đây thiết lập vị trí mặc định cho tạo tệp dữ liệu ở đường dẫn /u01/oradata và tạo tablespace tbs_1 có tệp dữ liệu tại vị trí đó. Mặc định, các tệp quản lý bởi Oracle, bao gồm các tablespace SYSTEM và SYSAUX, có dung lượng 100 MB và có khả năng tự mở rộng.
SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST = '/u01/oradata'; SQL> CREATE TABLESPACE tbs_1;
Lưu ý: Mặc định, ASM sử dụng các tệp OMF, tuy nhiên, nếu bạn chỉ định tên bí danh cho một tệp dữ liệu ASM khi tạo tablespace hoặc khi thêm một tệp dữ liệu ASM vào một tablespace hiện có, thì tệp đó sẽ không được quản lý bởi OMF.