oracle数据库备份与恢复

时间:2024-09-17 19:10:08编辑:阿星

如何把oracle备份还原到另外一台机器上

Oracle10G数据库中,数据库文件的备份与恢复可以有很多的方式来实现,这里介绍一种基于用户管理的备份与恢复。基于用户管理的备份是指使用OS命令来备份数据库物理文件。

备份数据库

数据库一致性备份:关闭数据库以后备份数据库物理文件,这时数据文件scn值完全一致,所以称之为数据库的一致性备份或冷备份,适用于归档模式与非归档模式。

对基于用户管理的冷备份的暂时理解:在数据库shutdown状态下使用OS命令直接拷贝数据库物理文件。

数据库非一致性备份:在open状态下备份数据库物理文件,这时数据库内容可能会改变导致数据文件scn不一致,所以称之为数据库的非一致性备份或热备份,只适用于归档模式。

基于用户管理的完全恢复(归档模式下)

1.在open状态下备份数据库物理文件(数据库非一致性备份,热备份,不影响业务运行)

2.删除数据文件来模拟文件丢失(只是删除了所有的数据文件;控制文件等其它文件处于正常状态)

3.对数据文件进行恢复

4.应用归档日志

5.查看数据是否完全恢复

--sysdba执行备份

SQL> conn / as sysdba

Connected.

SQL> select name from v$datafile;

NAME

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

/oracle/10g/oracle/product/10.2.0/oradata/oralife/system01.dbf

/oracle/10g/oracle/product/10.2.0/oradata/oralife/undotbs01.dbf

/oracle/10g/oracle/product/10.2.0/oradata/oralife/sysaux01.dbf

/oracle/10g/oracle/product/10.2.0/oradata/oralife/users01.dbf

/oracle/10g/oracle/product/10.2.0/oradata/oralife/example01.dbf

SQL> alter database begin backup;

Database altered.

SQL> host cp /oracle/10g/oracle/product/10.2.0/oradata/oralife/*.dbf /oracle/10g/oracle/bakup/database/ --备份所有数据文件

SQL> alter database backup controlfile to '/oracle/10g/oracle/bakup/database/oralife.ctl'; --备份控制文件

Database altered.

SQL> alter system archive log current; --归档当前日志组

System altered.

进行完全恢复
copy备份的数据文件到指定的目标位置,进行恢复:
SQL> recover database --open状态

ORA-00283: recovery session canceled due to errors

ORA-01124: cannot recover data file 1 - file is in use or recovery

ORA-01110: data file 1:

'/oracle/10g/oracle/product/10.2.0/oradata/oralife/system01.dbf'

SQL> shutdown immediate --open状态

ORA-01122: database file 1 failed verification check

ORA-01110: data file 1: '/oracle/10g/oracle/product/10.2.0/oradata/oralife/system01.dbf'

ORA-01208: data file is an old version - not accessing current version

SQL> startup force mount; --进入mount状态进行恢复

ORACLE instance started.

Total System Global Area 528482304 bytes

Fixed Size 1220360 bytes

Variable Size 163578104 bytes

Database Buffers 356515840 bytes

Redo Buffers 7168000 bytes

Database mounted.

SQL> recover database

Media recovery complete.

SQL> alter database open;

Database altered.

没有出现应用归档日志,应用归档日志有几种方式:

Specify log: {=suggested | filename | AUTO | CANCEL}

当在open状态下对数据文件进行恢复时,应该将其offline,恢复完成后,再将其online;所有的恢复应该尽量在open状态下完成。


怎么完全备份ORACLE数据库,并在另一台电脑上恢复。

Oracle10G数据库中,数据库文件的备份与恢复可以有很多的方式来实现,这里介绍一种基于用户管理的备份与恢复。基于用户管理的备份是指使用OS命令来备份数据库物理文件。

备份数据库

数据库一致性备份:关闭数据库以后备份数据库物理文件,这时数据文件scn值完全一致,所以称之为数据库的一致性备份或冷备份,适用于归档模式与非归档模式。

对基于用户管理的冷备份的暂时理解:在数据库shutdown状态下使用OS命令直接拷贝数据库物理文件。

数据库非一致性备份:在open状态下备份数据库物理文件,这时数据库内容可能会改变导致数据文件scn不一致,所以称之为数据库的非一致性备份或热备份,只适用于归档模式。

基于用户管理的完全恢复(归档模式下)

1.在open状态下备份数据库物理文件(数据库非一致性备份,热备份,不影响业务运行)

2.删除数据文件来模拟文件丢失(只是删除了所有的数据文件;控制文件等其它文件处于正常状态)

3.对数据文件进行恢复

4.应用归档日志

5.查看数据是否完全恢复

--sysdba执行备份

SQL> conn / as sysdba

Connected.

SQL> select name from v$datafile;

NAME

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

/oracle/10g/oracle/product/10.2.0/oradata/oralife/system01.dbf

/oracle/10g/oracle/product/10.2.0/oradata/oralife/undotbs01.dbf

/oracle/10g/oracle/product/10.2.0/oradata/oralife/sysaux01.dbf

/oracle/10g/oracle/product/10.2.0/oradata/oralife/users01.dbf

/oracle/10g/oracle/product/10.2.0/oradata/oralife/example01.dbf

SQL> alter database begin backup;

Database altered.

SQL> host cp /oracle/10g/oracle/product/10.2.0/oradata/oralife/*.dbf /oracle/10g/oracle/bakup/database/ --备份所有数据文件

SQL> alter database backup controlfile to '/oracle/10g/oracle/bakup/database/oralife.ctl'; --备份控制文件

Database altered.

SQL> alter system archive log current; --归档当前日志组

System altered.

进行完全恢复
copy备份的数据文件到指定的目标位置,进行恢复:
SQL> recover database --open状态

ORA-00283: recovery session canceled due to errors

ORA-01124: cannot recover data file 1 - file is in use or recovery

ORA-01110: data file 1:

'/oracle/10g/oracle/product/10.2.0/oradata/oralife/system01.dbf'

SQL> shutdown immediate --open状态

ORA-01122: database file 1 failed verification check

ORA-01110: data file 1: '/oracle/10g/oracle/product/10.2.0/oradata/oralife/system01.dbf'

ORA-01208: data file is an old version - not accessing current version

SQL> startup force mount; --进入mount状态进行恢复

ORACLE instance started.

Total System Global Area 528482304 bytes

Fixed Size 1220360 bytes

Variable Size 163578104 bytes

Database Buffers 356515840 bytes

Redo Buffers 7168000 bytes

Database mounted.

SQL> recover database

Media recovery complete.

SQL> alter database open;

Database altered.

没有出现应用归档日志,应用归档日志有几种方式:

Specify log: {=suggested | filename | AUTO | CANCEL}

当在open状态下对数据文件进行恢复时,应该将其offline,恢复完成后,再将其online;所有的恢复应该尽量在open状态下完成。


oracle新人提问,要修改表里的数据时,怎么备份表?万一出错,又怎么恢复备份?希望举例说明

修改单个表时,一般不做数据库级别的备份,一般都是直接备份这张表,有如下两种方法:表比较小时,一般是直接复制这张表,如:create table a_bak as select * from a;表比较大的时候,可以使用expdp或者exp导出进行备份;如果没有备份,又出问题时可以考虑使用闪回(闪回表或者是事务等),实在是没有办法时采用闪回数据库。其实oracle恢复表,用常规的备份恢复(如RMAN)还是比较麻烦的,当然还有第三方备份恢复软件也可以使用。最基本的是,对数据库进行操作时,要谨慎,不要执行不明白的操作,修改数据是可以使用savepoint来暂时对为提交的数据进行建立回滚点,好了就说这么多。

上一篇:人体器官分布图画画

下一篇:没有了