ORACLE備份和恢復(fù)
<1>邏輯備份 不用去拷貝數(shù)據(jù)庫的物理文件 備份邏輯上的結(jié)構(gòu) 外部的工具:導(dǎo)出和導(dǎo)入的工具 DOS下的命令 cmd下執(zhí)行 導(dǎo)出exp export縮寫形式
查看幫助 exp help=y
使用參數(shù)文件導(dǎo)出 exp parfile=c:\abc.par >>>abc.par的內(nèi)容 a)scott用戶連接導(dǎo)出自己的所有對象 userid=scott/tiger --連接的用戶scott file=c:\a1.dmp --導(dǎo)出的文件的名字a1.dmp --導(dǎo)出了scott用戶的所有對象
b)用system連接來導(dǎo)出scott下的所有對象 exp parfile=c:\sys.par >>>>sys.par的內(nèi)容 userid=system/manager file=c:\b1.dmp owner=(scott) --導(dǎo)出scott用戶的所有對象 導(dǎo)出多個用戶的數(shù)據(jù) 建立一個測試用戶 test grant connect,resource to test identified by t123; alter user test default tablespace users temporary tablespace temp; create table student( stu_id number(4) primary key, stu_name varchar2(20), stu_score number(2) ); insert into student values (1000, 'Mike',95); insert into student values (1001, 'John',90);
導(dǎo)出scott和test下的所有對象???? >>>userid=system/manager file=c:\st.dmp owner=(scott,test)
導(dǎo)出scott下的emp,dept表???? >>>userid=system/manager file=c:\st.dmp tables=(scott.emp,scott.dept,test.student)
導(dǎo)出整個數(shù)據(jù)庫(備份整個數(shù)據(jù)庫) 必須用超級用戶 system ,sys exp system/manager file=c:\system.dmp full=y feedback=1000 或者 exp parfile=c:\sys.par >>>sys.par userid=system/manager file=c:\system.dmp full=y
比較全的一個導(dǎo)出的參數(shù)文件 >>>sys.par userid=system/manager file=c:\aa.dmp buffer=1024000 --緩沖 rows=y --是否導(dǎo)出記錄 compress=y --extent是否壓縮 grants=y --grant語句是否導(dǎo)出 indexes=y --導(dǎo)出索引 full=y --全庫導(dǎo)出 feedback=3 --顯示導(dǎo)出進(jìn)度每3行
導(dǎo)出表scott.dept中部門編號是40的記錄 >>>sys.par userid=system/manager file=c:\sys.dmp tables=(scott.emp) query="where deptno=10"
導(dǎo)出表scott.emp中的記錄 >>>sys.par userid=system/manager file=c:\sys.dmp tables=(scott.emp) feedback=3 --每3行記錄顯示一個點進(jìn)度
如何把導(dǎo)出的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫中進(jìn)行恢復(fù)?? imp import縮寫形式 dos命令 imp help=y 查看幫助
<1>把scott下的表emp導(dǎo)出 , 然后刪除表中的內(nèi)容(truncate table emp), 利用導(dǎo)出的文件來恢復(fù)?? a)導(dǎo)出 exp parfile=c:\sys.par >>> sys.par userid=system/manager file=c:\emp.dmp tables=(scott.emp) b)刪除 truncate table emp; --刪數(shù)據(jù) 或者 drop table emp; --刪除結(jié)構(gòu)
( delete from emp; --刪數(shù)據(jù)可以恢復(fù))
c)恢復(fù) imp prafile=c:\im.par; >>>im.par userid=system/manager file=c:\emp.dmp fromuser=scott --從哪個用戶來恢復(fù) show=y --顯示導(dǎo)入文件中的SQL語句
<2>scott下的對象全部復(fù)制到test用戶下 (克隆用戶scott) a)導(dǎo)出scott用戶 exp parfile=c:\sys.par >>>sys.par userid=system/manager file=c:\scott.dmp owner=(scott)
b)導(dǎo)入scott.dmp文件中的內(nèi)容到test用戶下 imp parfile=c:\im.par >>>im.par userid=system/manager file=c:\scott.dmp fromuser=scott touser=test
<3>scott用戶導(dǎo)出數(shù)據(jù)后 用戶scott被刪除了 怎么來恢復(fù)?????? a)導(dǎo)出scott用戶 exp parfile=c:\sys.par >>>sys.par userid=system/manager file=c:\scott.dmp owner=(scott) b)刪除scott用戶 drop user scott cascade;
c)恢復(fù) 先建立用戶scott grant connect,resource to scott identified by tiger; alter user scott default tablespace users temporary tablespace temp;
然后導(dǎo)入 imp parfile=c:\im.par >>im.par userid=system/manager file=c:\scott.dmp fromuser=scott
<4>如何進(jìn)行全庫導(dǎo)入 imp system/manager file=c:\all.dmp full=y ignore=y full ---全庫 ignore ---忽略導(dǎo)入過程中的錯誤
如何建立一個新的數(shù)據(jù)庫 ????? 使用DATABASE CONFIGURATION ASSISTANT
備份的第二種模式 物理備份 拷貝數(shù)據(jù)文件 數(shù)據(jù)文件 + 歸檔日志文件 = 整個數(shù)據(jù)庫 在數(shù)據(jù)庫不關(guān)閉的情況下備份(熱備份) <1>數(shù)據(jù)庫可以關(guān)閉的物理備份(冷備份) a)關(guān)閉數(shù)據(jù)庫 b)拷貝數(shù)據(jù)文件 c)打開數(shù)據(jù)庫 數(shù)據(jù)庫工作在歸檔和非歸檔模式都可以 a)關(guān)閉數(shù)據(jù)庫 connect system/manager shutdown immediate;
b)拷貝文件 數(shù)據(jù)文件 v$DATAFILE 控制文件 v$controlfile 日志文件 v$ 臨時數(shù)據(jù)文件
c)打開數(shù)據(jù)庫 startup; 寫一個腳本文件 執(zhí)行上述功能 cold_back.txt
如何用冷備份來恢復(fù)數(shù)據(jù)庫 用備份的文件來覆蓋原來的文件,就OK
<2>數(shù)據(jù)庫不能關(guān)閉的情況下作熱備份 (24x7運行的系統(tǒng)) a)設(shè)置數(shù)據(jù)庫工作在歸檔模式下 b)備份表空間 c)作一次日志切換 (把在熱備份過程中產(chǎn)生的數(shù)據(jù)寫到歸檔日志中) d)備份歸檔日志文件
--數(shù)據(jù)庫有哪些表空間 select tablespace_name from dba_tablespaces where status <> 'READ ONLY'; --每個表空間對應(yīng)的數(shù)據(jù)文件 select file_name from dba_data_files where tablespace_name='SYSTEM';
--要拷貝SYSTEM表空間所對應(yīng)的數(shù)據(jù)文件 --使表空間system處于熱備份狀態(tài) alter tablespace system begin backup; --拷數(shù)據(jù)文件 host copy D:\ORACLE\ORADATA\ACCP\SYSTEM01.DBF c:\backup --關(guān)閉熱備份狀態(tài) alter tablespace system end backup;
-- recover database;
--數(shù)據(jù)庫損壞的情況下來恢復(fù) recover database datafile 4; 恢復(fù)第4個數(shù)據(jù)文件
|