Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để khôi phục các thay đổi DB của tôi sau khi cam kết?

Bạn có thể làm điều đó bằng cách sử dụng Hồi tưởng tính năng.

1.Flashback của SCN

SELECT column_list
FROM table_name
AS OF SCN scn_number;

2. phản hồi bởi TIMESTAMP

SELECT column_list
FROM table_name
AS OF TIMESTAMP TO_TIMESTAMP('the timestamp value');

Để lấy current_scn và systimestamp, hãy truy vấn:

SELECT current_scn, SYSTIMESTAMP
FROM v$database;

Hãy xem một ví dụ:

Để hồi tưởng bảng về scn cũ, hãy sử dụng FLASHBACK TABLE..TO SCN mệnh đề.

SQL> DROP TABLE string_ex PURGE;

Table dropped.

SQL> CREATE TABLE string_ex (sl_ps_code VARCHAR2(20) );

Table created.

SQL> INSERT INTO string_ex (sl_ps_code) VALUES ('AR14ASM0002');

1 row created.

SQL> INSERT INTO string_ex (sl_ps_code) VALUES ('AR14SFT0018');

1 row created.

SQL> INSERT INTO string_ex (sl_ps_code) VALUES ('AR14SFT0019');

1 row created.

SQL> INSERT INTO string_ex (sl_ps_code) VALUES ('AR14SFT0062');

1 row created.

SQL> COMMIT;

Commit complete.

SQL> SELECT current_scn, SYSTIMESTAMP FROM v$database;

         CURRENT_SCN SYSTIMESTAMP
-------------------- --------------------------------------------
      13818123201277 29-OCT-14 03.02.17.419000 PM +05:30

SQL> SELECT current_scn, SYSTIMESTAMP FROM v$database;

         CURRENT_SCN SYSTIMESTAMP
-------------------- --------------------------------------------
      13818123201280 29-OCT-14 03.02.22.785000 PM +05:30

SQL> SELECT current_scn, SYSTIMESTAMP FROM v$database;

         CURRENT_SCN SYSTIMESTAMP
-------------------- --------------------------------------------
      13818123201282 29-OCT-14 03.02.26.781000 PM +05:30

SQL> SELECT * FROM string_ex;

SL_PS_CODE
---------------
AR14ASM0002
AR14SFT0018
AR14SFT0019
AR14SFT0062

SQL>

Tôi có bốn hàng trong bảng .

SQL> ALTER TABLE string_ex ENABLE ROW MOVEMENT;

Table altered.

SQL>

Chuyển động của hàng là bắt buộc.

SQL> DELETE FROM string_ex WHERE ROWNUM =1;

1 row deleted.

SQL>
SQL> COMMIT;

Commit complete.

SQL>
SQL> SELECT * FROM string_ex;

SL_PS_CODE
---------------
AR14SFT0018
AR14SFT0019
AR14SFT0062

Tôi đã xóa một hàng ngay bây giờ và thực hiện các thay đổi.

SQL> FLASHBACK TABLE string_ex TO SCN 13818123201277;

Flashback complete.

Quá trình hồi tưởng đã hoàn tất

SQL> SELECT * FROM string_ex;

SL_PS_CODE
---------------
AR14ASM0002
AR14SFT0018
AR14SFT0019
AR14SFT0062

SQL>

Bây giờ tôi đã đưa bảng của mình về trạng thái cũ và hàng đã trở lại




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-12154:TNS:không thể phân giải mã nhận dạng kết nối được chỉ định

  2. Cách thực thi một thủ tục được lưu trữ Oracle thông qua liên kết cơ sở dữ liệu

  3. Cài đặt các biểu mẫu và báo cáo Oracle 11g Release 2

  4. Hàm phân tích Oracle cho giá trị nhỏ nhất trong nhóm

  5. Làm cách nào để giải quyết lỗi ORA-01427 (Truy vấn con một hàng trả về nhiều hơn một hàng)?