『壹』 Oracle數據被刪除後,如何恢復
刪除表後,可以採用如下操作:
在 user_recyclebin中找到最近操作過的表名稱,然後用閃回(只能用於10G及以上版本)。
FLASH BACK TABLE TABLE_NAME TO BEFORE DROP;
如果是刪了或修改裡面的數據,可以先建立一個快表將刪除修改之前狀態的數據找回到這個表中:
CREATE TABLE QUICK_TABLE AS
SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSDATE-1/24 (一小時前的),減去的時間可以自己定 如:select * from TABLE_NAME AS OF TIMESTAMP (SYSTIMESTAMP - INTERVAL '1' MINUTE)
『貳』 oracle資料庫誤操作把表刪除了,怎麼找回
一:表的恢復x0dx0ax0dx0a 對誤刪的表,只要沒有使用PURGE永久刪除選項,那麼從flash back區恢復回來希望是挺大的。一般步驟有:x0dx0ax0dx0a1、從flash back里查詢被刪除的表x0dx0ax0dx0a select * from recyclebinx0dx0ax0dx0a2.執行表的恢復x0dx0ax0dx0a flashback table tb to before drop,這里的tb代表你要恢復的表的名稱。x0dx0ax0dx0a二:表數據恢復x0dx0ax0dx0a 對誤刪的表記錄,只要沒有truncate語句,就可以根據事務的提交時間進行選擇恢復,一般步驟有:x0dx0ax0dx0a1、先從flashback_transaction_query視圖里查詢,視圖提供了供查詢用的表名稱、事務提交時間、UNDO_sql等欄位。x0dx0ax0dx0a 如:select * from flashback_transaction_query where x0dx0atable_name='TEST'x0dx0ax0dx0a 2、執行表記錄恢復x0dx0ax0dx0a 一般先根據時間進行查詢,查詢語句模式為select * from tb as of timestamp x0dx0ato_timestamp(time,'yyyy-mm-dd hh24:mi:ss'); tb指表名稱,time指某個時間點x0dx0ax0dx0a 如select * from scott.test as of timestamp to_timestamp(-12-11 x0dx0a20:53:57','yyyy-mm-dd hh24:mi:ss');x0dx0ax0dx0a 若有數據,恢復極為簡單了,語句為flashback table tb to timestamp x0dx0ato_timestamp(time,'yyyy-mm-dd hh24:mi:ss');x0dx0ax0dx0a 如flashback table scott.test to timestamp to_timestamp(-12-11 x0dx0a20:47:30','yyyy-mm-dd hh24:mi:ss');x0dx0ax0dx0a注意:alter table testvarchar enable row movement;x0dx0ax0dx0a 這個命令的作用是,允許Oracle 修改分配給行的rowid。在Oracle x0dx0a中,插入一行時就會為它分配一個rowid,而且這一行永遠擁有這個rowid。閃回表處理會對EMP x0dx0a完成DELETE,並且重新插入行,這樣就會為這些行分配一個新的rowid。要支持閃回就必須允許Oracle 執行這個操作
『叄』 oracle資料庫數據刪除後如何恢復
Oracle DBA神器:PRM災難恢復工具,Schema級別數據恢復。PRM For Oracle Database – schema級別oracle資料庫數據恢復特性 ,PRM即ParnassusData Recovery Manager是企業級別Oracle資料庫災難恢復工具。PRM可以在無備份的情況下恢復被truncated掉的表,也可以恢復無法打開的Oracle資料庫(Alter Database Open失敗)中的數據。 PRM是圖形化增強版的Oracle DUL工具,同時具備很多Oracle DUL不具備的特性
『肆』 Oracle資料庫軟體刪除後數據有辦法恢復么
1、如果你沒有刪除資料庫文件:
我的是放在[D:\oracle\proct\10.1.0\oradata]這個下面,你的肯定也是在[oradata]這個文件夾下面,看看有沒有被刪除,如果沒有被刪除的話,看看這么文件夾裡面的文件夾叫什麼名字,並把裡面的那個文件夾備份一份。
2、重新安裝資料庫,再重新建一個[oradata]下面文件夾名字相同的資料庫實例。
3、安裝完畢後,停止oracle相關的所有服務,把你備份的那個文件夾覆蓋到新的[oradata]下面,重新啟動資料庫服務即可完成恢復。
補充:如果資料庫文件被你刪除了,用EasyRecovery
Professional
恢復一下再按照上面的步驟恢復一下即可。
---
以上,希望對你有所幫助。
『伍』 Oracle 誤刪控制文件,oracle 資料庫沒重啟的情況下,怎麼恢復
Linux 平台誤刪 oracle 數據文件的恢復方法
模擬誤操作:
資料庫在正常運行,人工直接rm 掉了數據文件。
--1.測試環境情況:
$ cat /etc/redhat-release
CentOS release 6.5 (Final)
select file_name from dba_data_files;
/u01/app/oracle/oradata/orcl/test.dbf
$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Proction on 星期四 3月 5 15:55:14 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
連接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Proction
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
開啟資料庫歸檔
archive log list;
資料庫日誌模式 非存檔模式
自動存檔 禁用
存檔終點 USE_DB_RECOVERY_FILE_DEST
最早的聯機日誌序列 3002
當前日誌序列 3004
mkdir /u01/arch
alter system set log_archive_dest_1='location=/u01/arch' scope=spfile;
SQL> shutdown immediate
資料庫已經關閉。
已經卸載資料庫。
ORACLE 常式已經關閉。
SQL> startup mount;
ORACLE 常式已經啟動。
Total System Global Area 1.0088E+10 bytes
Fixed Size 2261928 bytes
Variable Size 1644170328 bytes
Database Buffers 8422162432 bytes
Redo Buffers 19595264 bytes
資料庫裝載完畢。
SQL> alter database archivelog;
資料庫已更改。
SQL> archive log list;
資料庫日誌模式 存檔模式
自動存檔 啟用
存檔終點 /u01/arch
最早的聯機日誌序列 3002
下一個存檔日誌序列 3004
當前日誌序列 3004
SQL> alter database open;
資料庫已更改。
SQL> select open_mode from v$database;
OPEN_MODE
------------------------------------------------------------
READ WRITE
--2.新建測試數據
select file_name from dba_data_files;
FILE_NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/orcl/users01.dbf
SQL> create tablespace wind datafile '/u01/app/oracle/oradata/orcl/wind01.dbf' size 200m;
SQL> create user wind identified by wind01 default tablespace wind;
SQL> grant connect,resource,dba to wind;
$ sqlplus wind/wind01
create table t1
(
sid int not null primary key,
sname varchar2(10)
)
tablespace wind;
--循環導入數據
declare
maxrecords constant int:=100000;
i int :=1;
begin
for i in 1..maxrecords loop
insert into t1 values(i,'ocpyang');
end loop;
dbms_output.put_line(' 成功錄入數據! ');
commit;
end;
/
select count(*) from t1;
COUNT(*)
----------
100000
--3.模擬刪除數據
SQL> col tablespace_name for a20
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
-------------------- ---------------------------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
TTSPACE ONLINE
OCPYANG ONLINE
OCPYANGINDEX ONLINE
LOBOCPYANG ONLINE
LOBOCPYANG01 ONLINE
LOBOCPYANG02 ONLINE
TABLESPACE_NAME STATUS
-------------------- ---------------------------
WIND ONLINE
rm -rf /u01/app/oracle/oradata/orcl/wind01.dbf
ls /u01/app/oracle/oradata/orcl/ | grep wind
SQL> show user;
USER 為 "WIND"
SQL> select count(*) from t1;
COUNT(*)
----------
100000
SQL> desc t1
名稱 是否為空? 類型
----------------------------------------- -------- ----------------------------
SID NOT NULL NUMBER(38)
SNAME VARCHAR2(10)
SQL> delete from t1 where sid>99000;
已刪除1000行。
SQL> commit;
提交完成。
SQL> select count(*) from t1;
COUNT(*)
----------
99000
--4.恢復
ps -eaf|grep dbw0 |grep -v grep
oracle 1928 1 0 15:59 ? 00:00:00 ora_dbw0_orcl
SQL> col tablespace_name for a20
SQL> select tablespace_name,status from dba_tablespaces;
TABLESPACE_NAME STATUS
-------------------- ---------------------------
SYSTEM ONLINE
SYSAUX ONLINE
UNDOTBS1 ONLINE
TEMP ONLINE
USERS ONLINE
TTSPACE ONLINE
OCPYANG ONLINE
OCPYANGINDEX ONLINE
LOBOCPYANG ONLINE
LOBOCPYANG01 ONLINE
LOBOCPYANG02 ONLINE
TABLESPACE_NAME STATUS
-------------------- ---------------------------
WIND ONLINE
cd /proc/1928/fd
ll
lr-x------ 1 oracle oinstall 64 Mar 5 16:20 0 -> /dev/null
l-wx------ 1 oracle oinstall 64 Mar 5 16:20 1 -> /dev/null
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 10 -> /u01/app/oracle/proct/11.2.0/db_1/dbs/lkORCL
lr-x------ 1 oracle oinstall 64 Mar 5 16:20 11 -> /u01/app/oracle/proct/11.2.0/db_1/rdbms/mesg/oraus.msb
l-wx------ 1 oracle oinstall 64 Mar 5 16:20 2 -> /dev/null
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 256 -> /u01/app/oracle/oradata/orcl/control01.ctl
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 257 -> /u01/app/oracle/fast_recovery_area/orcl/control02.ctl
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 258 -> /u01/app/oracle/oradata/orcl/system01.dbf
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 259 -> /u01/app/oracle/oradata/orcl/sysaux01.dbf
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 260 -> /u01/app/oracle/oradata/orcl/undotbs01.dbf
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 261 -> /u01/app/oracle/oradata/orcl/users01.dbf
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 262 -> /u01/app/oracle/oradata/orcl/ttspace01.dbf
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 263 -> /u01/app/oracle/oradata/orcl/ocpyang01.dbf
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 264 -> /u01/app/oracle/oradata/orcl/ocpyangindex01.dbf
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 265 -> /u01/app/oracle/oradata/orcl/lobocpyang01.dbf
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 266 -> /u01/app/oracle/oradata/orcl/lobocpyang0101.dbf
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 267 -> /u01/app/oracle/oradata/orcl/lobocpyang0202.dbf
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 268 -> /u01/app/oracle/oradata/orcl/temp01.dbf
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 269 -> /u01/app/oracle/oradata/orcl/wind01.dbf (deleted) --注
lr-x------ 1 oracle oinstall 64 Mar 5 16:20 3 -> /dev/null
lr-x------ 1 oracle oinstall 64 Mar 5 16:20 4 -> /dev/null
lr-x------ 1 oracle oinstall 64 Mar 5 16:20 5 -> /dev/null
lr-x------ 1 oracle oinstall 64 Mar 5 16:20 6 -> /u01/app/oracle/proct/11.2.0/db_1/rdbms/mesg/oraus.msb
lr-x------ 1 oracle oinstall 64 Mar 5 16:20 7 -> /proc/1928/fd
lr-x------ 1 oracle oinstall 64 Mar 5 16:20 8 -> /dev/zero
lrwx------ 1 oracle oinstall 64 Mar 5 16:20 9 -> /u01/app/oracle/proct/11.2.0/db_1/dbs/hc_orcl.dat
直接cp該句柄文件名回原位置:
$ pwd
/proc/1928/fd
cp /proc/1928/fd/269 /u01/app/oracle/oradata/orcl/wind01.dbf
NOTE:
由於資料庫一直是打開使用的,數據在不斷變更則SCN也會不斷的變化,
cp數據文件和資料庫當前的信息明顯不一致,此時需要對數據文件進行recover.
--離線數據文件
alter database datafile '/u01/app/oracle/oradata/orcl/wind01.dbf' offline;
select count(*) from t1;
第 1 行出現錯誤:
ORA-00376: 此時無法讀取文件 11
ORA-01110: 數據文件 11: '/u01/app/oracle/oradata/orcl/wind01.dbf'
--恢復數據文件
recover datafile '/u01/app/oracle/oradata/orcl/wind01.dbf';
--聯機數據文件
alter database datafile '/u01/app/oracle/oradata/orcl/wind01.dbf' online;
select count(*) from t1;
COUNT(*)
----------
99000
成功恢復.
『陸』 oracle誤刪數據怎樣恢復
用閃回
命令如下
alter
table
表名
enable
row
movement;--啟動的行移動功能
flashback
table
表名
to
timestamp
to_timestamp('2011-12-23
10:49:30,'yyyy-MM-dd
hh24:mi:ss');
『柒』 怎樣在備份的ORACLE資料庫DMP文件中恢復包體和過程
一、Oracle資料庫備份與恢復步驟
資料庫備份與恢復步驟:
1、
導出資料庫可以,在DOS窗體執行下邊語句:
exp
gdpmp/gdpmp@ora9
exp
gdpmp/gdpmp@ora9
rows=no
將會導出空表。
2、
然後,按照步驟進行確認。
3、
如果是默認路徑,將會在C盤根目錄生成一個EXPDAT.DMP的文件。
如果不是默認路徑,將上述語句改為:
exp
gdpmp/gdpmp@ora9
file=d:\aaa.dmp
也可以。
4、
導入資料庫,在DOS窗體執行下邊語句:
imp
gdpmp/gdpmp@ora9
file=d:\aaa.dmp
full=y
5、
然後回車就可以了。
【注】前一個gdpmp是用戶,後一個是密碼。而且改用戶需要有DBA的角色。Ora9是資料庫連接名字。
二、Oracle資料庫備份與恢復步驟
只導出3張表的結構:
exp
user/pasword@dbServerName
owner=user
tables=(tb1,tb2,tb3)
rows=n
file=c:1.dmp
連帶數據導出:
exp
user/pasword@dbServerName
owner=user
tables=(tb1,tb2,tb3)
rows=y
file=c:2.dmp
imp
user2/pasword@dbServerName2
fromuser=user
touser=user2
file=c:1.dmp
或者
imp
user2/pasword@dbServerName2
fromuser=user
touser=user2
file=c:2.dmp
三、Oracle資料庫備份與恢復步驟
exp/imp工具;
帶參數:rows=y
——
帶數據導出導入;
rows=n
——
不帶數據的導出導入,只移植結構
『捌』 在oracle中如何找回被刪除的數據
1、首先新建一張測試表TEST,裡面輸入記錄。由於刪除/更新/插入恢復步驟相同,這里僅演示刪除數據的情況。
『玖』 oracle誤刪除了packages,如何恢復
Oracle DBA神器:PRM災難恢復工具,Schema級別數據恢復。PRM For Oracle Database – schema級別oracle資料庫數據恢復特性 ,PRM即ParnassusData Recovery Manager是企業級別Oracle資料庫災難恢復工具。PRM可以在無備份的情況下恢復被truncated/drop掉的表,也可以恢復無法打開的Oracle資料庫(Alter Database Open失敗)中的數據。 PRM是圖形化增強版的Oracle DUL工具,同時具備很多Oracle DUL不具備的特性