--**********************數據泵技術------oracle 10G之後出現
--創建目錄
create directory dump_dir as 'e:/backup';
--查詢數據庫所有有目錄
select * from dba_directories;
--刪除數據庫目錄
drop directory dump_dir;
drop directory dump_file;
--創建表空間
create tablespace tbs_test
datafile 'e:/t.dbf'
size 10M
autoextend on;
--查詢表空間
select * from dba_tablespaces;
--創建測試用戶
create user tests identified by tests;
--用戶授權
grant connect,resource to tests;
revoke imp_full_database from scott;
--授予用戶操作dump_dir目錄的權限
grant read ,write on directory dump_dir to tests;
grant read, write on directory dump_dir to scott;
---------------------------------備份(導出)--------------
--導出整個數據庫
expdp help=y --幫助文件
--導出
expdp system/accp@orcl directory=dump_dir dumpfile=full.bak full=y
--expdp導出
--directory 指定目錄
--dumpfile 指定備份的文件名
--full 完整備份
--導出表空間
--查詢表空間
select * from scott.
select * from dba_tablespaces;
--導出全部表空間 tablespaces表空間
expdp system/accp@orcl directory=dump_dir dumpfile=tablespacefull.bak tablespaces
--導出指定表空間 tablespaces=表空間表
expdp system/accp@orcl directory=dump_dir dumpfile=ts_test.bak tablespaces=tbs_test
--刪除表空間
drop tablespace tbs_test;
--導出用戶用SCHEMAS
--導出scott用戶
expdp scott/tiger@orcl directory=dump_dir dumpfile=scottschma.bak schemas=scott
--導出表
expdp scott/tiger@orcl directory=dump_dir dumpfile=scotttabs.bak tables=emp,dept,bonus,salgrade
--使用管理員
expdp system/accp@orcl directory=dump_dir dumpfile=scotttbales.bak tables=scott.emp,scott.dept,scott.bonus,scott.salgrade
--導出一個表
expdp scott/tiger@orcl directory=dump_dir dumpfile=scottemp.bak tables=emp
------------------------------恢復(導入)---------------
--impdd導入關鍵字
--導入emp表,scottemp.bak文件
impdp scott/tiger@orcl directory=dump_dir dumpfile=scottemp.bak tables=emp
--導入scott下的所有表 scotttabs.bak
impdp scott/tiger@orcl directory=dump_dir dumpfile=scotttabs.bak tables=emp,dept,bonus,salgrade
--將scott下的所有g表恢復到tests用戶下,scott
--首先使用dba為scott權限imp_full_database
--導入數據權限
grant imp_full_database to scott;
--導出權限
grant exp_full_database to scott;
impdp scott/tiger@orcl directory=dump_dir dumpfile=SCOTTTABS.BAK tables=emp,dept,bonus,salgrade remap_schema=scott:tests
--將scott下的所有g表恢復到tests用戶下,使用管理 員
impdp system/accp@orcl directory=dump_dir dumpfile=SCOTTTABS.BAK tables=scott.emp,scott.dept,scott.bonus,scott.salgrade remap_schema=scott:tests
--導入scott用戶,用SCOTT用戶
impdp scott/tiger@orcl directory=dump_dir dumpfile=scottschma.bak schemas=scott
--導入scott用戶,使用管理員
impdp system/accp@orcl directory=dump_dir dumpfile=scottschma.bak schemas=scott
--將scott中所有對象導入tests中
impdp system/accp@orcl directory=dump_dir dumpfile=scottschma.bak schemas=scott remap_schema=scott:tests
--導入表空間
impdp system/accp@orcl directory=dump_dir dumpfile=tablespacetbs_test.bak tablespaces=tbs_test
--導入全部表空間
impdp system/accp@orcl directory=dump_dir dumpfile=TABLESPACEFULL.BAK
--恢復整個數據庫
impdp system/accp@orcl directory=dump_dir dumpfile=full.bak full=y
--使用exp/imp命令------------------oraclr 10之前
使用exp/imp備份
exp help=y
--導出整個數據庫
exp system/accp@orcl file=E:/bak/full.back full=y
--導出用戶
exp scott/tiger@orcl file=E:/bak/scott.back owner=scott
--導出表
exp scott/tiger@orcl tables=(emp,dept) file=E:/bak/scotttabs.back
--導出USER表空間
exp system/accp@orcl tablespaces=(users) file=E:/bak/tbs_users
---導入
--導入數據庫
imp system/accp@orcl file=E:/bak/full.back full=y
--導入表
imp system/accp@orcl file=E:/bak/scotttabs.back fromuser=scott touser=tests tables=(emp,dept)
exp/imp 和expdp/impdp命令在功能上的區別
1.把用戶usera的對象導到用戶userb
exp/imp用法
fromuser=usera touser=userb;
expdp/impdp用法
remap_schema=usera:userb
2.指定一些表
exp/imp用法:
tables=(table1,table2,....)
tables=(emp,dept);
expdp/impdp用法
tables=table1,table2,....
tables=emp,dept
3.更換表空間
expdp/impdp:
remap_tablespace=舊表空間名:新表空間名
4.是否要導出數據行
exp ROWS=y ,導出數據行,ROWS=N,不導出數據行
expdp content(ALL:對象+導出數據行,DATA_ONLY:只導出對象,METADATA_ONLY,只導出數據記錄)
冷備份 和熱備份
冷備份發生在數據庫已經正常關閉的情況下,當正常關閉時會提供給我們一個完整的數據庫
對ORACLE而言,冷備份是最快和最安全的方法
1 完全關閉數據庫
2.備份所有數據庫的數據文件
3.重新啟動數據庫
1)關閉數據庫
sqlplus /nolog
connect sys/orcl@orcl as sysdba
shutdown normal;
2)復制數據,用復制命令備份ORCL數據庫全部數據文件,重做日志文件,控制文件,初始化參數文件到指定目錄
復制數據文件,重做日志文件,控制文件
host copy 'oracle主目錄'\oradate\orcl e:\back
復制初始化參數文件:
host copy 'oracle主目錄'\...\initorcl.ora e:\back
3)重啟數據庫
startup
恢復步驟
1)關閉數據庫
2)把備份的數據文件,控制文件,和聯機重做日志還原
3)啟動數據庫
熱備份
是數據庫下在運行情況下進行的,數據備份,熱備份需要在數據庫的歸檔模式下運行
並需要大量的磁盤空間