2010-04-05 152 views
4

我在C:\ oracle的Windows上安装了Oracle 10g。如果我停止所有的Oracle服务,只需复制整个目录(例如,C:\ oracle_bak)就可以安全地进行备份了,还是我使用expdp更好?不使用exp或expdp的简单oracle备份

指向文档/网站非常受欢迎,我没有能够谷歌上任何相关的东西。

回答

0

一个非常简单的备份方法是使用exp工具导出相关模式。如果例如所有表都存在于模式MY_APP(为mysql用户读取数据库)中,您可以将其所有表转储为一个文件。

exp userid=MY_APP file=dumpfile.dmp log=logfile.txt consistent=y statistics=none buffer=1024000 

恢复转储文件到第二个数据库是这样的

imp userid=system fromuser=MY_APP touser=MY_APP file=dumpfile.dmp commit=y buffer=102400 

或者你可以在同一个数据库,从程序my_app表恢复到另一个模式

imp userid=system fromuser=MY_APP touser=MY_BACKUP file=dumpfile.dmp commit=y buffer=102400 

只需创建一个新的输入之前的架构MY_BACKUP

create user MY_BACKUP identified by SECRET default tablespace USERS temporary tablespace temp; 
grant connect, resource to MY_BACKUP; 
3

如果您的数据库未以归档日志模式运行,则答案为是。以下是我用来备份和恢复数据库的一些脚本。

--- BACKUP.BAT ---

sqlplus "sys/[email protected] as sysdba" @shutdown.sql 
xcopy C:\oracle\oradata\database\*.* C:\oracle\oradata\backup_database\*.* /Y 
sqlplus "sys/[email protected] as sysdba" @startup.sql 

---- shutdown.sql

shutdown immediate 
exit; 

---- startup.sql

startup 
exit; 

恢复脚本很相似。只需将文件复制到另一个方向即可。

+0

这似乎导致了我很大的问题 - 小心。尝试通过将文件复制回oradata目录进行恢复不起作用 - 抱怨控制文件。 – Ronnie 2013-04-17 13:05:56

0

复制/粘贴不起作用,但不应该简单地复制/粘贴整个Oracle主页。这是比所需要的更多的努力。

您将首先需要进行日志切换,即

SET ORACLE_SID=mydb 
sqlplus /nolog 
Connect/as sysdba 
Alter system switch logfile; 

将所有的表空间进入备份模式,即

CONNECT/AS SYSDBA 
ALTER TABLESPACE mytablespace BEGIN BACKUP; 

(您可以通过查询DBA_TABLESPACES让你的表空间查看)

然后将所有数据文件和重做日志文件复制到备份位置。

关于这种方法是否安全,取决于你如何保留数据文件和日志文件。当然,我应该提到RMAN是Oracle经过验证和推荐的备份模式。