【dump文件】dmp文件導入到Oracle數據庫

2010年5月12日

SQL> alter user scott account unlock;

SQL> alter user scott identified by pan;

Oracle數據導入導出imp/exp就相當於oracle數據還原與備份。exp命令可以把數據從遠程數據庫服務器導出到本地的dmp文件,imp命令可以把dmp文件從本地導入到遠處的數據庫服務器中。 利用這個功能可以構建兩個相同的數據庫,一個用來測試,一個用來正式使用。

執行環境:可以在SQLPLUS.EXE或者DOS(命令行)中執行,

DOS中可以執行時由於 在oracle 8i 中 安裝目錄\ora81\BIN被設置爲全局路徑,

該目錄下有EXP.EXE與IMP.EXE文件被用來執行導入導出。

oracle用java編寫,SQLPLUS.EXE、EXP.EXE、IMP.EXE這兩個文件有可能是被包裝後的類文件。 SQLPLUS.EXE調用EXP.EXE、IMP.EXE所包裹的類,完成導入導出功能。

下面介紹的是導入導出的實例。 數據導出:

1 將數據庫TEST完全導出,用戶名system 密碼sql 導出到D:\daochu.dmp中

exp system/sql@TEST file=d:\daochu.dmp full=y

2 將數據庫中system用戶與sys用戶的表導出

exp system/sql@TEST file=d:\daochu.dmp owner=(system,sys)

3 將數據庫中的表table1、table2導出

exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=( table1、table2)

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

exp system/sql@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"

上面是常用的導出,對於壓縮,既用winzip把dmp文件可以很好的壓縮。

也可以在上面命令後面 加上 compress=y 來實現。

數據的導入:

1 將D:\daochu.dmp 中的數據導入 TEST數據庫中。

imp system/sql@TEST file=d:\daochu.dmp

imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp ignore=y

上面可能有點問題,因爲有的表已經存在,然後它就報錯,對該表就不進行導入。

在後面加上 ignore=y 就可以了。

2 將d:\daochu.dmp中的表table1 導入

imp system/sql@TEST file=d:\daochu.dmp tables=(table1)

基本上上面的導入導出夠用了。不少情況要先是將表徹底刪除,然後導入。

2010年5月12日

析Oracle用戶解鎖命令的兩則實現方法 2009-11-3 作者: 編輯:崔曉帆 點擊進入論壇

關鍵詞:Oracle 解鎖

在安裝完Oracle 10g之後,想打開sql*plus來學習,然後按照書上的步驟用scott用戶來連接數據庫,可輸了好幾次都提示一個錯誤。

error: the account is locked

然後上網查了一下之後發現這個用戶被鎖定了,至於它爲什麼被鎖定,可能是下面幾個原因。

1.嘗試多次登錄未成功.(可能密碼不正確)

2.此用戶被管理員手工鎖定.

3.用戶密碼到期.未按時修改密碼.等等...

這個用戶肯定是登陸不了了,然後我用system這個用戶登錄,可是登了半天都沒有進去,又去網上查,網上面大都是關於 oracle 9i的用戶和密碼,後來我記得在安裝的時候就提示輸入了,用那個試了一下就連接上了,所以在oracle 10g的system這個用戶的密碼不是默認的,而是安裝的時候自己設定的。

拿system登錄進去之後,執行下面的命令:

SQL> alter user scott account unlock;

用戶已更改。

這樣就完成解鎖的操作。接下來,你還可以重新給scott這個用戶設定密碼

修改scott的登錄密碼

SQL> alter user scott identified by pan;

用戶已更改。

ok了,你再拿scott 和 pan來登錄就可以了!

SQL> conn scott/pan

2010年5月12日

已連接。

新裝完Oracle 10g後,用system/password可以正常登錄,而使用scott/tiger用戶卻不能登錄:

conn scott/tiger error:Oracle 10g the account is locked Oracle 10g the password has expired

原因:默認Oracle 10g的scott不能登陸。被禁用了。

解決方法:

首先確認已經安裝oracle 數據庫和客戶端

.在客戶端DOS下執行如下語句:

注意提示符號

c:\sqlplus /nolog sqlp\ conn sys/system@oracle10 as sysdba // sys爲當前的oracle 用戶 system 爲該用戶密碼 oracle10 爲SID # alter user soctt account lock; // 把 scott用戶鎖定 # alter user scott account unlock; //把scott用戶解鎖 # alter user scott identified by scott //修改scott用戶密碼爲 scott,scott用戶默認密碼爲 tiger

1 Dos下輸入C:\sqlplus /nolog

2 以DBA的身份登錄

conn sys/password as sysdba;

3 解鎖

alter user scott account unlock;

4 彈出一個修改密碼的對話框,修改密碼

conn scott/tiger SQL> conn sys/sys as sysdba; Connected. SQL> alter user scott account unlock; User altered. SQL> commit; Commit complete. SQL> conn scott/tiger//請輸入新密碼,並確認後OK Password changed Connected.

oracle 10g數據泵之impdp

2010年5月12日

(2008-08-18 08:47:50)

轉載

標籤: 分類: 數據庫

程序

it

要了解impdp,請先了解導出,我之前作過導出的筆記:oracle 10g數據泵之expdp。這兩個筆記也許只對程序員有用,通常用於把正式區的數據導入到測試區,對數據庫管理員也許幫助不大,他們使用這些工具大多是用於數據備份。

impdp可以將數據加載到整個數據庫、特定的方案(也就是用戶)、特定的表空間或者特定的表,也可以將表空間傳輸到數據庫。impdp支持網絡模式操作,即從另一個數據庫加載數據。

使用impdp導入數據

1.指定轉儲文件(存放導出數據的文件)存放的目錄

SQL>connect sys/password as sysdba;

SQL>create directory dump_dir as ?d:\dump?;

2.使用impdp命令

開始-->運行-->cmd

impdp username/password parameter1[,parameter2,….]

其中,username表示用戶名;password表示用戶密碼;parameter1和parameter2表示參數。參數的類型有近40個,可以使用命令impdp help=y查看所有參數和參數的含義。下面介紹一些對導入數據庫和表需要的常用參數,它們的含義和在expdp中的含義完全相同。

content :指定導入的內容。語法格式:content={all| data_only|metadate_only}。其中all表示導入對象定義及其數據,data_only表示只導入對象數據,metadate_only表示只導入對象定義。默認爲all

directory:指定轉儲文件和日誌文件所在的默認位置(也就是保存數據的文件位置)。語法格式:directory=direcotry_object。direcotry_object 是create directory語句創建的目錄對象。

dumpfile:指定轉儲文件的名稱。語法格式:dumpfile=[ direcotry_object:]file_name[,….]。direcotry_object默認爲上面directory參數指定的目錄對象。file_name默認名稱是expdat.dmp。如果導入文件過大,可以指定多個文件名,如direcotry_object:mydb_%U.dmp。”%U”是一個佔位符,使用這種方式不會出現同名的文件。

logfile:指定日誌文件的名稱。語法格式:logfile=[ direcotry_object:]file_name。direcotry_object默認爲directory參數指定的目錄對象。file_name日誌文件,默認名稱是export.log。

exclude:導入時要排除的對象。語法格式: exclude=object_type[:name_clause][,….]。object_type表示對象類型,如table、view、index、function、preocedure,name_clause表示使用SQL語句,指定對象名的篩選條件,如table:”like ?emp%?”表示排除emp開始的任何表。

include:導入時要包含的對象。語法格式:include =object_type[:name_clause][,….]。object_type

2010年5月12日

和name_clause含義同exclude參數解釋一樣。include和exclude不可以同時使用。當一個對象被包含時,所有相關對象也被包含。

network_link:指定網格導入時的數據庫鏈接名。語法格式:network_link=database_link。database_link表示遠程數據庫鏈接名。

query:指定導入數據的where條件。語法格式:query=[schema.][table_name:]query_clause。其中schema表示方案名,也就是用戶名,table_name表示表名,query_clause表示條件子句,即where子句。

tables:指定導入表。語法格式:tables=[schema.]table_name[,….]。schema表示方案名,table_name表示表名

full:指定是否將整個數據庫導入。語法格式:full={y|n}。y表示執行數據庫導入,n表不執行。默認爲n。

parfile:指定導入參數文件名。把impdp命令所需的參數寫在一個文件中,執行impdp命令時指定這個文件,而不用指定各種參數

導入實例

順便把expdp命令也寫進來,以方便對比。爲了不和上一篇導出筆記重複,這裏以導入遠程數據庫的數據到本地數據庫爲例。

導出遠程數據庫

1.估算轉儲文件大小

如果數據庫很大,這個過程也許會執行很久。在導出數據庫之前,最好先估算一下轉儲文件(導出到的文件)的大小,以便確定合適filesize參數值,和確定是否有足夠的磁盤空間。使用語法:

expdp username/password@234DB full=y estimate_only=y nologfile=y;

其中estimate_only=y表示只估算轉儲文件的佔的磁盤空間,不執行導出操作;@234DB表示遠程數據庫,它是在tnsnames.ora文件中定義的。

2.導出數據庫

expdp username/password@234DB directory=dump_dir dumpfile=mydb_%U.dmp logfile=mydb.log filesize=200m full=y

其中dump_dir表示導出文件的目錄,由於這裏是導出遠程數據庫,所以這個目錄是在遠程機子中的;%U是一個佔位符,表示01~99的兩位數,這時執行會創建如MYDB_21.DMP之類的文件

3.導入整個數據庫

impdp username/password directory=dump_dir dumpfile=mydb_%U.dmp full=y;

其中dump_dir表示入出文件的目錄,這裏要把遠程導出的文件拷貝到本地機子上

導入遠程表

2010年5月12日

1.導出表

expdp username/password@234DB directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp

其中schemas表示方案(即用戶),emp表示遠程數據庫名。使用這種方式轉儲文件將保存在遠程服務器的操作系統中。如果要把轉儲文件保存到本地機子,使用以下語法:

expdp

username/password directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp network_link=to234db

其中username/password分別是本機數據庫用戶名和密碼,to234db是本地數據庫指向遠程數據庫的database link。這種方式可以把數據保存到本機中,但是會產生網絡流量。

2.導入表

impdp username/password directory=dump_dir dumpfile=mytable.dmp tables=schemas.emp

其中schemas要和遠程用戶名相同,也就是說如果本地沒有這個用戶,要先創建用戶,格式如:

grant connect,resource to schemas identified by password。emp是要導入的表,如果本地schemas方案已經存在要導入的表,可以指定tables_exists_action參數,使用格式是tables_exists_action={skip|append|truncate|replace}這四個參數值分別表示忽略這個表、把記錄追加到該表後面、先刪除表數據再追加記錄和使用新表替代已經存在的表。

向Oracle數據庫導入DMP文件

說明:dmp文件爲Oracle數據庫備份文件。

命令: imp:導入

1. 獲取幫助

imp help=y

2. 導入一個完整數據庫

imp system/manager file=bible_db log=dible_db full=y ignore=y

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

imp system/manager file=seapark log=seapark fromuser=seapark imp

system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

4. 將一個用戶所屬的數據導入另一個用戶

imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy

imp system/manager file=tank log=tank fromuser=(seapark,amy)

touser=(seapark1, amy1)

5. 導入一個表

2010年5月12日 imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

6. 從多個文件導入

imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck, filesize=1G full=y

7. 使用參數文件

imp system/manager parfile=bible_tables.par

bible_tables.par 參數文件:

#Import the sample tables used for the Oracle8i Database Administrator's

Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import

8. 增量導入

imp system./manager inctype= RECTORE FULL=Y FILE=A

C:Documents and Settingsadministrator>exp help=y

Export: Release 9.2.0.1.0 - Production on 星期三 7 月 28 17:04:43 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

通過輸入 EXP 命令和用戶名 / 口令,您可以

後接用戶名 / 口令的命令 :

例程 : EXP SCOTT/TIGER

或者,您也可以通過輸入跟有各種參數的 EXP 命令來控制 “ 導出 ” 按照不同參數。要指定參數,您可以使用關鍵字 :

格式 : EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN) 例程 : EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR) 或 TABLES=(T1: P1,T1: P2) ,如果 T1 是分區表

USERID 必須是命令行中的第一個參數。

關鍵字 說明 ( 默認 ) 關鍵字 說明 ( 默認 )

--------------------------------------------------------------------------

USERID 用戶名 / 口令 FULL 導出整個文件 (N)

BUFFER 數據緩衝區大小 OWNER 所有者用戶名列表

FILE 輸出文件 (EXPDAT.DMP) TABLES 表名稱列表

COMPRESS 導入到一個區 (Y) RECORDLENGTH IO 記錄的長度 GRANTS 導出權限 (Y) INCTYPE 增量導出類型

INDEXES 導出索引 (Y) RECORD 跟蹤增量導出 (Y)

DIRECT 直接路徑 (N) TRIGGERS 導出觸發器 (Y)

LOG 屏幕輸出的日誌文件 STATISTICS 分析對象 (ESTIMATE) ROWS 導出數據行 (Y) PARFILE 參數文件名

2010年5月12日 CONSISTENT 交叉表的一致性 (N) CONSTRAINTS 導出的約束條件 (Y)

OBJECT_CONSISTENT 只在對象導出期間設置爲讀的事務處理 (N)

FEEDBACK 每 x 行的顯示進度 (0)

FILESIZE 每個轉儲文件的最大大小

FLASHBACK_SCN 用於將會話快照設置回以前狀態的 SCN

FLASHBACK_TIME 用於獲取最接近指定時間的 SCN 的時間

QUERY 用於導出表的子集的 select 子句

RESUMABLE 遇到與空格相關的錯誤時掛起 (N)

RESUMABLE_NAME 用於標識可恢復語句的文本字符串

RESUMABLE_TIMEOUT RESUMABLE 的等待時間

TTS_FULL_CHECK 對 TTS 執行完整的或部分相關性檢查

TABLESPACES 要導出的表空間列表

TRANSPORT_TABLESPACE 導出可傳輸的表空間元數據 (N)

TEMPLATE 調用 iAS 模式導出的模板名

在沒有警告的情況下成功終止導出。

==================================================

C:Documents and Settingsadministrator>imp help=y

Import: Release 9.2.0.1.0 - Production on 星期三 7 月 28 17:06:54 2004

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

可以通過輸入 IMP 命令和您的用戶名 / 口令

後接用戶名 / 口令的命令 :

例程 : IMP SCOTT/TIGER

或者 , 可以通過輸入 IMP 命令和各種參數來控制 “ 導入 ”

按照不同參數。要指定參數,您可以使用關鍵字 :

格式 : IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)

例程 : IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N

或 TABLES=(T1: P1,T1: P2) ,如果 T1 是分區表

USERID 必須是命令行中的第一個參數。

關鍵字 說明(默認) 關鍵字 說明(默認)

--------------------------------------------------------------------------

USERID 用戶名 / 口令 FULL

Oracle數據導入導出imp/exp就相當於oracle數據還原與備份。exp命令可以把數據從遠程數據庫服務器導出到本地的dmp文件,imp命令可以把dmp文件從本地導入到遠處的數據庫服務器中。 利用這個功能可以構建兩個相同的數據庫,一個用來測試,一個用來正式使用。

2010年5月12日

執行環境:可以在SQLPLUS.EXE或者DOS(命令行)中執行,

DOS中可以執行時由於 在oracle 8i 中 安裝目錄\ora81\BIN被設置爲全局路徑,

該目錄下有EXP.EXE與IMP.EXE文件被用來執行導入導出。

oracle用java編寫,SQLPLUS.EXE、EXP.EXE、IMP.EXE這兩個文件有可能是被包裝後的類文件。 SQLPLUS.EXE調用EXP.EXE、IMP.EXE所包裹的類,完成導入導出功能。

下面介紹的是導入導出的實例。 數據導出:

1 將數據庫TEST完全導出,用戶名system 密碼sql 導出到D:\daochu.dmp中

exp system/sql@TEST file=d:\daochu.dmp full=y

2 將數據庫中system用戶與sys用戶的表導出

exp system/sql@TEST file=d:\daochu.dmp owner=(system,sys)

3 將數據庫中的表table1、table2導出

exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=( table1、table2)

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

exp system/sql@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"

上面是常用的導出,對於壓縮,既用winzip把dmp文件可以很好的壓縮。

也可以在上面命令後面 加上 compress=y 來實現。

數據的導入:

1 將D:\daochu.dmp 中的數據導入 TEST數據庫中。

imp system/sql@TEST file=d:\daochu.dmp

imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp ignore=y

上面可能有點問題,因爲有的表已經存在,然後它就報錯,對該表就不進行導入。

在後面加上 ignore=y 就可以了。

2 將d:\daochu.dmp中的表table1 導入

imp system/sql@TEST file=d:\daochu.dmp tables=(table1)

基本上上面的導入導出夠用了。不少情況要先是將表徹底刪除,然後導入。

數據泵導入:

指令 impdp

一:數據庫所有對象的導入:

impdp system/tiger dumpfile=pump_dir:mydatabase_%.dat

filesize=100m nologfile=y job_name=zhang full=y estimate_only

二:用戶數據的導入:

2010年5月12日

impdp system/tiger dumpfile=pump_dir:mydatabase_%.dat

filesize=100m nologfile=y job_name=zhang schemas=scott

三:導入特定的表:

impdp system/tiger dumpfile=pump_dir:mydatabase_%.dat

filesize=100m nologfile=y job_name=zhang tables=scott.emp,scott.dept

數據泵導出:

指令 expdp

一:數據庫所有對象的導出:

expdp system/tiger dumpfile=pump_dir:mydatabase_%.dat

filesize=100m nologfile=y job_name=zhang full=y estimate_only

二:用戶數據的導出:

expdp system/tiger dumpfile=pump_dir:mydatabase_%.dat

filesize=100m nologfile=y job_name=zhang schemas=scott

三:導出特定的表:

expdp system/tiger dumpfile=pump_dir:mydatabase_%.dat

filesize=100m nologfile=y job_name=zhang tables=scott.emp,scott.dept 聲明:JavaEye文章版權屬於作者,受法律保護。沒有作者書面許可不得轉載。

2010年5月12日

!!!若導入時出現有個別表不能成功導入時,只能在數據庫裏新建表結構,再通過imp命令導入。

1. 根據導入表時在SQL*PLUS中的提示,會說什麼表不能正確創建,在列出相應表的所有表結構。

2. 在SQL*PLUS裏複製表結構到TXT文檔,設置好格式,放在C:\1.txt下。

3. 在SQL*PLUS裏通過@ C:\1.txt 運行,提示表創建結構成功。

4. 向新創建的表導入數據。Imp system/sql@orcl file=d:\0955.dmp tables=(table1,table2,table3)

ignore=y

5. 觀察提示,成敗在此一舉。

注意:

操作者要有足夠的權限,權限不夠它會提示。

數據庫時可以連上的。可以用tnsping TEST 來獲得數據庫TEST能否連上。

附錄一: 給用戶增加導入數據權限的操作

第一,啓動sql*puls

第二,以system/sql登陸

第三,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/sql full=y file=*.dmp

或者 imp userid=system/sql full=y file=filename.dmp

執行示例:

F:\Work\Oracle_Data\backup>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行被導入

準備啓用約束條件...

成功終止導入,但出現警告

原文:http://www.niubb.net/a/2015/09-27/1015489.html

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