Oracle 11g 学习笔记-16(RMAN工具)

1-请分别写出数据文件、日志文件、控制文件的后缀名、本机存放路径、92数据库存放路径、各自的作用?
数据文件:.DBF
本机存放路径:
在这里插入图片描述
92数据库存放路径:
在这里插入图片描述
日志文件:.LOG
本机存放路径:在这里插入图片描述
92数据库存放路径:
在这里插入图片描述
控制文件:.CTL。控制文件是一个二进制文件,含有数据库的结构信息,包含数据文件和日志文件的信息。
本机存放路径:
在这里插入图片描述
92数据库存放路径:
在这里插入图片描述
2-写出:启动RMAN的步骤…

 rman target system/nocatalog
 rman target system/catalog

RMAN备份分为catalog和nocatalog两种:

nocatalog:直接进行备份,将备份信息直接记录到控制文件,会导致控制文件持续增长,若控制文件丢失,将导致备份不能恢复,控制文件存在风险。因此,当使用rman nocatalog方式备份时,备份controlfile是非常重要的。Catalog 则必须要首先要创建目录备份数据库,建立恢复目录。

当使用rman nocatalog恢复时,数据库必须是处于“mount”状态的。而Oracle startup mount的前提条件是control必须存在。因此,你必须在恢复datafile之前先恢复controlfile。 使用rman catalog方式时,可以startup nomount然后restore controlfile;但使用rman nocatalog时,必须先用文件方式恢复controlfile。

在这里插入图片描述

RMAN> show all;--查看RMAN配置

使用目标数据库控制文件替代恢复目录
db_unique_name 为 JQWLDB 的数据库的 RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\RJ\APP\WL20190720\PRODUCT\11.2.0\DBHOME_1\DATABASE\SNCFJQWLDB.ORA'; # default

3-手画 RMAN会话与服务器进程通信的图…
手画 不是excel或者截图!!!

在这里插入图片描述
4-[RMAN工具简介] cuschannel 手敲代码并加注释…

run{
--手动分配通道ch_1到磁盘,格式:路径,类型.bak
allocate channel ch_1 device type disk format = 'd:\oraclebf\%u_%c.bak';
--备份表空间,通过手动创造的通道ch_1来备份到目标路径
backup tablespace system,users tbs_test_1 channel ch_1;
}

在这里插入图片描述

5-[使用RMAN工具备份]
RMAN备份策略:请搜索详细备份原理…

RMAN备份策略:
RMAN可以进行的两种类型的备份,即完全备份(FULL BACKUP)和增量备份(INCREMENTAL BACKP)。在进行完全备份时,RMAN会将数据文件中除空白数据块之外的所有数据块都复制到备份集中。需要注意,在RMAN中可以对数据文件进行完全备份或者增量备份,但是对控制文件和日志文件只能进行完全备份。
与完全备份相反,在进行增量备份时RMAN也会读取整个数据文件,但是只会备份与上一次备份相比发生了变化的数据块。RMAN可以对单独的数据文件、表空间、或者整个数据库进行增量备份。

RMAN备份原理:

当rman target /登录,首先会检测ORACLE_SID变量中的实例名,并在实例中生成一个RMAN服务器进程(通道进程)和主进程,影子进程。该通道进程会在pga(有时在sga)中分配内存,在内存中每个通道进程都会构建缓冲区(输入,输出),先将备份文件读入输入缓冲区,一个输入缓冲区写满会使用另一个输入缓冲区,然后RMAN确认备份的数据块并进行校验之后推入输出缓冲区,当输出缓冲区被填满,会将来自不同数据文件的数据混在一起写入磁盘或磁带。为通道进程工作提供内存;

然后RMAN主进程调动sys.DBMS_RCVMAN数据包用来访问控制文件,并在任何操作前设置TIME运算符和校验数据文件头的检查点信息,将此类信息返回给RMAN主进程;并且RMAN 在构建实际备份/还原命令之前自动执行负载均衡(load-balancing)算法和性能增强(performance-enhancing)算法。

然后RMAN主进程通过sys.DBMS_BACKUP_RESTORE数据包校验sys.DBMS_RCVMAN数据包传回来的控制文件和必须的一些信息,并将这些信息传回RMAN服务器进程(通道进程);

RMAN服务器进程(通道进程)会基于recover.sql文件的代码创建一个PL/SQL块来调用sys.DBMS_BACKUP_RESTORE数据包(备份的动力)备份数据文件,影子进程在通道之间进行轮询扫描并将信息返回给RMAN服务器进程(通道进程),RMAN主进程并在通道之间基于负载均衡算法分配进程工作。

原文链接:https://blog.csdn.net/renyanjie123/article/details/103539981
6-[使用RMAN工具备份] backupdb 手敲代码并加注释…rman模式下备份数据库
当数据库打开时,可以使用BACKUP命令备份数据文件时,可以为其设置参数定义备份段的文件名、文件数和每个文件的通道。
可以使用RMAN BACKUP命令备份如下对象:归档重做日志、 数据文件、数据库、表空间、控制文件、 备份集。

备份数据库的例子

(1)创建rman的表空间和用户,并授权,并创建备份的路径,以便进行接下来的操作。

--创建catalog所需的表空间
SQL> create tablespace rman_tbsp datafile 'D:\OracleFile\recover\rman_tbsp.dbf' size 1G;


表空间已创建。
--创建rman用户并授权
SQL> create user rman_user identified by mrsoft default tablespace rman_tbsp temporary tablespace temp;

用户已创建。

SQL> grant connect,recovery_catalog_owner,resource to rman_user;

授权成功。

(2)在CMD里打开rman创建备份路径

--登录rman
rman target system/Jacjqwl123 catalog rman_user/mrsoft;
--创建恢复目录
create catalog tablespace rman_tbsp;
--注册数据库
register database;

在这里插入图片描述
(3)在rman下备份数据库
如果备份操作是在数据库被安全关闭之后进行的,那么对整个数据库的备份是一致的。与之相对应,如果是在打开状态下对整个数据库进行的备份,则该备份是非一致的。
【非一致性备份】
–非一致性备份

backup database format 'D:\Oraclefile\Backup\oradb_%Y_%M_%D_%U.bak' maxsetsize 1G;
--如果建立的是非一致性备份, 那么必须在完成备份后对当前的联机重做日志进行归档
--因为在使用备份恢复数据库时,需要使用当前重做日志中的重做记录
alter database open;
--查看备份集与备份片段信息
list backup of database;

在这里插入图片描述
在这里插入图片描述

7-RMAN> sql ‘’;
RMAN模式下,如何写修改SQL命令?

--非一致性备份后,需要对联机重做日志进行归档
--因为使用备份数据恢复数据库时,需要当前重做日志中的重做记录。
--下面就执行了SQL语句alter system archive log current;
sql'alter system archive log current';
--查看备份集和备份片段的信息
list backup;

在这里插入图片描述
在这里插入图片描述

8-[使用RMAN工具备份] backuptablespace
手敲代码并加注释…rman模式下备份表空间

--备份表空间
RMAN> run{
2> allocate channel ch_1  type disk;
3> backup tablespace  users format  'D:\OracleFile\Backup\%d_%p_%t_%c.dbf';
4> }
--查看备份集和备份片段的信息
RMAN> list backup of tablespace users;

在这里插入图片描述
在这里插入图片描述

9-[使用RMAN工具备份] backupfile
手敲代码并加注释…rman模式下备份数据文件

--备份数据文件
RMAN> backup datafile 1,2,3 filesperset 3;
--filesperset是每个备份集中包含的最大文件个数
--其中的12345是文件编号,利用v$datafile或者dba_data_files可以查看
list backup of datafile 1,2,3;--查看备份结果

在这里插入图片描述
在这里插入图片描述

10-[使用RMAN工具备份] backupcontrol
手敲代码并加注释…rman模式下备份控制文件

--备份控制文件
backup current controlfile;--备份当前的控制文件
backup tablespace users include curent controfile;--或者备份指定表空间当前的控制文件
list backup of controlfile;--查看备份集和备份段信息

在这里插入图片描述
在这里插入图片描述

11-[使用RMAN工具备份] backuparchivelog
手敲代码并加注释…rman模式下备份归档重做日志文件

–备份归档重做日志文件

backup archivelog all delete all input;
list backup of archivelog all;--查看备份集

在这里插入图片描述在这里插入图片描述

12-[使用RMAN工具完全恢复]
backupandrecovery 手敲代码并加注释…rman模式下备份数据库与还原

【例子:在NOARCHIVELOG模式下恢复删除的数据文件】
当数据库处于NOARCHIVELOG模式时,如果出现介质故障,则在最后一次备份之后对数据库所做的任何操作都将丢失。通过RMAN执行恢复时,只需要执行RESTORE命令将数据库文件修复到正确的位置,然后就可以打开数据库。
也就是说,对于处于NOARCHIVELOG模式下的数据库,管理员不需要执行RECOVER命令。另外,在备份NOARCHIVELOG 数据库时,数据库必须处于一致的状态,这样才能保证使用备份信息恢复数据后,各个数据文件是一致的。
(1)将归档模式改为NOARCHIVELOG模式,注意:更改时数据库的启动模式是mount

--在sqlplus环境下,以dba的身份登录
--查看数据库归档模式
select log_mod from v$database;
--关闭数据库
shutdown immediate;
--以mount模式启动数据库,以便更改归档模式
startup mount;
--更改为不归档模式
alter database noarchiveog;
--打开数据库
alter database open;
--再次查看数据库是否为不归档模式
select log_mod from v$database;

在这里插入图片描述

(2)运行rman连接到数据库,更改数据库状态为mount

--登录rman
rman target system/Jacjqwl123 nocatalog;
--关闭数据库
shutdown immediate;
--以mount模式启动数据库
startup mount;

在这里插入图片描述
(3)执行备份数据库,备份完成后打开数据库

--执行备份数据库
rman target system/Jacjqwl123 nocatalog;
run{
allocate channel ch_1 type disk;
backup database format 'D:\OracleFile\Backup\orcl_%t_%u.bak';
}
--打开数据库
alter database open;

在这里插入图片描述
(4)模拟介质故障文件丢失

--关闭数据库后,手动删除一个数据文件user_01.dba(模拟介质丢失)
shutdown immediate;

(5)恢复数据库
当RMAN使用备份恢复数据库时,必须使目标数据库处于MOUNT 状态才能访问控制文件。当设置数据库到MOUNT 状态后,就可以执行RESTORE 命令了,让RMAN决定最新的有效备份集,并使用备份集修复损坏的数据库文件。

--mount模式启动数据库
startup mount;
--通过恢复的模式来恢复删除的文件
run{
allocate channel ch_1 type disk;
restore database;
}
--最后打开数据库,看看文件是否恢复
alter database open;

13-v$database 是什么表?
oracle的系统视图,存放数据库的基本信息
14-写出以下SQL:
sqlplus登录数据库 -> 查询数据库模式-> 关闭数据库 -> 启动到mount模式 -> 修改数据库为noarchivelog模式 -> 打开database

请输入用户名:  system/Jacjqwl123 as sysdba

连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select log_mode from v$database;

LOG_MODE
------------
ARCHIVELOG

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 3390558208 bytes
Fixed Size                  2180464 bytes
Variable Size            1862273680 bytes
Database Buffers         1509949440 bytes
Redo Buffers               16154624 bytes
数据库装载完毕。
SQL> alter database noarchivelog;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> select log_mode from v$database;

LOG_MODE
------------
NOARCHIVELOG

15-【使用RMAN工具部分恢复】
recovery 基于时间的不完整恢复数据库的代码命令编写并添加注释…

(1)启动rman并连接到数据库,更改数据库状态为mount

---在cmd重新登录RMAN
rman target system/Abc123 nocatalog;

--在rman模式下
--关闭数据库
shutdown immediate;
--为了备份数据库以mount模式启动数据库
startup mount;

在这里插入图片描述
(2)创建数据库的一个备份
–运行备份数据库

run{
allocate channel ch_1 type disk;
allocate channel ch_2 type disk;
backup database format 'D:\OracleFile\Backup\database_%t_%u_%c.bak';
backup archivelog all format 'D:\OracleFile\Backup\archive_%t_%u_%c.bak';
}

在这里插入图片描述
(3)完成备份后打开数据库

--在cmd里打开数据库
alter database open;
--在sqlplus里登录system用户

在这里插入图片描述
(4)sqlplus里对表格进行操作,模拟一个错误

--在sqlplus环境下:
select to_char(sysdate,'hh24:mi:ss') from dual;--**记录要错误发生前的时间

--对表格进行操作
alter session set nls_date_format = 'yyyy-mm-dd';--设置时间格式
insert into scott.emp(empno,ename,job,hiredate,sal)
values(1234,'东方','manager','1975-01-12',5000);--向emp插入数据
insert into scott.emp(empno,ename,job,hiredate,sal)
values(6789,'西方','salesman','1980-12-12',3000);--向emp插入数据

commit;--提交

在这里插入图片描述
(5)更改数据库状态为mount

---在rman环境中
shutdown immediate;
startup mount;

在这里插入图片描述
(6)执行基于时间的不完全恢复
在实际运用中,这一步之前可以先脱机备份,包括数据文件、控制文件、归档重做日志文件防止不完全恢复失败

--执行数据按时间点还原
run{
sql'alter session set nls_date_format="YYYY-MM-DD HH24:MI:SS"';
allocate channel ch_1 type disk;
allocate channel ch_2 type disk;
set until time '2020-7-20 14:20:39';--**之前记录的错误发生前的时间
restore database;
recover database;
sql'alter database open resetlogs';
}

在这里插入图片描述
在这里插入图片描述

16-SCN号是什么?其什么作用?
SCN(System Change Number 简称 SCN)是当Oracle数据库更新后,由DBMS自动维护去累积递增的一个数字。在Oracle中,有四种SCN,分别为:系统检查点SCN、数据文件检查点SCN、启动SCN、终止SCN。
基于更改的不完全恢复对于基于更改的不完全恢复,则已存在问题的事务的SCN号来终止恢复过程,在恢复数据库之后,将包含低于指定SCN号的所有事务。在RMAN中执行基于更改的不完全回复时,可以使用SET UNTIL SCN命令来指定恢复过程的终止SCN号。其他的操作步骤与执行基于时间的不完全恢复完全相同。执行基于更改的不完全恢复时,DBA唯一需 要考虑的确定适当的SCN号。LogMiner是确认事务SCN号的常用工具。

--查询系统的SCN,此SCN是大约每隔三秒种增加1
sys@ORCL> SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;
select current_scn from V$database; --两种查看当前SCN

学完本节,你应该能具备数据库的日常备份和恢复机制,逐步具备一名DBA数据库日常管理能力…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值