Quản trị table trong Oracle Database

Quản trị table trong Oracle Database bao gồm một loạt các thao tác để tạo, sửa đổi, xóa và quản lý các bảng trong cơ sở dữ liệu. Dưới đây là các hoạt động quản trị chính liên quan đến bảng (table) trong Oracle:

Xem thêm table là gì: https://datalinks.vn/table-la-gi/

1. Tạo Table

Bạn có thể tạo một bảng mới bằng lệnh CREATE TABLE. Dưới đây là ví dụ về cách tạo một bảng mới với các cột và kiểu dữ liệu cụ thể:

CREATE TABLE employees ( employee_id NUMBER PRIMARY KEY, first_name VARCHAR2(50), last_name VARCHAR2(50) NOT NULL, email VARCHAR2(100) UNIQUE, hire_date DATE, salary NUMBER(8, 2) );

Tạo bảng từ bảng khác và lấy N dòng:

create table table3 AS select * from table1 where rownum <= 1000000 ;

Tạo bảng từ bảng khác và lấy 100% dòng:

create table table4 AS select * from table1 ;

 

2. Thay đổi Table

Để thay đổi cấu trúc của bảng, bạn có thể sử dụng lệnh ALTER TABLE. Các ví dụ bao gồm:

Thêm cột mới:

ALTER TABLE employees ADD phone_number VARCHAR2(20);

Thay đổi kiểu dữ liệu của cột:

ALTER TABLE employees MODIFY salary NUMBER(10, 2);

Đổi tên cột:

ALTER TABLE employees RENAME COLUMN first_name TO fname;

Xóa cột:

ALTER TABLE employees DROP COLUMN phone_number;

Đổi tên bảng:

ALTER TABLE employees RENAME TO new_table;

 

3. Xóa Table

Để xóa một bảng khỏi cơ sở dữ liệu, bạn sử dụng lệnh DROP TABLE. Chú ý rằng việc xóa bảng sẽ xóa toàn bộ dữ liệu và cấu trúc của bảng đó:

DROP TABLE employees;

Xoá dữ liệu trong table giữ cấu trúc table:

truncate table employees;

 

4. Sao lưu và Phục hồi Table

Sao lưu và phục hồi bảng là phần quan trọng của quản trị cơ sở dữ liệu:

Sao lưu bảng bằng cách tạo một bảng mới từ bảng hiện tại:

CREATE TABLE employees_backup AS SELECT * FROM employees;

Phục hồi dữ liệu từ bản sao lưu:

INSERT INTO employees SELECT * FROM employees_backup;

 

5. Quản lý Index table

Index giúp tăng tốc độ truy vấn trên bảng. Bạn có thể tạo, xóa và quản lý Index bằng các lệnh:

Tạo Index:

CREATE INDEX idx_employee_last_name ON employees (last_name);

Xóa Index:

DROP INDEX idx_employee_last_name;

 

6. Quản lý Ràng buộc (Constraints)

Ràng buộc giúp đảm bảo tính toàn vẹn dữ liệu trong bảng:

Thêm ràng buộc:

ALTER TABLE employees ADD CONSTRAINT emp_email_unique UNIQUE (email);

Xóa ràng buộc:

ALTER TABLE employees DROP CONSTRAINT emp_email_unique;

 

7. Thực hiện Truy vấn và Cập nhật Dữ liệu

Quản trị viên cần thực hiện các truy vấn để lấy và cập nhật dữ liệu:

Truy vấn dữ liệu:

SELECT * FROM employees WHERE salary > 50000;

Lấy n dòng dữ liệu trong table:

select * from table1 where rownum <= 2 ;

Kiểm tra bảng có là Partition:

select * from dba_tab_partitions where table_name like 'TABLE1';

Kiểm tra bảng nằm trong Tabalespace nào:

select * from dba_tables where table_name like 'TABLE9';

Cập nhật dữ liệu:

UPDATE employees SET salary = salary * 1.1 WHERE hire_date < '2020-01-01';

Xóa dữ liệu:

DELETE FROM employees WHERE hire_date < '2000-01-01';

Insert data vào bảng sử dụng Parallel:

insert /*+ PARALLEL(duong.duo,10) */ into duong.duo (select * from duong.tab);

 

8. Tối ưu hóa và Bảo trì Table

Tái tổ chức bảng để cải thiện hiệu suất:

ALTER TABLE employees MOVE;

Thu gọn không gian chưa sử dụng:

ALTER TABLE employees SHRINK SPACE;

Di chuyển table sang tablespace khác không khi lại log và thực hiện parallel:

alter table table8 move tablespace INDX nologging parallel 10;

Thu hồi dung lượng: compact => thực hiện order data an toàn, thực hiện từ từ, nếu ko có compact => thực hiện ngay lập tức = với DB lớn có thể treo

alter table table8 enable row movement;

alter table table10 shrink space compact;

alter table table10 shrink space;

Thu hồi dung lượng đồng thời xoá hết data:

truncate table table8 drop storage;

Nén dữ liệu trong table:

## enable row movement trước khi nén
alter table DATA enable row movement;

ALTER TABLE DATA MOVE COMPRESS;

 

9. Phân quyền Trên Table

Quản trị viên có thể cấp và thu hồi quyền trên bảng cho các người dùng khác nhau:

Cấp quyền:

GRANT SELECT, INSERT, UPDATE, DELETE ON employees TO hr_user;

Thu hồi quyền:

REVOKE SELECT, INSERT, UPDATE, DELETE ON employees FROM hr_user;

 

10. Quản lý dung lượng Table

Trong Oracle thì phần dung lượng được quản lý trong dba_segments hoặc là user_segments, kể cả tablespace cũng ở trong view này.

SELECT segment_name AS table_name,
ROUND(SUM(bytes) / (1024 * 1024), 2) AS size_mb
FROM dba_segments
WHERE segment_type = 'TABLE'
AND segment_name = 'DATA_TEMP'
GROUP BY segment_name;

Trong user_segments:

SELECT segment_name AS table_name,
ROUND(SUM(bytes) / (1024 * 1024), 2) AS size_mb
FROM user_segments
WHERE segment_type = 'TABLE'
AND segment_name = 'DATA_TEMP'
GROUP BY segment_name;

Quản trị table trong Oracle là một phần quan trọng của quản trị cơ sở dữ liệu và yêu cầu nắm vững các lệnh SQL cùng với hiểu biết sâu về cấu trúc và hiệu suất của cơ sở dữ liệu. Các thao tác trên cung cấp một số công cụ cơ bản để quản lý bảng hiệu quả trong Oracle.

 

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận