oracle資料庫恢復
❶ oracle資料庫如何還原
第一:用安裝資料庫時的管理員用戶登錄:創建一個新的用戶,如:
//創建用戶123密碼456
create user 123 identified by 456;
第二:授權,賦予dba的許可權
grant dba to 123;
第三:導入資料庫
imp 123/456@orcl file=E:\*.DMP fromuser=expuser touser=123
注意:如上導入需要直接在cmd界面執行;expuser是導出用戶名,可以隨便寫,但會有警告;orcl是你創建的資料庫事例,在安裝oracl的時候,默認會新建一個orcl
最後:希望我描述清楚了,能幫到你。
❷ Oracle資料庫的恢復技術
IMPORT方法:
利用IMPORT,將最後一次EXPORT出來的數據文件IMPORT到新的資料庫中,這種方式可以將任何資料庫對象恢復到它被導出時的狀態,此後的變化將無法挽回。IMPORT的命令可以互動式進行,各參數的具體含義見Oracle EXP/IMP參數詳解。這種方式適用於沒有採用archive 模式的環境。
安全的恢復方法:
如果資料庫運行在archive 模式下,那麼一旦資料庫損壞則可以通過冷備份(熱備份)和歸檔備份將資料庫恢復到斷點狀態。
資料庫控制文件恢復(假設所有控制文件均被破壞):
資料庫基於文件系統: 利用操作系統的tar、cp等命令即可。
資料庫基於裸設備:dd if=$ORACLE_BASE/con.bak of=/dev/rdrd/drd1 seek=12
資料庫數據文件恢復數據及索引表空間、系統表空間的恢復:回拷相關的資料庫文件和該數據文件備份以來所有生成的所有邏輯日誌文件並執行如下命令: svrmgrl>startupmountsvrmgrl>alterdatabaserecoverautomatic如果控制文件被破壞,則: svrmgrl>;#按照提示輸入log文件名和redolog文件名svrmgrl>alterdatabaseopenresetlogs;資料庫臨時文件和回滾表空間的恢復:簡單地offline drop 並重建即可 。
注意:如果資料庫不運行在archive 模式下,則恢復只能恢復到上次備份時的狀態。
❸ 如何從完好的數據文件恢復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就可以
❹ 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資料庫怎樣還原到以前某個正確的狀態
你可以試試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資料庫
任何軟體都有可能在有意或無意的情況下被重新安裝,如Oracle重裝後資料庫怎麼恢復呢?情況發生在你是無意的情況下!ORACLE資料庫恢復的方法我們經常會用到,下面就為您介紹重裝系統後ORACLE資料庫恢復的方法,希望對您學習ORACLE資料庫恢復方面能有所幫助。
我的電腦突然掛了,不得不重裝系統,不過我的ORACLE裝在了D盤,所有的文件都還在,我相信一定能夠恢復,直到搞定工作,我才開始整我的資料庫,花了兩天時間,終於恢復了,慶祝一下,同時總結一下,希望有遇到同樣問題的朋友能夠快速搞定此類問題
第一種:
首先,備份資料庫(X:\oracle\oradata)下的數據文件,重新命名即可(否則裝資料庫的時候會提示sid已存在)。重新安裝數據
庫,當然資料庫的名字就是你要恢復的名字。安裝完成後,打開控制面板,停止oracle的服務。把(X:\oracle\oradata)下新生成的文件
改名,把原先目錄下的文件恢復名字。再重新啟動oracle服務和監聽。用sys/as dba
登陸資料庫,可能會提示許可權不夠(ora-01031)修改(X:\oracle\ora92\network\admin
)文件夾下的sqlnet.ora文件,添加SQLNET.AUTHENTICATION_SERVICES=
(NTS),增加許可權。登陸進去後,打開table提示不能打開。打開common頁,執行命令alert database
open;這時再刷新table,發現原先的表可以打開了。恢復成功了。再用原先資料庫的普通用戶進入。發現一切正常。至此,大功告成。
第二種:
1、首先,將原來的ORACLE文件夾改名,原來的路徑是D:/oracle.我暫時改成D:/oracle_old.找來ORACLE(我用
的是ORACLE 9I)安裝光碟,將ORACLE安裝在原來安裝的目錄下,這樣恢復起來更加方便,主要是注冊表的內容不用修改。
2、安裝完了之後,系統中又有一個可以使用的ORACLE了。這個時候要做的就是將原來的文件和數據恢復過來。第一步,先關閉ORACLE的所
有已經啟動的項目,在"服務"裡面逐一關閉。然後,將安裝目錄改名。我現在用的是D:/oracle.改成D:/oracle_new.再將D:
/oracle_old改成D:/oracle.
這樣理論上說從物理層面恢復了ORACLE了。但是我們發現,現在還不能啟動ORACLE的監聽程序和服務程序。我們還要從邏輯上解決。
3、在dos環境下執行一個刪除命令:oradim -delete -sid mm,其中mm為創建oracle時候創建的實例
建議執行這個命令後重新啟動機器,重啟後就可以建立和原來實例名相同的實例。當然你懶,不重新啟動也可以,但是你的實例名就不能和原來的一樣了。
4、在dos環境下執行命令 oradim -new -sid mm -startmode a -pfile "D:\oracle\admin\mm\pfile\initmm.ora "創建一個新的實例,其中 "mm"為新資料庫的名稱。
5、啟動服務,先打開資料庫,然後可以用以前的用戶名和密碼登陸進去。
要補充的是,一般的ORACLE資料庫的監聽程序都是用電腦的名稱來識別地址的,而不是127.0.0.1或者localhost.所以,如果我們安裝系
統的時候用的是不同的電腦名稱(比如我原來用的是wm_mm.重新安裝後用的是wenming_mm),那麼我們還有一個工作要做,就是修改文件
listener.ora.將裡面的相關的東西改過來就可以了。
需要耐心、細心,可能在一步里有一個細小的差別就會出些古怪的錯誤提示,有時需要根據錯誤提示採取策略,總之原理是,先裝一個一模一樣的ORACLE,安裝目錄、資料庫名稱都一樣,這樣保證注冊表裡不用更改;再覆蓋物理文件,最後重新實例化,打開資料庫就可以進去了。
❽ oracle資料庫恢復
更改原來d盤的oracle目錄,比如目錄名改成oraclebak,重新安裝oracle資料庫到d盤oracle目錄下,並創建資料庫和原來的資料庫SID保持一致。然後關閉資料庫,把新安裝的資料庫目錄更名或刪除,再把原來的oraclebak目錄再改回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資料庫恢復怎麼辦啊 求解
Oracle DBA神器:PRM-DUL災難恢復工具,Schema級別數據恢復。PRM-DULFor Oracle Database – schema級別oracle資料庫數據恢復特性 ,PRM-DUL即ParnassusData Recovery Manager是企業級別Oracle資料庫災難恢復工具。PRM可以在無備份的情況下恢復被truncated掉的表,也可以恢復無法打開的Oracle資料庫(Alter Database Open失敗)中的數據。