我在C:\ oracle上安装了Windows 10g。如果我停止所有Oracle服务,只需复制整个目录(例如,复制到C:\ oracle_bak)就可以安全备份,还是使用expdp明显更好?
指向文档/网站的指针非常受欢迎,我无法与Google建立相关的任何内容。
答案 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_BACKUPcreate 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经过验证和推荐的备份模式。