Khôi phục bảng sau khi bị drop

   Giới thiệu

Có 1 tính năng trong Oracle Database, mà các bạn mới làm thường ít để ý, và nó gây lãng phí khá nhiều dung lượng lưu trữ.

Đó là Recycle Bin

Khi tính năng này được bật lên, nếu bạn xoá 1 bảng, bảng đó sẽ không thực sự bị xoá, nó (và các object liên quan như index, constraint, lob) sẽ được lưu giữ trong Recycle Bin.

Nếu sau này, bạn hối hận vì đã xoá nó, bạn hoàn toàn có thể khôi phục nó lại từ Recycle Bin. Kỹ thuật này còn có tên là Flashback Drop.

Tuy nhiên, việc nó vẫn còn ở lại Recycle Bin sau khi xoá, sẽ chiếm dụng dung lượng đáng kể. Nó sẽ vẫn cứ ở đó, cho đến khi tablespace đầy, cần cấp phát thêm dung lượng.

Do đó, nếu bạn thực sự muốn xoá 1 bảng, sau khi xoá bảng đó, bạn cần xoá nó cả trong Recycle Bin nữa.

Bạn có thể xem video demo tại đây

   Thực hành với Recycle Bin

   Kiểm tra xem Recycle Bin đã được bật hay chưa

Để kiểm tra xem Recycle Bin có đang được bật hay không, bạn dùng câu lệnh

show parameter recyclebin

show recyclebin

Nếu giá trị của recyclebin là ON, tức là tính năng Recycle Bin đã được bật.

Nếu tính năng Recycle Bin chưa được bật, bạn có thể bật nó lên bằng câu lệnh sau:

alter system set recyclebin = ON scope=spfile;

Sau đó restart lại database

shutdown immediate
startup

Tương tự, nếu bạn muốn tắt chức năng Recycle Bin đi.

Đọc thêm  Cùng tìm hiểu cơ chế hoạt động của ROWNUM

   Tạo bảng:

create table customer (id number, name varchar2(30));
insert into customer values (1, 'Nguyen Van A');
insert into customer values (2, 'Nguyen Van B');
insert into customer values (3, 'Nguyen Van C');
insert into customer values (4, 'Nguyen Van D');
commit;

   Drop bảng

drop table CUSTOMER;

Chú ý: Nếu bạn muốn xoá hẳn bảng, mà không lưu trong Recycle Bin, bạn dùng thêm option Purge khi drop bảng như sau:

drop table CUSTOMER purge;

 

   Kiểm tra Recycle Bin

Để kiểm tra xem trong Recycle Bin đang có những bảng nào, các bạn sử dụng câu lệnh sau:

set lines 300
col object_name for a30
col ORIGINAL_NAME for a30
select object_name, original_name, type, droptime, can_undrop, can_purge from recyclebin;

Câu lệnh trên sẽ liệt kê các bảng trong Recycle Bin mà bạn sở hữu.

show recyclebin 2

Nếu bạn muốn xem tất cả các đối tượng đang có trong Recycle Bin, bạn cần truy vấn trong dba_recyclebin

set lines 300
col object_name for a30
col ORIGINAL_NAME for a30
select owner, object_name, original_name, type, droptime, can_undrop, can_purge from dba_recyclebin;

 

Trong đó:

  • object_name: Tên của bảng sau khi bị drop. Tên của nó sẽ bắt đầu bằng BIN$…
  • original_name: Tên của bảng trước khi bị drop
  • droptime: Thời gian mà bảng bị drop
  • can_undrop: Có thể khôi phục lại bảng được hay không
  • can_purge: Có thể xoá bảng khỏi Recycle Bin được hay không

 

   Khôi phục lại bảng từ Recycle Bin hay Flashback Drop

flashback table customer to before drop;

   Xoá bảng khỏi Recycle Bin

Xoá 1 bảng cụ thể khỏi Recycle Bin

purge table customer;

hay xoá toàn bộ Recycle Bin

PURGE RECYCLEBIN;

 

Đọc thêm  Thủ tục Failover/Switchover Streaming Replication trên PostgreSQL

Nguồn: https://dangxuanduy.com/

Hiện tại, tôi có tổ chức đều đặn các khóa học về quản trị Oracle Database, tôi sẽ để thông tin ở đây, để bạn nào quan tâm về lịch học cũng như chương trình học có thể theo dõi nhé.

KHOÁ DÀNH CHO NGƯỜI MỚI

 KHÓA HỌC: QUẢN TRỊ ORACLE DATABASE THẬT LÀ ĐƠN GIẢN (ADMIN 1)  

CÁC KHOÁ NÂNG CAO:

 KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ KIẾN TRÚC MULTITENANT 12c 

 KHÓA HỌC ORACLE NÂNG CAO: QUẢN TRỊ HỆ THỐNG DATA GUARD  

CÁC KHOÁ COMBO:

 COMBO 1: ADMIN 1 + MULTITENANT 12c 

 COMBO 2: ADMIN 1 + DATA GUARD 

 COMBO 3: ADMIN 1 + MULTITENANT 12c + DATA GUARD 

LỊCH HỌC:

Mời bạn xem tại đây: LỊCH HỌC CÁC LỚP ORACLE 

ĐĂNG KÝ:

Form đăng ký

 

   Hãy tham gia group “Kho tài liệu kiến thức database” để cùng học hỏi và chia sẻ nhé.

Đặng Xuân Duy
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận