2011-08-18 10 views
5
rollback; 

dường như không hoàn tác thay đổi thay đổi bảng.Làm cách nào để hoàn tác ALTER TABLE bằng sqlplus (Oracle 10g Express)?

Bối cảnh:
Tôi đang tạo một số tập lệnh .sql (dựa trên tập lệnh Hibernate được phân tích cú pháp) đang bẻ khóa các bảng của tôi. Việc nhập khẩu cơ sở dữ liệu đầy đủ để thử nghiệm mất đến 30 phút (cũng làm chậm máy của tôi) và nhiều như tôi thích giải lao, tôi muốn hoàn tác mọi thứ bằng lệnh như rollback và thử lại.

btw đây là Oracle 10g Express Edition Bản phát hành 10.2.0.1.0

Điều này thậm chí có thể?

Trả lời

4

Với ấn bản nhanh, tôi không chắc chắn điều này là có thể. Bạn không thể khôi phục một hoạt động DDL như ALTER TABLE vì DDL hoàn toàn cam kết.

Oracle không có tùy chọn để create restore points mà sau đó bạn có thể flashback toàn bộ cơ sở dữ liệu vào một thời điểm tương đối nhanh chóng. Điều đó sẽ hoàn tác tác động của tất cả các giao dịch đã cam kết (DML và DDL) giữa việc tạo điểm khôi phục và điểm mà bạn đã đưa ra lệnh flashback. Dưới đây là một số example of creating and flashing back to a restore point và đây là một số khác có số flashback for the entire database. Tôi chỉ không chắc chắn rằng chức năng này có sẵn trong ấn bản nhanh.

+0

Via liên kết của bạn (và Google), tôi chỉ là có thể tìm thấy một cách để khôi phục lại bảng duy nhất. Bạn có biết cách để hồi tưởng toàn bộ điểm khôi phục không? – glenneroo

+1

@glenneroo - Bạn có thể flashback toàn bộ cơ sở dữ liệu đến một điểm khôi phục http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_9011.htm và http://www.orafaq.com/ nút/1847 là mồi tốt. –

+0

Tôi đoán nó không khả dụng cho Express Edition. Thực hiện lệnh ** thay đổi flashback cơ sở dữ liệu trên; ** trả về lỗi sau: * ORA-00439: tính năng không được kích hoạt: Cơ sở dữ liệu Flashback *. Cách khác, để kiểm tra xem tính năng có sẵn hay không, chỉ cần chạy ** chọn flashback_on từ v $ database; **. – glenneroo