最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

IT忍者神龜之?dāng)?shù)據(jù)庫(kù)備份還原技術(shù)總結(jié)

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 14:45:20
文檔

IT忍者神龜之?dāng)?shù)據(jù)庫(kù)備份還原技術(shù)總結(jié)

IT忍者神龜之?dāng)?shù)據(jù)庫(kù)備份還原技術(shù)總結(jié):1. exp/imp (導(dǎo)出與導(dǎo)入裝庫(kù)與卸庫(kù)) 1.1 基本命令 1. 獲取幫助 $ exp help=y $ imp help=y 2. 三種工作方式 (1)交互式方式 $ exp // 然后按提示輸入所需要的參數(shù) (2)命令行方式 $ exp user/pwd@dbname file=/oracle/t
推薦度:
導(dǎo)讀IT忍者神龜之?dāng)?shù)據(jù)庫(kù)備份還原技術(shù)總結(jié):1. exp/imp (導(dǎo)出與導(dǎo)入裝庫(kù)與卸庫(kù)) 1.1 基本命令 1. 獲取幫助 $ exp help=y $ imp help=y 2. 三種工作方式 (1)交互式方式 $ exp // 然后按提示輸入所需要的參數(shù) (2)命令行方式 $ exp user/pwd@dbname file=/oracle/t

1. exp/imp (導(dǎo)出與導(dǎo)入裝庫(kù)與卸庫(kù)) 1.1 基本命令 1. 獲取幫助 $ exp help=y $ imp help=y 2. 三種工作方式 (1)交互式方式 $ exp // 然后按提示輸入所需要的參數(shù) (2)命令行方式 $ exp user/pwd@dbname file=/oracle/test.dmp full=y // 命令行中輸入所需

1. exp/imp (導(dǎo)出與導(dǎo)入裝庫(kù)與卸庫(kù))

1.1 基本命令

1. 獲取幫助

$ exp help=y

$ imp help=y

2. 三種工作方式

(1)交互式方式

$ exp // 然后按提示輸入所需要的參數(shù)

(2)命令行方式

$ exp user/pwd@dbname file=/oracle/test.dmp full=y // 命令行中輸入所需的參數(shù)

(3)參數(shù)文件方式

$ exp parfile=username.par // 在參數(shù)文件中輸入所需的參數(shù)

參數(shù)文件 username.par 內(nèi)容

userid=username/userpassword

buffer=8192000

compress=n

grants=y

file=/oracle/test.dmp

full=y

3. 三種模式

(1)表方式,將指定表的數(shù)據(jù)導(dǎo)出/導(dǎo)入。

導(dǎo)出:

導(dǎo)出一張或幾張表:

$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2

導(dǎo)出某張表的部分?jǐn)?shù)據(jù)

$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1query=\”where col1=\’…\’

and col2 \<…\”

導(dǎo)入:

導(dǎo)入一張或幾張表

$ imp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2fromuser=dbuser

user=dbuser2 commit=y ignore=y

(2)用戶方式,將指定用戶的所有對(duì)象及數(shù)據(jù)導(dǎo)出/導(dǎo)入。

導(dǎo)出:

$ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=(xx,yy)

只導(dǎo)出數(shù)據(jù)對(duì)象,不導(dǎo)出數(shù)據(jù)(rows=n )

$ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=user rows=n

導(dǎo)入:

$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbusertouser=dbuser2

commit=y ignore=y

(3)全庫(kù)方式,將數(shù)據(jù)庫(kù)中的所有對(duì)象導(dǎo)出/導(dǎo)入

導(dǎo)出:

$ exp user/pwd file=/dir/xxx.dmp log=xxx.log full=y commit=yignore=y

導(dǎo)入:

$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbusertouser=dbuser2

1.2 高級(jí)選項(xiàng)

1. 分割成多個(gè)文件

以多個(gè)固定大小文件方式導(dǎo)出:這種做法通常用在表數(shù)據(jù)量較大,單個(gè) dump 文件可能

會(huì)超出文件系統(tǒng)的限制的情況

$ exp user/pwd file=1.dmp,2.dmp,3.dmp,… filesize=1000m log=xxx.logfull=y

以多個(gè)固定大小文件方式導(dǎo)入

$ imp user/pwd file=1.dmp,2.dmp,3.dmp,… filesize=1000m tables=xxxfromuser=dbuser

touser=dbuser2 commit=y ignore=y

2. 增量導(dǎo)出/導(dǎo)入

// oracle 9i 以后 exp 不再支持 inctype

必須為 SYS 或 SYSTEM 才可執(zhí)行增量導(dǎo)出導(dǎo)入

增量導(dǎo)出: 包括三個(gè)類型:

(1)“完全”增量導(dǎo)出(Complete) // 備份整個(gè)數(shù)據(jù)庫(kù)

$ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=complete

(2)“增量型”增量導(dǎo)出導(dǎo)出上一次備份后改變的數(shù)據(jù)。

$ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=incremental

(3)“累計(jì)型”增量導(dǎo)出(Cumulative)只導(dǎo)出自上次“完全”導(dǎo)出之后數(shù)據(jù)庫(kù)中變化

了的信息。

$ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=cumulative

增量導(dǎo)入:

$ imp usr/pwd FULL=y inctype=system/restore/inctype

其中:

SYSTEM: 導(dǎo)入系統(tǒng)對(duì)象

RESTORE: 導(dǎo)入所有用戶對(duì)象

3. 以SYSDBA進(jìn)行導(dǎo)出/導(dǎo)入

1. 用于 Oracle 技術(shù)支持

2. 用于表空間傳輸

例:

$ imp \'usr/pwd@instance as sysdba\' tablespaces=xxtransport_tablespace=y

file=xxx.dmp datafiles=xxx.dbf

$ imp file=expdat.dmp userid=”””sys/password as sysdba”””transport_tablespace=y

“datafile=(c:tempapp_data,c:tempapp_index)”

4. 表空間傳輸 (速度快)

表空間傳輸是 8i 新增加的一種快速在數(shù)據(jù)庫(kù)間移動(dòng)數(shù)據(jù)的一種辦法,是把一個(gè)數(shù)

據(jù)庫(kù)上的格式數(shù)據(jù)文件附加到另外一個(gè)數(shù)據(jù)庫(kù)中,而不是把數(shù)據(jù)導(dǎo)出成 dmp 文件,這

在有些時(shí)候是非常管用的,因?yàn)閭鬏敱砜臻g移動(dòng)數(shù)據(jù)就象復(fù)制文件一樣快。

1.關(guān)于傳輸表空間有一些規(guī)則 (10g 前):

(一) 源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)必須運(yùn)行在相同的硬件平臺(tái)上。

(二) 源數(shù)據(jù)庫(kù)與目標(biāo)數(shù)據(jù)庫(kù)必須使用相同的字符集。

(三) 源數(shù)據(jù)庫(kù)與目標(biāo)數(shù)據(jù)庫(kù)一定要有相同大小的數(shù)據(jù)塊

(四) 目標(biāo)數(shù)據(jù)庫(kù)不能有與遷移表空間同名的表空間

(五) SYS 的對(duì)象不能遷移

(六) 必須傳輸自包含的對(duì)象集

(七) 有一些對(duì)象,如物化視圖,基于函數(shù)的索引等不能被傳輸

(同字節(jié)序文件的跨平臺(tái)可以用更換數(shù)據(jù)文件的文件頭的方法)

(10g 支持跨平臺(tái)的表空間傳輸,只要操作系統(tǒng)字節(jié)順序相同,就可以進(jìn)行表空間傳輸。需要使用 RMAN 轉(zhuǎn)換文件格式,略)

2. 檢測(cè)一個(gè)表空間是否符合傳輸標(biāo)準(zhǔn)的方法:

SQL > exec sys.dbms_tts.transport_set_check(‘tablespace_name’,true);

SQL > select * from sys.transport_set_violations;

如果沒(méi)有行選擇,表示該表空間只包含表數(shù)據(jù),并且是自包含的。對(duì)于有些非自包

含的表空間,如數(shù)據(jù)表空間和索引表空間,可以一起傳輸。

3. 簡(jiǎn)要使用步驟:

如果想?yún)⒖荚敿?xì)使用方法,也可以參考 ORACLE 聯(lián)機(jī)幫助。

1.設(shè)置表空間為只讀(假定表空間名字為APP_Data 和 APP_Index)

SQL > alter tablespace app_data read only;

SQL > alter tablespace app_index read only;

2.發(fā)出 EXP 命令

SQL> host exp userid=”””sys/password as sysdba”””transport_tablespace=y

tablespaces=(app_data, app_index)

以上需要注意的是

·為了在 SQL 中執(zhí)行 EXP,USERID 必須用三個(gè)引號(hào),在UNIX 中也必須注意

避免“/”的使用

·在 816 和以后,必須使用sysdba 才能操作

·這個(gè)命令在 SQL中必須放置在一行(這里是因?yàn)轱@示問(wèn)題放在了兩行)

3.拷貝.dbf 數(shù)據(jù)文件(以及.dmp 文件)到另一個(gè)地點(diǎn),即目標(biāo)數(shù)據(jù)庫(kù)

可以是 cp(unix)或copy(windows)或通過(guò) ftp 傳輸文件(一定要在 bin 方式)

4.把本地的表空間設(shè)置為讀寫(xiě)

$ alter tablespace app_data read write;

$ alter tablespace app_index read write;

5.在目標(biāo)數(shù)據(jù)庫(kù)附加該數(shù)據(jù)文件 (直接指定數(shù)據(jù)文件名)

(表空間不能存在,必須建立相應(yīng)用戶名或者用 fromuser/touser)

$ imp file=expdat.dmp userid=”””sys/password as sysdba”””

transport_tablespace=ydatafiles=(“c:\app_data.dbf,c:\app_index.dbf”)

tablespaces=app_data,app_index tts_owners=hr,oe

6.設(shè)置目標(biāo)數(shù)據(jù)庫(kù)表空間為讀寫(xiě)

$ alter tablespace app_data read write;

$ alter tablespace app_index read write;

1.3 優(yōu)化

1. 加快exp速度

加大large_pool_size,可以提高 exp 的速度

采用直接路徑的方式(direct=y),數(shù)據(jù)不需要經(jīng)過(guò)內(nèi)存進(jìn)行整合和檢查.

設(shè)置較大的 buffer,如果導(dǎo)出大對(duì)象,小buffer 會(huì)失敗。

export 文件不在 ORACLE 使用的驅(qū)動(dòng)器上

不要 export 到 NFS 文件系統(tǒng)

UNIX 環(huán)境:用管道模式直接導(dǎo)入導(dǎo)出來(lái)提高 imp/exp 的性能

2. 加快imp速度

建立一個(gè)indexfile,在數(shù)據(jù) import 完成后在建立索引

將 import 文件放在不同的驅(qū)動(dòng)器上

增加DB_BLOCK_BUFFERS

增加 LOG_BUFFER

用非歸檔方式運(yùn)行ORACLE:ALTER DATABASE NOARCHIVELOG;

建立大的表空間和回滾段,OFFLINE其他回滾段,回滾段的大小為最大表的 1/2

使用 COMMIT=N

使用 ANALYZE=N

單用戶模式導(dǎo)入

UNIX 環(huán)境:用管道模式直接導(dǎo)入導(dǎo)出來(lái)提高 imp/exp 的性能

3. 通過(guò)unix/Linux PIPE管道加快exp/imp速度

通過(guò)管道導(dǎo)出數(shù)據(jù):

1.通過(guò) mknod -p 建立管道

$ mknod /home/exppipe p // 在目錄/home下建立一個(gè)管道exppipe注意參數(shù)p

2.通過(guò) exp 和 gzip 導(dǎo)出數(shù)據(jù)到建立的管道并壓縮

$ exp test/test file=/home/exppipe &gzip < /home/exppipe > exp.dmp.gz

$ exp test/test tables=bitmap file=/home/newsys/test.pipe&

gzip < /home/newsys/test.pipe >bitmap.dmp.gz

3.導(dǎo)出成功完成之后刪除建立的管道

$ rm -rf /home/exppipe

導(dǎo)出腳本:

###UNIX 下 ORACLE 數(shù)據(jù)庫(kù)通過(guò) PIPE 管道進(jìn)行備份

###### using "export" and"tar" command to bakup oracle datebase #######

trap "" 1 #nohup

LOGFILE=/opt/bakup/log/bakup_ora.log

export LOGFILE

DUMPDIR=/archlog_node1

export DUMPDIR

exec >$LOGFILE 2>&1

echo

echo ' Begin at ' `date`

echo

# clear old result file

cd $DUMPDIR

if [ -f exp.dmp.Z ]

then

echo "clear old result file"

rm exp.dmp.Z

fi

# make pipe

mkfifo exp.pipe

chmod a+rw exp.pipe

# gain the dmp.Z file

compress < exp.pipe > exp.dmp.Z &

su -u oracle -c "exp userid=ll/llfile=$DUMPDIR/exp.pipe full=y buffer=20000000"

echo

echo ' exp end at '`date`

echo

# rm pipe

rm exp.pipe

# tar the dmp.Z file to tape

mt -f /dev/rmt/0 rew

tar cvf /dev/rmt/0 exp.dmp.Z

echo

echo ' tar end at '`date`

echo

通過(guò)管道導(dǎo)入生成的文件:

1.通過(guò) mknod -p 建立管道

$ mknod /home/exppipe p

2.導(dǎo)入生成的壓縮文件

$ imp test/test file=/home/exppipefromuser=test touser=macro &

gunzip < exp.dmp.gz > /home/exppipe

3.刪除管道

$ rm –fr /home/exppipe

4. 全庫(kù)導(dǎo)入的一般步驟

注意:在導(dǎo)出時(shí),需要通過(guò)toad或其他工具提取源數(shù)據(jù)庫(kù)創(chuàng)建主鍵和索引的腳本

1. 先全庫(kù)加 rows=n 把結(jié)構(gòu)導(dǎo)進(jìn)去

$ imp system/manager file=exp.dmp log=imp.logfull=y rows=n indexes=n

2. 使業(yè)務(wù)用戶的觸發(fā)器失效/刪除主鍵和唯一索引

spool drop_pk_u.sql

select 'alter table '||table_name||' dropconstraint '||constraint_name||';'

from user_constraints

where constraint_type in ('P','U');

/

spool off

spool disable_trigger.sql

select 'alter trigger '||trigger_name||'disable;'

from user_triggers;

/

spool off

@drop_pk_u.sql

@disable_trigger.sql

3. 以 ignore=y全庫(kù)導(dǎo)入

$ imp system/manager file=exp.dmplog=imp.log full=y ignore=y

4. 通過(guò)toad或其他工具提取源數(shù)據(jù)庫(kù)創(chuàng)建主鍵和索引的腳本,在目標(biāo)數(shù)據(jù)庫(kù)中創(chuàng)建主鍵

和索引。使觸發(fā)器生效。

1.4 常見(jiàn)問(wèn)題

1. 字符集問(wèn)題

ORACLE 多國(guó)語(yǔ)言設(shè)置是為了支持世界范圍的語(yǔ)言與字符集,一般對(duì)語(yǔ)言提示,

貨幣形式,排序方式和 CHAR,VARCHAR2,CLOB,LONG 字段的數(shù)據(jù)的顯示等有效。

ORACLE 的多國(guó)語(yǔ)言設(shè)置最主要的兩個(gè)特性就是國(guó)家語(yǔ)言設(shè)置與字符集設(shè)置,國(guó)家語(yǔ)

言設(shè)置決定了界面或提示使用的語(yǔ)言種類,字符集決定了數(shù)據(jù)庫(kù)保存與字符集有關(guān)數(shù)據(jù)

(如文本)時(shí)候的編碼規(guī)則。

ORACLE 字符集設(shè)定,分為數(shù)據(jù)庫(kù)字符集和客戶端字符集環(huán)境設(shè)置。在數(shù)據(jù)庫(kù)端,

字符集在創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候設(shè)定,并保存在數(shù)據(jù)庫(kù) props$表中。

在客戶端的字符集環(huán)境比較簡(jiǎn)單,主要就是環(huán)境變量或注冊(cè)表項(xiàng) NLS_LANG,注

意 NLS_LANG 的優(yōu)先級(jí)別為:參數(shù)文件<注冊(cè)表<環(huán)境變量

字符集和服務(wù)器端字符集不一樣,而且字符集的轉(zhuǎn)換也不兼容,那么客戶端的數(shù)據(jù)顯示

與導(dǎo)出/導(dǎo)入的與字符集有關(guān)的數(shù)據(jù)將都是亂碼。

使用一點(diǎn)點(diǎn)技巧,就可以使導(dǎo)出/導(dǎo)入在不同的字符集的數(shù)據(jù)庫(kù)上轉(zhuǎn)換數(shù)據(jù)。這里

需要一個(gè) 2 進(jìn)制文件編輯工具即可,如 uedit32。用編輯方式打開(kāi)導(dǎo)出的 dmp 文件,獲

取 2、3 字節(jié)的內(nèi)容,如 00 01,先把它轉(zhuǎn)換為 10 進(jìn)制數(shù),為 1,使用函數(shù)

NLS_CHARSET_NAME 即可獲得該字符集:

SQL> select nls_charset_name(1) fromdual;

NLS_CHARSET_NAME(1)

-------------------

US7ASCII

可以知道該 dmp 文件的字符集為 US7ASCII,如果需要把該 dmp 文件的字符集換

成 ZHS16GBK,則需要用 NLS_CHARSET_ID 獲取該字符集的編號(hào):

SQL> select nls_charset_id('zhs16gbk')from dual;

NLS_CHARSET_ID('ZHS16GBK')

--------------------------

852

把 852 換成 16 進(jìn)制數(shù),為 354,把 2、3 字節(jié)的 00 01 換成 03 54,即完成了把該

dmp 文件字符集從 us7ascii 到 zhs16gbk 的轉(zhuǎn)化,這樣,再把該dmp 文件導(dǎo)入到 zhs16gbk

字符集的數(shù)據(jù)庫(kù)就可以了。

2. 版本問(wèn)題

Exp/Imp 很多時(shí)候,可以跨版本使用,如在版本 7 與版本 8 之間導(dǎo)出導(dǎo)入數(shù)據(jù),但

這樣做必須選擇正確的版本,規(guī)則為:

總是使用 IMP 的版本匹配數(shù)據(jù)庫(kù)的版本,如果要導(dǎo)入到 816,則使用 816 的導(dǎo)入工

具。

總是使用 EXP 的版本匹配兩個(gè)數(shù)據(jù)庫(kù)中低的那個(gè)版本,如在 815 與 816 之間互導(dǎo),

則使用 815 的 EXP 工具。

imp 和 exp 版本不能往上兼容: imp可以導(dǎo)入低版本 exp 生成的文件, 不能導(dǎo)入高

版本 exp 生成的文件

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

IT忍者神龜之?dāng)?shù)據(jù)庫(kù)備份還原技術(shù)總結(jié)

IT忍者神龜之?dāng)?shù)據(jù)庫(kù)備份還原技術(shù)總結(jié):1. exp/imp (導(dǎo)出與導(dǎo)入裝庫(kù)與卸庫(kù)) 1.1 基本命令 1. 獲取幫助 $ exp help=y $ imp help=y 2. 三種工作方式 (1)交互式方式 $ exp // 然后按提示輸入所需要的參數(shù) (2)命令行方式 $ exp user/pwd@dbname file=/oracle/t
推薦度:
標(biāo)簽: 恢復(fù) 還原 備份
  • 熱門(mén)焦點(diǎn)

最新推薦

猜你喜歡

熱門(mén)推薦

專題
Top