1. 程式人生 > >oracle資料庫中使用imp和exp命令

oracle資料庫中使用imp和exp命令

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

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

資料庫資訊如下:

使用者: SYSTEM密碼:ORACLE

使用者:TEST密碼:ORACLE

SIDorcl

第一步資料庫的備份:

1、資料匯出:

exp的常用方法如下:

A、

將資料庫orcl完全匯出,使用者名稱system 密碼oracle 匯出到

/data/oracle/myoraclebak.dmp中。

命令如下:

exp system/[email protected]=/data/oracle/myoraclebak.dmp full=y log=exp.log

B、將資料庫中system使用者與test使用者的表匯出

命令如下:

exp system/[email protected]=/data/oracle/myoraclebak.dmp owner=(system,test) log=exp.log

C、將資料庫中的表table1table2匯出

命令如下:

exp test/[email protected] file=/data/oracle/myoraclebak.dmp tables=(table1,table2) log=exp.log

D、將資料庫中的表table1中的欄位filed1"00"打頭的資料匯出

命令如下:

exp test/[email protected] 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/[email protected]

buffer=8192000

compress=n

grants=y

說明:username.par為匯出工具exp用的引數檔案,裡面具體引數可以根據需要去修改 filesize指定生成的二進位制備份檔案的最大位元組數。

F、增量匯出

命令如下:

exp   system/[email protected]_ora   inctype=incremental   file=d:/incremental.dmp

2、我使用的命令如下:

more exp.sh

exp test/[email protected]=/data/oracle/myoraclebak.dmp full=y log=exp.log

nohup ./exp sh &

程序執行時間24小時左右,最終myoraclebak.dmp檔案大小32G左右。

第二步資料庫匯入:

3、資料的匯入

A、myoraclebak.dmp 中的資料匯入 neworcl資料庫中。

命令如下:

imp test/[email protected] file=myoraclebak.dmp full=y ignore=y log=imp.log buffer=999999

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

B、myoraclebak.dmp中的表table1 匯入

命令如下:

imp test/[email protected] file= myoraclebak.dmptables=(table1) ignore=y log=imp.log buffer=999999

C、匯入一個或一組指定使用者所屬的全部表、索引和其他物件

命令如下:

imp system/[email protected] file=myoraclebak.dmp log=imp.log fromuser=(test1,testuser2)

D、將一個使用者所屬的資料匯入另一個使用者

命令如下:

imp system/[email protected] file=myoraclebak.dmp log=imp.log fromuser=test touser=testuser2

E、從多個檔案匯入

命令如下:

imp system/[email protected] file=(myoraclebak1.dmp, myoraclebak2.dmp) log= imp.log, filesize=1G full=y

F、增量匯入

命令如下:

imp   system/[email protected]_data   inctype=restore   ignore=y   full=y   file=d:/incremental.dmp

4、我使用的命令如下:

more imp.sh

imp test/[email protected] 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 SESSIONTO 使用者名稱字

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;

執行過程如下:

[[email protected] ~]$ 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;

相關推薦

Oracle資料庫commitrollback命令

一個數據庫事務起始於一個SQL語句,中止於以下4種事件之一: COMMIT或ROLLBACK語句 DDL/DCL隱式提交 使用者退出時自動提交 系統強行關閉時取消事務 事務結束後,下一條SQL語句將開始一個新的事務。 語句 功能 COMMIT 結束當前事務,並將所有資

oracle資料庫使用impexp命令

最近幾天由於專案需要搭建新的開發環境,需要處理資料。本來是很簡單的事情,但是由於資料庫需要使用線上環境的資料,變得有些麻煩,主要是以前一些資料庫的處理都是小資料量,一個命令很短就執行完畢了,而這次資料庫檔案在200G左右,資料備份和恢復,以及備份檔案的轉移都成了問題,因為檔案

impexp命令詳解

 Export  和  Import 是一對讀寫 Oracle 資料的工具。Export  將  Oracle 資料庫 中的資料輸出到作業系統檔案中,  Import  把這些檔案中的資料讀到Oracle  資料 庫中。 1.        Export/Import   

Oracle資料庫truncate命令delete命令的區別

首先講一下,truncate命令: 語法:TRUNCATE  TABLE  table; 表格裡的資料被清空,儲存空間被釋放。 執行後會自動提交,包括之前其它未提交的會話,因而一旦清空無法回退。 只有表格的建立者或者其他擁有刪除任意表格許可權的使用者(如DBA)才能清空表格。 TRUNCATE  TABL

Oracleimpexp匯入匯出資料庫

用 imp 和 exp 命令匯入匯出資料庫 注: 在splplus環境下執行時,在命令前加 ! 號,這樣  SQL> !exp ...   和  SQL> !imp ... 基本語法和例項:     1. EXP       有三種主要的方式(完全、使用

Oracle資料庫複製表結構表資料

1. 複製表結構及其資料: create table new_table as select * from old_table 2. 只複製表結構: create table new_tableas select * from old_tablewhere 1=2; 或者:

兩個Oracle資料庫的表的結構資料的複製方法

1. 複製表結構及其資料: create table table_name_new as select * from table_name_old 2. 只複製表結構: create table table_name_new as select * from table_name_old

日期型別的資料在Oracle資料庫的儲存查詢

使用Oracle資料庫,mybatis的對映檔案中日期型別的資料,如果定義為<result column =“UPDATED_DATE" jdbcType =“DATE” property =“updatedDate”/>,即使在後臺你為日期賦予年月日時分秒,但儲存到資料庫中將只

oracle資料庫選擇桌面類伺服器類的區別

在以前的學習過程中,一直用到的都是sql server資料庫,之後接觸到了oracle資料庫。在安裝過程中,有兩個選項,桌面類和伺服器類,當時按照網上的安裝步驟,選擇了桌面類,後來公司裡他們安裝都是用的伺服器類,後來查了查兩者的區別。 桌面類――這種安裝方式一般適用於桌上型電腦和筆記本。它包含一

Oracle資料庫的listener.oratnsnames.ora的作用

listener.ora檔案 listener.ora是伺服器端用的,oracle監聽程式,就是讀的這個檔案,裡面有oracle伺服器端的socket監聽地址和埠(如果要想區域網中的其他人,能夠訪問我本地的oracle,要把我本機的地址寫進去,如10.11.19.19

Oracle資料庫的函式、檢視索引

1. Oracle函式 Oracle SQL 提供了用於執行特定操作的專用函式。這些函式大大增強了 SQL 語言的功能。函式可以接受零個或者多個輸入引數,並返回一個輸出結果。 Oracle 資料庫中主要使用兩種型別的函式: 1. 單行函式: 對每一個函式應用在表的記錄中時,只能輸入一

java.sql.date 跟java.util.date的區別 怎麼在oracle資料庫顯示時分秒

java.sql.Date,java.sql.Time和java.sql.Timestamp三個都是java.util.Date的子類(包裝類)。 java.sql.Date是java.util.Date的子類,是一個包裝了毫秒值的瘦包裝器,允許 JDBC 將毫秒值標識

oracle Impexp以及匯入常見的錯誤

一 1) 資料庫物件已經存在 一般情況, 匯入資料前應該徹底刪除目標資料下的表, 序列, 函式/過程,觸發器等;    資料庫物件已經存在, 按預設的imp引數, 則會匯入失敗  如果用了引數ignore=y, 會把exp檔案內的資料內容匯入 如果表有唯一關鍵字的約束條件,

Oracle資料庫序列(SEQUENCE)的用法例項需求

在Oracle資料庫中,什麼是序列呢?它的用途是什麼?序列(SEQUENCE)其實是序列號生成器,可以為表中的行自動生成序列號,產生一組等間隔的數值(型別為數字)。其主要的用途是生成表的主鍵值,可以在插入語句中引用,也可以通過查詢檢查當前值,或使序列增至下一個值。 建立

Oracle資料庫的系統引數(包括隱藏廢棄的)

Oracle資料庫系統根據初始化引數檔案init.ora中設定的引數來配置自身的啟動,每個例項在啟動之前,首先讀取這些引數檔案中設定的不同引數。Oracle系統中的引數,根據系統使用情況可以簡單分為兩大類,普通引數,也就是Oracle系統正常使用的一些引數,另外一類就是特殊

使用c++Ado向Oracle資料庫插入圖片

    最近因為專案需要,需要將圖片插入至Oracle,現簡單總結如下:     1.引入ado #import "C:\\Program Files\\Common Files\\System\\ado\\msado15.dll" no_namespace rename(

更改oracle資料庫某個表的某個欄位的資料型別長度

不廢話需求:在plsql中更改oracle資料庫中的info_agency表中的county欄位的資料型別 為varchar 長度為255實現:alter TABLE INFO_AGENCY MODIFY (county VARCHAR(255));親用 則 可用

Oracle資料庫資料操作事務控制以及鎖

表資料的操作(DML):     插入:     修改:     刪除:     合併:大資料操作的時候,資料倉庫      插入:使用values只能插入一行資料     插入空值:         1)不寫         2)插入空串         3)null

oracle資料庫表備份表恢復 怎樣將Oracle一張表的多個欄位更新到另一張表

對於比較簡單的表,資料量不是特別多的表,可以使用簡單的sql語句來進行備份create table T_FA_Cat_20121207 as select * from T_FA_Cat 建立一個新表,把資料儲存起來 insert into  T_FA_Cat  sele

Oracle資料庫關於日期時間欄位型別

Oracle資料庫 與日期有關的有三種類型:date,timestamp與interval。DATE和TIMESTAMP型別儲存精度可變的固定日期/時間,二者區別是,後者秒可以精確到小數,另外還可以有時區之分。。INTERVAL型別可以很容易地儲存一個時間量,如“8個小