oracle归档备份详细步骤.docx

上传人:b****5 文档编号:5326729 上传时间:2022-12-15 格式:DOCX 页数:14 大小:20.99KB
下载 相关 举报
oracle归档备份详细步骤.docx_第1页
第1页 / 共14页
oracle归档备份详细步骤.docx_第2页
第2页 / 共14页
oracle归档备份详细步骤.docx_第3页
第3页 / 共14页
oracle归档备份详细步骤.docx_第4页
第4页 / 共14页
oracle归档备份详细步骤.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

oracle归档备份详细步骤.docx

《oracle归档备份详细步骤.docx》由会员分享,可在线阅读,更多相关《oracle归档备份详细步骤.docx(14页珍藏版)》请在冰豆网上搜索。

oracle归档备份详细步骤.docx

oracle归档备份详细步骤

归档模式下的热备份前期准备

常用数据字典

v$datafile

v$backup

v$controlfile

v$archived_log

v$archive_dest

dba_data_file

数据库备份和恢复的物理结构有以下组成

数据文件

控制文件

重做日志文件

归档日志文件

备份类型

完全备份:

用于建立增量备份和累积备份的一个基点,备份所有数据块

增量备份:

只备份上次增量备份,累积备份或者完全备份以后已改变的数据块

累积备份:

只备份上次完全备份以后已经更改的数据块

一般累计备份是为rman提供的.

归档模式下的全库备份可以open下做全库不一致备份也可以是在数据库关闭下做全库冷备份

归档模式下的热备份备份结构

数据文件

归档重做日文

控制文件

参数文件

网络配置文件--------可选

口令文件------------可选

归档模式下的热备份是在数据库open的装下备份此时的备份叫做不一致性备份,再恢复数据库时必须要用归档重做日志来恢复完整性的

SQL>colnamefora50

SQL>selectname,statusfromv$datafile;查看数据文件状态和位置

NAMESTATUS

---------------------------------------------------------

/u01/app/oracle/oradata/sheng/system01.dbfSYSTEM

/u01/app/oracle/oradata/sheng/undotbs01.dbfONLINE

/u01/app/oracle/oradata/sheng/sysaux01.dbfONLINE

/u01/app/oracle/oradata/sheng/users01.dbfONLINE

/u01/app/oracle/oradata/sheng/example01.dbfONLINE

SQL>selectnamefromv$controlfile;得到控制文件的位置

NAME

--------------------------------------------------

/u01/app/oracle/oradata/sheng/control01.ctl

/u01/app/oracle/oradata/sheng/control02.ctl

/u01/control/control03.ctl

SQL>colfile_namefora50

SQL>selectfile_name,tablespace_namefromdba_data_files;查看表空间所对应的数据文件

FILE_NAMETABLESPACE_NAME

----------------------------------------------------------------------

/u01/app/oracle/oradata/sheng/users01.dbfUSERS

/u01/app/oracle/oradata/sheng/sysaux01.dbfSYSAUX

/u01/app/oracle/oradata/sheng/undotbs01.dbfUNDOTBS1

/u01/app/oracle/oradata/sheng/system01.dbfSYSTEM

/u01/app/oracle/oradata/sheng/example01.dbfEXAMPLE

SQL>select*fromv$backup;查看备份状态.

FILE#STATUSCHANGE#TIME

-----------------------------------------------

1NOTACTIVE0

2NOTACTIVE0

3NOTACTIVE0

4NOTACTIVE0

5NOTACTIVE0

12rowsselected.

notactive表示没有备份状态active表示为备份状态

change表示表空间备份的上次scn号time为备份时间

SQL>selectdestination,binding,target,statusfromv$archive_dest;归档日志文件的路径

DESTINATIONBINDINGTARGETSTATUS

---------------------------------------------

/u01/archive/disk1MANDATORYPRIMARYVALID

/u01/archive/disk2OPTIONALPRIMARYVALID

/u01/archive/disk3OPTIONALPRIMARYVALID

/u01/archive/disk4OPTIONALPRIMARYVALID

OPTIONALPRIMARYINACTIVE

OPTIONALPRIMARYINACTIVE

OPTIONALPRIMARYINACTIVE

OPTIONALPRIMARYINACTIVE

OPTIONALPRIMARYINACTIVE

OPTIONALPRIMARYINACTIVE

10rowsselected.

SQL>

SQL>selectdest_id,namefromv$archived_log;查看归档日志文件会很多

SQL>selectcount(*)fromv$archived_log;统计下一共多少条归档重做日志

COUNT(*)

----------

104

归档模式下的冷备份操作归档模式可以关闭做一个冷备份也可以开机热备

归档模式下的冷备份还需要redolog的文件的位置需要使用数据字典

v$logfile

SQL>selectmemberfromv$logfile;

MEMBER

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/sheng/redo03.log

/u01/app/oracle/oradata/sheng/redo02.log

/u01/app/oracle/oradata/sheng/redo01.log

/u01/logfiles/redo04.log

/u01/logfiles/redo04a.log

冷备份正常关闭数据库shutdownimmediate这样所有的数据文件的scn是一致的

这时备份redologfiles可以选择不备份但也最好备份

优点

操作简单

操作

shutdownimmediate

hostcp

cp参数文件

cp口令文件

cp数据文件SQL>selectname,statusfromv$datafile;这条语句得出的所有的文件

最好用tar打包复制到磁盘或是磁带

归档模式下的全库备份------------表空间级别的备份数据库在open装下时如果直接cp数据文件时,因为此时数据库是打开的状态,数据文件此时是可以被读写的,所以在cp时,数据文件此时会被访问或是修改,造成数据文件内包含新数据或是老数据.会产生数据文件的不一致性,这时候直接cp的数据文件是不可以作为恢复数据库的备份文件

要想备份表空间级别的数据文件必须要先冻结数据文件的SCN号然后再cp数据文件,但此时依然会产生数据的不一致,但在归档模式下,这些数据文件的所有被更改的信息会写入redolog里,然后执行归档重做日志,当需要恢复数据库时,当需要这些产生变化的数据时,使用归档重做日志恢复即可

所以在归档模式下全库备份,就要备份归档重做日志,好达到数据文件的一致性.

不备份联机重做日志的原因是因为open状态下的LGWR会一直运行的,所以重做日志是有变化的而且数据文件也是在随时变化的

步骤

beginbackup冻结表空间的scn

CP数据文件到备份目录

endbackup解冻表空间的scn

整个数据库备份就是表空间里的数据文件一个一个的cp

SQL>altertablespaceexamplebeginbackup;

Tablespacealtered.

SQL>select*fromv$backup;

FILE#STATUSCHANGE#TIME

-----------------------------------------------

1NOTACTIVE61947415-MAY-10

2NOTACTIVE61955615-MAY-10

3NOTACTIVE61969215-MAY-10

4NOTACTIVE61972115-MAY-10

5ACTIVE71294916-MAY-10

SQL>!

cp/u01/app/oracle/oradata/sheng/example01.dbf(到备份路径)

SQL>altertablespaceexampleendbackup;

Tablespacealtered.

SQL>

SQL>select*fromv$backup;

FILE#STATUSCHANGE#TIME

-----------------------------------------------

1NOTACTIVE61947415-MAY-10

2NOTACTIVE61955615-MAY-10

3NOTACTIVE61969215-MAY-10

4NOTACTIVE61972115-MAY-10

5NOTACTIVE71294916-MAY-10

SQL>

SQL>altertablespaceT1beginbackup;begin为冻结此数据文件备份时不能是活动的

Tablespacealtered.

SQL>hostcp/u01/tablespace/usertable/t1_01.dbf/u01/hostbackup/disk1OS命令热备份

SQL>select*fromv$backup;

FILE#STATUSCHANGE#TIME

-----------------------------------------------

1NOTACTIVE0

2NOTACTIVE0

3NOTACTIVE0

4NOTACTIVE0

5NOTACTIVE0

6NOTACTIVE0

7NOTACTIVE0

8NOTACTIVE0

9NOTACTIVE0

10ACTIVE95499005-MAY-10以备份的数据文件

11NOTACTIVE0

12NOTACTIVE0

12rowsselected.

SQL>altertablespaceT1endbackup;解冻此数据文件

Tablespacealtered.

SQL>

归档模式下的全库备份------------表空间级别的备份------冻结与解冻SCN中间的产生的变化beginbackup与endbackup中间产生的过程

tablespaceischeckpointed表空间在内存的sgadatabasebuffercache里的脏数据都会可靠的写到这个表空间的数据文件上

会产生一个数据文件的scn号这个scn号就是刚才表空间产生检查点的scn号,并且停止增长scn号.被冻结

如果此时这个数据文件有被改变,那产生变化的数据块就会写到redologs里然后redolog会被归档当恢复时发现有变化的数据块时

可以做一个实验:

来验证这个过程

SQL>selectfile_name,tablespace_namefromdba_data_files;

FILE_NAMETABLESPACE_NAME

--------------------------------------------------------------------------------

/u01/app/oracle/oradata/sheng/users01.dbfUSERS

/u01/app/oracle/oradata/sheng/sysaux01.dbfSYSAUX

/u01/app/oracle/oradata/sheng/undotbs01.dbfUNDOTBS1

/u01/app/oracle/oradata/sheng/system01.dbfSYSTEM

/u01/app/oracle/oradata/sheng/example01.dbfEXAMPLE

SQL>createuseru1identifiedbyu1defaulttablespaceexample;

Usercreated.

SQL>grantconnect,resourcetou1;

Grantsucceeded.

SQL>connu1/u1

Connected.

SQL>createtablefruit(namevarchar2(32));

Tablecreated.

SQL>insertintofruitvalues('orange');

1rowcreated.

SQL>commit

2;

Commitcomplete.

ERRORatline1:

ORA-00936:

missingexpression

SQL>select*fromfruit;

NAME

--------------------------------

orange

SQL>

SQL>conn/assysdba

Connected.

SQL>altersystemcheckpoint;登录sys用户产生检查点把以上操作写到数据文件中(从databasebuffercache中写到磁盘中的数据文件)

Systemaltered.

SQL>

SQL>connu1/u1

Connected.

SQL>selectdbms_rowid.rowid_block_number(rowid)blk,namefromfruit;

BLKNAME

------------------------------------------

1012orange

就是我想看下这条记录在文件上的那个块上通过rowid来查看在那个块上

SQL>showparameterdb_block

NAMETYPEVALUE

-----------------------------------------------------------------------------

db_block_buffersinteger0

db_block_checkingstringFALSE

db_block_checksumstringTRUE

db_block_sizeinteger8192

SQL>!

[oracle@fs11sheng]$ddif=example01.dbfibs=8192skip=1011count=2|strings

2+0recordsin

32+0recordsout

16384bytes(16kB)copied,0.000611604seconds,26.8MB/s

orange

SQL>connu1/u1

Connected.

SQL>updatefruitsetname='apple';

1rowupdated.

SQL>commit;

Commitcomplete.

SQL>select*fromfruit;

NAME

--------------------------------

apple

SQL>conn/assysdba

SQL>altersystemcheckpoint;

Systemaltered.

[oracle@fs11~]$cd/u01/app/oracle/oradata/sheng/

[oracle@fs11sheng]$ddif=example01.dbfibs=8192skip=1011count=2|strings

2+0recordsin

32+0recordsout

16384bytes(16kB)copied,0.000338887seconds,48.3MB/s

apple,新值

orange老值为什么会有老值就是oracle的内部细节问题

[oracle@fs11sheng]$

归档模式下的全库备份------------表空间级别的备份------------beginbackup时出现的断电意外处理  如果此时正在对某个表空间进行beginbackup时而且这个表空间已经处在beginbackup状态计算机突然断电,再次重启数据库时会产生报错

做一个断电实验来看下这样的问题如何解决

先查看下表空间和数据文件的对应关系

SQL>selectfile_id,file_name,tablespace_namefromdba_data_files;

FILE_IDFILE_NAMETABLESPACE_NAME

------------------------------------------------------------------------------------------

4/u01/app/oracle/oradata/sheng/users01.dbfUSERS

3/u01/app/oracle/oradata/sheng/sysaux01.dbfSYSAUX

2/u01/app/oracle/oradata/sheng/undotbs01.dbfUNDOTBS1

1/u01/app/oracle/oradata/sheng/system01.dbfSYSTEM

5/u01/app/oracle/oradata/sheng/example01.dbfEXAMPLE

SQL>altertablespaceusersbeginbackup;把users表空间设置为beginbackup状态

Tablespacealtered.

SQL>shutdownabort;abort立即关机相当于断电

ORACLEinstanceshutdown.

SQL>startup启动数据库

ORACLEinstancestarted.

TotalSystemGlobalArea285212672bytes

FixedSize1218992bytes

VariableSize125830736bytes

DatabaseBuffers155189248bytes

RedoBuffers2973696bytes

Databasemounted.

ORA-01113:

file4needsmediarecovery此时在mount数据库后会报错必须媒介恢复意思是文件4需要恢复

ORA-01110:

datafile4:

'/u01/app/oracle/oradata/sheng/users01.dbf'

SQL>select*fromv$backup;查看数据字典v$backup查看备份状态

FILE#STATUSCHANGE#TIME

-----------------------------------------------

1NOTACTIVE61947415-MAY-10

2NOTACTIVE61955615-MAY-10

3NOTACTIVE61969215-MAY-10

4ACTIVE71370116-MAY-10

5NOTACTIVE71294916-MAY-10

此时显示的是数据文件4是在备份状态下也就是在beginbackup状态所以endbackup就可以啦

SQL>alterdatabasedatafile4endbackup;

Databasealtered.

SQL>alterdatabaseopen;此时在open就可以啦

Databasealtered.

SQL>

设置表空间为只读模式与读写备份时可以把一些不会被更改的表空间设置成只读模式下这样在做全库备份时备份一次即可以后增量或是再次全库备份时这个被设置成只读状态的表空间就不用在备份啦这样做是为了检查备份量和恢复时间

在修改表空间为只读或是读写时都会产生对控制文件的更改,所以在设置表空间的只读和读写时最好都备份下控制文件,虽然有归档重做日志文件,也要立即备份控制文件

SQL>altertablespacet1readonly;只读

Tablespacealtered.

SQL>

当对一个表空间设置成只读对产生一个检查点

然后冻结表头的scn号

这个表空间就不能写入

SQL>altertablespacet1readwrite;读写

Tablespacealtered.

logging与nologginglogging与nologging

logging

全部更改都会写到redo

一个全库备份+归档日志就能恢复到最新的状态

只要归档日志没有损坏

nologging

不记录redo信息或产生少量

yologging不产生redo也就没有归档重做日志

如果操作nologging后

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 兵器核科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1