Rex

          ——生命不止,奮斗不息。
          posts - 27, comments - 8, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          oracle數據庫的部分指令

          Posted on 2006-10-20 14:37 W.R 閱讀(972) 評論(0)  編輯  收藏 所屬分類: 支持技術

          導入命令:
            將D:\daochu.dmp 中的數據導入 TEST數據庫中
              imp system/triman@CTL file=file=d:\daochu.dmp ignore=y
            將d:\daochu.dmp中的表table1 導入
              imp system/triman@CTL  file=d:\daochu.dmp  tables=(table1)
          導出命令:
            將數據庫CTL完全導出,用戶名system 密碼triman 導出到D:\daochu.dmp中
              exp system/triman@CTL file=d:\daochu.dmp full=y
            將數據庫中system用戶與sys用戶的表導出
              exp system/triman@CTL file=d:\daochu.dmp owner=(system,sys)
            將數據庫中的表GIS_IDD_INFO、GIS_IDD_AID導出
              exp system/triman@CTL file=d:\data\gisidd.dmp tables=(GIS_IDD_INFO,GIS_IDD_AID)
            將數據庫中的表table1中的字段filed1以"00"打頭的數據導出
              exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"       
              tnsping TEST
            壓縮參數 compress=y
             
          1)“完全”增量導出(Complete)

              即備份整個數據庫,比如:

                  $exp system/manager inctype=complete file=990702.dmp

               (2)“增量型”增量導出

                  備份上一次備份后改變的數據。比如:

                  $exp system/manager inctype=incremental file=990702.dmp

               (3)“累計型”增量導出(Cumulative)

                  累計型導出方式只是導出自上次“完全” 導出之后數據庫中變化了的信息。比如:

                  $exp system/manager inctype=cumulative file=990702.dmp

          數據導出:
           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:\data\newsmgnt.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%'\"
          數據的導入
           1 將D:\daochu.dmp 中的數據導入 TEST數據庫中。
             imp system/manager@TEST  file=d:\daochu.dmp
             imp aichannel/aichannel@HUST full=y  file=file= d:\data\newsmgnt.dmp ignore=y
             上面可能有點問題,因為有的表已經存在,然后它就報錯,對該表就不進行導入。
             在后面加上 ignore=y 就可以了。
           2 將d:\daochu.dmp中的表table1 導入
           imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)
           
           基本上上面的導入導出夠用了。不少情況要先是將表徹底刪除,然后導入。
           
           注意:
           操作者要有足夠的權限,權限不夠它會提示。
           數據庫時可以連上的??梢杂胻nsping TEST 來獲得數據庫TEST能否連上。

          參數說明
          1. ignore參數
          Oracle在恢復數據的過程中,當恢復某個表時,該表已經存在,就要根據ignore參數的設置來決定如何操作。
          若ignore=y,Oracle不執行CREATE TABLE語句,直接將數據插入到表中,如果插入的記錄違背了約束條件,比如主鍵約束,則出錯的記錄不會插入,但合法的記錄會添加到表中。
          若ignore=n,Oracle不執行CREATE TABLE語句,同時也不會將數據插入到表中,而是忽略該表的錯誤,繼續恢復下一個表。
          2. indexes參數
          在恢復數據的過程中,若indexes=n,則表上的索引不會被恢復,但是主鍵對應的唯一索引將無條件恢復,這是為了保證數據的完整性。

          字符集轉換
          對于單字節字符集(例如US7ASCII),恢復時,數據庫自動轉換為該會話的字符集(NLS_LANG參數);對于多字節字符集(例如ZHS16CGB231280),恢復時,應盡量使字符集相同(避免轉換),如果要轉換,目標數據庫的字符集應是輸出數
          據庫字符集的超集。

          附錄一:
           給用戶增加導入數據權限的操作
           第一,啟動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 - 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
             imp可能出現的問題

          (1) 數據庫對象已經存在
          一般情況, 導入數據前應該徹底刪除目標數據下的表, 序列, 函數/過程,觸發器等;  
          數據庫對象已經存在, 按缺省的imp參數, 則會導入失敗
          如果用了參數ignore=y, 會把exp文件內的數據內容導入
          如果表有唯一關鍵字的約束條件, 不合條件將不被導入
          如果表沒有唯一關鍵字的約束條件, 將引起記錄重復

          (2) 數據庫對象有主外鍵約束
                 不符合主外鍵約束時, 數據會導入失敗
                 解決辦法: 先導入主表, 再導入依存表
          disable目標導入對象的主外鍵約束, 導入數據后, 再enable它們
          (3)   權限不夠
          如果要把A用戶的數據導入B用戶下, A用戶需要有imp_full_database權限

          (4)   導入大表( 大于80M ) 時, 存儲分配失敗
                 默認的EXP時, compress = Y, 也就是把所有的數據壓縮在一個數據塊上.
                 導入時, 如果不存在連續一個大數據塊, 則會導入失敗.
                 導出80M以上的大表時, 記得compress= N, 則不會引起這種錯誤.

          (5) imp和exp使用的字符集不同
                 如果字符集不同, 導入會失敗, 可以改變unix環境變量或者NT注冊表里NLS_LANG相關信息.
                 導入完成后再改回來.

          (6) imp和exp版本不能往上兼容
          imp可以成功導入低版本exp生成的文件, 不能導入高版本exp生成的文件
          根據情況我們可以用
          $ imp username/password@connect_string
          說明: connect_string 是在/ORACLE_HOME/network/admin/tnsnames.ora
              定義的本地或者遠端數據庫的名稱
          注意事項:
          UNIX: /etc/hosts            要定義本地或者遠端數據庫服務器的主機名
          win98:     windows\hosts              和IP地址的對應關系  

          主站蜘蛛池模板: 横峰县| 高密市| 金乡县| 阳东县| 汪清县| 怀化市| 赞皇县| 炎陵县| 元谋县| 博客| 闽清县| 东源县| 招远市| 汝城县| 八宿县| 镇雄县| 南充市| 九寨沟县| 万宁市| 炎陵县| 万荣县| 迁安市| 鹤峰县| 苍梧县| 晋中市| 崇文区| 德阳市| 绥化市| 军事| 鹤壁市| 台南市| 安乡县| 洱源县| 牙克石市| 论坛| 赣州市| 布拖县| 扎囊县| 灵台县| 保定市| 乌拉特中旗|