oracle恢复与备份

本文详细介绍使用RMAN进行Oracle数据库的物理备份和恢复过程,包括整库备份、表空间备份、控制文件与日志文件的作用,以及如何通过RMAN进行高效的数据管理和灾难恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用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版本有关。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值