我的备份(EXP)脚本内容是:
exp "'sys/zrc775fp as sysdba'" owner=lzassist file=/oraclesoftware/oracle/orcl/a.dmp log=/var/backup.log
这个脚本只能备份lzassist用户的数据,可以正常备份。
我的恢复(IMP)脚本内容是:
imp userid=lzassist/zrc775fp ignore=y file==/oraclesoftware/oracle/orcl/a.dmp log=/var/backup.log
这个脚本也可以正常的使用。
我有以下几个疑问需要高手帮忙解答一下:
1、我以前备份数据库都是“全库”备份,就是
exp "'sys/zrc775fp as sysdba'" full=y inctype=complete file=XXX log=XXX
这样备份我也知道是很好的,可是当我要进行恢复的时候,就是
imp "'sys/zrc775fp as sysdba'" ignore=y full=y inctype=restore file=XXX log=XXX
这时候就会报错,后来我查了一下网上的资料,说报错的原因是不能导入数据,因为存在约束。
我也不会解决,就没有再使用“全库”备份的方式——我也想啊!!!!——基于这一点,希望高手们能给我一个建议,当我进行了全库备份以后,应该怎么样才能成功的进行恢复呢?
2、上面我写的那两个脚本是否合理?在实际运用中是否可以安全的备份我们的数据呢?如果还有欠缺的地方,是什么地方呢?应该怎么改进一下呢?(我们不能用rman,因为数据库不能停)
我们所有的表以及记录(数据)都是存放在lzassist这个用户对应的表空间中的,所以我觉得:只需要备份这个用户中的所有的表就可以了。不知道这个认识是否正确,请高手指教。
3、网上还有一种说法,就是说我现在的这种只备份某一用户的所有的表的方式,当需要恢复时,要“先删除用户,再删除对应的表空间”,然后再用imp进行恢复。我不知道这种说法对不对。我现在的恢复脚本也没有“先删除用户,再删除对应的表空间”呀,可是实际效果也是可以正确的恢复数据的,所以我比较茫然。
4、我的这两个脚本是测试用的,因为我们的数据还没有导入进来,我只是在lzassist用户下创建了一个只有两个字段的表,这么简单的环境下,我的脚本能运行正常,我想是不足以说明问题的,我们的数据库要有37张表,表间关联很多的,各个表的字段也是很多的,所以我担心我的这两个脚本能不能在那种“实际”的情况下也是可以使用的这个问题比较担心,想听听高手的意见。
最后,谢谢每一个能看完我这个帖子的朋友,谢谢大家这么有耐心!!!!同时,我也很真诚的希望大家能帮帮我,我是搞软件开发的,对数据库不是很懂,可是公司要我做一部分的DBA工作,很多情况和知识技术对我来说很是陌生,所以我在这里希望得到大家的帮助!先谢谢大家了
6 个解决方案
#1
不是很懂oracle ,但是可以帮你把帖子顶上去的,顺便学习!
#2
耐心的看完了,我也剛開始學ORACLE,一起加油!
關注中.
UP
關注中.
UP
#3
高手们帮帮我好吗,谢谢了,真得很急的,在线等!!!!!!!
#4
虽然不是很懂,但帮顶~~~~
#5
1、全恢复的时候,因为有系统用户,如system,system用户是不能被覆盖的,所以,导入过程要报错,不过,可以不理它。
2、我们不能用rman,因为数据库不能停 rman备份也不用停止数据库啊,不知道楼主这理论从何而来。exp、imp这种备份方式存在弊端,不能恢复备份点到出错点之间的数据,应加入归档
3、先删除用户,再删除对应的表空间,这样,能保证用户下面信息是空的,能完全正确导入导出文件。否则,过程中会报错的,比如,违反唯一性约束等。
4、表多也没问题。exp和imp能全收,美中不足同2,恢复时可能造成数据丢失。
2、我们不能用rman,因为数据库不能停 rman备份也不用停止数据库啊,不知道楼主这理论从何而来。exp、imp这种备份方式存在弊端,不能恢复备份点到出错点之间的数据,应加入归档
3、先删除用户,再删除对应的表空间,这样,能保证用户下面信息是空的,能完全正确导入导出文件。否则,过程中会报错的,比如,违反唯一性约束等。
4、表多也没问题。exp和imp能全收,美中不足同2,恢复时可能造成数据丢失。
#6
如果是想备单个用户的数据,不要用 sys 等dba账户, 直接用原来的用户来 exp, imp,
在 oracle 10g, 其实用 expdp 等工具, 速度会更快。
另外,其实在归档模式下, 用rman是更好的方法, 不用停数据库的。
>>当需要恢复时,要“先删除用户
建议删除, 重建用户
>>4、我的这两个脚本是测试用的
就我的做法, 一般导入导出的时候, 加 INDEXES=N CONSTRAINTS=N COMPRESS=Y
导入数据后,再重新建立索引, 约束。
在 oracle 10g, 其实用 expdp 等工具, 速度会更快。
另外,其实在归档模式下, 用rman是更好的方法, 不用停数据库的。
>>当需要恢复时,要“先删除用户
建议删除, 重建用户
>>4、我的这两个脚本是测试用的
就我的做法, 一般导入导出的时候, 加 INDEXES=N CONSTRAINTS=N COMPRESS=Y
导入数据后,再重新建立索引, 约束。
#1
不是很懂oracle ,但是可以帮你把帖子顶上去的,顺便学习!
#2
耐心的看完了,我也剛開始學ORACLE,一起加油!
關注中.
UP
關注中.
UP
#3
高手们帮帮我好吗,谢谢了,真得很急的,在线等!!!!!!!
#4
虽然不是很懂,但帮顶~~~~
#5
1、全恢复的时候,因为有系统用户,如system,system用户是不能被覆盖的,所以,导入过程要报错,不过,可以不理它。
2、我们不能用rman,因为数据库不能停 rman备份也不用停止数据库啊,不知道楼主这理论从何而来。exp、imp这种备份方式存在弊端,不能恢复备份点到出错点之间的数据,应加入归档
3、先删除用户,再删除对应的表空间,这样,能保证用户下面信息是空的,能完全正确导入导出文件。否则,过程中会报错的,比如,违反唯一性约束等。
4、表多也没问题。exp和imp能全收,美中不足同2,恢复时可能造成数据丢失。
2、我们不能用rman,因为数据库不能停 rman备份也不用停止数据库啊,不知道楼主这理论从何而来。exp、imp这种备份方式存在弊端,不能恢复备份点到出错点之间的数据,应加入归档
3、先删除用户,再删除对应的表空间,这样,能保证用户下面信息是空的,能完全正确导入导出文件。否则,过程中会报错的,比如,违反唯一性约束等。
4、表多也没问题。exp和imp能全收,美中不足同2,恢复时可能造成数据丢失。
#6
如果是想备单个用户的数据,不要用 sys 等dba账户, 直接用原来的用户来 exp, imp,
在 oracle 10g, 其实用 expdp 等工具, 速度会更快。
另外,其实在归档模式下, 用rman是更好的方法, 不用停数据库的。
>>当需要恢复时,要“先删除用户
建议删除, 重建用户
>>4、我的这两个脚本是测试用的
就我的做法, 一般导入导出的时候, 加 INDEXES=N CONSTRAINTS=N COMPRESS=Y
导入数据后,再重新建立索引, 约束。
在 oracle 10g, 其实用 expdp 等工具, 速度会更快。
另外,其实在归档模式下, 用rman是更好的方法, 不用停数据库的。
>>当需要恢复时,要“先删除用户
建议删除, 重建用户
>>4、我的这两个脚本是测试用的
就我的做法, 一般导入导出的时候, 加 INDEXES=N CONSTRAINTS=N COMPRESS=Y
导入数据后,再重新建立索引, 约束。