oracle數據庫中使用imp和exp命令

         最近幾天由於項目需要搭建新的開發環境,需要處理數據。本來是很簡單的事情,但是由於數據庫需要使用在線環境的數據,變得有些麻煩,主要是以前一些數據庫的處理都是小數據量,一個命令很短就執行完畢了,而這次數據庫文件在200G左右,數據備份和恢復,以及備份文件的轉移都成了問題,因爲文件相對比較大了,在文件備份、轉移、恢復的時間就成倍的增長,不能再向以前一樣始終在本地客戶端操作了。

   我將描述一下我自己的操作過程,和其中積累的經驗。

   數據庫信息如下:

   用戶: SYSTEM   密碼:ORACLE

   用戶:TEST   密碼:ORACLE

   SIDorcl

   第一步數據庫的備份:

1、  數據導出:

exp的常用方法如下:

A、   將數據庫orcl完全導出,用戶名system 密碼oracle 導出到

/data/oracle/myoraclebak.dmp中。

命令如下:

       exp system/oracle@orcl  file=/data/oracle/myoraclebak.dmp full=y log=exp.log

B、   將數據庫中system用戶與test用戶的表導出

命令如下:

       exp system/oracle@orcl  file=/data/oracle/myoraclebak.dmp owner=(system,test) log=exp.log

C、   將數據庫中的表table1table2導出

命令如下:

       exp test/oracle@orcl file=/data/oracle/myoraclebak.dmp tables=(table1,table2)  log=exp.log

D、   將數據庫中的表table1中的字段filed1"00"打頭的數據導出

命令如下:

       exp  test/oracle@orcl file=/data/oracle/myoraclebak.dmp tables=(table1) query=" where filed1 like '00%'" log=exp.log

E、    將數據庫中test用戶的表導出到多個文件,要求單個文件大小不允許超過2000M

命令如下:

       exp parfile=username.par file=/data/oracle/myoraclebak1.dmp, /data/oracle/myoraclebak2.dmp filesize=2000M  log=exp.log

       參數文件username.par內容

       userid=test/oracle@orcl

       buffer=8192000

       compress=n

       grants=y

       說明:username.par爲導出工具exp用的參數文件,裏面具體參數可以根據需要去修改 filesize指定生成的二進制備份文件的最大字節數。

F、    增量導出

命令如下:

 exp   system/manager@svr_ora   inctype=incremental   file=d:/incremental.dmp

2、  我使用的命令如下:

more exp.sh

exp  test/oracle@orcl  file=/data/oracle/myoraclebak.dmp full=y log=exp.log

nohup ./exp sh &

進程運行時間24小時左右,最終myoraclebak.dmp文件大小32G左右。

第二步數據庫導入:

3、  數據的導入

A、 myoraclebak.dmp 中的數據導入 neworcl數據庫中。

命令如下:

imp test/oracle@neworcl  file=myoraclebak.dmp full=y ignore=y log=imp.log buffer=999999

在後面加上 ignore=y 是忽略警告錯誤。

B、 myoraclebak.dmp中的表table1 導入

命令如下:

imp test/oracle@neworcl  file= myoraclebak.dmp  tables=(table1) ignore=y log=imp.log buffer=999999

C、 導入一個或一組指定用戶所屬的全部表、索引和其他對象

命令如下:

imp system/oracle@neworcl file=myoraclebak.dmp log=imp.log fromuser=(test1,testuser2)

D、 將一個用戶所屬的數據導入另一個用戶

命令如下:

imp system/oracle@neworcl file=myoraclebak.dmp log=imp.log fromuser=test touser=testuser2

E、  從多個文件導入

命令如下:

imp system/oracle@neworcl file=(myoraclebak1.dmp, myoraclebak2.dmp) log= imp.log, filesize=1G full=y

F、  增量導入

命令如下:

imp   system/manager@client_data   inctype=restore   ignore=y   full=y   file=d:/incremental.dmp

4、  我使用的命令如下:

more imp.sh

imp test/oracle@orcl file=myoraclebak.dmp full=y ignore=y log=imp.log buffer=999999

 nohup ./imp.sh &

 進程運行時間10小時左右。導入完畢後,數據佔用空間200G左右

備註1

1、給用戶增加導入數據權限的操作

第一,啓動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 用戶名字

2、創建表空間腳本

--need change url :'/mnt/data/database/SBAP_CONF.DBF',size :2048M

CREATE TABLESPACE SBAP_CONF DATAFILE

'/mnt/data/database/SBAP_CONF.DBF' SIZE 2048M AUTOEXTEND ON NEXT 2048M MAXSIZE UNLIMITED

NOLOGGING

PERMANENT

EXTENT MANAGEMENT LOCAL

BLOCKSIZE 8K

SEGMENT SPACE MANAGEMENT AUTO

FLASHBACK OFF;

執行過程如下:

 

[oracle@REHL-oracle ~]$ sqlplus

 

SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 06:57:31 2009

 

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

 

Enter user-name: /as sysdba

 

Connected to:

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production

With the Partitioning, OLAP and Data Mining options

 

SQL> @/data/tablespace.sql

備註2

DROP TABLE mytable

TRUNCATE TABLE (schema)table_name

Oracle10g 回收站及徹底刪除table : drop table xx purge

drop後的表被放在回收站(user_recyclebin)裏,而不是直接刪除掉。這樣,回收站裏的表信息就可以被恢復,或徹底清除。

1.通過查詢回收站user_recyclebin獲取被刪除的表信息,然後使用語句

flashback table <user_recyclebin.object_name or user_recyclebin.original_name> to before drop [rename to <new_table_name>];

將回收站裏的表恢復爲原名稱或指定新名稱,表中數據不會丟失。

若要徹底刪除表,則使用語句:drop table <table_name> purge;

2.清除回收站裏的信息

清除指定表:purge table <table_name>;

清除當前用戶的回收站:purge recyclebin;

清除所有用戶的回收站:purge dba_recyclebin;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章