Trong hệ quản trị cơ sở dữ liệu Oracle, một tablespace là một không gian lưu trữ được dành riêng cho bảng, chỉ mục và đối tượng khác. Tablespace cung cấp một cách để quản lý và kiểm soát cách dữ liệu được lưu trữ và phân bố trên ổ đĩa. Mỗi bảng và chỉ mục trong Oracle phải thuộc về một tablespace.
1. Tại sao cần tăng tablespace
Khi bạn làm việc với Oracle Database, có một số lý do mà bạn có thể cần tăng kích thước của một tablespace:
Dữ liệu tăng lên: Khi dữ liệu trong các bảng hoặc chỉ mục tăng lên, bạn có thể cần tăng kích thước của tablespace để chứa dữ liệu mới.
Chấp nhận tải lưu trữ lớn hơn: Nếu bạn dự định lưu trữ một lượng dữ liệu lớn hơn trong hệ thống của mình, bạn có thể cần mở rộng tablespace để đảm bảo rằng có đủ không gian.
Quản lý không gian lưu trữ: Khi tablespace của bạn gần đầy, có thể gặp vấn đề về hiệu suất và không gian lưu trữ. Bằng cách tăng kích thước của tablespace, bạn có thể giảm được khả năng xảy ra vấn đề này.
Thực hiện các hoạt động ghi nhiều: Khi có nhiều hoạt động ghi vào hệ thống, tablespace có thể nhanh chóng trở nên đầy, và việc tăng kích thước có thể giúp giảm tình trạng đầy đủ và giữ cho các hoạt động ghi diễn ra mượt mà hơn.
2. Câu lệnh xử lý trong Oracle
Để tăng kích thước của một tablespace trong Oracle, bạn có thể sử dụng các câu lệnh SQL như ALTER TABLESPACE
để thay đổi kích thước hoặc thêm các data file mới vào tablespace.
-- Tăng kích thước của một tablespace
ALTER TABLESPACE tablespace_name ADD DATAFILE 'file_path' SIZE size;
-- Thêm datafile mới vào tablespace
ALTER TABLESPACE tablespace_name ADD DATAFILE 'file_path' SIZE size;
Lưu ý rằng việc tăng kích thước của tablespace không chỉ cần thiết khi cần thiết, mà còn cần được thực hiện một cách cẩn thận để tránh tình trạng đầy đủ không mong muốn và đảm bảo hiệu suất hệ thống.
Khi sử dụng các câu lệnh này, bạn cần xác định tablespace cụ thể mà bạn muốn thay đổi (tablespace_name
), đường dẫn của datafile mới (file_path
), và kích thước của datafile đó (size
). Việc sử dụng câu lệnh nào phụ thuộc vào ngữ cảnh cụ thể của hệ thống và yêu cầu của bạn.
3. Các bước thường dùng khi thay đổi tablespace
3.1. Kiểm tra tablespace
Kiểm tra Dung Lượng Tổng Của Tablespace
SELECT tablespace_name, SUM(bytes) / (1024 * 1024) AS total_space_mb FROM dba_data_files WHERE tablespace_name = 'YOUR_TABLESPACE_NAME' GROUP BY tablespace_name;
Câu lệnh này sẽ hiển thị tổng dung lượng của tất cả các file dữ liệu thuộc tablespace “YOUR_TABLESPACE_NAME”.
Kiểm tra Dung Lượng Đã Sử Dụng
SELECT tablespace_name, SUM(bytes) / (1024 * 1024) AS used_space_mb FROM dba_segments WHERE tablespace_name = 'YOUR_TABLESPACE_NAME' GROUP BY tablespace_name;
Câu lệnh này sẽ hiển thị dung lượng đã được sử dụng trong tablespace “YOUR_TABLESPACE_NAME”.
Kiểm tra Dung Lượng Còn Trống
SELECT tablespace_name, SUM(bytes) / (1024 * 1024) AS free_space_mb FROM dba_free_space WHERE tablespace_name = 'YOUR_TABLESPACE_NAME' GROUP BY tablespace_name;
Câu lệnh này sẽ hiển thị dung lượng còn trống trong tablespace “YOUR_TABLESPACE_NAME”.
Kiểm tra Tỉ Lệ Sử Dụng
SELECT tablespace_name, (SUM(bytes) - SUM(blocks * (SELECT value FROM v$parameter WHERE name = 'db_block_size'))) / SUM(bytes) * 100 AS used_percent FROM dba_segments WHERE tablespace_name = '
YOUR_TABLESPACE_NAME
' GROUP BY tablespace_name;
Câu lệnh này sẽ hiển thị tỷ lệ sử dụng của tablespace “YOUR_TABLESPACE_NAME
” dưới dạng phần trăm.
Nếu bạn muốn biết xem tablespace đã vượt quá dung lượng không, bạn cần so sánh tổng dung lượng với dung lượng đã sử dụng và kiểm tra xem tỷ lệ sử dụng có vượt quá một giới hạn nào đó không. Thông thường, giới hạn được quy định dựa trên dung lượng tổng hoặc tỷ lệ sử dụng.
3.2. Thay đổi kích thước
Để mở rộng tablespace có tên “TPSINDEX” và kích thước của các data file trong đó để chúng có thể autoextensible, bạn có thể sử dụng câu lệnh ALTER TABLESPACE.
Cú pháp thường sử dụng:
ALTER TABLESPACE
ADD DATAFILE path_file SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;YOUR_TABLESPACE_NAME
Ví dụ:
ALTER TABLESPACE
SIZE 1G AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;TPSINDEX ADD DATAFILE 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\TPSINDEX03.DBF'
Trong ví dụ này:
path_file
ví dụ như “E:\APP\ADMINISTRATOR\ORADATA\ORCL\TPSINDEX03.DBF
” là đường dẫn và tên của data file mới bạn muốn thêm vào tablespace “
“.TPSINDEX
SIZE 1G
là kích thước khởi tạo của data file mới (1GB). Bạn có thể điều chỉnh giá trị này theo nhu cầu của bạn.AUTOEXTEND ON
cho biết rằng data file này sẽ tự động mở rộng khi cần thiết.NEXT 100M
là kích thước mở rộng tiếp theo khi data file đạt đến giới hạn kích thước hiện tại.MAXSIZE UNLIMITED
cho biết data file có thể mở rộng đến kích thước không giới hạn.
Bạn có thể điều chỉnh các giá trị như kích thước khởi tạo, kích thước mở rộng, và giới hạn kích thước tối đa dựa trên yêu cầu cụ thể của hệ thống và dung lượng dự trữ có sẵn. Sau khi thực hiện câu lệnh ALTER TABLESPACE, tablespace “TPSINDEX” sẽ được mở rộng và các data file sẽ có khả năng autoextensible.