Oracle 的备份与恢复两大类
1. 物理备份与恢复
2. 逻辑备份与恢复(导入与导出)
根据数据库的工作模式划分
1 . 非归档模式(No Archivelog) 叫 冷备份
2. 归档模式(Archivelog) 叫热备份
1. 逻辑备份的导入 和 导出(Import 和 Export)
1. 全库方式(Full) 将数据库中的所有对象导出 需要有DBA 权限
exp system/verecom1981@orcl file=20121120.dmp full=y
imp system/verecom1981@orcl file=20121120.dmp full=y
2. 用户方式(U) 将指定的用户相应的所有数据对象导出
创建一个新的用户 test,然后测试 test,orcl_user两个用户中的一个
先测一下同时导出 test,orcl_user两个用户, 然后测试只导出一个的情况
exp system/verecom1981@orcl file=20121120.dmp owner=orcl_user,test
imp system/verecom1981@orcl file=20121120.dmp full=y
3. 表方式 (T) 将指定的表导出备份
exp orcl_user/orcl_user@orcl file=20121120.dmp tables=category,emp
imp orcl_userorcl_user@orcl file=20121120.dmp tables=category,emp
4. 字段方式 将指定表的字段数据匹配的备份
将工资<6000 的员工数据备份
exp 'orcl_user/orcl_user@orcl file=20121120.dmp tables=emp query=\"where salary\<6000\"'
imp orcl_userorcl_user@orcl file=20121120.dmp tables=emp
5. 不同名用户之间的导入
将 用户 orcl_user 的数据导入到 用户 test 中.
exp orcl_user/orcl_user@orcl file=20121120.dmp tables=category,emp
imp orcl_user/orcl_user@orcl fromuser=orcl_user touser=test file=20121120.dmp tables=category,emp
2. 导入导出备份中提供了, 增量导入/导出 , 但是它必须作为System来完成增量的导入导出,而且只能是对整个数据库进行实施。增量导出又可以分为三种类别:
1. 完全增量导出/导入(Complete Export) 将整个数据库文件导出备份;
exp orcl_user/orcl_user@orcl inctype=complete file=20081220.dmp
imp orcl_user/orcl_user@orcl inctype=RESTORE FULL=y FILE=20081220.dmp
2. 增量型增量导出(Incremental Export) 只会备份上一次备份后改变的结果
exp orcl_user/orcl_user@orcl inctype=incremental file=20081220.dmp
例如
1 . 增量型增量导出后 删除 emp 的数据
2. 再增量型增量导出 这个时候只导出 emp 改变的结果 , category 没有变不导出
3. 累积型增量导出(Cumulate Export) 只导出上一次完全增量导出后数据库变化的信息.
exp orcl_user/orcl_user@orcl inctype=cumulative file=20081220.dmp
例如
1 . 增量型增量导出后 向 category 插入的数据
2. 再累积型增量导出这个时候只导出 相对于 1. 完全增量导出 emp 表 和 category 表都有改变所以 emp ,category 都导出
3. 物理备份 的 冷备份( No ArchiveLog)
当数据库可以暂时处于关闭状态时,将数据相关文件备份到安全的区域,当数据库遭到破坏,
再从备份区域将备份的数据库相关文件拷贝回原来的位置,这样,就完成了一次冷备份。
冷备份
优点 : 快速,方便,以及高效。
缺点 :
1.只能提供到“某一时间点上”的恢复。
2. 在冷备份过程中,数据库必须是关闭状态。
3. 不能按表或按用户恢复。
一次完整的冷备份步骤应该是:
1. 连接到数据库
SQL> conn sys/verecom1981@orcl as sysdba
2. 关闭数据库
SQL> shutdown normal
3. 拷贝相关文件到备份区域(利用操作系统命令拷贝数据库的所有的数据文件、日志文件、控制文件、参数文件、口令文件等(包括路径))。
cp -r /home/oracle/oradata/orcl /home/oracle/backup/orcl_"`date +%Y%m%d%k%M%S`"
4. 恢复的时候,停掉数据库,将文件拷贝回相应位置,重启数据库就可以了。
cp -r '/home/oracle/backup/orcl_20121121111806/* /home/oracle/oradata/orcl'
4. 物理备份的热备份(ArchiveLog)
当需要做一个精度比较高的备份,而且我们的数据库不可能停掉(少许访问量)时,这个情况下,我们就需要归档方式下的备份,就是热备份。
热备份可以非常精确的备份表空间级和用户级的数据,由于它是根据归档日志的时间轴来备份恢复的,理论上可以恢复到前一个操作,甚至就是前一秒的操作。具体步骤如下:
以 sys dba 连接
1. 查看数据库释放在 Archive归档模式
SQL> SELECT name,log_mode FROM v$database;
2. 如果不是归档模式, 设置数据库在归档模式下运行
SQL> shutdown immediate
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list;
如果Automaticarchival显示为 "Enabled",则数据库归档方式为自动归档。否则需要手工归档,或者将归档方式修改为自动归档
SQL> alter system set log_archive_start=true scope=spfile;
SQL> startup force;
SQL> archive log list;
自动归档模式下强制归档
SQL> alter system switch logfile;
查看归档日志
SQL> SELECT * FROM v$log;
注意:当数据库处在ARCHIVE模式下时,一定要保证指定的归档路径可写,否则数据库就会挂起,直到能够归档所有归档信息后才可以使用。
3. 备份表空间
1. 修改表空间文件为备份模式
SQL> ALTER tablespace orcl_space BEGIN BACKUP;
2. 拷贝表空间文件到指定位置
SQL> !cp /home/oracle/oradata/orcl/orcl_space.dbf /home/oracle/backup;
3. 将表空间的备份模式关闭
SQL> AlTER tablespace orcl_space END BACKUP;
4. 备份归档日志文件
1 .查看归档日志文件路径
SQL> archive log list;
2. 强制归档
SQL> alter system switch logfile;
在 /home/oracle/product/9.2.0/dbs/arch 下将会产生归档日志文件
3. 复制归档文件备份
SQL> !cp -r '/home/oracle/product/9.2.0/dbs/arch /home/oracle/backup/arch'
5. 备份控制文件
SQL> alter database backup controlfile to '/home/oracle/backup/control.ctl'
5. 热备份恢复
1.shutdown数据库。
SQL> shutdown
2. 将全备份的数据文件放到原来系统的目录中。
SQL> !cp /home/oracle/backup/orcl_space.dbf /home/oracle/oradata/orcl
3. 将全备份到失败点的所有归档日志放到参数LOG_ARCHIVE_DEST_1所指定的位置。
SQL> !cp /home/oracle/backup/arch/* /home/oracle/product/9.2.0/dbs/arch
4. 利用sqlplus登陆到空实例。(connect / as sysdba)
5. 然后 startup mount
6. set autorecovery on
7. recover database;
8. alter database open;
oracle 的备份和恢复
最新推荐文章于 2021-04-11 08:09:46 发布