Oracle数据库的热备份与完整恢复测试

1.首先,必需保证数据库在归档模式下。

2.热备份数据文件,通过alter tablespace xxx begin backup把表空间设为备份状态,可以手工或在sql下运行host copy把数据文件复制到指定地方,最后把表空间改为正常状态(alter tablepace xxx end backup)。

3.数据库恢复:使用语句rcover datafile,alter database open即可以实现数据库的完整恢复。

 

具体的步骤如下:

--将数据库调整为归档模式
--修改参数文件:
log_archive_dest_1="location=d:/ora_archive"
log_archive_format=%s.arc
log_archive_start=true

(参数文件修改了好像不起作用,不知道为什么。可以在sqlplus中用命令修改如下:)

--以sysdba身份连接数据库
connect mcaims_cq/pedispwd as sysdba;
--关闭数据库
shutdown immediate;
--加载数据库
startup mount;
--修改归档目的路径
alter system set log_archive_dest_1="location=d:/ora_archive";
--启用归档模式
alter database archivelog;
--自动启用归档模式
alter system archive log start;
archive log start;
--查看归档模式参数
show parameter log_archive_dest_1;
show parameter log_archive_format;
show parameter log_archive_start;
archive log list;
--打开数据库
alter database open;
--强制切换日志
alter system switch logfile;

 

SQL> conn / as sysdba

已连接。

 

//确定数据库在归档模式下。

 

SQL> select log_mode from v$database;

 

LOG_MODE

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

ARCHIVELOG

 

//查询表空间对应的数据文件,一般表空间名跟对应数据文件名是相同的,可以跳过这一步。

 

SQL> select v$tablespace.name,v$datafile.name from v$tablespace, v$datafile

2 where v$tablespace.ts#=v$datafile.ts#;

 

NAME

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

NAME

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

 

SYSTEM

F:/ORACLE/ORADATA/EBOOK/SYSTEM01.DBF

 

UNDOTBS1

F:/ORACLE/ORADATA/EBOOK/UNDOTBS01.DBF

 

CWMLITE

F:/ORACLE/ORADATA/EBOOK/CWMLITE01.DBF

 

DRSYS

F:/ORACLE/ORADATA/EBOOK/DRSYS01.DBF

 

EXAMPLE

F:/ORACLE/ORADATA/EBOOK/EXAMPLE01.DBF

 

INDX

F:/ORACLE/ORADATA/EBOOK/INDX01.DBF

 

ODM

F:/ORACLE/ORADATA/EBOOK/ODM01.DBF

 

TOOLS

F:/ORACLE/ORADATA/EBOOK/TOOLS01.DBF

 

USERS

F:/ORACLE/ORADATA/EBOOK/USERS01.DBF

 

XDB

F:/ORACLE/ORADATA/EBOOK/XDB01.DBF

 

 

已选择10行。

 

 

//将表空间设为备份状态.

 

SQL> alter tablespace system begin backup;

 

表空间已更改。

 

//将数据文件备份到目录f:/oracle/backuparea下.

 

SQL> host copy f:/oracle/oradata/ebook/system01.dbf f:/oracle/backuparea/

已复制 1 个文件。

 

SQL> alter tablespace system end backup;

 

表空间已更改。

 

 

 

 

//建表test的目的为测试此恢复是否是完整恢复。

 

SQL> create table scott.test(t int);

 

表已创建。

 

SQL> insert into scott.test values(1);

 

已创建 1 行。

 

SQL> insert into scott.test values(2);

 

已创建 1 行。

 

SQL> commit;

 

提交完成。

 

 

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

 

 

//删除system01.dbf或移动到其他目录造成数据库崩溃。

 

SQL> startup

ORACLE 例程已经启动。

 

Total System Global Area 135338868 bytes

Fixed Size 453492 bytes

Variable Size 109051904 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

ORA-01157: 无法标识/锁定数据文件 1 - 请大家参阅 DBWR 跟踪文件

ORA-01110: 数据文件 1: 'F:/ORACLE/ORADATA/EBOOK/SYSTEM01.DBF'

 

 

//将备份的数据文件复制回目录f:/oracle/oradata/ebook/下.

 

SQL> $ copy f:/oracle/backuparea/system01.dbf f:/oracle/oradata/ebook/

已复制 1 个文件。

 

//恢复数据文件system01.dbf。

SQL> recover datafile 'f:/oracle/oradata/ebook/system01.dbf';

完成介质恢复。

SQL> alter database open;

 

数据库已更改。

 

//此说明数据库是完整恢复了。

 

SQL> select * from scott.test;

 

T

----------

1

2

 

总结:

1.热备份必须在数据库归档模式下进行

2.在备份的同时,数据库的用户可以进行操作。因此,数据库对应的物理文件的内容是不断变化的,对这些物理文件内容的更新是保留到有关操作已经写到重做日至文件中

后再进行。(这句引自别人叙述,我对后半句正确与否存在疑问,希望大家讨论)。

 

3.归档日志必须是备份后的所有日至才可以实现数据库的完全恢复。

 

4.可以备份除临时文件以外的所有数据文件,如果在恢复过程中,发现损坏的是多个数据文件,即可以采用一个一个数据文件的恢复方法

5。 特别当损坏的不是系统表空间,可以先将损坏的表空间文件脱机,这时可以在恢复损坏文件前打开

数据库,再完成恢复。例如:

 

SQL> alter tablespace tools begin backup;

 

表空间已更改。

 

SQL> $ copy f:/oracle/oradata/ebook/tools01.dbf f:/oracle/backuparea

已复制 1 个文件。

 

SQL> alter tablespace tools end backup;

 

表空间已更改。

 

SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

 

//删除tools01.dbf造成数据库无法正常启动.

 

SQL> startup

ORACLE 例程已经启动。

 

Total System Global Area 135338868 bytes

Fixed Size 453492 bytes

Variable Size 109051904 bytes

Database Buffers 25165824 bytes

Redo Buffers 667648 bytes

数据库装载完毕。

 

 

ORA-01157: 无法标识/锁定数据文件 8 - 请参阅 DBWR 跟踪文件

ORA-01110: 数据文件 8: 'F:/ORACLE/ORADATA/EBOOK/TOOLS01.DBF'

 

 

SQL> alter database datafile 'f:/oracle/oradata/ebook/tools01.dbf' offline;

 

数据库已更改。

 

SQL> alter database open;

 

数据库已更改。

 

SQL> $ copy f:/oracle/backuparea/tools01.dbf f:/oracle/oradata/ebook/

已复制 1 个文件。

 

SQL>recover datafile 'f:/oracle/oradata/ebook/tools01.dbf';

介质恢复完成。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值