JBOSS 點滴

          豐豐的博客

          oracle數據庫還原,如何將dmp文件還原到oralce庫

          來原:http://blog.csdn.net/sunbingzibo/archive/2007/06/15/1653794.aspx
          最近用到從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;

          DROP TABLESPACE <tablespace name> INCLUDING CONTENTS;


              //刪除數據庫文件
              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腳本

          posted on 2010-09-19 14:42 半導體 閱讀(532) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 日照市| 南开区| 永胜县| 江都市| 西华县| 涿州市| 仪陇县| 望谟县| 康保县| 青阳县| 德格县| 毕节市| 武山县| 武清区| 石家庄市| 从化市| 大方县| 兴宁市| 灌阳县| 绥宁县| 沭阳县| 博野县| 江达县| 鄱阳县| 怀柔区| 通渭县| 普定县| 宣化县| 富顺县| 南靖县| 申扎县| 建湖县| 措美县| 兴安盟| 东莞市| 秦安县| 右玉县| 徐州市| 蚌埠市| 江门市| 玉溪市|