萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> 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: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

copyright © 萬盛學電腦網 all rights reserved