Chinaunix首页 | 论坛 | 博客
  • 博客访问: 508363
  • 博文数量: 694
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 4840
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-16 19:30
文章分类

全部博文(694)

文章存档

2011年(1)

2008年(693)

我的朋友

分类:

2008-10-16 19:35:47

    主要介绍了数据库备份与恢复的具体方法及相关案例,详细内容请大家参考下文:

冷备份

1、备份步骤:

冷备份具有很多优良特性,快速,方便,以及高效。一次完整的冷备份步骤是:

1.首先关闭数据库(shutdown normal)

2.拷贝相关文件到区域(利用操作系统命令拷贝数据库的所有的数据文件、日志文件、控制文件、参数文件、口令文件等(包括路径))

3.重新启动数据库(startup)

以上的步骤可以用一个脚本来完成操作:

su -oracle < sqlplus /nolog

connect / as sysdba

shutdown immediate;

!cp 文件 备份位置(所有的日志、数据、控制及参数文件);

startup;

exit;

2、恢复步骤:

恢复的时候,相对比较简单了,我停掉数据库,将文件拷贝回相应位置,重启数据库就可以了,当然也可以用脚本来完成。

热备份

1、备份步骤:

当需要做一个精度比较高的备份,而且我们的数据库不可能停掉(少许访问量)时,这个情况下,我们就需要归档方式下的备份,就是下面讨论的热备份。热备份可以非常精确的备份表空间级和用户级的数据,由于它是根据归档日志的时间轴来备份恢复的,理论上可以恢复到前一个操作,甚至就是前一秒的操作。具体步骤如下:

1.通过视图v$database,查看数据库是否在Archive模式下:

SQL> select log_mode from v$database;

如果不是Archive模式

则设定数据库运行于归档模式下:SQL>shutdown immediate

SQL>startup mount

SQL> alter database archivelog;

SQL> alter database open;

如果Automaticarchival显示为“Enabled”,则数据库归档方式为自动归档。否则需要手工归档,或者将归档方式修改为自动归档,如:

正常shutdown数据库,在参数文件中init.ora中加入如下参数

SQL>shutdown immediate

修改init.ora:

LOG_ARCHIVE_START=TRUE

LOG_ARCHIVE_DEST1=ORACLE_HOME/admin/o816/arch(归档日值存放位置可以自己定义)

SQL>startup

然后,重新启动数据库,此时数据库将以自动归档的方式工作在Archive模式下。其中参数LOG_ARCHIVE_DEST1是指定的归档日志文件的路径,建议与Oracle数据库文件存在不同的硬盘,一方面减少磁盘I/O竞争,另外一方面也可以避免数据库文件所在硬盘毁坏之后的文件丢失。归档路径也可以直接指定为磁带等其它物理设备,但可能要考虑读写速度、可写条件和性能等因素。

注意:当数据库处在ARCHIVE模式下时,一定要保证指定的归档路径可写,否则数据库就会挂起,直到能够归档所有归档信息后才可以使用。另外,为创建一个有效的备份,当数据库在创建时,必须履行一个全数据库的冷备份,就是说数据库需要运行在归档方式,然后正常关闭数据库,备份所有的数据库组成文件。这一备份是整个备份的基础,因为该备份提供了一个所有数据库文件的拷贝。(体现了冷备份与热备份的合作关系,以及强大的能力)

2.备份表空间文件:

a.首先,修改表空间文件为备份模式 ALTER TABLESPACE tablespace_name BEGIN BACKUP;

b.然后,拷贝表空间文件到区域 !CP tablespace_name D_PATH;

c.最后,将表空间的备份模式关闭 ALTER TABLESPACE tablespace_name END BACKUP;

3.对归档日志文件的备份:

停止归档进程-->备份归档日志文件-->启动归档进程

如果日志文档比较多,我们将它们写入一个文件成为一个恢复的参考:$ files `ls <归档文件路径>/arch*.dbf`;export files

4.备份控制文件:

SQL> alter database backup controlfile to 'controlfile_back_name(一般用2004-11-20的方式)' reuse;

当然,我们也可以将上面的东东写为一个脚本,在需要的时候执行就可以了:

脚本范例:

su -oracle < sqlplus /nolog

connect / as sysdba

ALTER TABLESPACE tablespace_name BEGIN BACKUP

!CP tablespace_name D_PATH

ALTER TABLESPACE tablespace_name END BACKUP

alter database backup controlfile to 'controlfile_back_name(一般用2004-11-20的方式)' reuse;

!files `ls <归档文件路径>/arch*.dbf`;export files

[1]      

【责编:Ken】

--------------------next---------------------

阅读(180) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~