2011-08-18 14 views
5
rollback; 

nie wydaje się cofać zmian w tabeli.Jak cofnąć ALTER TABLE za pomocą sqlplus (Oracle 10g Express)?

Tło:
Generuję niektóre skrypty .sql (w oparciu o skrypty pisma hibernacji), które powodują zgryzanie tabel. Importowanie pełnej bazy danych do testowania zajmuje do 30 minut (również spowalniając moją maszynę) i tak jak lubię robić przerwy, wolałbym po prostu cofnąć wszystko za pomocą polecenia, takiego jak przywracanie i spróbować ponownie.

btw to Oracle 10g Express Edition Release 10.2.0.1.0

Czy to w ogóle możliwe?

Odpowiedz

4

W wersji ekspresowej nie jestem pewien, czy to możliwe. Nie można wycofać operacji DDL, takiej jak ALTER TABLE, ponieważ DDL jest niejawnie zatwierdzony.

Oracle ma opcję, aby create restore points, że można następnie flashback całej bazy danych do punktu w czasie stosunkowo szybko. To spowoduje cofnięcie efektów wszystkich zatwierdzonych transakcji (DML i DDL) między utworzeniem punktu przywracania a punktem, w którym wydano polecenie flashback. Oto example of creating and flashing back to a restore point i tutaj jest inny, który robi flashback for the entire database. Po prostu nie jestem pewien, czy ta funkcjonalność jest dostępna w edycji ekspresowej.

+0

Via linków (i Google), jestem tylko w stanie znaleźć sposób na przywrócenie pojedynczych tabel. Czy znasz sposób na flashback całego punktu przywracania? – glenneroo

+1

@glenneroo - Możesz cofnąć całą bazę danych do punktu przywracania http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_9011.htm i http://www.orafaq.com/ node/1847 to dobre startery. –

+0

Sądzę, że nie jest to dostępne w Express Edition. Wykonywanie komendy ** zmiana flashback bazy danych włączone; ** zwraca następujący błąd: * ORA-00439: funkcja nie jest włączona: Flashback Database *. Alternatywnie, aby sprawdzić, czy funkcja jest dostępna, po prostu uruchom ** wybierz flashback_on z bazy danych v $; **. – glenneroo

Powiązane problemy