導航:首頁 > 程序命令 > grants在imp命令

grants在imp命令

發布時間:2022-08-08 19:03:35

『壹』 如何在oracle中導入dmp資料庫文件

Oracle數據導入導出imp/exp就相當於oracle數據還原與備份。exp命令可以把數據從遠程資料庫伺服器導出到本地的dmp文件,imp命令可以把dmp文件從本地導入到遠處的資料庫伺服器中。 利用這個功能可以構建兩個相同的資料庫,一個用來測試,一個用來正式使用。
執行環境:可以在SQLPLUS.EXE或者DOS(命令行)中執行,
DOS中可以執行時由於 在oracle 8i 中 安裝目錄\ora81\BIN被設置為全局路徑,
該目錄下有EXP.EXE與IMP.EXE文件被用來執行導入導出。
oracle用java編寫,SQLPLUS.EXE、EXP.EXE、IMP.EXE這兩個文件有可能是被包裝後的類文件。
SQLPLUS.EXE調用EXP.EXE、IMP.EXE所包裹的類,完成導入導出功能。
下面介紹的是導入導出的實例。
數據導出:
1 將資料庫TEST完全導出,用戶名system 密碼manager 導出到D:\chu.dmp中
exp system/manager@TEST file=d:\chu.dmp full=y
2 將資料庫中system用戶與sys用戶的表導出
exp system/manager@TEST file=d:\chu.dmp owner=(system,sys)
3 將資料庫中的表inner_notify、notify_staff_relat導出
exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=(inner_notify,notify_staff_relat)
4 將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出
exp system/manager@TEST file=d:\chu.dmp tables=(table1) query=\" where filed1 like '00%'\"

上面是常用的導出,對於壓縮,既用winzip把dmp文件可以很好的壓縮。
也可以在上面命令後面 加上 compress=y 來實現。
數據的導入
1 將D:\chu.dmp 中的數據導入 TEST資料庫中。
imp system/manager@TEST file=d:\chu.dmp
imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp ignore=y
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行導入。
在後面加上 ignore=y 就可以了。
2 將d:\chu.dmp中的表table1 導入
imp system/manager@TEST file=d:\chu.dmp tables=(table1)
基本上上面的導入導出夠用了。不少情況要先是將表徹底刪除,然後導入。
注意:
操作者要有足夠的許可權,許可權不夠它會提示。
資料庫時可以連上的。可以用tnsping TEST 來獲得資料庫TEST能否連上。
附錄一:
給用戶增加導入數據許可權的操作
第一,啟動sql*puls
第二,以system/manager登陸
第三,create user 用戶名 IDENTIFIED BY 密碼 (如果已經創建過用戶,這步可以省略)
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用戶名字
第五, 運行-cmd-進入dmp文件所在的目錄,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp
執行示例:
F:\Work\Oracle_Data\backup>imp userid=test/test full=y file=inner_notify.dmp
屏幕顯示
Import: Release 8.1.7.0.0 - Proction on 星期四 2月 16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation. All rights reserved.
連接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Proction
With the Partitioning option
JServer Release 8.1.7.0.0 - Proction
經由常規路徑導出由EXPORT:V08.01.07創建的文件
已經完成ZHS16GBK字元集和ZHS16GBK NCHAR 字元集中的導入
導出伺服器使用UTF8 NCHAR 字元集 (可能的ncharset轉換)
. 正在將AICHANNEL的對象導入到 AICHANNEL
. . 正在導入表 "INNER_NOTIFY" 4行被導入
准備啟用約束條件...
成功終止導入,但出現警告。
附錄二:
Oracle 不允許直接改變表的擁有者, 利用Export/Import可以達到這一目的.
先建立import9.par,
然後,使用時命令如下:imp parfile=/filepath/import9.par
例 import9.par 內容如下:
FROMUSER=TGPMS
TOUSER=TGPMS2 (註:把表的擁有者由FROMUSER改為TOUSER,FROMUSER和TOUSER的用戶可以不同)
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
file==/backup/ctgpc_20030623.dmp
log==/backup/import_20030623.log

『貳』 oracle 空間

ORACLE 創建表空間步驟,用戶授權,操作空間;

說明: 在創建資料庫時輸入的密碼,是修改系統默認的密碼,以system和sysman等系統默認身份登錄時要輸入的密碼就是修改後的密碼(創建資料庫時輸入的密碼)
如果要創建新的用戶就必須以system或者sysman(這二者的許可權最大)的身份登錄後才可創建
創建用戶格式:create user 用戶名 identified by 密碼(例如:create user cht identified by cht;)
創建完成後,必須分配許可權,否則連不上資料庫和sqlplus。
因此要做:grant connect,resource,dba to cht;這樣資料庫就可以通過cht/cht連上了。那些select,update,delete,insert的許可權就不必分配了,因為每個用戶默認都有這些基本許可權。
命令行方式連接資料庫的方法:
開始==》運行==》cmd
方式一:
輸入sqlplus,回車
輸入用戶名: system,回車
輸入密碼: orcl,回車
方式二:
輸入sqlplus system/orcl@orcl,回車(system是用戶名,orcl是密碼,@後面的orcl是庫的名字)
(資料庫安裝完成後,有兩個系統級的用戶 :
1) system 默認密碼為 :manager
2) sys 默認密碼為 :change_on_install)
創建用戶前必須要先建好臨時表空間和數據表空間兩個表空間,否則用系統默認的表空間不好。
//創建臨時表空間
create temporary tablespace zfmi_temp tempfile 'D:oracleoradatazfmizfmi_temp.dbf' size 100m autoextend on next 32m maxsize 2048m extent management local;
說明:
1、zfmi_temp 表空間的名字
2、D:oracleoradatazfmi 存放資料庫文件的地方,一般是安裝資料庫後有控制文件,數據文件和日誌文件的文件夾,再加上要創建表空間的名字+dbf(數據文件)
3、100M 表空間的初始大小
4、32M 表空間自動增長的大小
5、2048M 表空間最大的大小

//創建數據表空間
create tablespace zfmi logging datafile 'D:oracleoradatazfmizfmi.dbf' size 100m autoextend on next 32m maxsize 2048m extent management local;
//創建用戶並指定表空間
create user zfmi identified by zfmi default tablespace zfmi temporary tablespace zfmi_temp;

//給用戶授予許可權
grant connect,resource dba to zfmi; (dba:指定所有許可權)
到這一步新建一個用戶的工作就完成了。
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//刪除用戶以及用戶所有的對象
drop user zfmi cascade;
//cascade參數是級聯刪除該用戶所有對象,經常遇到如用戶有對象而未加此參數則用戶刪不了的問題,所以習慣性的加此參數

//刪除表空間
前提:刪除表空間之前要確認該表空間沒有被其他用戶使用之後再做刪除
drop tablespace zfmi including contents and datafiles cascade onstraints;
//including contents 刪除表空間中的內容,如果刪除表空間之前表空間中有內容,而未加此參數,表空間刪不掉,所以習慣性的加此參數
//including datafiles 刪除表空間中的數據文件
//cascade constraints 同時刪除tablespace中表的外鍵參照

如果刪除表空間之前刪除了表空間文件,解決辦法:
如果在清除表空間之前,先刪除了表空間對應的數據文件,會造成資料庫無法正常啟動和關閉。
可使用如下方法恢復(此方法已經在oracle9i中驗證通過):
下面的過程中,filename是已經被刪除的數據文件,如果有多個,則需要多次執行;tablespace_name是相應的表空間的名稱。
$ sqlplus /nolog
SQL> conn / as sysdba;
如果資料庫已經啟動,則需要先執行下面這行:
SQL> shutdown abort
SQL> startup mount
SQL> alter database datafile 'filename' offline drop;
SQL> alter database open;
SQL> drop tablespace tablespace_name including contents;

導入導出命令:

Oracle數據導入導出imp/exp就相當於oracle數據還原與備份。exp命令可以把數據從遠程資料庫伺服器導出到本地的dmp文件, imp命令可以把dmp文件從本地導入到遠處的資料庫伺服器中。利用這個功能可以構建兩個相同的資料庫,一個用來測試,一個用來正式使用。
下面介紹的是導入導出的實例。(注意:不用連接到SQL/plus,直接在DOS下就可以導出。)
數據導出:
1 將資料庫TEST完全導出,用戶名system 密碼manager 導出到D:chu.dmp中
exp system/manager@TEST file=d:chu.dmp full=y
2 將資料庫中system用戶與sys用戶的表導出
exp system/manager@TEST file=d:chu.dmp owner=(system,sys)
3 將資料庫中的表inner_notify、notify_staff_relat導出
exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)
4 將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出
exp system/manager@TEST file=d:chu.dmp tables=(table1) query=" where filed1 like '00%'"
上面是常用的導出,對於壓縮,既用winzip把dmp文件可以很好的壓縮。
也可以在上面命令後面 加上 compress=y 來實現。
數據的導入
1 將D:chu.dmp 中的數據導入 TEST資料庫中。
imp system/manager@TEST file=d:chu.dmp
imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行導入。
在後面加上 ignore=y 就可以了。
2 將d:chu.dmp中的表table1 導入
imp system/manager@TEST file=d:chu.dmp tables=(table1)
基本上上面的導入導出夠用了。不少情況要先是將表徹底刪除,然後導入。
注意:
操作者要有足夠的許可權,許可權不夠它會提示。
資料庫時可以連上的。可以用tnsping TEST 來獲得資料庫TEST能否連上。
附錄一:
給用戶增加導入數據許可權的操作
第一,啟動sql*puls
第二,以system/manager登陸
第三,create user 用戶名 IDENTIFIED BY 密碼 (如果已經創建過用戶,這步可以省略)
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用戶名字
第五, 運行-cmd-進入dmp文件所在的目錄,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp
執行示例:
F:WorkOracle_Databackup>imp userid=test/test full=y file=inner_notify.dmp
屏幕顯示
Import: Release 8.1.7.0.0 - Proction on 星期四 2月 16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation. All rights reserved.
連接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Proction
With the Partitioning option
JServer Release 8.1.7.0.0 - Proction
經由常規路徑導出由EXPORT:V08.01.07創建的文件
已經完成ZHS16GBK字元集和ZHS16GBK NCHAR 字元集中的導入
導出伺服器使用UTF8 NCHAR 字元集 (可能的ncharset轉換)
. 正在將AICHANNEL的對象導入到 AICHANNEL
. . 正在導入表 "INNER_NOTIFY" 4行被導入
准備啟用約束條件...
成功終止導入,但出現警告。

附錄二:
Oracle 不允許直接改變表的擁有者, 利用Export/Import可以達到這一目的.
先建立import9.par,
然後,使用時命令如下:imp parfile=/filepath/import9.par
例 import9.par 內容如下:
FROMUSER=TGPMS
TOUSER=TGPMS2 (註:把表的擁有者由FROMUSER改為TOUSER,FROMUSER和TOUSER的用戶可以不同)
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
file==/backup/ctgpc_20030623.dmp
log==/backup/import_20030623.log
創建用戶
-- Create the user
create user JXTELE_HOMS
identified by "123456"
default tablespace HOMS
temporary tablespace TEMP
profile DEFAULT;
-- Grant/Revoke role privileges
grant connect to JXTELE_HOMS with admin option;
grant dba to JXTELE_HOMS with admin option;
grant resource to JXTELE_HOMS with admin option;
-- Grant/Revoke system privileges
grant unlimited tablespace to JXTELE_HOMS with admin option;

創建視圖
create or replace view inpass_encape_byid as
select p.*,e.ESCAPECODE ,e.ESCAPE_NAME ,e.ESCAPE_SEX ,e.ESCAPE_BIRTHDAY,e.ESCAPE_IDCARD ,e.ESCAPE_AREA ,
e.ESCAPE_ADDRESS ,e.REASON ,e.WATCHTIME ,
e.WATCHUNIT ,e.SIGN ,e.AGE ,e.CALLPHONE ,e.CALLTELEPHONE ,e.WATCHUNITCODE ,h.hotelname
from in_passenger p join escape e on p.cardcode=e.escape_idcard join hotel h on p.hotelcode=h.hotelcode;

create or replace view in_out_passstatic as
select code,name,count(pcode) cnt,intime,decode(a.roomcount,null,'0',a.roomcount) roomcount
from (select h.hotelcode code,h.hotelname name,substr(i.in_datetime,0,8) intime,i.in_passengercode pcode,h.roomcount roomcount
from IN_Passenger i right join Hotel h on i.hotelcode=h.hotelcode
group by h.HotelCode,substr(i.in_datetime,0,8),h.hotelname,i.in_passengercode,h.roomcount
union select t.hotelcode code,t.hotelname name,substr(p.in_datetime,0,8) intime,p.out_passengercode pcode,t.roomcount roomcount
from Out_Passenger p right join Hotel t on p.hotelcode=t.hotelcode
group by t.HotelCode,substr(p.in_datetime,0,8),t.hotelname,p.out_passengercode,t.roomcount ) a
group by a.code,a.intime,a.name,a.roomcount order by a.code;

create or replace view in_passstatic as
select code,name,count(pcode) cnt,intime,decode(a.roomcount,null,'0',a.roomcount) roomcount
from (select h.hotelcode code,h.hotelname name,substr(i.in_datetime,0,8) intime,i.in_passengercode pcode,h.roomcount
from IN_Passenger i right join Hotel h on i.hotelcode=h.hotelcode
group by h.HotelCode,substr(i.in_datetime,0,8),h.hotelname,i.in_passengercode,h.roomcount) a
group by a.code,a.intime,a.name,a.roomcount order by a.code;

create or replace view out_passstatic as
select code,name,count(pcode) cnt,intime,decode(a.roomcount,null,'0',a.roomcount) roomcount
from (select t.hotelcode code,t.hotelname name,substr(p.in_datetime,0,8) intime,p.out_passengercode pcode,t.roomcount
from Out_Passenger p right join Hotel t on p.hotelcode=t.hotelcode
group by t.HotelCode,substr(p.in_datetime,0,8),t.hotelname,p.out_passengercode,t.roomcount ) a
group by a.code,a.intime,a.name,a.roomcount order by a.code;

『叄』 怎樣在IMP時候指定導入到某表空間內

您好,很高興為您解答。

SQL> create user myhuang identified by myhuang default tablespace myhuang;//先創建一個用戶
SQL> grant resource,connect to myhuang;
SQL> grant dba to myhuang;// 賦 DBA 許可權
SQL> revoke unlimited tablespace from myhuang;// 撤銷此許可權,這個位置很關鍵
SQL> alter user myhuang quota 0 on system;// 將用戶在 System 表空間的配額置為 0
SQL> alter user myhuang quota unlimited on myhuang;// 設置在用戶在 myhuang 表空間配額不受限。
經過上述設置後,就可以用 imp 導入數據,數據將會進入指定的 myhuang 表空間:
window下導入方法 C:/Documents and Settings/myhuang>imp system/123456@vdb fromuser=lnxh tous
er=myhuang file=G:/myhuang/lnxh.dmp ignore=y grants=n
linux 下導入方法:
imp aiocp2/aiocp2 file=aiocp_testfull2010_11_9.dmp fromuser=aiocp_test touser=aiocp2 tables=TB_UCUSTOMMENUS,THASMROLECURL tablespaces=users

順便說兩個小問題:
( 1 ) IMP-00003: 遇到 ORACLE 錯誤 1658
ORA-01658: 無法為表空間 MYHUANG 中的段創建 INITIAL 區
通常這個問題可以通過 Resize 增加表空間數據文件大小來解決。
( 2 )刪除表空間
SQL> drop tablespace myhuang including contents and datafiles;

如若滿意,請點擊右側【採納答案】,如若還有問題,請點擊【追問】

希望我的回答對您有所幫助,望採納!

~ O(∩_∩)O~

『肆』 Oracle的導入導出命令是什麼

用exp、imp試試

導出全庫>>>>>>

導入:導入之前需創造一個空庫(可以和前一個庫名不一樣)、一個一樣的用戶

cmd>>

imp username/password@資料庫名稱 file=文件路徑 full=Y

導出:

exp username/password@資料庫名稱 file=文件路徑(生成的文件)

我導出的時候文件直接設成.sql,蠻好

導出部分表>>>>

打開cmd

導出表,確定監聽是否開啟,資料庫服務是否開啟

exp scott/tiger@orcl file=F:sign.sql tables=表名,表名 grants=y

導入表,確定新資料庫服務是否開啟

imp scott/tiger@資料庫名 file=F:sign.sql fromuser=scott ignore=y commit=y grants=y

『伍』 oracle的imp使用方法

oracle的imp使用方法具有三種模式(完全、用戶、表)

1、完全:

IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:FULL.DMP FULL=Y

2、用戶模式:

IMP SONIC/SONIC BUFFER=64000 FILE=C:SONIC.DMP FROMUSER=SONIC TOUSER=SONIC

這樣用戶SONIC的所有對象被導入到文件中。必須指定FROMUSER、TOUSER參數,這樣才能導入數據。

3、表模式:

EXP SONIC/SONIC BUFFER=64000 FILE=C:SONIC.DMP OWNER=SONIC TABLES=(SONIC)
這樣用戶SONIC的表SONIC就被導入。


(5)grants在imp命令擴展閱讀

ORACLE資料庫有兩類備份方法。第一類為物理備份,該方法實現資料庫的完整恢復,但資料庫必須運行在歸擋模式下(業務資料庫在非歸擋模式下運行),且需要極大的外部存儲設備,例如磁帶庫。

第二類備份方式為邏輯備份,業務資料庫採用此種方式,此方法不需要資料庫運行在歸擋模式下,不但備份簡單,而且可以不需要外部存儲設備。

IMP常用選項

1、FROMUSER和TOUSER,使用它們實現將數據從一個SCHEMA中導入到另外一個SCHEMA中。例如:假設做exp時導出的為test的對象,現在想把對象導入用戶:impuserid=test1/test1file=expdat.dmpfromuser=test1touser=test1

2、IGNORE、GRANTS和INDEXES,其中IGNORE參數將忽略表的存在,繼續導入,這個對於需要調整表的存儲參數時很有用,可以先根據實際情況用合理的存儲參數建好表,然後直接導入數據。

而GRANTS和INDEXES則表示是否導入授權和索引,如果想使用新的存儲參數重建索引,或者為了加快到入速度,可以考慮將INDEXES設為N,而GRANTS一般都是Y。例如:impuserid=test1/test1file=expdat.dmpfromuser=test1touser=test1indexes=N

『陸』 關於ORACLE下使用IMP導人時增加BUFFER參數時間變長的問題

1. 個人認為,3小時10分鍾 和 3小時40分鍾, 並沒有本質區別。 因為是win7,估計你是個人電腦,而不是伺服器,也就是說buffer此時起作用的可能性很小。
所以,我覺得你導入操作的瓶頸應該是硬碟的速錄,而不是 緩存 的問題

2. 這個沒有研究過。

3. 感覺expdp和impdp比 exp/imp速度快,但是沒有具體比較過(不過也就導出的速度快,imp感覺差不多)

『柒』 dos批處理命令遍歷文件夾下的dmp文件,根據dmp文件的名字截取table名,執行IMP命令。

for循環里如果你用set命令賦值的話,你得使用延遲變數才能訪問這些變數。(就是用!abc!而不是%abc%.)

@echo off&setlocal enabledelayedexpansion

for /r %DMP_PATH% %%a in (*.DMP) do (
SET mp_name=%%~na
SET table_name=!mp_name:~0,-16!
IMP user/PASS@dbname FILE=%%a TABLES=!table_name! commit=y ignore=y grants=n
)

『捌』 請問oracle的imp怎麼更改導入目的地的表空間啊

3.2 數據的導入

1 將備份資料庫文件中的數據導入指定的資料庫SampleDB 中,如果 SampleDB 已存在該表,則不再導入;

imp system/manager@TEST file=E:\sampleDB.dmp full=y ignore=y

2 將d:\chu.dmp中的表table1 導入

imp system/manager@TEST file=E:\sampleDB.dmp tables=(table1)

3. 導入一個完整資料庫

imp system/manager file=bible_db log=dible_db full=y ignore=y

4. 導入一個或一組指定用戶所屬的全部表、索引和其他對象

imp system/manager file=seapark log=seapark fromuser=seapark imp
system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

5. 將一個用戶所屬的數據導入另一個用戶

imp system/manager file=tank log=tank fromuser=seapark touser=seapark_
imp system/manager file=tank log=tank fromuser=(seapark,amy)
touser=(seapark1, amy1)

6. 導入一個表

imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

7. 從多個文件導入

imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck, filesize=1G full=y

8. 使用參數文件

imp system/manager parfile=bible_tables.par
bible_tables.par參數文件:
#Import the sample tables used for the Oracle8i Database Administrator's
Bible. fromuser=seapark touser=seapark_ file=seapark log=seapark_import
參數文件示例見附錄

9. 增量導入

imp system./manager inctype= RECTORE FULL=Y FILE=A

不少情況下要先將表徹底刪除,然後導入。

『玖』 Oracle數據導入導出imp/exp命令 10g以上expdp/impdp命令 詳細的 詳細的 謝謝

這個網路上一搜一大把,都說的很詳細,樓主沒搜過,
數據導出:
1 將資料庫TEST完全導出,用戶名system 密碼manager 導出到D:chu.dmp中
exp system/manager@TEST file=d:chu.dmp full=y
2 將資料庫中system用戶與sys用戶的表導出
exp system/manager@TEST file=d:chu.dmp owner=(system,sys)
3 將資料庫中的表inner_notify、notify_staff_relat導出
exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)

4 將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出
exp system/manager@TEST file=d:chu.dmp tables=(table1) query=" where filed1 like '00%'"

上面是常用的導出,對於壓縮,既用winzip把dmp文件可以很好的壓縮。
也可以在上面命令後面 加上 compress=y 來實現。

數據的導入
1 將D:chu.dmp 中的數據導入 TEST資料庫中。
imp system/manager@TEST file=d:chu.dmp
imp aichannel/aichannel@HUST full=y file=d:datanewsmgnt.dmp ignore=y
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行導入。
在後面加上 ignore=y 就可以了。
2 將d:chu.dmp中的表table1 導入
imp system/manager@TEST file=d:chu.dmp tables=(table1)

基本上上面的導入導出夠用了。不少情況要先是將表徹底刪除,然後導入。

注意:
操作者要有足夠的許可權,許可權不夠它會提示。
資料庫時可以連上的。可以用tnsping TEST 來獲得資料庫TEST能否連上。

當然,上面的方法在導出數據時可能會導出很大的包,那是因為你的用戶可能在授權的時候授予了DBA的許可權,所以可以採用下面方法來進行資料庫備份:

資料庫備份
建議系統過渡後,每周進行一次備份。或者在數據表發生重大改變前,對要改變的數據表進行備份。
執行以下步驟,進行備份。
在命令行里,敲入「cmd」,回車,進入命令行窗口。
在窗口中,輸入:
exp mas/123456@mas

系統提示:輸入數組提取緩沖區大小: 4096 >
可以直接回車;

系統提示:導出文件: EXPDAT.DMP>
此處輸入導出文件的位置,其路徑必須存在,Oracle在這里不會自動建立路徑,但可以建立文件名。備份文件以dmp作為後綴。
輸入內容如:e:\work\mas_db_090925v1.dmp 回車

系統提示: (1)E(完整的資料庫),(2)U(用戶) 或 (3)T(表): (2)U > u
此處可以輸入u,也可以直接回車,因為系統此時默認的是U

系統提示:導出許可權(yes/no):yes>回車

系統提示:導出表數據(yes/no):yes>回車

系統提示:壓縮區(yes/no):yes>回車

系統提示:要導出的用戶: (RETURN 以退出) > mas

系統提示:要導出的用戶: (RETURN 以退出) > 回車

此時系統會自動進行備份
本文對Oracle數據的導入導出 imp ,exp 兩個命令進行了介紹, 並對其相應的參數進行了說明,然後通過一些示例進行演練,加深理解.
文章最後對運用這兩個命令可能出現的問題(如許可權不夠,不同oracle版本)進行了探討,並提出了相應的解決方案;
本文部分內容摘錄自網路,感謝網友的經驗總結;

一.說明

oracle 的exp/imp命令用於實現對資料庫的導出/導入操作;
exp命令用於把數據從遠程資料庫伺服器導出至本地,生成dmp文件;
imp命令用於把本地的資料庫dmp文件從本地導入到遠程的Oracle資料庫中。

二.語法

可以通過在命令行輸入 imp help=y 獲取imp的語法信息:
=============================================================================
C:\Documents and Settings\auser>imp help=y

Import: Release 9.0.1.1.1 - Proction on 星期二 5月 20 18:21:57 2008

(c) Copyright 2001 Oracle Corporation. All rights reserved.

可以通過輸入 IMP 命令和您的用戶名/口令
後接用戶名/口令的命令:

常式: IMP SCOTT/TIGER

或者, 可以通過輸入 IMP 命令和各種參數來控制「導入」
按照不同參數。要指定參數,您可以使用關鍵字:

格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)
常式: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
或 TABLES=(T1: P1,T1: P2),如果 T1 是分區表

USERID 必須是命令行中的第一個參數。

關鍵字 說明(默認) 關鍵字 說明(默認)
--------------------------------------------------------------------------
USERID 用戶名/口令 FULL 導入整個文件 (N)
BUFFER 數據緩沖區大小 FROMUSER 所有人用戶名列表
FILE 輸入文件 (EXPDAT.DMP) TOUSER 用戶名列表
SHOW 只列出文件內容 (N) TABLES 表名列表
IGNORE 忽略創建錯誤 (N) RECORDLENGTH IO 記錄的長度
GRANTS 導入許可權 (Y) INCTYPE 增量導入類型
INDEXES 導入索引 (Y) COMMIT 提交數組插入 (N)
ROWS 導入數據行 (Y) PARFILE 參數文件名
LOG 屏幕輸出的日誌文件 CONSTRAINTS 導入限制 (Y)
DESTROY 覆蓋表空間數據文件 (N)
INDEXFILE 將表/索引信息寫入指定的文件
SKIP_UNUSABLE_INDEXES 跳過不可用索引的維護 (N)
FEEDBACK 每 x 行顯示進度 (0)
TOID_NOVALIDATE 跳過指定類型 ID 的驗證
FILESIZE 每個轉儲文件的最大大小
STATISTICS 始終導入預計算的統計信息
RESUMABLE 遇到與空格有關的錯誤時掛起 (N)
RESUMABLE_NAME 用來標識可恢復語句的文本字元串
RESUMABLE_TIMEOUT RESUMABLE 的等待時間
COMPILE 編譯過程, 程序包和函數 (Y)

下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 導入可傳輸的表空間元數據 (N)
TABLESPACES 將要傳輸到資料庫的表空間
DATAFILES 將要傳輸到資料庫的數據文件
TTS_OWNERS 擁有可傳輸表空間集中數據的用戶

==============================================
同樣可以通過輸入 exp help=y 獲取exp的語法信息

Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\auser>exp help=y

Export: Release 9.0.1.1.1 - Proction on 星期二 5月 20 18:26:34 2008

(c) Copyright 2001 Oracle Corporation. All rights reserved.

通過輸入 EXP 命令和用戶名/口令,您可以
後接用戶名/口令的命令:

常式: EXP SCOTT/TIGER

或者,您也可以通過輸入跟有各種參數的 EXP 命令來控制「導出」
按照不同參數。要指定參數,您可以使用關鍵字:

格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
常式: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1: P1,T1: P2),如果 T1 是分區表

USERID 必須是命令行中的第一個參數。

關鍵字 說明(默認) 關鍵字 說明(默認)
--------------------------------------------------------------------------
USERID 用戶名/口令 FULL 導出整個文件 (N)
BUFFER 數據緩沖區大小 OWNER 所有者用戶名列表
FILE 輸出文件 (EXPDAT.DMP) TABLES 表名稱列表
COMPRESS 導入到一個區 (Y) RECORDLENGTH IO 記錄的長度
GRANTS 導出許可權 (Y) INCTYPE 增量導出類型
INDEXES 導出索引 (Y) RECORD 跟蹤增量導出 (Y)
DIRECT 直接路徑 (N) TRIGGERS 導出觸發器 (Y)
LOG 屏幕輸出的日誌文件 STATISTICS 分析對象 (ESTIMATE)
ROWS 導出數據行 (Y) PARFILE 參數文件名
CONSISTENT 交叉表一致性 CONSTRAINTS 導出約束條件 (Y)

FEEDBACK 每 x 行顯示進度 (0)
FILESIZE 每個轉儲文件的最大大小
FLASHBACK_SCN 用於回調會話快照的 SCN
FLASHBACK_TIME 用來獲得最接近於指定時間的 SCN 的時間
QUERY 用來導出表的子集的選擇子句
RESUMABLE 遇到與空格有關的錯誤時掛起 (N)
RESUMABLE_NAME 用來標識可恢復語句的文本字元串
RESUMABLE_TIMEOUT RESUMABLE 的等待時間
TTS_FULL_CHECK 對 TTS 執行完全或部分相關性檢查
TABLESPACES 要導出的表空間列表
TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
TEMPLATE 調用 iAS 模式導出的模板名稱

三.使用示例

3.1 數據導出:

1 將資料庫SampleDB完全導出,用戶名system 密碼manager 導出到E:\SampleDB.dmp中

exp system/manager@TestDB file=E:\sampleDB.dmp full=y

2 將資料庫中system用戶與sys用戶的表導出

exp system/manager@TestDB file=E:\sampleDB.dmp owner=(system,sys)

3 將資料庫中的表 TableA,TableB 導出

exp system/manager@TestDB file=E:\sampleDB.dmp tables=(TableA,TableB)

4 將資料庫中的表tableA中的欄位filed1 值為 "王五" 的數據導出

exp system/manager@TestDB file=E:\sampleDB.dmp tables=(tableA) query=' where filed1='王五'

如果想對dmp文件進行壓縮,可以在上面命令後面 加上 compress=y 來實現。

3.2 數據的導入

1 將備份資料庫文件中的數據導入指定的資料庫SampleDB 中,如果 SampleDB 已存在該表,則不再導入;

imp system/manager@TEST file=E:\sampleDB.dmp full=y ignore=y

2 將d:\chu.dmp中的表table1 導入

imp system/manager@TEST file=E:\sampleDB.dmp tables=(table1)

3. 導入一個完整資料庫

imp system/manager file=bible_db log=dible_db full=y ignore=y

4. 導入一個或一組指定用戶所屬的全部表、索引和其他對象

imp system/manager file=seapark log=seapark fromuser=seapark imp
system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

5. 將一個用戶所屬的數據導入另一個用戶

imp system/manager file=tank log=tank fromuser=seapark touser=seapark_
imp system/manager file=tank log=tank fromuser=(seapark,amy)
touser=(seapark1, amy1)

6. 導入一個表

imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

7. 從多個文件導入

imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck, filesize=1G full=y

8. 使用參數文件

imp system/manager parfile=bible_tables.par
bible_tables.par參數文件:
#Import the sample tables used for the Oracle8i Database Administrator's
Bible. fromuser=seapark touser=seapark_ file=seapark log=seapark_import
參數文件示例見附錄

9. 增量導入

imp system./manager inctype= RECTORE FULL=Y FILE=A

不少情況下要先將表徹底刪除,然後導入。

四.參數說明

4.1、8i EXP常用選項
1、FULL,這個用於導出整個資料庫,在ROWS=N一起使用時,可以導出整個資料庫的結構。例如:
exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y
2、BUFFER和FEEDBACK,在導出比較多的數據時,我會考慮設置這兩個參數。例如:
exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT
3、FILL和LOG,這兩個參數分別指定備份的DMP名稱和LOG名稱,包括文件名和目錄,例子見上面。
需要說明的是,EXP可以直接備份到磁帶中,即使用FILE=/dev/rmt0(磁帶設備名),但是一般我們都不這么做,原因有二:一、這樣做的速度會慢很多,二、現在一般都是使用磁帶庫的,不建議直接對磁帶進行操作。至於沒有使用磁帶庫的朋友可以考慮和UNIX的TAR結合使用。
如果你真想使用EXP直接到磁帶,你可以參考Metalink文章「EXPORTING TO TAPE ON UNIX SYSTEMS」(文檔號:30428.1),該文中有詳細解釋。
4、COMPRESS參數將在導出的同時合並碎塊,盡量把數據壓縮到initial的EXTENT里,默認是N,一般建議使用。DIRECT參數將告訴EXP直接讀取數據,而不像傳統的EXP那樣,使用SELECT來讀取表中的數據,這樣就減少了SQL語句處理過程。一般也建議使用。不過有些情況下DIRECT參數是無法使用的。
5、如何使用SYSDBA執行EXP/IMP?
這是一個很現實的問題,有時候我們需要使用SYSDBA來執行EXP/IMP,如進行傳輸表空間的EXP/IMP,以及在9i下用SYS用戶來執行EXP/IMP時,都需要使用SYSDBA才可。我們可以使用下面方式連入EXP/IMP:
exp "'sys/sys as sysdba'" file=1.dmp tables=gototop.t rows=n
6、QUERY參數後面跟的是where條件,值得注意的是,整個where子句需要使用""括起來,where子句的寫法和SELECT中相同,如果是UNIX平台所有"和'都需要使用\u26469屏蔽它們的特殊含義:
exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query="where c1=20 and c2=gototop"
如果是windows平台,則使用下面的格式:
exp c/c@ncn file=c.dmp log=c.log tables=t query="""where id=1 and name='gototop'"""
4.2、8i IMP常用選項
1、FROMUSER和TOUSER,使用它們實現將數據從一個SCHEMA中導入到另外一個SCHEMA中。
2、IGNORE、GRANTS和INDEXES,其中IGNORE參數將忽略表的存在,繼續導入,這個對於需要調整表的存儲參數時很有用,我們可以先根據實際情況用合理的存儲參數建好表,然後直接導入數據。而GRANTS和INDEXES則表示是否導入授權和索引,如果想使用新的存儲參數重建索引,或者為了加快到入速度,我們可以考慮將INDEXES設為N,而GRANTS一般都是Y。
另外一個EXP/IMP都有的參數是PARFILE,它是用來定義EXP/IMP的參數文件,也就是說,上面的參數都可以寫在一個參數文件中,但我們一般很少使用。
4.4、Oracle9i EXP功能描述
Oracle9i EXP在原有的基礎上新增了部分新的參數,按功能主要分為以下幾個部分:
1、OBJECT_CONSISTENT - 用於設置EXP對象為只讀以保持對象的一致性。默認是N。
2、FLASHBACK_SCN和FLASHBACK_TIME - 用於支持FLASHBACK功能而新增。
3、RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT - 用於支持RESUMABLE空間分配而新增。
4、TTS_FULL_CHECK - 用於在傳輸表空間時使用依賴性檢查。
5、TEMPLATE - 用於支持iAS。
6、TABLESPACES - 設置表空間導出模式。個人覺得對於一般用戶而言,這個才是新增參數中最實用的一個,可以讓用戶在原來的FULL、OWNER、TABLES的基礎上多了一種選擇,使得EXP更加靈活。

五、不同版本的EXP/IMP問題?
一般來說,從低版本導入到高版本問題不大,麻煩的是將高版本的數據導入到低版本中,在Oracle9i之前,不同版本Oracle之間的EXP/IMP可以通過下面的方法來解決:
1、在高版本資料庫上運行底版本的catexp.sql;
2、使用低版本的EXP來導出高版本的數據;
3、使用低版本的IMP將資料庫導入到底版本資料庫中;
4、在高版本資料庫上重新運行高版本的catexp.sql腳本。
但在9i中,上面的方法並不能解決問題。如果直接使用底版本EXP/IMP會出現如下錯誤:
EXP-00008: ORACLE error %lu encountered
ORA-00904: invalid column name
這已經是一個公布的BUG,需要等到Oracle10.0才能解決,BUG號為2261,你可以到METALINK上去查看有關此BUG的詳細信息。
BUG歸BUG,我們的工作還是要做,在沒有Oracle的支持之前,我們就自己解決。在Oracle9i中執行下面的SQL重建exu81rls視圖即可。
CREATE OR REPLACE view exu81rls
(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)
AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname,
decode(bitand(r.stmt_type,1), 0,'', 'SELECT,')
|| decode(bitand(r.stmt_type,2), 0,'', 'INSERT,')
|| decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,')
|| decode(bitand(r.stmt_type,8), 0,'', 'DELETE,'),
r.check_opt, r.enable_flag,
DECODE(BITAND(r.stmt_type, 16), 0, 0, 1)
from user$ u, obj$ o, rls$ r
where u.user# = o.owner#
and r.obj# = o.obj#
and (uid = 0 or
uid = o.owner# or
exists ( select * from session_roles where role='SELECT_CATALOG_ROLE')
)
/
grant select on sys.exu81rls to public;
/

六、其他問題

本文只討論了Oracle8i和9i中的EXP/IMP的一些情況,對於之前的版本,在8.0.X中,除了QUERY參數不能用外,其它差別不大。針對沒有QUERY的情況,我們可以先在資料庫中使用查詢條件建立臨時中間表,然後使用EXP導出這個中間表即可。至於Oracle7因為目前使用的人較少,gototop不打算在此做詳細解釋了,如果讀者朋友有需求,你可以參考Metalink文檔:「Overview of Export and Import in Oracle7」(文檔號:61949.1)。關於EXP/IMP的詳細參數信息你可以通過EXP/IMP HELP=Y來獲得。
另外關於傳輸表空間的更多信息可以參考下面的Metelink文檔,本文不再詳述。
[NOTE:77523.1] Transportable Tablespaces -- An Example to setup and use.
[NOTE:100698.1] Perform tablespace point-in-time recovery using Transportable Tablespace.
在進行並行EXP/IMP的時候,如果IMP過程建索引的話不建議同時運行5個以上的IMP,如果你想加快速度,可以在IMP的時候不建索引,這樣只要內存允許,可以多跑幾個,然後是SQL腳本創建需要的索引。

注意:
操作者要有足夠的許可權,許可權不夠它會提示。
資料庫是否可以連上, 可以用tnsping TestDB 來獲得資料庫 TestDB 能否連上。

附錄一:
給用戶增加導入數據許可權的操作
第一, 啟動sql*puls
第二,以system/manager登陸
第三,create user 用戶名 IDENTIFIED BY 密碼(如果已經創建過用戶,這步可以省略)
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用戶名字
第五, 運行-cmd-進入dmp文件所在的目錄,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp

附錄二:
Oracle 不允許直接改變表的擁有者, 利用Export/Import可以達到這一目的.
先建立import9.par,
然後,使用時命令如下:imp parfile=/filepath/import9.par
例 import9.par 內容如下:
FROMUSER=TGPMS
TOUSER=TGPMS2 (註:把表的擁有者由FROMUSER改為TOUSER,FROMUSER和TOUSER的用戶可以不同)
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
file==/backup/ctgpc_20030623.dmp
log==/backup/import_20030623.log

閱讀全文

與grants在imp命令相關的資料

熱點內容
linux樹形目錄 瀏覽:727
平方根的簡單演算法 瀏覽:898
千牛訂單頁面信息加密取消 瀏覽:558
單片機自製紅外遙控燈 瀏覽:719
伺服器最小配置怎麼弄 瀏覽:853
ibm伺服器硬體如何升級 瀏覽:923
全球程序員節點贊 瀏覽:986
php函數傳遞數組 瀏覽:631
人工峰群演算法的目標函數 瀏覽:468
如何刪加密文檔 瀏覽:105
塗鴉app一鍵執行如何刪除 瀏覽:756
安卓手機如何打開fr3文件 瀏覽:743
壓縮袋8絲和14絲是什麼意思 瀏覽:647
程序員大咖java 瀏覽:70
蘋果手機文檔安卓上怎麼打開 瀏覽:527
如何做淘寶代理伺服器 瀏覽:672
gz壓縮文件夾 瀏覽:179
字母h從右往左跑的c語言編程 瀏覽:137
安卓手機如何擁有蘋果手機橫條 瀏覽:771
業余編程語言哪個好學 瀏覽:151