一、使用PLSQL導(dǎo)出導(dǎo)入ORACLE數(shù)據(jù)庫(kù):
寧河ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!
1、打開(kāi)plsql--工具----》導(dǎo)出用戶(hù)對(duì)象(可以導(dǎo)出表結(jié)構(gòu)和序列、視圖)
ps:如果上面不選中"包括所有者",這樣到導(dǎo)出的表結(jié)構(gòu)等就不包含所有者,
這樣就可以將A所有者的表結(jié)構(gòu)等導(dǎo)入到B所有者的表空間中
2、導(dǎo)出表結(jié)構(gòu)和表數(shù)據(jù):
1、想要導(dǎo)入數(shù)據(jù)庫(kù)必須首先創(chuàng)建用戶(hù)和表空間并賦權(quán)限
(1)創(chuàng)建用戶(hù):
(2)創(chuàng)建表空間:電腦開(kāi)始菜單-----》找到Oracle目錄----》找到數(shù)據(jù)要導(dǎo)入進(jìn)的數(shù)據(jù)庫(kù)---》打開(kāi)該數(shù)據(jù)庫(kù)的控制臺(tái)---》然后可以創(chuàng)建表空間
2、導(dǎo)入表結(jié)構(gòu)、序列和數(shù)據(jù)
(1)導(dǎo)入表結(jié)構(gòu)和序列: plsql---》工具---》導(dǎo)入表
(2)導(dǎo)入表數(shù)據(jù):
到此數(shù)據(jù)導(dǎo)入完成;
注:(1)創(chuàng)建的用戶(hù)和表空間是和導(dǎo)出數(shù)據(jù)庫(kù)中的用戶(hù)和表空間對(duì)應(yīng)的;如要從A數(shù)據(jù)庫(kù)中導(dǎo)出B用戶(hù)C表空間下的所有表、數(shù)據(jù)、序列到M數(shù)據(jù)庫(kù);則在M數(shù)據(jù)庫(kù)中創(chuàng)建B用戶(hù)
和C表 空間。
(2)oracle11數(shù)據(jù)庫(kù)不能導(dǎo)出orcale10的數(shù)據(jù)
(3)plsql導(dǎo)出表數(shù)據(jù)是如果數(shù)據(jù)中用Long類(lèi)型的大數(shù)據(jù),導(dǎo)出格式不能是sql,只有dmp格式才可以。
Oracle ExpImp導(dǎo)入導(dǎo)出工具性能調(diào)優(yōu)
Oracle Exp/Imp工具是一個(gè)操作簡(jiǎn)單、方便靈活的備份恢復(fù)和數(shù)據(jù)遷移工具,它可以實(shí)施全庫(kù)級(jí)、用戶(hù)級(jí)、表級(jí)的數(shù)據(jù)備份和恢復(fù)。對(duì)于數(shù)據(jù)量在G級(jí)或G級(jí)以?xún)?nèi),強(qiáng)調(diào)高可用性,可以容忍少量數(shù)據(jù)丟失的數(shù)據(jù)庫(kù)系統(tǒng),Exp/Imp是普遍使用的邏輯備份方式。目前現(xiàn)網(wǎng)很多生產(chǎn)系統(tǒng)均使用Exp/Imp進(jìn)行備份恢復(fù)。數(shù)據(jù)量達(dá)到G級(jí)以后,備份恢復(fù)的時(shí)間明顯拉長(zhǎng)了,有沒(méi)有方法能夠有效提高Exp/Imp的速度呢?答案是肯定的,某些方法還可以成倍的提高速度,本文就從Exp、Imp兩個(gè)工具分別探討優(yōu)化備份恢復(fù)性能的方法。
1 Exp調(diào)優(yōu)
1.1 使用DIRECT和RECORDLENGTH選項(xiàng)
DIRECT參數(shù)定義了導(dǎo)出是使用直接路徑方式(DIRECT=Y),還是常規(guī)路徑方式(DIRECT=N)。常規(guī)路徑導(dǎo)出使用SQL SELECT語(yǔ)句從表中抽取數(shù)據(jù),直接路徑導(dǎo)出則是將數(shù)據(jù)直接從磁盤(pán)讀到PGA再原樣寫(xiě)入導(dǎo)出文件,從而避免了SQL命令處理層的數(shù)據(jù)轉(zhuǎn)換過(guò)程,大大提高了導(dǎo)出效率。在數(shù)據(jù)量大的情況下,直接路徑導(dǎo)出的效率優(yōu)勢(shì)更為明顯,可比常規(guī)方法速度提高三倍之多。
和DIRECT=Y配合使用的是RECORDLENGTH參數(shù),它定義了Export I/O緩沖的大小,作用類(lèi)似于常規(guī)路徑導(dǎo)出使用的BUFFER參數(shù)。建議設(shè)置RECORDLENGTH參數(shù)為最大I/O緩沖,即65535(64kb)。其用法如下:
exp userid=system/manager full=y direct=y recordlength=65535 file=exp_full.dmp log=exp_full.log
直接路徑導(dǎo)出根據(jù)Oracle版本不同,有一些使用限制。比較重要的限制有,8i及以下版本不支持導(dǎo)出客戶(hù)端和數(shù)據(jù)庫(kù)的字符集轉(zhuǎn)換,因此導(dǎo)出前必須保證NLS_LANG設(shè)置正確;8.1.5及以下版本不支持導(dǎo)出含LOBs對(duì)象的表;不能使用QUERY參數(shù)等。
1.2 使用管道技術(shù)
管道是從一個(gè)程序進(jìn)程向另一個(gè)程序進(jìn)程單向傳送信息的技術(shù)。通常,管道把一個(gè)進(jìn)程的輸出傳給另一進(jìn)程作為輸入。如果導(dǎo)出的數(shù)據(jù)量很大,可以利用管道直接生成最終的壓縮文件,所耗費(fèi)的時(shí)間和不壓縮直接導(dǎo)出的時(shí)間相當(dāng)。這樣一來(lái),不僅能夠解決磁盤(pán)空間不足的問(wèn)題,而且省去了單獨(dú)壓縮文件的時(shí)間;如果需要傳輸導(dǎo)出文件,還可以減少網(wǎng)絡(luò)傳輸?shù)臅r(shí)間。比如,一個(gè)10G的文件單獨(dú)壓縮可能需要半小時(shí)以上的時(shí)間。雖然管道技術(shù)不能夠直接縮短Exp/Imp本身的時(shí)間,但節(jié)省出來(lái)的壓縮時(shí)間非??捎^。管道和Exp結(jié)合的具體使用方法如下:
導(dǎo)出數(shù)據(jù)示例:
% mknod /tmp/exp_pipe p # Make the pipe
% compress /tmp/exp_pipe export.dmp.Z # Background compress
% exp file=/tmp/exp_pipe # Export to the pipe
2 Imp調(diào)優(yōu)
Oracle Import進(jìn)程需要花比Export進(jìn)程數(shù)倍的時(shí)間將數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)。某些關(guān)鍵時(shí)刻,導(dǎo)入是為了應(yīng)對(duì)數(shù)據(jù)庫(kù)的緊急故障恢復(fù)。為了減少宕機(jī)時(shí)間,加快導(dǎo)入速度顯得至關(guān)重要。沒(méi)有特效辦法加速一個(gè)大數(shù)據(jù)量的導(dǎo)入,但我們可以做一些適當(dāng)?shù)脑O(shè)定以減少整個(gè)導(dǎo)入時(shí)間。
2.1 使用管道技術(shù)
前面已經(jīng)說(shuō)明了Exp時(shí)如何使用管道,在導(dǎo)入時(shí)管道的作用是相同,不僅能夠解決磁盤(pán)空間不足的問(wèn)題,而且省去了單獨(dú)解壓縮文件的時(shí)間。在大數(shù)據(jù)量導(dǎo)入導(dǎo)出的時(shí)候,推薦一定要使用管道。
導(dǎo)入數(shù)據(jù)示例:
2.2 避免I/O競(jìng)爭(zhēng)
Import是一個(gè)I/O密集的操作,避免I/O競(jìng)爭(zhēng)可以加快導(dǎo)入速度。如果可能,不要在系統(tǒng)高峰的時(shí)間導(dǎo)入數(shù)據(jù),不要在導(dǎo)入數(shù)據(jù)時(shí)運(yùn)行job等可能競(jìng)爭(zhēng)系統(tǒng)資源的操作。
2.3 增加排序區(qū)
Oracle Import進(jìn)程先導(dǎo)入數(shù)據(jù)再創(chuàng)建索引,不論INDEXES值設(shè)為YES或者NO,主鍵的索引是一定會(huì)創(chuàng)建的。創(chuàng)建索引的時(shí)候需要用到排序區(qū),在內(nèi)存大小不足的時(shí)候,使用臨時(shí)表空間進(jìn)行磁盤(pán)排序,由于磁盤(pán)排序效率和內(nèi)存排序效率相差好幾個(gè)數(shù)量級(jí)。增加排序區(qū)可以大大提高創(chuàng)建索引的效率,從而加快導(dǎo)入速度。
8i及其以下版本:導(dǎo)入數(shù)據(jù)前增加數(shù)據(jù)庫(kù)的sort_area_size大小,可設(shè)為正常值的5-10倍。但這個(gè)值設(shè)定會(huì)影響到所有會(huì)話,設(shè)的過(guò)高有可能導(dǎo)致內(nèi)存不足出現(xiàn)paging, swapping現(xiàn)象。更為穩(wěn)妥的方法是,對(duì)于大表和索引特別多的表,只導(dǎo)數(shù)據(jù)不導(dǎo)索引。導(dǎo)完數(shù)據(jù)后,創(chuàng)建一個(gè)會(huì)話,設(shè)定當(dāng)前會(huì)話的sort_area_size一個(gè)足夠大的值,再手工創(chuàng)建索引。
9i:在workarea_size_policy=AUTO的情況下,所有會(huì)話的UGA共用pga_aggregate_target定義的內(nèi)存,不必單獨(dú)設(shè)定sort_area_size。導(dǎo)入數(shù)據(jù)前增加pga_aggregate_target大小,如果機(jī)器內(nèi)存夠大,可從通常設(shè)定的500M提高到1-2G。pga_aggregate_target大小可以動(dòng)態(tài)調(diào)整,導(dǎo)入完成后可在線調(diào)回原值。
2.4 調(diào)整BUFFER選項(xiàng)
Imp參數(shù)BUFFER定義了每一次讀取導(dǎo)出文件的數(shù)據(jù)量,設(shè)的越大,就越減少I(mǎi)mport進(jìn)程讀取數(shù)據(jù)的次數(shù),從而提高導(dǎo)入效率。BUFFER的大小取決于系統(tǒng)應(yīng)用、數(shù)據(jù)庫(kù)規(guī)模,通常來(lái)說(shuō),設(shè)為百兆就足夠了。其用法如下:
imp user2/pwd fromuser=user1 touser=user2 file=/tmp/imp_db_pipe1 commit=y feedback=10000 buffer=10240000
2.5 使用COMMIT=Y選項(xiàng)
COMMIT=Y表示每個(gè)數(shù)據(jù)緩沖滿(mǎn)了之后提交一次,而不是導(dǎo)完一張表提交一次。這樣會(huì)大大減少對(duì)系統(tǒng)回滾段等資源的消耗,對(duì)順利完成導(dǎo)入是有益的。
2.6 使用INDEXES=N選項(xiàng)
前面談到增加排序區(qū)時(shí),說(shuō)明Imp進(jìn)程會(huì)先導(dǎo)入數(shù)據(jù)再創(chuàng)建索引。導(dǎo)入過(guò)程中建立用戶(hù)定義的索引,特別是表上有多個(gè)索引或者數(shù)據(jù)表特別龐大時(shí),需要耗費(fèi)大量時(shí)間。某些情況下,需要以最快的時(shí)間導(dǎo)入數(shù)據(jù),而索引允許后建,我們就可以使用INDEXES=N 只導(dǎo)入數(shù)據(jù)不創(chuàng)建索引,從而加快導(dǎo)入速度。
我們可以用INDEXFILE選項(xiàng)生成創(chuàng)建索引的DLL腳本,再手工創(chuàng)建索引。我們也可以用如下的方法導(dǎo)入兩次,第一次導(dǎo)入數(shù)據(jù),第二次導(dǎo)入索引。其用法如下:
imp user2/pwd fromuser=user1 touser=user2 file=/tmp/imp_db_pipe1 commit=y feedback=10000 buffer=10240000 ignore=y rows=y indexes=n
imp user2/pwd fromuser=user1 touser=user2 file=/tmp/imp_index_pipe1 commit=y feedback=10000 buffer=10240000 ignore=y rows=n indexes=y
2.7 增加LARGE_POOL_SIZE
如果在init.ora中配置了MTS_SERVICE,MTS_DISPATCHERS等參數(shù),tnsnames.ora中又沒(méi)有(SERVER=DEDICATED)的配置,那么數(shù)據(jù)庫(kù)就使用了共享服務(wù)器模式。在MTS模式下,Exp/Imp操作會(huì)用到LARGE_POOL,建議調(diào)整LARGE_POOL_SIZE到150M。
檢查數(shù)據(jù)庫(kù)是否在MTS模式下:
SQLselect distinct server from v$session;
如果返回值出現(xiàn)none或shared,說(shuō)明啟用了MTS。
附錄:EXP/IMP命令選項(xiàng)注釋
exp help=y
通過(guò)輸入 EXP 命令和用戶(hù)名/口令,您可以
后接用戶(hù)名/口令的命令:
例程: EXP SCOTT/TIGER
或者,您也可以通過(guò)輸入跟有各種參數(shù)的 EXP 命令來(lái)控制“導(dǎo)出”
按照不同參數(shù)。要指定參數(shù),您可以使用關(guān)鍵字:
格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
例程: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1: P1,T1: P2),如果 T1 是分區(qū)表
USERID 必須是命令行中的第一個(gè)參數(shù)。
關(guān)鍵字 說(shuō)明(默認(rèn)) 關(guān)鍵字 說(shuō)明(默認(rèn))
--------------------------------------------------------------------------
USERID 用戶(hù)名/口令 FULL 導(dǎo)出整個(gè)文件 (N)
BUFFER 數(shù)據(jù)緩沖區(qū)大小 OWNER 所有者用戶(hù)名列表
FILE 輸出文件 (EXPDAT.DMP) TABLES 表名稱(chēng)列表
COMPRESS 導(dǎo)入到一個(gè)區(qū) (Y) RECORDLENGTH IO 記錄的長(zhǎng)度
GRANTS 導(dǎo)出權(quán)限 (Y) INCTYPE 增量導(dǎo)出類(lèi)型
INDEXES 導(dǎo)出索引 (Y) RECORD 跟蹤增量導(dǎo)出 (Y)
DIRECT 直接路徑 (N) TRIGGERS 導(dǎo)出觸發(fā)器 (Y)
LOG 屏幕輸出的日志文件 STATISTICS 分析對(duì)象 (ESTIMATE)
ROWS 導(dǎo)出數(shù)據(jù)行 (Y) PARFILE 參數(shù)文件名
CONSISTENT 交叉表的一致性 (N) CONSTRAINTS 導(dǎo)出的約束條件 (Y)
OBJECT_CONSISTENT 只在對(duì)象導(dǎo)出期間設(shè)置為讀的事務(wù)處理 (N)
FEEDBACK 每 x 行的顯示進(jìn)度 (0)
FILESIZE 每個(gè)轉(zhuǎn)儲(chǔ)文件的最大大小
FLASHBACK_SCN 用于將會(huì)話快照設(shè)置回以前狀態(tài)的 SCN
FLASHBACK_TIME 用于獲取最接近指定時(shí)間的 SCN 的時(shí)間
QUERY 用于導(dǎo)出表的子集的 select 子句
RESUMABLE 遇到與空格相關(guān)的錯(cuò)誤時(shí)掛起 (N)
RESUMABLE_NAME 用于標(biāo)識(shí)可恢復(fù)語(yǔ)句的文本字符串
RESUMABLE_TIMEOUT RESUMABLE 的等待時(shí)間
TTS_FULL_CHECK 對(duì) TTS 執(zhí)行完整的或部分相關(guān)性檢查
TABLESPACES 要導(dǎo)出的表空間列表
TRANSPORT_TABLESPACE 導(dǎo)出可傳輸?shù)谋砜臻g元數(shù)據(jù) (N)
TEMPLATE 調(diào)用 iAS 模式導(dǎo)出的模板名
imp help=y
可以通過(guò)輸入 IMP 命令和您的用戶(hù)名/口令
后接用戶(hù)名/口令的命令:
例程: IMP SCOTT/TIGER
或者, 可以通過(guò)輸入 IMP 命令和各種參數(shù)來(lái)控制“導(dǎo)入”
按照不同參數(shù)。要指定參數(shù),您可以使用關(guān)鍵字:
格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)
例程: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
或 TABLES=(T1: P1,T1: P2),如果 T1 是分區(qū)表
USERID 必須是命令行中的第一個(gè)參數(shù)。
關(guān)鍵字 說(shuō)明(默認(rèn)) 關(guān)鍵字 說(shuō)明(默認(rèn))
------------------------------------------------------------------------
USERID 用戶(hù)名/口令 FULL 導(dǎo)入整個(gè)文件 (N)
BUFFER 數(shù)據(jù)緩沖區(qū)大小 FROMUSER 所有人用戶(hù)名列表
FILE 輸入文件 (EXPDAT.DMP) TOUSER 用戶(hù)名列表
SHOW 只列出文件內(nèi)容 (N) TABLES 表名列表
IGNORE 忽略創(chuàng)建錯(cuò)誤 (N) RECORDLENGTH IO 記錄的長(zhǎng)度
GRANTS 導(dǎo)入權(quán)限 (Y) INCTYPE 增量導(dǎo)入類(lèi)型
INDEXES 導(dǎo)入索引 (Y) COMMIT 提交數(shù)組插入 (N)
ROWS 導(dǎo)入數(shù)據(jù)行 (Y) PARFILE 參數(shù)文件名
LOG 屏幕輸出的日志文件 CONSTRAINTS 導(dǎo)入限制 (Y)
DESTROY 覆蓋表空間數(shù)據(jù)文件 (N)
INDEXFILE 將表/索引信息寫(xiě)入指定的文件
SKIP_UNUSABLE_INDEXES 跳過(guò)不可用索引的維護(hù) (N)
FEEDBACK 每 x 行顯示進(jìn)度 (0)
TOID_NOVALIDATE 跳過(guò)指定類(lèi)型 ID 的驗(yàn)證
FILESIZE 每個(gè)轉(zhuǎn)儲(chǔ)文件的最大大小
STATISTICS 始終導(dǎo)入預(yù)計(jì)算的統(tǒng)計(jì)信息
RESUMABLE 在遇到有關(guān)空間的錯(cuò)誤時(shí)掛起 (N)
RESUMABLE_NAME 用來(lái)標(biāo)識(shí)可恢復(fù)語(yǔ)句的文本字符串
RESUMABLE_TIMEOUT RESUMABLE 的等待時(shí)間
COMPILE 編譯過(guò)程, 程序包和函數(shù) (Y)
STREAMS_CONFIGURATION 導(dǎo)入 Streams 的一般元數(shù)據(jù) (Y)
STREAMS_INSTANITATION 導(dǎo)入 Streams 的實(shí)例化元數(shù)據(jù) (N)
下列關(guān)鍵字僅用于可傳輸?shù)谋砜臻g
TRANSPORT_TABLESPACE 導(dǎo)入可傳輸?shù)谋砜臻g元數(shù)據(jù) (N)
TABLESPACES 將要傳輸?shù)綌?shù)據(jù)庫(kù)的表空間
DATAFILES 將要傳輸?shù)綌?shù)據(jù)庫(kù)的數(shù)據(jù)文件
TTS_OWNERS 擁有可傳輸表空間集中數(shù)據(jù)的用戶(hù)
#includeiostream
using namespace std;
void main() {
int n;
cin n;
int* a=new int[n];
int* order=new int[n];
for(int i=0; in; i++) {
cin a[i]; order[i]=0;
}
int eqNum=0;
for(int ord=1; ord+eqNum=n; ord++) {
int first=0;
while(order[first]!=0) first++;
// cout "ord: " ord ", first: " first ;
int min=a[first], minAt=first;
for(int j=first+1; jn; j++) {
if(order[j]!=0) continue;
if(a[j]min) { min=a[j]; minAt=j; }
}
// cout ", minAt: " minAt ", min: " min endl;
int ord0=ord;
order[minAt]=ord0;
for(int k=minAt+1; kn; k++) {
if(a[k]==min) { order[k]=ord0; eqNum++; }
}
}
for(int i=0; in; i++) {
if(i0) cout " ";
cout order[i];
}
}
Oracle導(dǎo)出導(dǎo)出有兩中方式:一、利用exp imp導(dǎo)出導(dǎo)入;二、利用Oracel數(shù)據(jù)泵expdp impdp導(dǎo)出導(dǎo)入。
一、利用exp imp導(dǎo)出導(dǎo)入
exp imp 語(yǔ)法如下:
exp:
1) 將數(shù)據(jù)庫(kù)orcl完全導(dǎo)出
exp system/manager@orcl file=d:\orcl_bak.dmp full=y
2) 將數(shù)據(jù)庫(kù)中system用戶(hù)的表導(dǎo)出
exp system/manager@orcl file=d:\system_bak.dmp owner=system
3) 將數(shù)據(jù)庫(kù)中表table1,table2導(dǎo)出
exp system/manager@orcl file=d:\table_bak.dmp tables=(table1,table2)
4) 將數(shù)據(jù)庫(kù)中的表customer中的字段mobile以"139"開(kāi)頭的數(shù)據(jù)導(dǎo)出
exp system/manager@orcl file=d:\mobile_bak.dmp tables=customer query=\"where mobile like '139%' \"
imp:
1) 將備份文件bak.dmp導(dǎo)出數(shù)據(jù)庫(kù)
imp system/manager@orcl file=d:\bak.dmp
如果數(shù)據(jù)表中表已經(jīng)存在,會(huì)提示錯(cuò)誤,在后面加上ignore=y就可以了。
2) 將備份文件bak.dmp中的表table1導(dǎo)入
imp system/manager@orcl file=d:\bak.dmp tables=(table1)
exp imp導(dǎo)出導(dǎo)入數(shù)據(jù)方式的好處是只要你本地安裝了Oracle客戶(hù)端,你就可以將服務(wù)器中的數(shù)據(jù)導(dǎo)出到你本地計(jì)算機(jī)。同樣也可以將dmp文件從你本地導(dǎo)入到服務(wù)器數(shù)據(jù)庫(kù)中。但是這種方式在Oracle11g版本中會(huì)出現(xiàn)一個(gè)問(wèn)題:不能導(dǎo)出空表。Oracle11g新增了一個(gè)參數(shù)deferred_segment_creation,含義是段延遲創(chuàng)建,默認(rèn)是true。當(dāng)你新建了一張表,并且沒(méi)用向其中插入數(shù)據(jù)時(shí),這個(gè)表不會(huì)立即分配segment。
解決辦法:
1、設(shè)置deferred_segment_creation參數(shù)為false后,無(wú)論是空表,還是非空表,都分配segment。
在sqlplus中,執(zhí)行如下命令:
SQLalter system set deferred_segment_creation=false;
查看:
SQLshow parameter deferred_segment_creation;
該值設(shè)置后,只對(duì)后面新增的表起作用,對(duì)之前建立的空表不起作用,并且注意要重啟數(shù)據(jù)庫(kù)讓參數(shù)生效。
2、使用 ALLOCATE EXTEN
使用 ALLOCATE EXTEN可以為數(shù)據(jù)庫(kù)對(duì)象分配Extent,語(yǔ)法如下:
alter table table_name allocate extent
構(gòu)建對(duì)空表分配空間的SQL命令:
SQLselect 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0
批量生成要修改的語(yǔ)句。
然后執(zhí)行這些修改語(yǔ)句,對(duì)所有空表分配空間。
此時(shí)用exp命令,可將包括空表在內(nèi)的所有表導(dǎo)出。
二、利用expdp impdp導(dǎo)出導(dǎo)入
在Oracle10g中exp imp被重新設(shè)計(jì)為Oracle Data Pump(保留了原有的 exp imp工具)
數(shù)據(jù)泵與傳統(tǒng)導(dǎo)出導(dǎo)入的區(qū)別;
1) exp和imp是客戶(hù)端工具,他們既可以在客戶(hù)端使用,也可以在服務(wù)端使用。
2) expdp和impdp是服務(wù)端工具,只能在Oracle服務(wù)端使用。
3) imp只適用于exp導(dǎo)出文件,impdp只適用于expdp導(dǎo)出文件。
expdp導(dǎo)出數(shù)據(jù):
1、為輸出路徑建立一個(gè)數(shù)據(jù)庫(kù)的directory對(duì)象。
create or replace directory dumpdir as 'd:\';
可以通過(guò):select * from dba_directories;查看。
2、給將要進(jìn)行數(shù)據(jù)導(dǎo)出的用戶(hù)授權(quán)訪問(wèn)。
grant read,write on directory dumpdir to test_expdp;
3、將數(shù)據(jù)導(dǎo)出
expdp test_expdp/test_expdp directory=dumpdir dumpfile=test_expdp_bak.dmp logfile=test_expdp_bak.log schemas=test_expdp
注意:這句話在cmd窗口中運(yùn)行,并且最后不要加分號(hào),否則會(huì)提示錯(cuò)誤。因?yàn)檫@句話是操作系統(tǒng)命令而不是SQL。
impdp導(dǎo)入數(shù)據(jù):
1、給將要進(jìn)行數(shù)據(jù)導(dǎo)入的用戶(hù)授權(quán)訪問(wèn)。
grant read,write on directory dumpdir to test_impdp;
2、將數(shù)據(jù)導(dǎo)入
impdp test_impdp/impdp directory=dumpdir dumpfile=test_expdp_bak.dmp remap_schema=test_expdp:test_impdp
1、首先在oracle建立數(shù)據(jù)表的時(shí)候,對(duì)表的命名有以下規(guī)范:以字母開(kāi)頭表名長(zhǎng)度不能超過(guò)30個(gè)字符,不能使用oracle保留關(guān)鍵字,可以使用A-Z,a-z,0-9,#,$等。
2、如果表名中包含特殊字符是直接報(bào)錯(cuò)的。如下圖使用了? *。
3、在建立表的時(shí)候,數(shù)字也是不能使用表名的開(kāi)始的。
4、但如果使用雙引號(hào)對(duì)表名進(jìn)行規(guī)范的話,是可以建立以數(shù)字或者包含特殊字符的表名的。
5、過(guò)這樣建立的表名,在查詢(xún)數(shù)據(jù)的時(shí)候是非常麻煩的,查詢(xún)時(shí)也要加雙引號(hào)。而且這樣建立的表名,在項(xiàng)目運(yùn)行的過(guò)程中也非常容易造成各種麻煩,所以盡量不要使用。
你這是插入數(shù)據(jù)吧
其實(shí)id順序無(wú)所謂,以后即使順序亂了,查詢(xún)的時(shí)候使用order by 就可以了