在命令行中操作Oracle數據庫

sqlplus 命令的使用:

sqlplus NET3_IPS_HOTPAY/NET3_IPS_HOTPAY@HOTYEDB  @NET3_IPS_HOTPAY.sql (自動執行sql文件中的腳本)
 

 

exp 數據導出命令的使用 和 imp 數據導出命令的使用

 

rem----------------運行這個批處理的前提是:1設置路由;      2設置Oracle的監聽器ECPDB和HOTYEDB-------------------

echo "正在從生產系統導出HOTPAY的表"
EXP username/password@ECPDB FILE="IPS_Hotpay/Hotpay.DMP" LOG="IPS_Hotpay/exp_Hotpay.log" TABLES=('HOTPAY.ACCOUNT', 'HOTPAY.MERCHANT_ACCOUNT', 'HOTPAY.SUB_ACCOUNT', 'HOTPAY.SUB_ACCOUNT_TYPE') FEEDBACK=1000

echo "正在從生產系統導出EWALLET的表" 
EXP username/password@ECPDB FILE="IPS_Hotpay/IPS.DMP" LOG="IPS_Hotpay/exp_IPS.log" TABLES=('EWALLET.INSTITUTE_TRANS_CODE', 'EWALLET.MEMBER_INFO', 'EWALLET.POINT', 'EWALLET.POINT_CODE', 'EWALLET.POINT_TYPE')FEEDBACK=1000

echo "把HOTPAY.DMP導入到數據庫IPS_HOTPAY"
imp IPS_HOTPAY/IPS_HOTPAY@HOTYEDB FILE="IPS_Hotpay/Hotpay.DMP" LOG="IPS_Hotpay/imp_Hotpay.log" FROMUSER=HOTPAY TOUSER=IPS_HOTPAY IGNORE=Y FEEDBACK=1000

echo "把IPS.DMP導入到數據庫IPS_HOTPAY"
imp username/password@HOTYEDB FILE="IPS_Hotpay/IPS.DMP" LOG="IPS_Hotpay/imp_IPS.log" FROMUSER=EWALLET TOUSER=IPS_HOTPAY IGNORE=Y FEEDBACK=1000

echo "創建IPS_hotpay的索引"
sqlplus username/password@HOTYEDB   @IPS_Hotpay/IPS_HOTPAY.sql
 

 

 

 

批處理調用批處理的例子

@echo off
rem-----------把IPS和Hotpay的數據導入到本地的遷移數據庫中--------------
call 1_IPS_Hotpay.bat

echo --------修改遷移前本地數據庫的Sequence值----------
call 2_Before_Sequence.bat

echo --------本地進行數據遷移---------
call 3_IPSHotpayToNet3.bat

echo --------更新生產系統上的數據庫----------
call 4_Update_Pro_DB.bat

echo --------把遷移好的數據導入到生產系統數據庫----------
call 5_Move_Data_to_Pro.bat

echo --------同步生產系統上的Sequence值----------
call 6_After_Sequence.bat
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Oracle數據導入導出imp/exp就相當於oracle數據還原與備份。exp命令可以把數據從遠程數據庫服務器導出到本地的dmp文件,imp命令可以把dmp文件從本地導入到遠處的數據庫服務器中。 利用這個功能可以構建兩個相同的數據庫,一個用來測試,一個用來正式使用。
 
執行環境:可以在SQLPLUS.EXE或者DOS(命令行)中執行,
 DOS中可以執行時由於 在oracle 8i 中  安裝目錄ora81BIN被設置爲全局路徑,
 該目錄下有EXP.EXE與IMP.EXE文件被用來執行導入導出。
 oracle用java編寫,SQLPLUS.EXE、EXP.EXE、IMP.EXE這兩個文件有可能是被包裝後的類文件。
 SQLPLUS.EXE調用EXP.EXE、IMP.EXE所包裹的類,完成導入導出功能。
 
下面介紹的是導入導出的實例。
數據導出:
 1 將數據庫TEST完全導出,用戶名system 密碼manager 導出到D:daochu.dmp中
   exp system/manager@TEST file=d:daochu.dmp full=y
 2 將數據庫中system用戶與sys用戶的表導出
   exp system/manager@TEST file=d:daochu.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:daochu.dmp tables=(table1) query=" where filed1 like '00%'"
 
  上面是常用的導出,對於壓縮,既用winzip把dmp文件可以很好的壓縮。
  也可以在上面命令後面 加上 compress=y 來實現。

數據的導入
 1 將D:daochu.dmp 中的數據導入 TEST數據庫中。
   imp system/manager@TEST  file=d:daochu.dmp
   imp aichannel/aichannel@HUST full=y  file=d:datanewsmgnt.dmp ignore=y
   上面可能有點問題,因爲有的表已經存在,然後它就報錯,對該表就不進行導入。
   在後面加上 ignore=y 就可以了。
 2 將d:daochu.dmp中的表table1 導入
 imp system/manager@TEST  file=d:daochu.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 - Production on 星期四 2月 16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation.  All rights reserved.

連接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

經由常規路徑導出由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

以下我自己補充:
1.在導入導出命令中加上feedback=1000可以讓過程顯示一個不斷增多的“...”,以改變以往的閃爍的光標

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

E:\>exp help=y

通過輸入 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)
ROWS 導出數據行 (Y)
PARFILE 參數文件名
CONSTRAINTS 導出限制 (Y)
CONSISTENT 交叉表一致性
LOG 屏幕輸出的日誌文件
STATISTICS 分析對象 (ESTIMATE)
DIRECT 直接路徑 (N)
TRIGGERS 導出觸發器 (Y)
FEEDBACK 顯示每 x 行 (0) 的進度
FILESIZE 各轉儲文件的最大尺寸
QUERY 選定導出表子集的子句

下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)
TABLESPACES 將傳輸的表空間列表


E:\>imp help=y

可以通過輸入 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)
ANALYZE 執行轉儲文件中的 ANALYZE 語句 (Y)
FEEDBACK 顯示每 x 行 (0) 的進度
TOID_NOVALIDATE 跳過指定類型 id 的校驗
FILESIZE 各轉儲文件的最大尺寸
RECALCULATE_STATISTICS 重新計算統計值 (N)

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章