不同的用戶權(quán)限是不一樣的。你建的這些賬戶屬于哪個(gè)group?要和oracle同組。而且從錯(cuò)誤上看,一些參數(shù)配置也可能有錯(cuò)誤。看看和oracle賬戶對(duì)比,有哪些需要修改。
在涇縣等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作按需定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),營(yíng)銷(xiāo)型網(wǎng)站,成都外貿(mào)網(wǎng)站建設(shè),涇縣網(wǎng)站建設(shè)費(fèi)用合理。
在Linux系統(tǒng)中,expect是一個(gè)自動(dòng)化交互套件,也是一個(gè)用來(lái)處理交互的命令;利用expect,我們可以將交互過(guò)程寫(xiě)在一個(gè)腳本上,讓其自動(dòng)化完成,從而幫助運(yùn)維人員提高工作效率、節(jié)約時(shí)間。那么Linux系統(tǒng)中expect該如何使用?我們來(lái)看看詳細(xì)的內(nèi)容介紹。
Linux系統(tǒng)中expect該如何使用?
expect是一個(gè)自動(dòng)化交互套件,主要應(yīng)用于執(zhí)行命令和程序時(shí),系統(tǒng)以交互形式要求輸入指定字符串,實(shí)現(xiàn)交互通信。
expect自動(dòng)交互流程:
spawn啟動(dòng)指定進(jìn)程--expect獲取指定關(guān)鍵字--send向指定程序發(fā)送指定字符--執(zhí)行完成退出。
注意:該腳本能夠執(zhí)行的前提條件是安裝了expect
yum install -y expect
expect常用命令總結(jié):
spawn 交互程序開(kāi)始后面跟命令或者指定程序;
expect 獲取匹配信息匹配成功則執(zhí)行expect后面的程序動(dòng)作;
send exp_send 用于發(fā)送指定的字符串信息;
exp_continue 在expect中多次匹配就需要用到;
exit 退出expect腳本;
eof expect 執(zhí)行結(jié)束 退出;
set 定義變量;
puts 輸出變量;
set timeout 設(shè)置超時(shí)時(shí)間。
oracle安裝不全,這個(gè)命令在:/opt/oracle/product/10.2.0/db_1/bin目錄下,確認(rèn)一下exp文件是否存在。
概述
簡(jiǎn)單地說(shuō),Linux是一套免費(fèi)使用和自由傳播的類(lèi)Unix操作系統(tǒng),它主要用于基于Intel x86系列CPU的計(jì)算機(jī)上。這個(gè)系統(tǒng)是由世界各地的成千上萬(wàn)的程序員設(shè)計(jì)和實(shí)現(xiàn)的。其目的是建立不受任何商品化軟件的版權(quán)制約的、全世界都能自由使用的 Unix兼容產(chǎn)品。
Linux的出現(xiàn),最早開(kāi)始于一位名叫Linus Torvalds的計(jì)算機(jī)業(yè)余愛(ài)好者,當(dāng)時(shí)他是芬蘭赫爾辛基大學(xué)的學(xué)生。他的目的是想設(shè)計(jì)一個(gè)代替Minix(是由一位名叫Andrew Tannebaum的計(jì)算機(jī)教授編寫(xiě)的一個(gè)操作系統(tǒng)示教程序)的操作系統(tǒng),這個(gè)操作系統(tǒng)可用于386、486或奔騰處理器的個(gè)人計(jì)算機(jī)上,并且具有 Unix操作系統(tǒng)的全部功能,因而開(kāi)始了Linux雛形的設(shè)計(jì)。
絕大多數(shù)基于Linux內(nèi)核的的操作系統(tǒng)使用了大量的GNU軟件,包括了shell程序、工具、程序庫(kù)、編譯器及工具,還有許多其他程序,例如Emacs。正因?yàn)槿绱耍珿NU計(jì)劃的開(kāi)創(chuàng)者理查德·馬修·斯托曼博士提議將Linux操作系統(tǒng)改名為GNU/Linux。但有些人只把操作系統(tǒng)叫做"Linux"。
Linux的基本思想有兩點(diǎn):第一,一切都是文件;第二,每個(gè)軟件都有確定的用途,同時(shí)它們都盡可能被編寫(xiě)得更好。其中第一條詳細(xì)來(lái)講就是系統(tǒng)中的所有都?xì)w結(jié)為一個(gè)文件,包括命令、硬件和軟件設(shè)備、操作系統(tǒng)、進(jìn)程等等對(duì)于操作系統(tǒng)內(nèi)核而言,都被視為擁有各自特性或類(lèi)型的文件。至于說(shuō)Linux是基于Unix的,很大程度上也是因?yàn)檫@兩者的基本思想十分相近。
用exp命令,具體用法:
1. 獲取幫助
exp help=y
2. 導(dǎo)出一個(gè)完整數(shù)據(jù)庫(kù)
exp system/manager file=bible_db log=dible_db full=y
3. 導(dǎo)出數(shù)據(jù)庫(kù)定義而不導(dǎo)出數(shù)據(jù)
exp system/manager file=bible_db log=dible_db full=y rows=n
4. 導(dǎo)出一個(gè)或一組指定用戶所屬的全部表、索引和其他對(duì)象
exp system/manager file=seapark log=seapark owner=seapark
exp system/manager file=seapark log=seapark owner=(seapark,amy,amyc,harold)
注意:在導(dǎo)出用戶時(shí),盡管已經(jīng)得到了這個(gè)用戶的所有對(duì)象,但是還是不能得到這些對(duì)象引用的任何同義詞。解決方法是用以下的SQL*Plus命令創(chuàng)建一個(gè)腳本文件,運(yùn)行這個(gè)腳本文件可以獲得一個(gè)重建seapark所屬對(duì)象的全部公共同義詞的可執(zhí)行腳本,然后在目標(biāo)數(shù)據(jù)庫(kù)上運(yùn)行該腳本就可重建同義詞了。
SET LINESIZE 132
SET PAGESIZE 0
SET TRIMSPOOL ON
SPOOL c:\seapark.syn
SELECT 'Create public synonym '||synonym_name
||' for '||table_owner||'.'||table_name||';'
FROM dba_synonyms
WHERE table_owner = 'SEAPARK' AND owner = 'PUBLIC';
SPOOL OFF
5. 導(dǎo)出一個(gè)或多個(gè)指定表
exp seapark/seapark file=tank log=tank tables=tank
exp system/manager file=tank log=tank tables=seapark.tank
exp system/manager file=tank log=tank tables=(seapark.tank,amy.artist)
6. 估計(jì)導(dǎo)出文件的大小
全部表總字節(jié)數(shù):
SELECT sum(bytes)
FROM dba_segments
WHERE segment_type = 'TABLE';
seapark用戶所屬表的總字節(jié)數(shù):
SELECT sum(bytes)
FROM dba_segments
WHERE owner = 'SEAPARK'
AND segment_type = 'TABLE';
seapark用戶下的aquatic_animal表的字節(jié)數(shù):
SELECT sum(bytes)
FROM dba_segments
WHERE owner = 'SEAPARK'
AND segment_type = 'TABLE'
AND segment_name = 'AQUATIC_ANIMAL';
7. 導(dǎo)出表數(shù)據(jù)的子集(oracle8i以上)
NT系統(tǒng):
exp system/manager query='Where salad_type='FRUIT'' tables=amy.salad_type
file=fruit log=fruit
UNIX系統(tǒng):
exp system/manager query=\"Where salad_type=\'FRUIT\'\" tables=amy.salad_type
file=fruit log=fruit
8. 用多個(gè)文件分割一個(gè)導(dǎo)出文件
exp system/manager
file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck, filesize=1G tables=hr.paycheck
9. 使用參數(shù)文件
exp system/manager parfile=bible_tables.par
bible_tables.par參數(shù)文件:
#Export the sample tables used for the Oracle8i Database Administrator's Bible.
file=bible_tables
log=bible_tables
tables=(
amy.artist
amy.books
seapark.checkup
seapark.items
)
10. 增量導(dǎo)出
“完全”增量導(dǎo)出(complete),即備份整個(gè)數(shù)據(jù)庫(kù)
exp system/manager inctype=complete file=990702.dmp
“增量型”增量導(dǎo)出(incremental),即備份上一次備份后改變的數(shù)據(jù)
exp system/manager inctype=incremental file=990702.dmp
“累計(jì)型”增量導(dǎo)出(cumulative),即備份上一次“完全”導(dǎo)出之后改變的數(shù)據(jù)
exp system/manager inctype=cumulative file=990702.dmp
expect:expect是Unix系統(tǒng)中用來(lái)進(jìn)行自動(dòng)化控制和測(cè)試的腳本工具,常用于實(shí)現(xiàn)交互式任務(wù)的自動(dòng)化。使用命令”dnf install expect -y”進(jìn)行安裝。腳本文件聲明為”#!/usr/bin/expect”。
expect常用命令如下:
1.spawn+交互命令(如spawn ssh root@192.168.1.1):”spawn”是expect的初始命令,用于啟動(dòng)一個(gè)新的交互進(jìn)程,之后所有的操作都會(huì)在這個(gè)進(jìn)程中進(jìn)行。
2.set:定義變量/為變量賦值。使用語(yǔ)法:set 變量名 值。
3.puts:將變量值/字符串定向到本地標(biāo)準(zhǔn)輸出文件(即定位到屏幕)。使用語(yǔ)法:puts “字符串/$變量名”
4.send_user:作用和使用方法類(lèi)似于”puts”,區(qū)別在于”puts”會(huì)在輸出內(nèi)容的結(jié)尾自動(dòng)追加一個(gè)換行符,而”send_user”不會(huì)。
5.send:向交互進(jìn)程發(fā)送信息/命令(字符串和一些特殊符號(hào),\r—回車(chē),\n—換行,\t—制表符)。使用語(yǔ)法:send “信息/命令[\r]”。
6.[lindex $argv 數(shù)字]:表示外部傳遞參數(shù)的值,數(shù)字是n,就表示第n-1個(gè)參數(shù)。注:$argc表示外部傳遞參數(shù)的個(gè)數(shù),也是一個(gè)值。
7.expect+字符串+{ 命令 }:將字符串與交換進(jìn)程接收到的信息進(jìn)行匹配。如果匹配成功(字符串是交換進(jìn)程接收到的信息的一部分),執(zhí)行包含在”{}”中的命令;如果匹配失敗,不執(zhí)行包含在”{}”中的命令。該命令有三種使用方法:
第一種:?jiǎn)畏种J?/p>
①expect 字符串 { 命令 }
解釋?zhuān)喝绻址c交換進(jìn)程接收到的信息匹配成功,執(zhí)行包含在”{}”中的命令,并結(jié)束該expect命令;如果字符串與交換進(jìn)程接收到的信息匹配失敗,timeout秒后結(jié)束該expect命令。(注:腳本執(zhí)行到expect命令時(shí),計(jì)時(shí)器就開(kāi)始計(jì)時(shí),并會(huì)在計(jì)時(shí)器超時(shí)前不斷對(duì)交換進(jìn)程接收到的信息進(jìn)行掃描,嘗試字符串與信息的匹配。)
②expect {
字符串{ 命令 }
timeout { 命令 }
}
解釋?zhuān)喝绻址c交換進(jìn)程接收到的信息匹配成功,執(zhí)行包含在”{}”中的命令,并結(jié)束該expect命令;如果字符串與交換進(jìn)程接收到的信息匹配失敗,timeout秒后執(zhí)行包含在”{}”中的命令,之后結(jié)束該expect命令。(注:腳本執(zhí)行到expect命令時(shí),計(jì)時(shí)器就開(kāi)始計(jì)時(shí),并會(huì)在計(jì)時(shí)器超時(shí)前不斷對(duì)交換進(jìn)程接收到的信息進(jìn)行掃描,嘗試字符串與信息的匹配。)
第二種:多分支模式
①expect {
字符串1 { 命令 }
字符串2 { 命令 }
}
解釋?zhuān)喝绻址?與交換進(jìn)程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并結(jié)束該expect命令;如果字符串1與交換進(jìn)程接收到的信息匹配失敗、字符串2與交換進(jìn)程接收到的信息匹配成功,執(zhí)行包含在”{}”中的命令,并結(jié)束該expect命令;如果字符串1、字符串2皆與交換進(jìn)程接收到的信息匹配失敗,timeout秒后結(jié)束該expect命令。(注:腳本執(zhí)行到expect命令時(shí),計(jì)時(shí)器就開(kāi)始計(jì)時(shí),并會(huì)在計(jì)時(shí)器超時(shí)前不斷對(duì)交換進(jìn)程接收到的信息進(jìn)行掃描,嘗試字符串與信息的匹配。)
②expect {
字符串1 { 命令 }
字符串2 { 命令 }
timeout { 命令 }
}
解釋?zhuān)喝绻址?與交換進(jìn)程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并結(jié)束該expect命令;如果字符串1與交換進(jìn)程接收到的信息匹配失敗、字符串2與交換進(jìn)程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并結(jié)束該expect命令;如果字符串1、字符串2皆與交換進(jìn)程接收到的信息匹配失敗,timeout秒后執(zhí)行包含在”{}”中的命令,之后結(jié)束該expect命令。(注:腳本執(zhí)行到expect命令時(shí),計(jì)時(shí)器就開(kāi)始計(jì)時(shí),并會(huì)在計(jì)時(shí)器超時(shí)前不斷對(duì)交換進(jìn)程接收到的信息進(jìn)行掃描,嘗試字符串與信息的匹配。)
第三種:循環(huán)多分支模式(注:exp_continue命令只能出現(xiàn)在expect命令的匹配語(yǔ)句中,執(zhí)行到exp_continue命令時(shí),腳本會(huì)跳出當(dāng)前expect命令,并重新執(zhí)行該expect命令,直到expect命令通過(guò)不包含exp_continue命令的匹配語(yǔ)句結(jié)束、或expect命令匹配超時(shí)結(jié)束。)
①expect {
字符串1 { 命令; exp_continue }
字符串2 { 命令 }
}
解釋?zhuān)喝绻址?與交換進(jìn)程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并重新執(zhí)行該expect命令;如果字符串1與交換進(jìn)程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并重新執(zhí)行該expect命令...;如果字符串1與交換進(jìn)程接收到的信息匹配失敗、字符串2與交換進(jìn)程接收到的信息匹配成功,執(zhí)行包含在”{}”中的命令,并結(jié)束該expect命令;如果字符串1、字符串2皆與交換進(jìn)程接收到的信息匹配失敗,timeout秒后結(jié)束該expect命令。(注:腳本執(zhí)行到expect命令時(shí),計(jì)時(shí)器就開(kāi)始計(jì)時(shí),并會(huì)在計(jì)時(shí)器超時(shí)前不斷對(duì)交換進(jìn)程接收到的信息進(jìn)行掃描,嘗試字符串與信息的匹配。)
②expect {
字符串1 { 命令; exp_continue }
字符串2 { 命令 }
timeout { 命令 }
}
解釋?zhuān)喝绻址?與交換進(jìn)程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并重新執(zhí)行該expect命令;如果字符串1與交換進(jìn)程接收到的信息匹配成功,執(zhí)行執(zhí)行包含在”{}”中的命令,并重新執(zhí)行該expect命令...;如果字符串1與交換進(jìn)程接收到的信息匹配失敗、字符串2與交換進(jìn)程接收到的信息匹配成功,執(zhí)行包含在”{}”中的命令,并結(jié)束該expect命令;如果字符串1、字符串2皆與交換進(jìn)程接收到的信息匹配失敗,timeout秒后執(zhí)行包含在”{}”中的命令,之后結(jié)束該expect命令。(注:腳本執(zhí)行到expect命令時(shí),計(jì)時(shí)器就開(kāi)始計(jì)時(shí),并會(huì)在計(jì)時(shí)器超時(shí)前不斷對(duì)交換進(jìn)程接收到的信息進(jìn)行掃描,嘗試字符串與信息的匹配。)
8.timeout:timeout是expect中的一個(gè)關(guān)鍵字變量,用于控制expect命令的超時(shí)時(shí)間。需要注意的是,這個(gè)超時(shí)時(shí)間針對(duì)于整個(gè)expect命令,而不是針對(duì)于expect命令中的某條匹配語(yǔ)句。也就是說(shuō),只有expect命令中所有匹配語(yǔ)句都匹配失敗后,才會(huì)開(kāi)始計(jì)算超時(shí)時(shí)間。timeout變量值缺省為10(秒),我們可以通過(guò)”set timeout=值”的方式為其重新賦值,作用范圍:本次賦值到下一次賦值間的所有expect命令。注:如果需要為timeout變量重新賦值,應(yīng)在expect命令之外進(jìn)行。
9.expect eof:該命令的作用是結(jié)束spawn交互進(jìn)程,將命令行切回至運(yùn)行腳本的主機(jī)(即從遠(yuǎn)端服務(wù)器登出)。
10.interact:缺省情況下,expect腳本執(zhí)行完畢后會(huì)自動(dòng)從遠(yuǎn)端服務(wù)器登出(即便沒(méi)有顯式地執(zhí)行”expect eof”命令)。使用interact命令后,expect腳本執(zhí)行完畢會(huì)繼續(xù)保持當(dāng)前狀態(tài),并將控制權(quán)移交給用戶。
11.exit:結(jié)束該腳本。
expect中的if語(yǔ)句:
if { 條件表達(dá)式 } {
命令
}
if { 條件表達(dá)式 } {
命令
} else {
命令
}
expect中的while語(yǔ)句:
while { 條件表達(dá)式 } {
命令
}
expect中的for語(yǔ)句:
for { set i 1 } { $i =10 } { incr i } {
命令
}
incr變量名 步長(zhǎng) ??——變量自增
incr 變量名 -步長(zhǎng) ???——變量自減
數(shù)學(xué)運(yùn)算需使用let、expr等工具
exp help=y
imp help=y
說(shuō)的很清楚
數(shù)據(jù)庫(kù)歸檔不歸檔都可以,scott是一個(gè)用戶名,tiger是這個(gè)用戶的密碼,舉兩個(gè)例子
exp scott/tiger owner=scott file=temp.dmp log=temp.log
exp scott/tiger tables=(emp,dept) file=temp.dmp log=temp.log
本文名稱:linux命令exp Linux命令行與shell腳本編程大全
鏈接地址:http://muchs.cn/article20/doscijo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷(xiāo)推廣、服務(wù)器托管、網(wǎng)站設(shè)計(jì)公司、外貿(mào)網(wǎng)站建設(shè)、微信公眾號(hào)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)