简单的oracle备份,不使用exp或expdp

时间:2010-04-05 21:33:51

标签: oracle backup

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

指向文档/网站的指针非常受欢迎,我无法与Google建立相关的任何内容。

4 个答案:

答案 0 :(得分:3)

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

--- backup.bat ---

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

---- shutdown.sql

shutdown immediate
exit;

---- startup.sql

startup
exit;

恢复脚本类似。只需沿另一个方向复制文件即可。

答案 1 :(得分:1)

您可以只复制数据文件(确保获取控制文件,并确保测试备份)。您可能应该使用RMAN。

Oracle® Database Backup and Recovery Quick Start Guide将是一个很好的起点。

答案 2 :(得分:0)

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

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

将dumpfile恢复到第二个数据库的工作方式如下

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 :(得分: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经过验证和推荐的备份模式。