oracle数据库如何备份恢复

56次阅读
没有评论

共计 4192 个字符,预计需要花费 11 分钟才能阅读完成。

这篇文章给大家分享的是有关 oracle 数据库如何备份恢复的内容。丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,一起跟随丸趣 TV 小编过来看看吧。

问题:

1. 逻辑备份是否包含表结构  

答案包含表结构

2.Rman 是逻辑备份还是物理备份,属于也备份吗  

答案物理备,属于热备份

3. 热备份的方式是什么  

答案:SQL 下的命令备份或是 Rman 备份

4. 热备份能备份哪些文件

5. 联机重做文件有什么作用  

答案:在 Oracle 数据库中,执行数据修改操作后,并不是马上写入数据文件,而是首先生成重做信息,并写入 SGA 中的一块叫 LOG_BUFFER 的固定区域,LOG_BUFFER 有一定的触发条件,当满足触发条件后,会有相应进程将 LOG_BUFFER 中的内容写入数据块中。oracle 联机日志作用:1、主要用来记录对数据库的改变,防止数据丢失。2、为了数据库操作快速反应。

备份的类型

按照备份方式的不同,可以把备份分为两类: 

逻辑备份:指通过逻辑导出对数据进行备份。逻辑备份使用导入导出工具:EXPDP/IMPDP 或 EXP/IMP,逻辑备份是物理备份的方式的一种补充,由于逻辑备份具有平台无关性,逻辑备份被作为数据迁移及移动的主要手段。 

物理备份:指通过物理文件拷贝的方式对数据库进行备份,物理备份又可以分为冷备份和热备份。 

冷备份:是指对数据库进行关闭后的拷贝备份,这样的备份具有一致和完整的时间点数据,恢复时只需要恢复所有文件就可以启动数据库。 

热备份:在生产系统中最常见的备份方式是热备份,进行热备份的数据库需要运行在归档模式,热备份时不需要关闭数据库,从而能够保证系统的持续运行,在进行恢复时,通过备份的数据文件及归档日志文件,数据库可以进行完全恢复。热备份包括 Rman 备份,热备份也被称为联机备份。 

逻辑备份:

导出

shell exp 用户名 / 密码   file=/home/backup/ymq.dmp

导入

shell imp 用户名 / 密码   full=y file=/home/backup/ymq.dmp ignore=y

物理备份

热备份

SQL 下的命令备份

1. 查看是否开启归档

ARCHIVE LOG LIST

2. 将需要备份的表空间(如 user)设置为备份方式

shell Alter tablespace user begin backup;

3. 拷贝参数文件

shell !cp /u01/oradata/prod/user01.ora /backup/prod/user01.ora

shell cp /u01/oradata/prod/user01.ora /backup/prod/user01.ora

1. 为目录创建一个单独的表空间

SQL Create tablespace tools datafile‘fielname’size 50m;

2. 创建 RMAN 用户

SQL Create user RMAN identified by RMAN default tablespace tools temporary tablespace temp;

3. 给 RMAN 授予权限

SQL Grant connect , resource , recovery_catalog_owner to rman;

4. 打开 RMAN

$ RMAN

5. 连接数据库

RMAN connect catalog rman/rman

6. 创建恢复目录

RMAN Create catalog tablespace tools

注册目标数据库,恢复目录创建成功后,就可以注册目标数据库了,目标数据库就是需要备份的数据库,一个恢复目录可以注册多个目标数据库,注册目标数据库的命令为:

$ RMAN target internal/password catalog rman/rman@rcdb;

RMAN Register database;

数据库注册完成, 就可以用 RMAN 来进行备份了,更多命令请参考 ORACLE 联机手册或《ORACLE8i 备份与恢复手册》。

注销数据库不是简单的在 RMAN 提示下反注册就可以了,需要运行一个程序包,过程如下:

1. 连接目标数据库,获得目标数据库 ID

$ RMAN target internal/password catalog rman/rman@rcdb;

RMAN-06005: connected to target database: RMAN (DBID=1231209694)

2. 查询恢复目录,得到更详细的信息

SQL SELECT db_key, db_id FROM db WHERE db_id = 1231209694;

DB_KEY  DB_ID 

———- —————

  1 1237603294

1 row selected.

3. 运行过程 dbms_rcvcat.unregisterdatabase 注销数据库,如

SQL EXECUTE dbms_rcvcat.unregisterdatabase(1 , 1237603294)

4.3.1.3 采用 RMAN 进行备份

RMAN 使用脚本来备份数据库,以下是 RMAN 进行备份的几个例子。

1. 备份整个数据库

backup full tag‘basicdb’format‘/bak/oradata/full_%u_%s_%p’database;

2. 备份一个表空间

backup tag‘tsuser’format‘/bak/oradata/tsuser_%u_%s_%p’tablespace users;

3. 备份归档日志

backup tag‘alog’format‘/bak/archivebak/arcbak_%u_%s_%p’archivelog all delete input;

4.3.2 维护 RMAN4.3.2.1 查看 RMAN 的信息

检查现有备份

RMAN list backup

列出过期备份

RMAN report obsolete

删除过期的备份

RMAN allocate channel for maintenance type disk;

RMAN change backupset id delete;

RMAN release channel;

同步或重置 Rman

如果目标数据库物理对象发生了变化,如添加了一个数据文件,需要用如下命令同步:

RMAN resync catalog;

如果目标数据库 reset 了数据库,需要用如下命令同步

RMAN reset database;

当手工删除了数据库的归档文件后,要执行以下脚本同步

RMAN allocate channel for maintenance type disk;

RMAN change archivelog all crosscheck;

RMAN release channel;

当手工删除了数据库的 RMAN 备份后,要执行以下脚本来同步

RMAN allocate channel for maintenance type disk;

RMAN crosscheck backup;

RMAN delete expire backup;

RMAN release channel;

定制恰当的备份策略定制正确的策略

每半年做一个数据库的全备份(包括所有的数据和只读表空间)

每一个月做一次零级备份(不包含只读表空间)

每个星期做一次一级备份

每天做一次二级备份

任何数据库的更改需要重新同步 CATALOG 目录并重新备份(如添加数据文件)或重新备份(如修改表空间为只读)

每次备份后都可以备份归档日志或定期备份归档日志。

如果可能,可以直接备份到磁带上。

数据库全备份的脚本

run{

allocate channel c1 type disk;

allocate channel c2 type disk;

allocate channel c3 type disk;

backup full tag‘dbfull’format‘/u01/oradata/backup/full%u_%s_%p’database

include current controlfile;

sql‘alter system archive log current’;

backup fileaperset 3 format‘/u01/oradata/backup/arch%u_%s_%p’

archivelog all delete input;  #备份归档可选,可以单独定期备份

release channel c1;

release channel c2;

release channel c3;

}

零级备份的脚本

run{

allocate channel c1 type disk;

allocate channel c2 type disk;

allocate channel c3 type disk;

backup incremental level 0 tag‘db0’format‘/u01/oradata/backup/db0%u_%s_%p’

database skip readonly;

sql‘alter system archive log current’;

backup fileaperset 3 format‘/u01/oradata/backup/arch%u_%s_%p’

archivelog all delete input;  #备份归档可选,可以单独定期备份

release channel c1;

release channel c2;

release channel c3;

}

同理,我们可以得到一级备份,二级备份的脚本,如一级备份的脚本

run{

allocate channel c1 type disk;

allocate channel c2 type disk;

allocate channel c3 type disk;

backup incremental level 1 tag‘db1’format‘/u01/oradata/backup/db1%u_%s_%p’

database skip readonly;

sql‘alter system archive log current’;

backup fileaperset 3 format‘/u01/oradata/backup/arch%u_%s_%p’

archivelog all delete input;  #备份归档可选,可以单独定期备份

release channel c1;

release channel c2;

release channel c3;

}

感谢各位的阅读!关于“oracle 数据库如何备份恢复”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-20发表,共计4192字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)