oracle資料庫還原,如何將dmp檔案還原到oralce庫

來源:互聯網
上載者:User

 最近用到從oracle的dmp檔案中還原資料
由於沒有這方面的資料,在網上搜集了一些,相信有以下這些資料,我們可以成功地將dmp檔案用命令列的方式還原回去

在這裡我用的是oracle10g的版本,我的機器是512記憶體的,運行oracle的web管理程式有一些困難,所以我選擇通過命令列的方式,
以下我的安裝完成後,oracle給出的報告

Enterprise Manager Database Control URL - (orcl) :
http://localhost:1158/em

資料庫設定檔已經安裝到
E:/oracle/product/10.2.0,

同時其他選定的安裝組件也已經安裝到
E:/oracle/product/10.2.0/db_1。

iSQL*Plus URL 為:
http://localhost:5560/isqlplus

iSQL*Plus DBA URL 為:
http://localhost:5560/isqlplus/dba

下面我們來看一看如何來完成這一任務

第一,啟動服務,(如果資料庫處於啟動狀態,那麼略過這一步)

開啟命令列執行以下語句
net start OracleServiceORCL
net start  OracleOraDb10g_home2TNSListener
net start OracleOraDb10g_home2iSQL*Plus

 

 
  以上方式是在windows服務中啟動服務,當windows服務不能啟動資料庫執行個體的時候,應用以下的語句
  set oracle_sid=orcl
  oradim -startup -sid orcl

  sqlplus internal/oracle
  startup
 

 

第二清理以前還原過的痕迹,如果我們在資料庫曾經還原過,我們先來清理一下,痕迹,
    //刪除使用者
    drop user xxxx cascade;
    //刪除資料表空間
    drop tablespace xxxx;
    //刪除資料庫檔案
    e:/xxxxxx.dbf

第三,接下來,準備工作做好後,我們就可以開始還原了
//建立使用者
CREATE USER 使用者名稱 IDENTIFIED BY 密碼 DEFAULT TABLESPACE  USERS TEMPORARY TABLESPACE TEMP
 
//給予使用者權限
grant connect,resource,dba to xxxx
 

//建立資料表空間,並指定檔案名稱,和大小
CREATE SMALLFILE TABLESPACE "xxxx" DATAFILE 'E:/ORADATA/ORCL/xxxx.DBF'
 SIZE 100M
 AUTOEXTEND ON NEXT 100M
 MAXSIZE UNLIMITED
 LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO

 

//執行給予許可權的指令碼grant.txt,將許可權給予剛才建立的使用者
//給予許可權
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 xxxx

//開始匯入(完全匯入),file:dmp檔案所在的位置, ignore:因為有的表已經存在,對該表就不進行匯入。
   在後面加上 ignore=y 。指定log檔案 log=e:/log.txt
imp user/pass@orcl full=y file=e:/xxx.dmp ignore=y log=e:/log.txt

//當我們不需要完整的還原資料庫的時候,我們可以單獨地還原某個特定的表
//---------------------------------------------------------------------------
imp user/pass@datbase file=e:/xxx.dmp ignore=y log=e:/log.txt tables=(xxxx)
imp user/pass@database file=e:/xxx.dmp ignore=y log=e:/log2.txt tables=(xxxx)
//---------------------------------------------------------------------------

 

//做到這裡我們就已經完成了,資料庫的還原工作,下面我們就可以開啟isqlplus查看錶中的資料了
 
select * from ***
 

第四我們來看一下,對oracle常用的操作命令
1)查看錶空間的屬性
 select tablespace_name,extent_management,allocation_type from dba_tablespaces

2)尋找一個表的列,及這一列的列名,資料類型
 select TABLE_NAME,COLUMN_NAME,DATA_TYPE   from user_tab_columns where TABLE_NAME='xxxx'

 
3)尋找資料表空間中的使用者表
 select * from all_tables where owner='xxx' order by table_name desc

4)在指定使用者下,的表的數量
 select count(*) from user_tab_columns
 

5)查看資料庫中的表名,表列,所有列
 select TABLE_NAME,COLUMN_NAME,DATA_TYPE   from user_tab_columns order by table_name desc

6)查看使用者ZBFC的所有的表名及表存放的資料表空間
 select table_name,tablespace_name from all_tables where owner='xxxx' order by table_name desc
7)產生刪除表的文本
select 'Drop   table '||table_name||';' from all_tables where owner="ZBFC";

8)刪除表串聯刪除
drop table table_name [cascade constraints];

9)尋找表中的列
select TABLE_NAME,COLUMN_NAME,DATA_TYPE   from user_tab_columns where column_name like '%'||'地'||'%' order by table_name

desc
 

10)查看資料庫的臨時空間
select tablespace_name,EXTENT_SIZE,current_users,total_extents,used_extents,MAX_SIZE,free_extents from v$sort_segment;

 http://download1.csdn.net/down3/20070615/15202338310.txt

作者在匯入的過程中,還遇到了一個錯誤,就是資料違反了唯一性限制式,資料庫拒絕了資料
IMP-00019: 由於 ORACLE 的 1 錯誤而拒絕行
在網上看到有人說,這是字元集的原因,所以我就建立了一個資料庫,將字元集改成了ZHS16GBK這樣,從新導了一次,結果就成功了

 下面是grant.txt指令碼

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.