冷备份:关闭数据库备份,备份全部的数据文件
热备份:数据库在open状态,只需备份数据文件及控制文件
1. 全库热备份,不影响在线系统的正常使用,会生成大量日志
备份完毕后立即恢复数据库状态为正常状态end backup
备份过程
备份所有数据文件
select * from dba_data_files;
alter database begin backup;
copy相关数据文件(无需copy临时文件)
alter database end backup;
2. 备份控制文件
脚本模式
alter database backup controlfile to trace;
副本模式
alter database backup controlfile to '/db/controlfile.ctl';
为了方便查找配置文件,建议用以下方法
SQL> oradebug setmypid;
Statement processed.
SQL> alter database backup controlfile to trace;
Database altered.
SQL> oradebug tracefile_name;
/oracle/admin/NING/udump/ning_ora_7414.trc
# more /oracle/admin/NING/udump/ning_ora_7414.trc
……复制下列代码,在SQL>执行
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "NING" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 '/db/NING/redo01.log' SIZE 50M,
GROUP 2 '/db/NING/redo02.log' SIZE 50M,
GROUP 3 '/db/NING/redo03.log' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'/db/NING/system01.dbf',
'/db/NING/undotbs01.dbf',
'/db/NING/sysaux01.dbf',
'/db/NING/users01.dbf',
'/db/test100.dbf',
'/db/index100.dbf',
'/db/index101.dbf'
CHARACTER SET ZHS16GBK
脱机备份:不常用,不适合SYSTEM表空间及控制文件,表空间脱机后对其相关数据文件进行操作系统备份,必须在归档模式下使用,表空间备份即为数据文件备份。(copy表空间对应的数据文件)
实际应用很少,影响数据库正常使用
• 设置表空间offline状态,SYSTEM不能设置为offline状态
• copy对应的数据文件
• 设置表空间online状态
备份过程
alter tablespace test100 offline;
copy数据文件
alter tablespace test100 online;
联机备份:
• 数据文件:设置表空间begin backup状态;copy对应的数据文件;设置表空间end backup状态
• 控制文件:在数据库结构发生变化后必须对控制文件备份,备份成副本或文本格式,文本格式恢复时更方便快捷;即使控制文件全部丢失并无备份,那么利用文本命令也可恢复
• 在线日志文件(不是归档日志文件)不能联机备份,利用多路复用实现高可用。
1. 归档进程(ARCn)
后台进程,只用数据库配置归档模式并且处于open状态才可启动此进程
在归档模式下ARCn自动将redo logs进行归档(备份)
保留整个数据库的所有变化,用于数据库的恢复
2. 数据库归档方式配置
1) 查看归档信息
SQL> archive log list
2) 正常关闭数据库
SQL> shutdown immediate
3) 启动数据库到加载状态
SQL> startup mount
4) 修改数据库为归档模式
SQL> alter database archivelog;
5) 打开数据库
SQL> alter database open;
6) 查看数据库归档状态(非归档为noarchive)
SQL> archive log list
7) 查看默认的归档日志路径
SQL> show parameter DB_RECOVERY_FILE_DEST
8) 切换日志,查看新的归档日志,在目录下生成新的归档日志文件。
SQL> alter system switch logfile;
9) 修改归档路径(可选),将归档日志存放在特定存储设备上,必须保证对应的存放路径事先存在,必须保证oracle具有其读写权限,原来默认归档路径失效
SQL> alter system set log_archive_dest_1='location=/home/oracle/archivelog01' scope=both;
SQL> alter system set log_archive_dest_1='location=/home/oracle/archivelog02' scope=both;
LOG_ARCHIVE_DEST_n
LOG_ARCHIVE_DEST_n 参数可以设置最多10个不同的归档路径,通过设置关键词location或service,该参数指向的路径可以是本地或远程的。
LOG_ARCHIVE_DEST_1 = 'LOCATION = /disk1/archive'
LOG_ARCHIVE_DEST_2 = 'LOCATION = /disk2/archive'
LOG_ARCHIVE_DEST_3 = 'LOCATION = /disk3/archive'
如果要归档到远程的standby数据库,可以设置service:
LOG_ARCHIVE_DEST_4 = 'SERVICE = standby1'
可见,这两个参数都可以设置归档路径,不同的是后者可以设置远程归档到standby端,而前者只能归档到本地,且最多同时归档到2个路径下。
10) 修改进程参数(系统资源允许的情况下,可适当调整并发数量)
SQL> alter system set log_archive_max_processes=5;
11) 强制写日志
SQL> alter database force logging;
3. 归档方式日志组IO性能优化
奇数日志组放在奇数盘
偶数日志组放在偶数盘
4. 物理备份数据库
冷备份、数据库迁移
select * from v$datafile;
select 'cp '||name||' /home/oracle/' from v$controlfile;
select 'cp '||member||' /home/oracle/' from v$logfile;
select 'cp '||file_name||' /home/oracle' from dba_data_files;
# rsync -av /db root@172.16.0.93:/
1) 停止应用
2) shutdown immediate
3) copy全部数据文件、控制文件、日志文件到新数据库相应目录下,注意与原数据库路径相同
4) 修改新数据库中oracle用户的ORACLE_SID环境变量
5) 修改原始数据库的initSID.ora文件,传到新数据库中(主要是controlfile与*.dump路径)
6) 启动数据库 startup pfile=
7) 创建spfile文件