Oracle表空间备份及还原

前提:如果整个Oracle库坏了,恢复起来就比较复杂,也需要专业一点的人士实际指导来做。

本文档阐述一下如何进行oracle表空间的备份与恢复,主要是为了防止数据的丢失。本文讨论的也是比较简单的情况,一个用户对应一个表空间。具体步骤如下:
1. 备份数据
备份oracle中一个用户的所有数据。(我的测试环境是在数据库服务器【136】上进行的),打开命令行,输入备份语句
语句为:exp userid=Ajita/1@ORCL owner=(Ajita) file=d:\d.dmp其中:
用户名:Ajita
密码:1
数据库名称:ORCL
要备份数据的用户:Ajita
备份文件:d:\d.dmp

2. 创建新的用户及表空间
由于只有当用户表空间损坏了才需要备份数据,所以我们可以新建一个用户和表空间,并给该用户指定默认表空间。具体SQL如下
CREATE TABLESPACE Ajita_test DATAFILE 'D:\oracle\product\10.2.0\oradata\orcl\Ajita_test_data'  SIZE 1024M AUTOEXTEND ON NEXT 256M MAXSIZE unlimited;  
create user ttest identified by aaa;    
alter user ttest default tablespace Ajita_test quota unlimited on Ajita_test;  
--如果需要DBA权限    
grant dba to ttest;

3. 数据还原
数据还原也是使用imp语句。我们把原来Ajita用户的数据导给ttest用户。相应的也要修改外围应用的连接字符串。
因为我是进行测试的,没有删除原来的Ajita用户和ECSS表空间,所以数据都导到别的地方了。如果真实的数据损坏,我们就可以删除Ajita和ECSS了。然后在步骤2中重新新建就OK了。
具体的导入代码如下:
imp ttest/aaa fromuser=ajita file=d:/d.dmp。其中:
用户名:ttest
密码:aaa
原来的用户:Ajita
备份文件:d:\d.dmp

导入的过程中可能会出现一些小的错误,如部分主键不能建立(我测试的时候只有一个表的主键建立失败),作业创建失败(这个是需要手动创建的)

猜你喜欢

转载自ajita.iteye.com/blog/1458678