Oracle數(shù)據(jù)庫高級(jí)操作說明_百度文庫_第1頁
Oracle數(shù)據(jù)庫高級(jí)操作說明_百度文庫_第2頁
Oracle數(shù)據(jù)庫高級(jí)操作說明_百度文庫_第3頁
Oracle數(shù)據(jù)庫高級(jí)操作說明_百度文庫_第4頁
Oracle數(shù)據(jù)庫高級(jí)操作說明_百度文庫_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Oracle數(shù)據(jù)庫高級(jí)操作說明Linux寶庫 收集整理 作者:linux寶庫 時(shí)間:2007-02-09 收藏本站一、exp/imp命令詳解1 EXP 用戶/密碼SID full=y file=路徑/文件名.DMP;2 IMP 用戶/密碼SID full=y file=路徑/文件名.DMP;(一exp/imp兩個(gè)命令可以說是oracle中最常用的命令了.ORACLE數(shù)據(jù)庫有兩類備份方法。第一類為物理備份,該方法實(shí)現(xiàn)數(shù)據(jù)庫的完整恢復(fù),但 數(shù)據(jù)庫必須運(yùn)行在歸擋模式下(業(yè)務(wù)數(shù)據(jù)庫在非歸擋模式下運(yùn)行,且需要極大的外部 存儲(chǔ)設(shè)備,例如磁帶庫;第二類備份方式為邏輯備份,業(yè)務(wù)數(shù)據(jù)庫采用此種方式,此方 法不需

2、要數(shù)據(jù)庫運(yùn)行在歸擋模式下,不但備份簡(jiǎn)單,而且可以不需要外部存儲(chǔ)設(shè)備。數(shù)據(jù)庫邏輯備份方法ORACLE數(shù)據(jù)庫的邏輯備份分為三種模式:表備份、用戶備份和完全備份。表模式備份某個(gè)用戶模式下指定的對(duì)象(表。業(yè)務(wù)數(shù)據(jù)庫通常采用這種備份方式。若備份到本地文件,使用如下命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=exp_icdmain_csd_yyyymmdd.logtables=moninformation,ic

3、dmain.serviceinfo,icdmain.dealinfo若直接備份到磁帶設(shè)備,使用如下命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=/dev/rmt0log=exp_icdmain_csd_yyyymmdd.logtables=moninformation,icdmain.serviceinfo,icdmain.dealinfo注:在磁盤空間允許的情況下,應(yīng)先備份到本地服務(wù)器,然后再拷貝到磁帶。出于速度 方面的考慮,盡量不要直接備份到磁帶設(shè)備。用戶模式

4、備份某個(gè)用戶模式下的所有對(duì)象。業(yè)務(wù)數(shù)據(jù)庫通常采用這種備份方式。若備份到本地文件,使用如下命令:exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=exp_icdmain_yyyymmdd.dmplog=exp_icdmain_yyyymmdd.log若直接備份到磁帶設(shè)備,使用如下命令:exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536feedback=1000

5、00 volsize=0file=/dev/rmt0log=exp_icdmain_yyyymmdd.log注:如果磁盤有空間,建議備份到磁盤,然后再拷貝到磁帶。如果數(shù)據(jù)庫數(shù)據(jù)量較小, 可采用這種辦法備份。完全模式備份完整的數(shù)據(jù)庫。業(yè)務(wù)數(shù)據(jù)庫不采用這種備份方式。備份命令為:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0 full=yfile=exp_fulldb_yyyymmdd.dmp(磁帶設(shè)備則為/dev/rmt0log=exp_fulldb_yyyymmdd.log對(duì)于數(shù)據(jù)

6、庫備份,建議采用增量備份,即只備份上一次備份以來更改的數(shù)據(jù)。增量備份 命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0 full=y inctype=incrementalfile=exp_fulldb_yyyymmdd.dmp(磁帶設(shè)備則為/dev/rmt0log=exp_fulldb_yyyymmdd.log注:關(guān)于增量備份必須滿足下列條件:1.只對(duì)完整數(shù)據(jù)庫備份有效,且第一次需要full=y參數(shù),以后需要inctype=incremental參數(shù)。2. 用戶必須有EXP

7、_FULL_DATABASE的系統(tǒng)角色。3. 話務(wù)量較小時(shí)方可采用數(shù)據(jù)庫備份。4. 如果磁盤有空間,建議備份到磁盤,然后再備份到磁帶。業(yè)務(wù)數(shù)據(jù)庫備份方法及周期用EXP進(jìn)行備份前,先在SYS用戶下運(yùn)行CATEXP.SQL文件(如果以前已運(yùn)行該文件,則不要執(zhí)行這個(gè)腳本。沒有特殊說明,不允許在客戶端執(zhí)行備份命令。備份命令參照表模式下的備份命令。從磁盤文件備份到磁帶如果首先備份到本地磁盤文件,則需要轉(zhuǎn)儲(chǔ)到磁帶設(shè)備上。1. 若需查看主機(jī)上配置的磁帶設(shè)備,使用如下命令:lsdev -Cc tape顯示的結(jié)果如下例所示:rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Dr

8、ivermt1 Defined 30-58-00-0,0 SCSI 4mm Tape Drive標(biāo)明Available的設(shè)備是可用的磁帶設(shè)備。2. 若需查看磁帶存儲(chǔ)的內(nèi)容,使用如下命令:tar -tvf /dev/rmt0顯示的結(jié)果如下例所示:-rw-r-r- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp如果顯示類似如下內(nèi)容,則表示該磁帶存儲(chǔ)的備份數(shù)據(jù)是從數(shù)據(jù)庫直接備份到磁帶上, 而非從本地磁盤轉(zhuǎn)儲(chǔ)到磁帶的備份文件,因此操作系統(tǒng)無法識(shí)別。tar: 0511-193 An error occurred while re

9、ading from the media.There is an input or output error.或tar: 0511-169 A directory checksum error on media; -267331077 not equal to25626.3. 對(duì)于新磁帶或無需保留現(xiàn)存數(shù)據(jù)的磁帶,使用如下命令:tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp注:A. 該命令將無條件覆蓋磁帶上的現(xiàn)存數(shù)據(jù)。B. 文件名不允許包含路徑信息,如:/backup/exp_icdmain_yyyymmdd.dmp。4. 對(duì)于需要保留現(xiàn)存數(shù)據(jù)的磁帶,使用

10、如下命令:tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp注:該命令將文件exp_icdmain_yyyymmdd.dmp追加到磁帶的末端,不會(huì)覆蓋現(xiàn)存的數(shù)據(jù) 。特別強(qiáng)調(diào):如果備份時(shí)是從數(shù)據(jù)庫直接備份到磁帶上,則不可再向該磁帶上追加復(fù)制任 何其他文件,否則該備份數(shù)據(jù)失效。5. 若需將轉(zhuǎn)儲(chǔ)到磁帶上的備份文件復(fù)制到本地硬盤,使用如下命令:A. 將磁帶上的全部文件復(fù)制到本地硬盤的當(dāng)前目錄tar -xvf /dev/rmt0B. 將磁帶上的指定文件復(fù)制到本地硬盤的當(dāng)前目錄tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp備份時(shí)間

11、安排由于備份時(shí)對(duì)系統(tǒng)I/O有較大影響,所以,建議在晚上11點(diǎn)以后進(jìn)行備份工作。業(yè)務(wù)數(shù)據(jù)庫Oracle版本的恢復(fù)恢復(fù)方案需根據(jù)備份方案確定。由于業(yè)務(wù)數(shù)據(jù)庫采用表備份和用戶備份相結(jié)合的方案, 所以業(yè)務(wù)數(shù)據(jù)庫的恢復(fù)需根據(jù)實(shí)際情況采用表恢復(fù)和用戶恢復(fù)相結(jié)合的方案?;謴?fù)方案數(shù)據(jù)庫的邏輯恢復(fù)分為表恢復(fù)、用戶恢復(fù)、完全恢復(fù)三種模式。表模式此方式將根據(jù)按照表模式備份的數(shù)據(jù)進(jìn)行恢復(fù)。A. 恢復(fù)備份數(shù)據(jù)的全部?jī)?nèi)容若從本地文件恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536

12、feedback=100000 ignore=n volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=imp_icdmain_csd_yyyymmdd.log若從磁帶設(shè)備恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0log=imp_icdmain_csd_yyyymmdd.logB. 恢復(fù)備份數(shù)據(jù)中的指定表若從本地

13、文件恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=imp_icdmain_csd_yyyymmdd.logtables=commoninformation,serviceinfo若從磁帶設(shè)備恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain row

14、s=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0file=/dev/rmt0log=imp_icdmain_csd_yyyymmdd.logtables=commoninformation,serviceinfo用戶模式此方式將根據(jù)按照用戶模式備份的數(shù)據(jù)進(jìn)行恢復(fù)。A. 恢復(fù)備份數(shù)據(jù)的全部?jī)?nèi)容若從本地文件恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedb

15、ack=100000 ignore=n volsize=0file=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.log若從磁帶設(shè)備恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0 log=imp_icdmain_yyyymmdd.logB. 恢復(fù)備份數(shù)據(jù)中的指定表若從本地文件恢復(fù),使用如下命令:imp

16、 icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.logtables=commoninformation,serviceinfo若從磁帶設(shè)備恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y

17、 buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0 log=imp_icdmain_yyyymmdd.logtables=commoninformation,serviceinfo完全模式如果備份方式為完全模式,采用下列恢復(fù)方法:若從本地文件恢復(fù),使用如下命令:imp system/manager rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 full=yfile=exp_icdmain_yyyymmdd.dmplog

18、=imp_icdmain_yyyymmdd.log若從磁帶設(shè)備恢復(fù),使用如下命令:imp system/manager rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=y volsize=0 full=yfile=/dev/rmt0log=imp_icdmain_yyyymmdd.log參數(shù)說明1. ignore參數(shù)Oracle在恢復(fù)數(shù)據(jù)的過程中,當(dāng)恢復(fù)某個(gè)表時(shí),該表已經(jīng)存在, 就要根據(jù)ignore參數(shù)的設(shè)置來決定如何操作。若ignore=y,Oracle不執(zhí)行CREATE TABLE語句,直接將數(shù)據(jù)插入到表中,如果插

19、入的記錄違背了約束條件,比如主鍵約束, 則出錯(cuò)的記錄不會(huì)插入,但合法的記錄會(huì)添加到表中。若ignore=n,Oracle不執(zhí)行CREATE TABLE語句,同時(shí)也不會(huì)將數(shù)據(jù)插入到表中,而是忽略該表的錯(cuò)誤,繼續(xù)恢復(fù)下一個(gè)表。2. indexes參數(shù)在恢復(fù)數(shù)據(jù)的過程中,若indexes=n,則表上的索引不會(huì)被恢復(fù) ,但是主鍵對(duì)應(yīng)的唯一索引將無條件恢復(fù),這是為了保證數(shù)據(jù)的完整性。字符集轉(zhuǎn)換對(duì)于單字節(jié)字符集(例如US7ASCII,恢復(fù)時(shí),數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換為該會(huì)話的字符集(NLS_LANG參數(shù);對(duì)于多字節(jié)字符集(例如ZHS16CGB231280,恢復(fù)時(shí),應(yīng)盡量使字符集相同(避免轉(zhuǎn)換,如果要轉(zhuǎn)換,目標(biāo)數(shù)據(jù)庫

20、的字符集應(yīng)是輸出數(shù)據(jù)庫字符集的超集?;謴?fù)方法業(yè)務(wù)數(shù)據(jù)庫采用表恢復(fù)方案。在用IMP進(jìn)行恢復(fù)前,先在SYS用戶下運(yùn)行CATEXP.SQL文件(如果以前已運(yùn)行該文件,則不要執(zhí)行這個(gè)腳本,然后執(zhí)行下列命令:IMP ICDMAIN/ICD FILE=文件名 LOG=LOG文件名 ROWS=YCOMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名注:要恢復(fù)的表名參照備份的表名。恢復(fù)是在原表基礎(chǔ)上累加數(shù)據(jù)。沒有特殊說明,不允許在客戶端執(zhí)行恢復(fù)命令將一個(gè)數(shù)據(jù)庫的某用戶的所有表導(dǎo)到另外數(shù)據(jù)庫的一個(gè)用戶下面的例子exp userid=system/manager owner=username1

21、file=expfile.dmpimp userid=system/manager fromuser=username1 touser=username2 ignore=yfile=expfile.dmp將一個(gè)數(shù)據(jù)庫的某用戶的所有表導(dǎo)到另外數(shù)據(jù)庫的一個(gè)用戶下面的例子exp userid=system/manager owner=username1 file=expfile.dmpimp userid=system/manager fromuser=username1 touser=username2 ignore=yfile=expfile.dmpORACLE數(shù)據(jù)庫有兩類備份方法。第一類為物理

22、備份,該方法實(shí)現(xiàn)數(shù)據(jù)庫的完整恢復(fù),但 數(shù)據(jù)庫必須運(yùn)行在歸擋模式下(業(yè)務(wù)數(shù)據(jù)庫在非歸擋模式下運(yùn)行,且需要極大的外部 存儲(chǔ)設(shè)備,例如磁帶庫;第二類備份方式為邏輯備份,業(yè)務(wù)數(shù)據(jù)庫采用此種方式,此方 法不需要數(shù)據(jù)庫運(yùn)行在歸擋模式下,不但備份簡(jiǎn)單,而且可以不需要外部存儲(chǔ)設(shè)備。數(shù)據(jù)庫邏輯備份方法ORACLE數(shù)據(jù)庫的邏輯備份分為三種模式:表備份、用戶備份和完全備份。表模式備份某個(gè)用戶模式下指定的對(duì)象(表。業(yè)務(wù)數(shù)據(jù)庫通常采用這種備份方式。若備份到本地文件,使用如下命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000

23、 volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=exp_icdmain_csd_yyyymmdd.logtables=moninformation,icdmain.serviceinfo,icdmain.dealinfo若直接備份到磁帶設(shè)備,使用如下命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0file=/dev/rmt0log=exp_icdmain_csd_yyyymmdd.logtables=moninformation,

24、icdmain.serviceinfo,icdmain.dealinfo注:在磁盤空間允許的情況下,應(yīng)先備份到本地服務(wù)器,然后再拷貝到磁帶。出于速度 方面的考慮,盡量不要直接備份到磁帶設(shè)備。用戶模式備份某個(gè)用戶模式下的所有對(duì)象。業(yè)務(wù)數(shù)據(jù)庫通常采用這種備份方式。若備份到本地文件,使用如下命令:exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0file=exp_icdmain_yyyymmdd.dmplog=exp_icdmain_yyyymmdd.log若

25、直接備份到磁帶設(shè)備,使用如下命令:exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0file=/dev/rmt0log=exp_icdmain_yyyymmdd.log注:如果磁盤有空間,建議備份到磁盤,然后再拷貝到磁帶。如果數(shù)據(jù)庫數(shù)據(jù)量較小, 可采用這種辦法備份。完全模式備份完整的數(shù)據(jù)庫。業(yè)務(wù)數(shù)據(jù)庫不采用這種備份方式。備份命令為:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedba

26、ck=100000 volsize=0 full=yfile=exp_fulldb_yyyymmdd.dmp(磁帶設(shè)備則為/dev/rmt0log=exp_fulldb_yyyymmdd.log對(duì)于數(shù)據(jù)庫備份,建議采用增量備份,即只備份上一次備份以來更改的數(shù)據(jù)。增量備份 命令:exp icdmain/icd rows=y indexes=n compress=n buffer=65536feedback=100000 volsize=0 full=y inctype=incrementalfile=exp_fulldb_yyyymmdd.dmp(磁帶設(shè)備則為/dev/rmt0log=exp_f

27、ulldb_yyyymmdd.log注:關(guān)于增量備份必須滿足下列條件:1.只對(duì)完整數(shù)據(jù)庫備份有效,且第一次需要full=y參數(shù),以后需要inctype=increment al參數(shù)。2. 用戶必須有EXP_FULL_DATABASE的系統(tǒng)角色。3. 話務(wù)量較小時(shí)方可采用數(shù)據(jù)庫備份。4. 如果磁盤有空間,建議備份到磁盤,然后再備份到磁帶。業(yè)務(wù)數(shù)據(jù)庫備份方法及周期用EXP進(jìn)行備份前,先在SYS用戶下運(yùn)行CATEXP.SQL文件(如果以前已運(yùn)行該文件,則不要執(zhí)行這個(gè)腳本。沒有特殊說明,不允許在客戶端執(zhí)行備份命令。備份命令參照表模式下的備份命令。從磁盤文件備份到磁帶如果首先備份到本地磁盤文件,則需要轉(zhuǎn)

28、儲(chǔ)到磁帶設(shè)備上。1. 若需查看主機(jī)上配置的磁帶設(shè)備,使用如下命令:lsdev -Cc tape顯示的結(jié)果如下例所示:rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drivermt1 Defined 30-58-00-0,0 SCSI 4mm Tape Drive標(biāo)明Available的設(shè)備是可用的磁帶設(shè)備。2. 若需查看磁帶存儲(chǔ)的內(nèi)容,使用如下命令:tar -tvf /dev/rmt0顯示的結(jié)果如下例所示:-rw-r-r- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp如果顯示類似

29、如下內(nèi)容,則表示該磁帶存儲(chǔ)的備份數(shù)據(jù)是從數(shù)據(jù)庫直接備份到磁帶上, 而非從本地磁盤轉(zhuǎn)儲(chǔ)到磁帶的備份文件,因此操作系統(tǒng)無法識(shí)別。tar: 0511-193 An error occurred while reading from the media.There is an input or output error.或tar: 0511-169 A directory checksum error on media; -267331077 not equal to 25626.3. 對(duì)于新磁帶或無需保留現(xiàn)存數(shù)據(jù)的磁帶,使用如下命令:tar -cvf /dev/rmt0 exp_icdmain_yy

30、yymmdd.dmp注:A. 該命令將無條件覆蓋磁帶上的現(xiàn)存數(shù)據(jù)。B. 文件名不允許包含路徑信息,如:/backup/exp_icdmain_yyyymmdd.dmp。4. 對(duì)于需要保留現(xiàn)存數(shù)據(jù)的磁帶,使用如下命令:tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp注:該命令將文件exp_icdmain_yyyymmdd.dmp追加到磁帶的末端,不會(huì)覆蓋現(xiàn)存的數(shù)據(jù) 。特別強(qiáng)調(diào):如果備份時(shí)是從數(shù)據(jù)庫直接備份到磁帶上,則不可再向該磁帶上追加復(fù)制任 何其他文件,否則該備份數(shù)據(jù)失效。5. 若需將轉(zhuǎn)儲(chǔ)到磁帶上的備份文件復(fù)制到本地硬盤,使用如下命令:A. 將磁帶上的全部

31、文件復(fù)制到本地硬盤的當(dāng)前目錄tar -xvf /dev/rmt0B. 將磁帶上的指定文件復(fù)制到本地硬盤的當(dāng)前目錄tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp備份時(shí)間安排由于備份時(shí)對(duì)系統(tǒng)I/O有較大影響,所以,建議在晚上11點(diǎn)以后進(jìn)行備份工作。業(yè)務(wù)數(shù)據(jù)庫Oracle版本的恢復(fù)恢復(fù)方案需根據(jù)備份方案確定。由于業(yè)務(wù)數(shù)據(jù)庫采用表備份和用戶備份相結(jié)合的方案, 所以業(yè)務(wù)數(shù)據(jù)庫的恢復(fù)需根據(jù)實(shí)際情況采用表恢復(fù)和用戶恢復(fù)相結(jié)合的方案?;謴?fù)方案數(shù)據(jù)庫的邏輯恢復(fù)分為表恢復(fù)、用戶恢復(fù)、完全恢復(fù)三種模式。表模式此方式將根據(jù)按照表模式備份的數(shù)據(jù)進(jìn)行恢復(fù)。A. 恢復(fù)備份數(shù)據(jù)的全部?jī)?nèi)

32、容若從本地文件恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=imp_icdmain_csd_yyyymmdd.log若從磁帶設(shè)備恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=ncommit=y buffer=65

33、536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0log=imp_icdmain_csd_yyyymmdd.logB. 恢復(fù)備份數(shù)據(jù)中的指定表若從本地文件恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_csd_yyyymmdd.dmplog=imp_icdmain_csd_yyyymmdd.lo

34、gtables=commoninformation,serviceinfo若從磁帶設(shè)備恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0file=/dev/rmt0log=imp_icdmain_csd_yyyymmdd.logtables=commoninformation,serviceinfo用戶模式此方式將根據(jù)按照用戶模式備份的數(shù)據(jù)進(jìn)行恢復(fù)。A. 恢復(fù)備份數(shù)據(jù)的全部?jī)?nèi)容若從本地

35、文件恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.log若從磁帶設(shè)備恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedbac

36、k=100000 ignore=n volsize=0 file=/dev/rmt0 log=imp_icdmain_yyyymmdd.logB. 恢復(fù)備份數(shù)據(jù)中的指定表若從本地文件恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0file=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.logtables=commoninformat

37、ion,serviceinfo若從磁帶設(shè)備恢復(fù),使用如下命令:imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0 log=imp_icdmain_yyyymmdd.logtables=commoninformation,serviceinfo完全模式如果備份方式為完全模式,采用下列恢復(fù)方法:若從本地文件恢復(fù),使用如下命令:imp system/manager rows=y i

38、ndexes=n commit=y buffer=65536feedback=100000 ignore=y volsize=0 full=yfile=exp_icdmain_yyyymmdd.dmplog=imp_icdmain_yyyymmdd.log若從磁帶設(shè)備恢復(fù),使用如下命令:imp system/manager rows=y indexes=n commit=y buffer=65536feedback=100000 ignore=y volsize=0 full=yfile=/dev/rmt0log=imp_icdmain_yyyymmdd.log參數(shù)說明1. ignore參數(shù)O

39、racle在恢復(fù)數(shù)據(jù)的過程中,當(dāng)恢復(fù)某個(gè)表時(shí),該表已經(jīng)存在,就要根據(jù)ignore參數(shù)的設(shè)置來決定如何操作。若ignore=y,Oracle不執(zhí)行CREATE TABLE語句,直接將數(shù)據(jù)插入到表中,如果插入的記錄違背了約束條件,比如主鍵約束,則出錯(cuò)的記錄不會(huì)插入,但合法的記錄會(huì)添加到表中。若ignore=n,Oracle不執(zhí)行CREATE TABLE語句,同時(shí)也不會(huì)將數(shù)據(jù)插入到表中,而是忽略該表的錯(cuò)誤,繼續(xù)恢復(fù)下一個(gè)表。2. indexes參數(shù)在恢復(fù)數(shù)據(jù)的過程中,若indexes=n,則表上的索引不會(huì)被恢復(fù),但是主鍵對(duì)應(yīng)的唯一索引將無條件恢復(fù),這是為了保證數(shù)據(jù)的完整性。字符集轉(zhuǎn)換對(duì)于單字節(jié)字符集

40、(例如US7ASCII,恢復(fù)時(shí),數(shù)據(jù)庫自動(dòng)轉(zhuǎn)換為該會(huì)話的字符集(NLS_LANG參數(shù);對(duì)于多字節(jié)字符集(例如ZHS16CGB231280,恢復(fù)時(shí),應(yīng)盡量使字符集相同(避免轉(zhuǎn)換,如果要轉(zhuǎn)換,目標(biāo)數(shù)據(jù)庫的字符集應(yīng)是輸出數(shù)據(jù)庫字符集的超集。恢復(fù)方法業(yè)務(wù)數(shù)據(jù)庫采用表恢復(fù)方案。在用IMP進(jìn)行恢復(fù)前,先在SYS用戶下運(yùn)行CATEXP.SQL文件(如果以前已運(yùn)行該文件,則不要執(zhí)行這個(gè)腳本,然后執(zhí)行下列命令:IMP ICDMAIN/ICD FILE=文件名 LOG=LOG文件名 ROWS=YCOMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名注:要恢復(fù)的表名參照備份的表名。恢復(fù)是在原表基礎(chǔ)

41、上累加數(shù)據(jù)。沒有特殊說明,不允許在客戶端執(zhí)行恢復(fù)命令二、 SQLPlus使用技巧點(diǎn)滴 常用命令及一些你可能不知道的常用命令列表:假設(shè)當(dāng)前執(zhí)行命令為:SQL>select * from tab;(append 添加文本到緩沖區(qū)當(dāng)前行尾SQL>a order by tname結(jié)果:SQL>select * from tab order by tname;(注:a后面跟2個(gè)空格(change/old/new 在當(dāng)前行用新的文本替換舊的文本SQL>c/*/tname結(jié)果:SQL>select tname from tab;(change/text 從當(dāng)前行刪除文本SQL&

42、gt;c/tab結(jié)果:SQL>select tname from ;del 刪除當(dāng)前行del n 刪除第n行(input 文本 在當(dāng)前行之后添加一行(list 顯示緩沖區(qū)中所有行(list n 顯示緩沖區(qū)中第 n 行(list m n 顯示緩沖區(qū)中 m 到 n 行run 執(zhí)行當(dāng)前緩沖區(qū)的命令/ 執(zhí)行當(dāng)前緩沖區(qū)的命令r 執(zhí)行當(dāng)前緩沖區(qū)的命令文件名 運(yùn)行調(diào)入內(nèi)存的sql文件,如:SQL> edit s<回車>如果當(dāng)前目錄下不存在s.sql文件,則系統(tǒng)自動(dòng)生成s.sql文件,在其中輸入“select * from tab;”,存盤退出。SQL> s<回車>系

43、統(tǒng)會(huì)自動(dòng)查詢當(dāng)前用戶下的所有表、視圖、同義詞。save 文件名 將緩沖區(qū)的命令以文件方式存盤,缺省文件擴(kuò)展名為.sqlget 文件名 調(diào)入存盤的sql文件start 文件名 運(yùn)行調(diào)入內(nèi)存的sql文件spool 文件名 把這之后的各種操作及執(zhí)行結(jié)果“假脫機(jī)”即存盤到磁盤文件上,默認(rèn)文件擴(kuò)展名為.lstspool 顯示當(dāng)前的“假脫機(jī)”狀態(tài)spool off 停止輸出例:SQL> spool aSQL> spool正假脫機(jī)到 A.LSTSQL> spool offSQL> spool當(dāng)前無假脫機(jī)exit 退出SQL*PLUSdesc 表名 顯示表的結(jié)構(gòu)show user 顯示

44、當(dāng)前連接用戶show error 顯示錯(cuò)誤show all 顯示所有68個(gè)系統(tǒng)變量值edit 打開默認(rèn)編輯器,Windows系統(tǒng)中默認(rèn)是notepad.exe,把緩沖區(qū)中最后一條SQL語句調(diào)入afiedt.buf文件中進(jìn)行編輯edit 文件名 把當(dāng)前目錄中指定的.sql文件調(diào)入編輯器進(jìn)行編輯clear screen 清空當(dāng)前屏幕顯示SQL*Plus系統(tǒng)環(huán)境變量設(shè)置及修改:SQL> show all -查看所有系統(tǒng)變量值SQL> show user -顯示當(dāng)前連接用戶SQL> show error -顯示錯(cuò)誤SQL> set heading off -禁止輸出列標(biāo)題,默認(rèn)

45、值為ONSQL> set feedback off -禁止顯示最后一行的計(jì)數(shù)反饋信息,默認(rèn)值為"對(duì)6個(gè)或更多的記錄,回送ON"SQL> set timing on -默認(rèn)為OFF,設(shè)置查詢耗時(shí),可用來估計(jì)SQL語句的執(zhí)行時(shí)間,測(cè)試性能SQL> set sqlprompt "SQL> " -設(shè)置默認(rèn)提示符,默認(rèn)值就是"SQL> "SQL> set linesize 1000 -設(shè)置屏幕顯示行寬,默認(rèn)100SQL> set autocommit ON -設(shè)置是否自動(dòng)提交,默認(rèn)為OFFSQL>

46、 set pause on -默認(rèn)為OFF,設(shè)置暫停,會(huì)使屏幕顯示停止,等待按下ENTER鍵,再顯示下一頁SQL> set arraysize 1 -默認(rèn)為15SQL> set long 1000 -默認(rèn)為80說明:long值默認(rèn)為80,設(shè)置1000是為了顯示更多的內(nèi)容,因?yàn)楹芏鄶?shù)據(jù)字典視圖中用到了long 數(shù)據(jù)類型如:SQL> desc user_viewsSQL> desc user_viewsName Null? Type- - - VIEW_NAME NOT NULL VARCHAR2(30TEXT_LENGTH NUMBERTEXT LONGTYPE_TEXT

47、_LENGTH NUMBERTYPE_TEXT VARCHAR2(4000OID_TEXT_LENGTH NUMBEROID_TEXT VARCHAR2(4000VIEW_TYPE_OWNER VARCHAR2(30VIEW_TYPE VARCHAR2(30SUPERVIEW_NAME VARCHAR2(30SQL> define a = '''20051129 11:30:01''' -定義局部變量,如果想用一個(gè)類似在各種顯示中所包括的回車那樣的常量,-可以用define命令來設(shè)置SQL> define a = ''

48、'20051129 11:30:01'''SQL> select &a from dual;old 1: select &a from dualnew 1: select '20051129 11:30:01' from dual'2005112911:30:01-20051129 11:30:01一些你可能有用的scripts:例如:SQL> set heading off -禁止輸出列標(biāo)題SQL> set feedback off -禁止顯示最后一行的計(jì)數(shù)反饋信息列出當(dāng)前用戶下所有同義詞的定義,可用來

49、測(cè)試同義詞的真實(shí)存在性select 'desc '|tname from tab where tabtype='SYNONYM'查詢當(dāng)前用戶下所有表的記錄數(shù)select 'select '''|tname|''',count(* from '|tname|'' from tab where tabtype='TABLE'把所有符合條件的表的select權(quán)限授予為publicselect 'grant select on '|table_name|

50、9; to public;' from user_tables where <條件>刪除用戶下各種對(duì)象select 'drop '|tabtype|' '|tname from tab;刪除符合條件用戶select 'drop user '|username|' cascade;' from all_users where user_id>25;快速編譯所有視圖-當(dāng)在把數(shù)據(jù)庫倒入到新的服務(wù)器上后(數(shù)據(jù)庫重建,需要將視圖重新編譯一遍, -因?yàn)樵摫砜臻g視圖到其它表空間的表的連接會(huì)出現(xiàn)問題,可以利用PL/SQL

51、的語言特性,快速編譯。SQL> SPOOL ON.SQLSQL> SELECT'ALTER VIEW '|TNAME|' COMPILE;' FROM TAB;SQL> SPOOL OFF然后執(zhí)行ON.SQL即可。SQL> ON.SQL授權(quán)和創(chuàng)建同義詞也可以快速進(jìn)行SQL> SELECT 'GRANT SELECT ON '|TNAME|' TO 用戶名;' FROM TAB;SQL> SELECT 'CREATE SYNONYM '|TNAME|' FOR 用戶名.&#

52、39;|TNAME|'' FROM TAB;三、 Oracle 游標(biāo)使用大全我們將討論各種用于訪問ORACLE數(shù)據(jù)庫的DDL和TCL語句。(1查詢SELECT語句用于從數(shù)據(jù)庫中查詢數(shù)據(jù),當(dāng)在PL/SQL中使用SELECT語句時(shí),要與INTO子句一起使用,查詢的返回值被賦予INTO子句中的變量,變量的聲明是在DELCARE中。SELECT INTO 語法如下:SELECT DISTICT|ALL*|column,column,.INTO (variable,variable,. |recordFROM table|(sub-queryaliasWHERE.PL/SQL中SELEC

53、T語句只返回一行數(shù)據(jù)。如果超過一行數(shù)據(jù),那么就要使用顯式游標(biāo)(對(duì)游標(biāo)的討論我們將在后面進(jìn)行,INTO子句中要有與SELECT子句中相同列數(shù)量的變量。INTO子句中也可以是記錄變量。(2%TYPE屬性在PL/SQL中可以將變量和常量聲明為內(nèi)建或用戶定義的數(shù)據(jù)類型,以引用一個(gè)列名,同時(shí)繼承他的數(shù)據(jù)類型和大小。這種動(dòng)態(tài)賦值方法是非常有用的,比如變量引用的列的數(shù)據(jù)類型和大小改變了,如果使用了%TYPE,那么用戶就不必修改代碼,否則就必須修改代碼。例:v_salary EMP.SALARY%TYPE;不但列名可以使用%TYPE,而且變量、游標(biāo)、記錄,或聲明的常量都可以使用%TYPE。這對(duì)于定義相同數(shù)據(jù)類

54、型的變量非常有用。DELCAREV_A NUMBER(5:=10;V_B V_A%TYPE:=15;V_C V_A%TYPE;BEGINDBMS_OUTPUT.PUT_LINE('V_A='|V_A|'V_B='|V_B|'V_C='|V_C;ENDSQL>/V_A=10 V_B=15 V_C=PL/SQL procedure successfully completed.SQL>其他DML語句其它操作數(shù)據(jù)的DML語句是:INSERT、UPDATE、DELETE和LOCK TABLE,這些語句在PL/SQL 中的語法與在 SQL中的語

55、法相同。我們?cè)谇懊嬉呀?jīng)討論過DML語句的使用這里就不再重復(fù)了。在DML語句中可以使用任何在DECLARE部分聲明的變量,如果是嵌套塊,那么要注意變量的作用范圍。例:CREATE OR REPLACE PROCEDURE FIRE_EMPLOYEE (pempno in numberASv_ename EMP.ENAME%TYPE;BEGINSELECT ename INTO v_enameFROM empWHERE empno=p_empno;INSERT INTO FORMER_EMP(EMPNO,ENAMEVALUES (p_empno,v_ename;DELETE FROM empWHE

56、RE empno=p_empno;UPDATE former_empSET date_deleted=SYSDATEWHERE empno=p_empno;EXCEPTIONWHEN NO_DATA_FOUND THENDBMS_OUTPUT.PUT_LINE('Employee Number Not Found!'ENDDML語句的結(jié)果當(dāng)執(zhí)行一條DML語句后,DML語句的結(jié)果保存在四個(gè)游標(biāo)屬性中,這些屬性用于控制程序流程或者了解程序的狀態(tài)。當(dāng)運(yùn)行DML語句時(shí), PL/SQL打開一個(gè)內(nèi)建游標(biāo)并處理結(jié)果,游標(biāo)是維護(hù)查詢結(jié)果的內(nèi)存中的一個(gè)區(qū)域,游標(biāo)在運(yùn)行DML語句時(shí)打開,完成后關(guān)閉

57、。隱式游標(biāo)只使用SQL% FOUND,SQL%NOTFOUND,SQL%ROWCOUNT三個(gè)屬性.SQL%FOUND,SQL%NOTFOUND是布爾值,SQL% ROWCOUNT是整數(shù)值。(3 SQL%FOUND和SQL%NOTFOUND在執(zhí)行任何DML語句前SQL%FOUND和SQL%NOTFOUND的值都是NULL,在執(zhí)行DML語句后, SQL%FOUND的屬性值將是:. TRUE :INSERT. TRUE ELETE和UPDATE,至少有一行被DELETE或UPDATE. TRUE :SELECT INTO至少返回一行當(dāng)SQL%FOUND為TRUE時(shí),SQL%NOTFOUND為FALSE。(4 SQL%ROWCOUNT在執(zhí)行任何DML語句之前,SQL%ROWCOUNT的值都是NULL,對(duì)于SELECT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論