使用RMAN进行物理备份(针对数据文件、控制文件、日志文件备份)
0.连接到数据库,查看是否为归档模式
rman target / 连接数据库
rman catolog user/password 连接恢复目录
查看数据库是否处于归档模式下
sqlplus sys/password as sysdba
SQL> archive log list;
Database log mode No Archive Mode
Automatic archival Disabled
修改为归档模式
sqlplus sys/password as sysdba
SQL> shutdown immediate; 关闭数据库实例
SQL> startup mount; 以mount模式启动数据库
SQL> alter database archivelog; 设置为归档模式
SQL> alter database open; 启动数据库
查看快闪区目录(备份不指定目录,则默认备份地址)
SQL> show parameter db_recovery_file_dest;
1.创建恢复目录,向恢复目录注册数据库ORCL
create catalog tablespace xxxxx;
register database;
2.配置通道
并行数位5,默认通道设备为磁盘
configure device type disk paralielism 5;
configure default device type to disk;
查询rman配置的所有参数,也包含了通道配置
show all;
3.备份数据(整库)
RMAN> backup database;
如果备份整个数据库时要包含归档日志文件,则要加上plus archivelog关键字,delete input的意思是在备份完成后,删除archivelog文件
RMAN> backup database plus archivelog delete input;
使用backup命令进行备份时,可以明确备份文件的存储路径及文件名称的格式。其路径和格式可以使用FORMAT参数进行统一设置。FORMAT格式由两部分组成:即存储路径和文件名称格式。
如果没有使用FORMAT指定存储路径和文件名称格式,则默认情况下BACKUP所产生的备份集将存储在快闪恢复区
FORMAT命令格式为:FORMAT '格式字符串',例如
RMAN> backup database FORMAT '/BACKUP/dir/backup_data'
加上变量以后,又如
RMAN> backup database FORMAT '/opt/oracle/oradata/backup/%U';
FORMAT支持变量,常用的有
%c : 备份片的拷贝数
%d :数据库名称
%D : 位于该月中的第几天(DD)
%M : 位于该年中第几月(MM)
%F : 一个基于DBID的唯一名称,它的形式为C-DBID-YYYYMMDD-QQ。其中DBID为数据库的DBID,YYYYMMDD为日志,QQ是一个1-256的序列
%n:数据库名称,向右填补到最大8个字符
%u:一个8个字符的名称,它是根据备份集个数与创建时间信息生成的。
%p:该备份集中的备份片号,从1开始到创建的文件数。
%U:系统生成的一个唯一文件名,对于备份片来说,它的含义相当于%u_%p_%c。
%s:备份集的号
%t:备份集时间戳
%T:年月日格式(YYYYMMDD)
备份支持多语句,写法如下(增加run{...}作为语句块)
RMAN> run
2> {
3> allocate channel ch1 device type disk;
4> backup database format '/opt/oracle/oradata/backup/%U';
5> release channel ch1;
6> }
4.恢复数据(整库)
全库备份的恢复,数据库要在mount状态下使用RMAN恢复
restore database; 重建
recover database; 恢复
5.表空间备份和恢复
可以选择备份一个或者多个表空间,下面是采用单条命令或run命令来进行备份
RMAN> backup tablespace users;
RMAN> backup filesperset=3 tablespace users,system,sysaux;
RMAN> run
2> {
3> allocate channel ch1 device type disk;
4> backup format '/opt/oracle/oradata/backup/rmanbak/%U' (tablespace users,system,sysaux);
5> release channel ch1;
6> }
如果只丢失了特定的表空间的数据文件,那么可以选择只恢复这个表空间,而不是恢复整个数据库,表空间恢复可以在不关闭数据库的情况下进行,只需要将需要恢复的表空间offline。恢复脚本如下:
RMAN> run
2> {
3> sql 'alter tablespace users offline immediate';
4> restore tablespace users;
5> recover tablespace users;
6> sql 'alter tablespace users online';
7> }
使用数据泵进行逻辑备份(针对表空间)
待补充
oracle的基本概念
SGA与PGA
用户(可以是远程用户、本地、应用程序)连接到oracle数据库上面,用户是不能直接连接在硬盘上存储的数据文件,所以要在oracle中要运行一个实例,实例并不是保存在硬盘上面的,实例是内存的一部分。实例和数据库是在同一台机器上,我们称之为单实例环境,对于用户而言所有的操作都是在实例中完成的,oracle为实例划分了一个内存块,这个内存块我们称之为SGA,其实oracle实例启动的时候,将会分配一个SGA系统全局区并启动一些oracle的后台进程(守护进程)。
在oracle中内存=SGA+PGA
SGA:System Global Area,主要由三部分构成:共享池、数据缓冲区、日志缓冲区。一个实例只能有一个SGA,所有的服务器进程和后台进程都共享一个SGA。
PGA:Program Global Area 程序全局区,是一块包含一个服务进程的数据和控制信息的内存区域。它是 Oracle 在一个服务进程启动是创建的,是非共享的。一个 Oracle 进程拥有一个 PGA 内存区。一个 PGA 也只能被拥有它的那个服务进程所访问,只有这个进程中的 Oracle 代码才能读写它。
控制文件是一个二进制文件,它记录了数据库的物理结构,其中主要包含数据库名,数据文件与日志文件的名字和位置,数据库建立日期等信息。
控制文件(control file)
控制文件一般在Oracle系统安装时候或者创建数据库时自动创建。 控制文件所存放的路径由服务器参数文件spfileorcl.ora的control_files参数值来指定
因为控制文件存放有数据文件,日志文件等相关信息,所以,Oracle实例在启动时必须访问控制文件,只有控制文件正常,实例才能加载并打开数据库,如若记录错误信息,或者实例无法找到一个可用的文件,则实例无法正常启动
每一个数据库至少拥有一个控制文件,一个数据库可以同时拥有多个控制文件,但是,一个控制文件只能属于一个数据库,简单来说,控制文件与数据库之间的关系是多对一的关系。
日志文件(log file)
日志文件的主要功能是记录 对数据所做的修改,对数据所做的修改几乎都放在日志文件中去,在出现问题时,可以通过日志文件得到原始数据,从而保障不丢失已有的操作成果,日志文件包括2种,一种是重做日志文件,一种是归档日志文件,是Oracle系统文件之一,尤其是重做日志文件,在Oracle不可或缺
1.重做日志文件
用来记录数据库所有发生过的修改信息及Oracle内部行为【创建数据表,索引】而引起的数据库变化信息,在数据库恢复时,可以从日志文件中读取原始记录,在数据库运行期间,当用户执行commit 命令是,数据库首先将每笔操作的原始记录写到日志文件中。写入成功后,才把新的记录传递给应用程序,so 。在日志文件上可以随时读取原始记录以恢复某些数据。
2.归档日志文件是解决掉文件被在某段时间被复写的情况。
Oracle 数据库可以运行在2中模式下,归档和非归档,非归档模式是指在系统运行期间,所产生的日志信息不断记录到文件组中。默认情况下,Oracle 不采用归档模式。
数据文件(data file)
表空间是一个逻辑存储结构,而数据文件是一个物理存储结构。可以把多个数据文件组成一个表空间,然后在表空间里面存储数据,表空间和数据文件是对应的,一个表空间可以是由一个或多个数据文件组成的,但是一个数据文件只能在一个表空间当中。
如果表空间不够用了,只需创建相应的数据文件即可。表空间大小就是组成数据文件的大小的总和,最终数据文件存放在硬盘里的,但是我们可以把数据文件存放在不同的硬盘里面,只要在一个表空间即可,这样就解决了硬盘大小对文件的限制,可以将多个硬盘中的数据文件组成一个表空间。
段(segment)
例如在xx表空间DBA创建了一个名为test的表,这张表表空间所占用的空间,我们称之为段。根据段中存储的对象的不同分为了数据段,索引段,回退段,临时段等
区(extent)
区是磁盘空间分配的最小单位,磁盘按区划分,每次至少分配一个区,区由连续的数据块组成,段主要由一个或多个区构成,当段创建时,它至少包含一个区,当段中所有空间已经使用完成时,系统自动为该段分配一个新区,区不能跨数据文件存在,只能存在于一个数据文件中。
段是由区组成的,段必须是区的整数倍,假如一张表是25MB,一个区大小是4MB,那么段的大小是28MB,如果在表里添加了3MB的数据,此时段的空间还能容纳表,现在表的大小是28MB,如果又添加了1MB,此时29MB,那么段的空间是32MB.
块(block)
在oracle数据库中最小的存储单位是块--8KB,oracle数据库中的数据存储于数据块中。数据块是oracle服务器所能读取或写入的最小存储单元,oracle服务器以数据块为单位管理数据文件的存储空间,数据块的取值范围为2-64KB,其默认大小与oracle版本有关。