1. 程式人生 > >oracle 11g 資料庫表空間建立與資料匯入匯出

oracle 11g 資料庫表空間建立與資料匯入匯出

** oracle資料庫中進行資料的匯入匯出時要在cmd中進行而不是在sqlplus中進行操作!

(1)向oracle資料庫中匯入完整的資料庫(字尾名:dmp)

     首先進入cmd,輸入sqlplus /nolog執行oracle自帶程式,然後輸入conn /as sysdba,以資料庫管理員(dba)的身份連結到後臺資料庫 ,也就是進入資料庫建立表空間,建立使用者並將這個表空間授權給這個使用者,並且給這個使用者授予dba,connect ,resource 等許可權,在退出早cmd或重新開啟視窗倒cmd進行imp 命令匯入。

       

 step1:  建立臨時表空間(取名為:libsys_temp)

        create temporary tablespacelibsys_temp

                    tempfile 'D:\oracle\libsys_temp.dbf' 

  // 指定空間存放路徑

                    size  1000M                                  

 //為臨時表空間分配磁碟空間

                    autoextend on    next 10M             

                  maxsize 2048M                              //若存入的資料量超過了分配的空間大小,

                                                                     //則以每次新增10M的大小增大表間,但最大為2048M 

                                                                    // 而也可以使用unlimited 沒有最大值的限制。

          

  extent management local;                            //設定表空間的區管理為本地管理,為的是減少分配extent的時

                                                                       //候產生的內部遞迴sql,提高資料庫分配空間的效率.

       

 step2: 建立資料表空間,用於儲存匯入的資料庫中的所有資料(取名:libsys_data)

       create tablespace libsys_data

                    logging    //指明匯入過程記入日誌中

                   datafile   'D:\oracle\libsys_ data.dbf'      //指定資料庫儲存的路徑

                   size 10240M   //注意表空間應足夠大,否則匯入將出錯!

                   autoextend on

                   next 100M maxsize 20480M

                   extent management local;

      

step3: 建立使用者並指定表空間(需擁有dba許可權)

 

        createuser libsys  identified by abc123   //設定使用者名稱:libsys,碼:abc123.

                default tablespace libsys _data  //為使用者指定剛剛建立的表空間libsys_data, 以便儲存與此使用者相關的所有資料.

               temporary tablespace libsys_temp;   //為使用者指定臨時表空間libsys_temp,以提高資料庫執行效率.      

    

  step4:  給使用者授權(需授予dba,connectresource三個許可權,否則無法完成資料庫匯入)

            grant dba,connect,resource to  libsys ;

 

   step5:  將拷貝來的完整的資料庫檔案(此處為:'libsys.dmp')匯入到自己機器中的oracle資料庫中

         imp  libsys/abc123   file='D:\libsys.dmp'  full=y   ignore=y; 

              //full=y表示全部匯入,ignore=y表示忽略資料庫中已存在的表,否則可能出錯。如果有資料則不會更改而   如果沒有則會進行修改。

     (特別注意:在進行step5之前,需要輸入“exit”命令退出並返回到'cmd'命令後,才能做匯入匯出操作!!!!)

      另外:若只想將資料庫dmp檔案中的部分表(此處為:item)匯入,則只需加上表名即可,方法如下:

          imp libsys/abc123file='D:\libsys.dmp'  tables=(item);      //其中的itemlibsys.dmp資料庫檔案中的一張表物件.

 

     (2)oracle資料庫中的資料匯出

         A. 匯出完整的資料庫(此處資料庫為:libsys_data):

            exp libsys/abc123 file='D:\oracle\libsys.dmp' full=y;  //full=y表示全部匯出.

         B. 將指定使用者的資料表匯出(此處為:使用者xdw和使用者newuser)

             explibsys/abc123  file='D:\oracle\libsys.dmp'  owner=(xdw,newuser);

         C.匯出指定的資料庫中的表(此處為:student表和teacher表):

            exp libsys/abc123 file='D:\oracle\libsys.dmp' tables=(student,teacher);

         D.匯出資料庫中表的指定欄位(此處為:學生姓名中的姓為"")的資料(此處為:student):

            exp libsys/abc123 file='D:\oracle\libsys.dmp' tables=(student) query=\"where studentNamelike '%'\";