還原oracle資料庫
㈠ oracle資料庫備份後怎麼恢復
1 導出存儲過程,觸發器,序列等所有用戶對象。(備份)
在PL/sql Developer的菜單Tools(工具) => Export User Objects(導出用戶對象)中出來一個對話框界面
建議紅色框住部分都不選,這樣執行這個sql 時,就根據當前你的登錄賬戶來進行創建。 在對象列表中ctrl+a 全選所有(如果你只導出部分,可單獨選擇)
設置 輸出文件地址,文件名。 點擊導出完成。
2 導出數據。(備份)
在PL/SQL Developer的菜單Tools(工具) => 導出表 中出來一個對話框界面
如果 數據量較大,選擇oracle導出,勾壓縮選項,然後設置輸出文件地址。 如果只導出部分數據,可以在Where 處添加條件。例如 rownum<=1000 ( 導出1000條記錄),此種方式導出dmp 格式文件。
如果數據量較小,可以選擇sql 插入,此種方式導出sql文件。
選項,勾選 約束,索引,行數,觸發器。
注意:如果表中包含clob 或nclob 欄位,就只能用dmp格式進行導入,如果是少量表,不包含這種欄位,可以用sql插入方式。
還原時,注意需要先還原dmp文件。
3 表數據還原 。
a. 如果dmp 文件,那麼在PL/SQL Developer的菜單Tools(工具) => 導入表 中出來一個對話框界面
可以在 「到用戶」 處 選擇你登錄的賬戶。
b 如果是sql 格式文件,一樣在PLSQL中新建一個命令窗口 (command windows) , 粘貼(ctrl+v) 剛才負責的sql內容。然後就開始自動執行還原了。
4 還原其他對象(存儲過程,觸發器,序列,函數等)
a. 用PLSQL 登錄要還原的Oracle。此時你登錄的賬號是什麼,還原就在該賬號下。
b. 把先前備份的表結構sql文件打開,全選內容。 然後在PLSQL中新建一個命令窗口 (command windows) , 粘貼(ctrl+v) 剛才負責的sql內容。然後就開始自動執行還原了。
㈡ oracle資料庫如何備份與恢復
Oracle資料庫的備份與恢復有漏桐中三種標準的模式,大致分為兩大類,備份恢復(物理上的)以及導入導出(邏輯上的)。物理備份又可以根據資料庫的工作模式分為非歸檔模式(Nonarchivelog-style)和歸檔模式(Archivelog-style),通常,我們把非歸檔模式稱為冷備份,而相應的把歸檔模式稱輪核為熱備份。
冷備份是指在資料庫關閉的情況下對數據文件、控制文件和重做日誌文件進行拷貝。冷備份的優點是簡單、快速、安全,缺點是需要停機維護,影響業務連續性。
熱備份是指在數返山據庫開啟並處於歸檔模式下對數據文件進行拷貝。熱備份的優點是不需要停機維護,不影響業務連續性,缺點是比較復雜、耗時、佔用資源。
導入導出是指使用EXP/IMP或者數據泵技術將資料庫中的對象或者數據導出到一個二進制文件中,並且可以將這個文件導入到另一個資料庫中。導入導出的優點是靈活、方便、可移植,缺點是不能保證一致性、效率低、不能恢復系統對象。
㈢ oracle資料庫執行腳步出錯,怎麼恢復資料庫
數據恢復方法是利用oracle提供的閃回方法進行數據恢復,適用於delete刪除(一條記錄)方式:
首先需要知道是什麼時間進行的刪除操作,如果不能確定具體時間點則選擇盡量准確的刪除數據前的時間。然後利用
select * from 表名 as of timestamp to_timestamp('刪除時間點','yyyy-mm-dd hh24:mi:ss')
語句可以找回刪除的數據。利用
insert into 表名 (select * from 表名 as of timestamp to_timestamp('刪除時間點','yyyy-mm-dd hh24:mi:ss'));
語句就可以將恢復出來的數據插入原表中(注意要保證主鍵不重復)。
另一種方法可以通過閃回整個表來恢復誤刪除的數據,但僅適用於表結構沒有發生改變且用戶有flash any table許可權的情況下,語句如下:
·alter table 表名 enable row movement
㈣ oracle資料庫怎樣還原到以前某個正確的狀態
你可以試試PRM-DUL for Oracle。
ParnassusData Recovery Manager(以下簡稱PRM-DUL)是企業級ORACLE數據災難恢復軟體,可直接從Oracle9i,10g,11g,12c的資料庫數據文件(datafile)中抽取還原數據表上的數據,而不需要通過ORACLE資料庫實例上執行SQL來拯救數據。ParnassusDataRecovery Manager是一款基於JAVA開發的綠色軟體,無需安裝,下載解壓後便可直接使用。
恢復場景1 誤Truncate表的常規恢復
D公司的業務維護人員由於誤將產品資料庫當做測試環境庫導致錯誤地TRUNCATE了一張表上的所有數據,DBA嘗試恢復但是發覺最近的備份不可用,導致無法從備份中恢復出該數據表上的記錄。 此時DBA決定採用PRM來恢復已經被TRUNCATE掉的數據。
由於該環境中 所有資料庫文件均是可用且健康的,用戶僅需要 字典模式下載入SYSTEM表空間的數據文件以及被TRUNCATED表的數據文件即可,例如:
create table ParnassusData.torderdetail_his1 tablespace users asselect * from parnassusdata.torderdetail_his;SQL> desc ParnassusData.TORDERDETAIL_HIS
Name Null? Type
----------------------- -------- --------------SEQ_ID NOT NULL NUMBER(10)SI_STATUS NUMBER(38)D_CREATEDATE CHAR(20)D_UPDATEDATE CHAR(20)B_ISDELETE CHAR(1)
N_SHOPID NUMBER(10)N_ORDERID NUMBER(10)C_ORDERCODE CHAR(20)N_MEMBERID NUMBER(10)N_SKUID NUMBER(10)C_PROMOTION NVARCHAR2(5)N_AMOUNT NUMBER(7,2)N_UNITPRICE NUMBER(7,2)N_UNITSELLINGPRICE NUMBER(7,2)N_QTY NUMBER(7,2)N_QTYFREE NUMBER(7,2)N_POINTSGET NUMBER(7,2)N_OPERATOR NUMBER(10)C_TIMESTAMP VARCHAR2(20)H_SEQID NUMBER(10)N_RETQTY NUMBER(7,2)N_QTYPOS NUMBER(7,2)select count(*) from ParnassusData.TORDERDETAIL_HIS;COUNT(*)
----------
984359
select bytes/1024/1024 from dba_segments where segment_name='TORDERDETAIL_HIS' and owner='PARNASSUSDATA';BYTES/1024/1024
---------------
189.71875
SQL> truncate table ParnassusData.TORDERDETAIL_HIS;Table truncated.
SQL> select count(*) from ParnassusData.TORDERDETAIL_HIS;COUNT(*)
----------
0
啟動PRM ,並選擇 Tools => Recovery Wizard點擊Next
在此TRUNCATE場景中並未採用ASM存儲,所以僅需要選擇 《Dictionary Mode》字典模式即可
㈤ oracle 資料庫如何還原
單擊開始,這里輸入cmd,打開dos窗口
輸入命令
exp bms/BMSPASS@TCDB file=E:DBbackdbback20160112.dmp
這里說明一下
這里的bms是指備份時,登錄資料庫實例TCDB的用戶名;
這里的/是語法符號。
這里的BMSPASS是用戶bms登錄資料庫TCDB時的密碼;
@是語法符號。
這里的TCDB是Oracle資料庫的實例名。
這里的file=E:DBbackdbback20160112.dmp 是只指備份文件的存放路徑。
等待導出完成,如果看到這里的導出成功,說明備份完成了。
打開備份時指定的存儲路徑,就可以看到備份文件了。
如果在導出命令的最後加上full=y的參數,也就是
exp bms/BMSPASS@TCDB file=E:DBbackdbback20160112.dmp full=y
意思是將用戶bms在TCDB資料庫實例中的所有文件都備份,也就是完整備份。
資料庫還原使用語法
imp bms/BMSPASS@TCDB file=E:DBbackdbback20160112.dmp
這里的E:DBbackdbback20160112.dmp是備份文件的存放路徑
㈥ 如何從完好的數據文件恢復oracle資料庫
一。有數據文件、控制文件和日誌文件的備份1.伺服器重裝了操作系統,oracle也重裝了。如果重裝的oracle和以前損壞的資料庫是一模一樣的結構,那麼此時的恢復是比較簡單的。
1)刪除掉新建資料庫的所有數據文件、控制文件和日誌文件。Copy原資料庫的數據文件、控制文件和日誌文件到對應目錄下。
2)
Cmd>sqlplus /nolog
Sql>conn as sysdba
用戶名:system
密碼:(此處密碼為新創建資料庫的密碼)
Sql>shutdown immediate
Sql>startup nomount
Sql>alter database mount
此時看資料庫是不是能mount起來,有時會提示沒有口令文件PWDdemo.ora文件找不到。查看對應的目錄(database下)會發現該文件是存在的。此時需要注意,該口令文件是新安裝資料庫後創建實例時生成的口令文件,不是以前所用資料庫的口令文件,而現在,我們是用以前資料庫的控制文件和數據文件來打開以前的資料庫,所以此時需要重新創建一個口令文件。
Sql>shutdown immediate
Sql>host orapwd file=c:/oracle9i/database/PWDdemo.ora password=oracle
Entries=10 (放在database 目錄下)
Sql>startup nomount
Sql>alter database mount
Sql>alter database open
打開資料庫
2.如果新資料庫的安裝目錄和原有資料庫的目錄不一樣,那麼此時可以重建控制文件來打開資料庫。因為原控制文件中記錄的數據文件地址和現有的數據文件位置不一樣。此時和下面第二中情況一樣。當然,此時也可以創建和原資料庫一樣的目錄結構(前提是要記得原資料庫的目錄結構),需要注意的就是參數文件中記錄的控制文件位置和控制文件中記錄的數據文件位置。
說明:我們需要清楚資料庫在打開的三個階段中,需要讀取的文件
Sql>startup nomount (此時讀取參數文件)
Sql>alter database mount (根據參數文件中記錄的控制文件地址,去讀取控制文件)
Sql>alter database open (根據控制文件中記錄的數據文件地址,讀取數據文件,打開資料庫)
二。只有數據文件備份,沒有控制文件和日誌文件
由於只有數據文件備份,沒有控制文件和日誌文件,此時只能採用重建控制文件來恢復資料庫。以下通過兩中方法來介紹如何通過重建控制文件來進行資料庫的恢復。
1)僅安裝資料庫軟體,通過新建oracle服務,引用數據文件來創建一個實例。下面以實例名為demo為例進行說明。
1.創建存儲demo相關文件的目錄。即::各類文件的存放地址。
C:/documents and settings/mkdir c:/demo
C:/documents and settings/mkdir c:/demo/bmp
C:/documents and settings/mkdir c:/demo/ump
C:/documents and settings/mkdir c:/demo/cmp
C:/documents and settings/mkdir c:/demo/pfile
C:/documents and settings/mkdir c:/demo/create
C:/documents and settings/mkdir c:/demo/oradata
C:/documents and settings/mkdir c:/demo/oradata/demo (放置datafile、logfile、controlfile)
2.創建初始化參數文件(pfile)
此處pfile文件可以從其他能正常運行的資料庫上一個過來進行修改。(判斷其他正常運行的資料庫使用的是pfile還是spfile,如是pfile可以直接,如是spfile,則可根據spfile創建一個pfile文件)
Copy過來的pfile需要修改的地方:
background_mp_dest=c:/demo/bmp
core_mp_dest=c:/demo/cmp
user_mp_dest=c:/demo/ump
control_files=("c:/demo/oradata/demo/CONTROL01.CTL", "c:/demo/oradata/demo/CONTROL02.CTL", "c:/demo/oradata/demo/CONTROL03.CTL")
dispatchers="(PROTOCOL=TCP) (SERVICE=demoXDB)"(實例名)
dispatchers="(PROTOCOL=TCP) (SERVICE=demoXDB)"
db_domain=""
db_name=demo
3.創建oracle服務和口令文件
C:/documents and settings/oradim — new —sid demo —intpwd oracle
4.配置監聽和服務
用net manager 進行配置(demo實例的配置)
5.復制數據文件備份到指定的目錄下。此處為c:/demo/oradata/demo
6.重建controlfile
C:/Documents and Settings/hefan>sqlplus /nolog
SQL*Plus: Release 9.2.0.1.0 - Proction on 星期一 12月 29 10:57:07 2008
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
SQL> conn as sysdba
請輸入用戶名: system
請輸入口令:
已連接。
SQL> shutdown immediate
ORA-01507: 未安裝資料庫
ORACLE 常式已經關閉。
SQL> startup nomount file= c:/demo/pfile/initdemo.ora
ORACLE 常式已經啟動。
Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> @d:/controlfile.sql
控制文件已創建
Controlfile.sql內容如下:(此處也可以直接在sql>下輸入以下內容進行創建controlfile)
CREATE CONTROLFILE REUSE DATABASE "demo" RESETLOGS NOARCHIVELOG
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 226
LOGFILE
GROUP 1 'c:/demo/oradata/demo/redo01.log' SIZE 50M,
GROUP 2 'c:/demo/oradata/demo/redo02.log' SIZE 50M,
GROUP 3 'c:/demo/oradata/demo/redo03.log' SIZE 50M
DATAFILE
'c:/demo/oradata/demo/system01.dbf',
'c:/demo/oradata/demo/odm01.dbf',
'c:/demo/oradata/demo/indx01.dbf',
'c:/demo/oradata/demo/tools01.dbf',
'c:/demo/oradata/demo/undotbs01.dbf',
'c:/demo/oradata/demo/users01.dbf',
'c:/demo/oradata/demo/xdb01.dbf',
'c:/demo/oradata/demo/cwmlite01.dbf',
'c:/demo/oradata/demo/drsys01.dbf',
'c:/demo/oradata/demo/example01.dbf'
CHARACTER SET zhs16gbk
說明:此時沒有日誌文件,所以只能進行reserlogs,如果是有logfile,則此處不需要resetlogs,noresetlogs就可以