加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

oracle数据库还原,如何将dmp文件还原到oralce库

(2013-11-12 13:57:03)

 最近用到从oracle的dmp文件中还原数据
由于没有这方面的资料,在网上搜集了一些,相信有以下这些资料,我们可以成功地将dmp文件用命令行的方式还原回去

 

第一,启动服务,(如果数据库处于启动状态,那么略过这一步)

打开命令行执行以下语句
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(注:以下必须在cmd里执行,在SQL*PLUS里无法执行)
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) 
//---------------------------------------------------------------------------

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有