程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 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、zy_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: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_20120611.dmp
    log==/backup/import_20120611.log *
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved