oracle資料庫中使用imp和exp命令
最近幾天由於專案需要搭建新的開發環境,需要處理資料。本來是很簡單的事情,但是由於資料庫需要使用線上環境的資料,變得有些麻煩,主要是以前一些資料庫的處理都是小資料量,一個命令很短就執行完畢了,而這次資料庫檔案在200G左右,資料備份和恢復,以及備份檔案的轉移都成了問題,因為檔案相對比較大了,在檔案備份、轉移、恢復的時間就成倍的增長,不能再向以前一樣始終在本地客戶端操作了。
我將描述一下我自己的操作過程,和其中積累的經驗。
資料庫資訊如下:
使用者: SYSTEM密碼:ORACLE
使用者:TEST密碼:ORACLE
SID:orcl
第一步資料庫的備份:
1、資料匯出:
exp的常用方法如下:
A、
/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、將資料庫中的表table1、table2匯出
命令如下:
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資料庫中commit和rollback命令
一個數據庫事務起始於一個SQL語句,中止於以下4種事件之一: COMMIT或ROLLBACK語句 DDL/DCL隱式提交 使用者退出時自動提交 系統強行關閉時取消事務 事務結束後,下一條SQL語句將開始一個新的事務。 語句 功能 COMMIT 結束當前事務,並將所有資
oracle資料庫中使用imp和exp命令
最近幾天由於專案需要搭建新的開發環境,需要處理資料。本來是很簡單的事情,但是由於資料庫需要使用線上環境的資料,變得有些麻煩,主要是以前一些資料庫的處理都是小資料量,一個命令很短就執行完畢了,而這次資料庫檔案在200G左右,資料備份和恢復,以及備份檔案的轉移都成了問題,因為檔案
imp和exp命令詳解
Export 和 Import 是一對讀寫 Oracle 資料的工具。Export 將 Oracle 資料庫 中的資料輸出到作業系統檔案中, Import 把這些檔案中的資料讀到Oracle 資料 庫中。 1. Export/Import
Oracle資料庫中truncate命令和delete命令的區別
首先講一下,truncate命令: 語法:TRUNCATE TABLE table; 表格裡的資料被清空,儲存空間被釋放。 執行後會自動提交,包括之前其它未提交的會話,因而一旦清空無法回退。 只有表格的建立者或者其他擁有刪除任意表格許可權的使用者(如DBA)才能清空表格。 TRUNCATE TABL
Oracle用imp和exp匯入匯出資料庫
用 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.ora和tnsnames.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 Imp和exp以及匯入常見的錯誤
一 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個小