程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> 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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved