备份恢复基础复习

简介: 1、数据库备份 数据库的备份分为一致性备份 和 非一致性备份。。。。备份数据库也就是备份数据库的四个文件:数据文件、控制文件、参数文件、口令文件。 数据库的一致性备份:                 需要关闭数据库,所以也就是传说中的冷备份,基本步骤非常简单: 1)列出数据库内的所有数据文件和控制文件:通过查询v$controlfile和v$datafile中的name列即可。

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、用户管理的完全恢复










相关文章
|
6月前
|
关系型数据库 MySQL 数据库
掌握MySQL数据库基础知识 同步练习与实训
掌握MySQL数据库基础知识 同步练习与实训。
85 0
|
7月前
|
存储 关系型数据库 MySQL
掌握MySQL数据库基础知识的同步练习与实训
进行掌握MySQL数据库基础知识的同步练习与实训。
102 0
|
8月前
|
数据库
数据库之经典面试
数据库之经典面试
61 0
|
7月前
|
存储 安全 数据库
第10章 数据库恢复技术——复习笔记
第10章 数据库恢复技术——复习笔记
|
7月前
|
XML 存储 数据管理
第13章 数据库技术发展概述——复习笔记
第13章 数据库技术发展概述——复习笔记
|
7月前
|
存储 算法 数据库
第12章 数据库管理系统——复习笔记
第12章 数据库管理系统——复习笔记
|
7月前
|
SQL 安全 数据库
|
存储 SQL 供应链
数据库复习要点(数据库知识点总汇)
数据库复习要点(数据库知识点总汇)
120 0
|
SQL XML Oracle
C#编程-61:数据库复习笔记
C#编程-61:数据库复习笔记
C#编程-61:数据库复习笔记
|
SQL 存储 Oracle
不得不会的Oracle数据库知识点(四)
不得不会的Oracle数据库知识点(四)

热门文章

最新文章