备份恢复基础复习

1、数据库备份

数据库的备份分为一致性备份 和 非一致性备份。。。。备份数据库也就是备份数据库的四个文件:数据文件、控制文件、参数文件、口令文件。

数据库的一致性备份:                 需要关闭数据库,所以也就是传说中的冷备份,基本步骤非常简单:

1)列出数据库内的所有数据文件和控制文件:通过查询v$controlfile和v$datafile中的name列即可。

2)关闭数据库SQL>shutdown immediate

3)利用操作系统命令拷贝所有的:数据文件,控制文件,参数文件、口令文件到指定的目录中。

4)重新启动数据库SQL>startup   备份完成。

数据库的非一致性备份:                不需要关闭数据库,数据库处于open状态,不影响业务正常的运行。注意非一致性数据库备份只能在archivelog模式下,而一致性备份可以在archivelog和noarchivelog模式下都是可以的。

1)列出数据库内的所有数据文件和控制文件:通过查询v$controlfile和v$datafile中的name列即可。

2)将数据库设置为备份模式,在设置备份模式后,数据库会做一个全局的检查点,然后再所有的数据文件的头块加锁,以确保数据备份中数据文件头块不会发生变化,执行:alter database begin backup

3)备份数据文件和控制文件,其中数据文件和一致性备份一样,使用操作系统命令即可,但是控制文件的备份,需要使用:alter database backup controlfile to '/u01/app/oracle/ctl.bak

4)结束数据库备份。为了确保数据文件备份的同步性,还应该归档当前日志组'SQL>alter database end backup; SQL> alter system archive log current;

2、备份表空间

备份表空间,就是指的是当数据库处于open状态,备份其数据文件的方法。。。注意表空间的备份只能是archivelog模式下的备份,而不能是noarchivelog。表空间的备份可以分为脱机备份和联机备份。

脱机备份

脱机备份是指当表空间处于offline的时候,对单个数据文件或多个数据文件进行备份,与联机备份的相比,可以产生较少的重做日志。

脱机备份有一个缺点,那就是system表空间,正在使用的undo表空间,都不能脱机,也就不能备份。下面以备份USER表空间为例,来说明:

1)确定表空间所包含的数据文件,可以通过视图:DBA_DATA_FILES 查看表空间和数据文件的对应关系:select file_name ,tablespace_name from dba_data_files;

2)将表空间脱机:alter tablespace USER offline;

3)利用操作系统命令复制数据文件。

4)备份完数据文件之后,将表空间设置为联机:alter tablespace USER online;

联机备份

连接备份是指表空间处于online状态,进行数据文件的备份,这种备份的优点是能对所有的表空间数据文件进行备份,不管是system还是正在使用的undo表空间。但是其缺点是产生大量的重做日志信息和归档信息。

为什么会产生大量的的重做和归档呢?这是一个很复杂的问题,简单解释一下:因为对于处于backup 模式的表空间内的数据文件,当第一次受到DML操作(此时dba正在使用操作系统命令来备份数据文件)时,因为操作系统的copy是以操作系统的数据块大小来执行的,而数据库内的数据文件的数据块的大小一般会比操作系统的大。还有,copy是操作系统命令,不能与oracle内部命令进行交互,这就造成了多次copy系统块的的数据来完成一个db数据块的拷贝,这就造成了数据的不一致。所以oracle把所有进行DML操作的数据块全部先存入redo,然后再进行DML操作。。。。这就是为什么联机备份表空间会产生大量的重做信息。更详细的资料请参考:http://blog.csdn.net/changyanmanman/article/details/7899056

1)确定表空间所包含的数据文件,利用dba_data_files查看就可以了。

2)修改表空间位备份模式,此时会在表空间的所有数据文件块头上加上锁,scn被冻结。执行:alter tablespace USERS begin backup;

3)利用操作系统命令copy数据文件。

4)设置表空间位正常模式:alter tablespace USERS end backup;

模拟并处理联机备份失败的处理:

在进行联机备份数据文件的时候,如果数据库突然因为断电或者某些故障而实例崩溃,当再次进行数据库装载的时候,会提示需要进行实例恢复:

ORA-01113: file 6 needs media recovery
ORA-01110: data file 6: '/u01/app/oracle/oradata/orcl/test.dbf'

如何进行处理呢?下面我们通过:首先修改表空间备份模式,然后关闭数据库,再然后启动数据库,来模拟此情景:

SQL> alter tablespace TEST begin backup;

Tablespace altered.

SQL> select file_name,tablespace_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
/u01/app/oracle/oradata/orcl/users01.dbf
USERS

/u01/app/oracle/oradata/orcl/sysaux01.dbf
SYSAUX

/u01/app/oracle/oradata/orcl/undotbs01.dbf
UNDOTBS1

FILE_NAME
--------------------------------------------------------------------------------
TABLESPACE_NAME
------------------------------
/u01/app/oracle/oradata/orcl/system01.dbf
SYSTEM

/u01/app/oracle/oradata/orcl/example01.dbf
EXAMPLE

/u01/app/oracle/oradata/orcl/test.dbf
TEST

6 rows selected.

SQL> host cp /u01/app/oracle/oradata/orcl/test.dbf /u01/app/oracle/test.bak

SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  608174080 bytes
Fixed Size                  1220820 bytes
Variable Size             243273516 bytes
Database Buffers          356515840 bytes
Redo Buffers                7163904 bytes
Database mounted.
ORA-01113: file 6 needs media recovery
ORA-01110: data file 6: '/u01/app/oracle/oradata/orcl/test.dbf'

SQL> startup force mount;
ORACLE instance started.

Total System Global Area  608174080 bytes
Fixed Size                  1220820 bytes
Variable Size             243273516 bytes
Database Buffers          356515840 bytes
Redo Buffers                7163904 bytes
Database mounted.
SQL> desc v$backup
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 FILE#                                              NUMBER
 STATUS                                             VARCHAR2(18)
 CHANGE#                                            NUMBER
 TIME                                               DATE

SQL> select status,change#,time from v$backup where file#=6;

STATUS                CHANGE# TIME
------------------ ---------- ---------
ACTIVE                1060636 30-JUL-13             -----active说明此数据文件正在被备份

SQL> alter database datafile '/u01/app/oracle/oradata/orcl/test.dbf' end backup;    
Database altered.

上面这条是关键,通过强制挂载数据库之后,可以使用alter database end backup,也可以使用上面的针对某个数据文件的结束;还有一种通过recover命令结束数据文件的备份:recover datafile 6;

SQL> alter database open;
Database altered.

好了,现在数据库可以正常启动了,再看一下现在对应的数据文件的状态:

SQL> select * from v$backup where file#=6;

     FILE# STATUS                CHANGE# TIME
---------- ------------------ ---------- ---------
       6 NOT ACTIVE            1060636 30-JUL-13

3、备份控制文件

当发生涉及数据库的配置改变,如增加减少表空间,数据文件,日志文件组或日志文件成员。当执行数据库一致性备份的时候,数据库的控制文件是不活动的,我们可以直接用操作系统命令来备份;当数据库处于open状态时,我们用alter database 命令既可以建立控制文件副本,也可以把控制文件备份到跟踪文件中。

演示alter database备份控制文件:

alter database backup controlfile to '/u01/app/oracle/ctl.bak'但是如果该目录下已经有控制文件了,我们可以用:alter database backup controlfile to '/u01/app/oracle/ctl.bak' reuse;

演示备份到跟踪文件中:

1)查看跟踪文件位置:show parameter user_dump_dest

2)确定跟踪文件名称,我们可以通过v$process,v$session确定当前的会话的的操作系统对应的pid,为什么需要操作系统的pid呢?这就要从跟踪文件的命名规则说起了,跟踪文件的命名规则如下:<SID>_ora_<SPID>.trc,其中SID代表数据的的sid,SPID对应的是此次会话的进程id所对应的操作系统进程号。好了,这就是为什么需要确定操作系统的pid的原因了。

SQL> select a.spid from v$process a,v$session b where a.addr=b.paddr and b.username='SYS';

3)执行控制文件备份命令:alter database bakcup controlfile to trace;'

4)跟踪文件时文本格式,去掉了其中的注释,就可以看到真正创建控制文件的语句了。在nomount的模式下,我们创建数据文件即可:

4、备份归档日志,参数文件,口令文件

————备份归档日志直接用操作系统命令;

————对于参数文件,如果是用的pfile,那直接可以用操作系统备份copy,但是如果是spfile,因为其是二进制文件,我们必须用下面的语句进行备份:

SQL>create pfile='/u01/app/oracle/pfile.bak' from spfile='$ORACLE_HOME/dbs/spfileorcl.ora'

————备份口令文件直接用操作系统命令。

5、用户管理的完全恢复

时间: 2024-08-18 07:32:14

备份恢复基础复习的相关文章

备份恢复4.2——rman恢复基础概念

rman恢复与用户管理的备份恢复一样,都分为完全恢复和不完全恢复,都需要工作在archivelog模式下. rman10g之后只保留了0级和1级备份,1级备份分为:cumulative(累积增量)和differential(差异增量)两种模式,如果不加关键词默认是差异增量备份: backup incremental level 1 cumulative database(累积增量) backup incremental level 1 database(差异增量) 连接: rman connec

DockOne微信分享(八十一):唯品会数据库备份恢复容器化项目实践经验总结

本文讲的是DockOne微信分享(八十一):唯品会数据库备份恢复容器化项目实践经验总结[编者的话]本文分享了唯品会数据库Docker的异地容灾项目实践经验,项目中针对用户数据库的异地恢复场景的需求进行开发和测试,整合了网络,存储.调度.监控,镜像等多个模块.在实施完成后,从技术上总结关于选型.开发.踩坑.测试等方面的经验. 项目背景 数据库Docker的异地备份恢复容灾项目,针对用户数据库的异地备份恢复场景的需求进行开发和测试,整合了容器网络.存储.调度.监控.镜像等多个模块.同时针对数据库的日

mysql qpress压缩备份恢复

说明: 1.前面博客已经介绍过gzip压缩方法,备份正常,但后来测试恢复的时候,发现命中bug,报错如下:  InnoDB: Page [page id: space=9494, page number=27743946] log sequence number 2332453520996 is in the future! Current system log sequence number 2332453312855. InnoDB: Your database may be corrupt

备份恢复6——rman配置和设置

原文转自:http://blog.csdn.net/tianlesoftware/article/details/5674309 一. 配置数据库以ARCHIVELOG 模式运行  在ORACLE 10g 之前,在将数据库置入Archivelog 模式后,需要启动arch进程. 设置参数LOG_ARCHIVE_START 为true,也可启动arch进 程.在10g以后,不需要使用该方法,当数据库处于archivelog模式时,Oracle 会自动启动arch进程. Arch 进程由LGWR 进

备份恢复4.3——rman备份恢复综合演练

1. 检查数据库模式:   sqlplus /nolog     conn /as sysdba    archive log list (查看数据库是否处于归档模式中)    若为非归档,则修改数据库归档模式.    startup mount    alter database archivelog    alter database open 2.连接到target数据库 命令: connect target  /  (connect target system/oracle@ora10g

Oracle 备份恢复概念

--====================== -- Oracle 备份恢复概念 --======================       数据库维护中,备份或恢复是重中之重的问题.尽管很多时候数据库系统运行缓慢,但对数据库数据的丢失而言,显然后者损失的代价是 不言而喻的.因此DBA至少在保证数据不丢失的情况下来提高系统的性能是最起码的要求.关于什么是备份与恢复,在此不做赘言.   一.物理备份与逻辑备份     物理备份         是所有物理文件的一个副本,比如数据文件,控制文件,

php实现mysql备份恢复分卷处理的方法_php技巧

本文实例讲述了php实现mysql备份恢复分卷处理的方法.分享给大家供大家参考.具体分析如下: 分卷处理就是把握们要处理的数据分成一个个小文件进行处理了,这里我来给大家介绍一个php mysql备份恢复分卷处理类,实现mysql数据库分卷备份,选择表进行备份,实现单个sql文件及分卷sql导入. 分卷导入类及思路详解 数据库导入导出是一个后台必要拥有的功能,网上一搜,有很多关于数据库导入导出的,但基本上一个大的系统,包含了许多我们并不需要的,而且他们都是自己的后台的形式,我并不喜欢的是拿人家的东

使用RMAN实现异机备份恢复(WIN平台)

--=================================-- 使用RMAN实现异机备份恢复(WIN平台)--=================================     在有些情况下,如数据库服务器处于磁盘空间的压力或成本控制需要将数据文件备份到异机,使用RMAN可以完成该工作.基于Windows平台所需完成的配置相对简单,仅仅是添加账户与使用新增的帐户来启动数据库服务以及设置共享路径.    下面给出具体描述.    一.配置数据库服务器与备份目的主机    1.

详解MySQL的主从复制、读写分离、备份恢复_Mysql

一.MySQL主从复制 1.简介 我们为什么要用主从复制 主从复制目的 可以做数据库的实时备份保证数据的完整性 可做读写分离主服务器只管写从服务器只管读这样可以提升整体性能. 原理图 从上图可以看出同步是靠log文件同步读写完成的. 2.更改配置文件 两天机器都操作确保 server-id 要不同通常主ID要小于从ID.一定注意. # 3306和3307分别代表2台机器 # 打开log-bin,并使server-id不一样 #vim /data/3306/my.cnf log-bin = /da