Oracle_高级功能(10) 备份恢复

备份与恢复
Oracle数据库有三种标准的备份方法,分别是导出/导入(EXP/IMP)、热备份和冷备份。
导出/导入是一种逻辑备份,冷备份和热备份是物理备份。
一、导出/导入(Export/Import)
利用Export可将数据从数据库中提取出来,利用Import则可将提取出来的数据送回到Oracle数据库中去。
数据导入(Import)的过程是数据导出(Export)的逆过程,
分别将数据文件导入数据库和将数据库数据导出到数据文件。

1、全量导出数据(Export)和导入数据(Import)
Oracle支持三种方式类型的输出:
1.1 表方式(T方式),将指定表的数据导出、导入。
导出表:
exp system/123 tables=scott.dept file=e:\dept.dmp
exp system/[email protected] tables=scott.dept,scott.emp file=e:\empdept.dmp
log=e:\explog_empdept.log

导入表:
drop table scott.emp;
drop table scott.dept;
--drop table scott.dept cascade constraints;
imp system/[email protected] fromuser=(scott) touser=(scott) tables=(dept,emp)
file=e:\empdept.dmp log=e:\implog_empdept.log

1.2 用户方式(U方式),将指定用户的所有对象及数据导出、导入。
exp system/[email protected] owner=(scott) file=e:\scott.dmp log=e:\scott_exp.log buffer=655000 compress=y

--常用
connect system/[email protected];
--删除用户--
drop user find cascade;
--删除表空间--
drop tablespace ts_find including contents;
--创建表空间及数据文件--
create tablespace ts_find01 datafile ‘E:\app\oradata\orcl\ts_find01.DBF‘ size 100M reuse autoextend on next 10M;
--创建用户并授权--
create user find identified by find default tablespace ts_find01;
grant resource,connect to find;
grant select any sequence to find;
grant create any table,alter any table,drop any table to find;
grant select any table,insert any table,update any table,delete any table to find;
grant create any trigger,alter any trigger,drop any trigger to find;
grant create any procedure,alter any procedure,drop any procedure,execute any procedure to find;
grant create any view,drop any view to find;
grant create any synonym to find;

imp system/[email protected] fromuser=(scott) touser=(find) buffer=655000
ignore=y commit=y file=e:\scott.dmp log=e:\scott_imp.log

1.3 全库方式(Full方式),将数据库中的所有对象导出。
exp system/[email protected] file=e:\full.dmp log=e:\full_exp.log full=y buffer=655000 compress=y

--一般不用
imp system/[email protected] full=y buffer=655000 ignore=y commit=y file=e:\full.dmp log=e:\full_imp.log

2、增量导出/导入
增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为SYSTEM来导出。
导出文件名缺省为export.dmp,如果不希望自己的输出文件定名为export.dmp,必须在命令行中指出要用的文件名。
增量导出包括三种类型:
2.1“完全”增量导出(Complete)
即备份完整的数据库信息,
比如:
exp system/[email protected] inctype=complete file=e:\complete.dmp log=e:\complete_exp.log
2.2“增量型”增量导出
备份上一次备份后改变的数据,
比如:
exp system/manager inctype=incremental file=e:\incremental.dmp log=e:\incremental_exp.log
2.3“累积型”增量导出
累计型导出方式是导出自上次“完全”导出之后数据库中变化了的信息。
比如:
exp system/manager inctype=cumulative file=e:\cumulative.dmp log=e:\cumulative_exp.log
数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效的完成。
比如数据库的被封任务可以做如下安排:
星期一:完全备份(A)
星期二:增量导出(B)
星期三:增量导出(C)
星期四:增量导出(D)
星期五:累计导出(E)
星期六:增量导出(F)
星期日:增量导出(G)
如果在星期日,数据库遭到意外破坏,数据库管理员可按一下步骤来回复数据库:
第一步:用命令create database重新生成数据库结构;
第二步:创建一个足够大的附加回滚。
第三步:完全增量导入:
imp system/manager inctype=restore full=y file=e:\complete.dmp
第四步:累计增量导入:
imp system/manager inctype=restore full=y file=e:\cumulative.dmp
第五步:最近增量导入:
imp system/manager inctype=restore full=y file=e:\incremental.dmp

二、冷备份
冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。
冷备份是将关键性文件拷贝到另外的位置的一种说法。
对于备份Oracle信息而言,冷备份是最快和最安全的方法。
冷备份的优点是:
1.是非常快速的备份方法(只需拷文件)
2.容易归档(简单拷贝即可)
3.容易恢复到某个时间点上(只需将文件再拷贝回去)
4.能与归档方法相结合,做数据库“最佳状态”的恢复。
5.低度维护,高度安全。
但冷备份也有如下不足:
1.单独使用时,只能提供到“某一时间点上”的恢复。
2.再实施备份的全过程中,数据库必须要作备份而不能作其他工作。也就是说,在冷备份过程中,数据库必须是关闭状态。
3.若磁盘空间有限,只能拷贝到磁带等其他外部存储设备上,速度会很慢。
4.不能按表或按用户恢复。
冷备份中必须拷贝的文件包括:
1.所有数据文件
2.所有控制文件
3.所有联机REDO LOG文件
4.Init.ora文件(可选)
值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的。
下面是作冷备份的完整例子。
(1) 关闭数据库
sqlplus /nolog
sql>connect / as sysdba
--sql>shutdown normal;
sql>shutdown immediate;
(2) 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件
sql>cp
(3) 重启Oracle数据库
sql>startup

startup nomount --加载参数文件
alter database mount
recover datafile ‘E:\app\oradata\orcl\FIND.DBF‘;
alter database open

三、热备份
热备份是在数据库运行的情况下,采用archivelog mode方式备份数据库的方法。
热备份要求数据库在Archivelog方式下操作,并需要大量的档案空间。
1. 检查数据库模式:
sqlplus /nolog
conn /as sysdba
archive log list (查看数据库是否处于归档模式中)

若为非归档,则修改数据库归档模式。
shutdown immediate; --立即关闭数据库
startup mount; --启动数据库到mount状态
alter database noarchivelog;--设置非归档模式
alter database archivelog;--设置归档模式
alter database open;--打开数据库
alter system set log_archive_start=true scope=spfile; --将数据库设置成自动归档
alter tablespace ts_find begin backup; --开启备份
host copy F:\app\oracle\oradata\orcl\FIND.DBF e:\FIND.DBF --拷贝文件(包括数据文件和控制文件)
alter tablespace ts_find end backup; --结束备份

--备份日志
select * from v$backup;

四、RMAN
1.启动日志归档模式:
sql> alter database archivelog;
2.手工创建操作系统目录:E:\rman\
3.备份语句
run {
configure retention policy to recovery window of 2 days;
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to ‘E:/rman/%F‘;
allocate channel ch1 device type disk format ‘E:/rman/data_%T_%U‘;
backup database skip inaccessible filesperset 10
plus archivelog filesperset 20
delete all input;
release channel ch1;
}
allocate channel for maintenance device type disk;
crosscheck backupset;
delete noprompt obsolete;

说明:
通过 configure retention policy to recovery window of 7 days;来设置备份的保留天数,如果是“每天一次全备份”,备份保留2天即可。
通过 crosscheck backupset;检查备份是否过期。
通过 delete noprompt obsolete; 删除过期的备份。

4.建表、插数据
create table backup_sales
(
product_id number(10),
sales_date date,
sales_cost number(10,2),
status varchar2(20)
);
insert into backup_sales values (1,sysdate-10,18.23,‘inactive‘);
commit;

5.启用rman做全库备份
运行第3步的备份语句
从日志文件中看出:
Control File and SPFILE:E:\RMAN\C-1275904369-20110429-00
数据文件:E:\RMAN\DATA_20110429_1DMB01T6_1_1
日志文件:E:\RMAN\DATA_20110429_1CMB01T2_1_1 和 E:\RMAN\DATA_20110429_1EMB022O_1_1
备份检查完成。
6.再插数据
insert into backup_sales values (2,sysdate-5,18,‘inactive‘);
commit;

--切换日志(手动触发检查点)
connect sys/[email protected] as sysdba;
alter system switch logfile;

--继续插数据
insert into backup_sales values (3,sysdate-3,88.23,‘inactive‘);
commit;
insert into backup_sales values (4,sysdate-1,8.23,‘inactive‘);

--全库恢复
1.连接rman
rman target /
2.启动数据库到加载状态
rman> shutdown immediate;
rman> startup mount;
3.执行修复、恢复操作
rman> restore database;
rman> recover database;
4.打开数据库(恢复完成退出rman)
rman> alter database open;
rman> exit;
5.校验
SQL> select * from backup_sales;

三条数据齐全,说明数据库在恢复时启用日志文件对数据进行了恢复。
增量备份已现多余,检查点也无需用户手动触发,
oracle在备份前会归档一次日志文件,在备份后也会归档一次日志文件,这也是为什么备份时生成两个日志文件的原因。

原文地址:https://www.cnblogs.com/BradMiller/p/9279927.html

时间: 2024-11-12 18:13:11

Oracle_高级功能(10) 备份恢复的相关文章

Oracle_高级功能(7) 数据字典视图和动态性能视图

oracle数据字典 1.概念数据字典是oracle数据库用来存储数据库结构信息的地方.数据字典是用来描述数据库数据的组织方式的,由表和视图组成.数据字典基表是在任何 Oracle 数据库中创建的第一批对象.所有数据库的数据字典表和视图都存储在SYSTEM表空间中.由于当数据库打开时,SYSTEM 表空间始终处于联机状态 ,所以当数据库打开时,数据字典总是可用的.Oracle数据库的SYS用户,拥有数据字典中的所有基表和用户可访问视图.数据字典基表中的数据,对于Oracle 数据库发挥正常功能是

Oracle_高级功能(4) 数据库存储结构

数据库存储结构分为:物理存储结构和逻辑存储结构.物理结构和逻辑结构分开,对物理数据的存储不会影响对逻辑结构的访问.1.物理存储结构 数据库文件 os block2.逻辑存储结构 tablespace 表空间 segment 段 extend 扩展区 db block 数据块(8k)2.1创建表空间create tablespace <ts_name> datafile '<file>' size <n> reuse autoextend on next <n>

Oracle_高级功能(6) 分区

oracle分区表1.分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区. 表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上), 这样查询数据时,不至于每次都扫描整张表. 2.表分区的具体作用 Oracle的表分区功能通过改善可管理性.性能和可用性,从而为各式应用程序带来了极大的好处. 通常,分区可以使某些查询以及维护操作的性能大大提高. 此外,分区还可以极大简化常见的管理任务,分区是构建千兆

Oracle_高级功能(2) 索引

1.oracle优化器 优化目标分为4种: choose (选择性) rule (基于规则) first rows(第一行) all rows(所有行) Description:描述sql的执行计划 Object owner:对象模式 Object name:对象名 Cost:花费(的时间) Cardinality:基数,约等于行数 Bytes:空间(访问的存储空间) 2.table的访问方式 2.1全表扫描(table access full) 全表扫描就是顺序地访问表中每条记录. oracl

Oracle_高级功能(5) 用户、角色、权限

一.用户(模式)1.定义用户:对数据库的访问,需要以适当用户身份通过验证,并具有相关权限来完成一系列动作模式(schema):是某个用户所拥有的对象的集合.具有创建对象权限并创建了对象的用户称为拥有某个模式注意:创建数据库对象(视图,表等)的任一用户都拥有一个与该用户名称相同的模式,且被视为模式用户. 2.用户分类:用户分为:系统预定义用户.自定义用户.系统预定义用户包括: sys用户,缺省始终创建,且未被锁定,拥有数据字典及其关联的所有对象 system用户,缺省始终创建,且未被锁定,可以访问

Oracle数据库备份恢复高级培训视频课程(案例、实战、深入、全面)

套餐介绍: 介绍:风哥Oracle数据库备份恢复培训(案例.实战.深入.全面),DBA初级到骨灰级的脱变. 内容:风哥Oracle数据库备份恢复及存储容灾基础,控制文件与参数文件详解,存储结构深入分析,Oracle底层技术,数据块解析,BBED深入解析,重做日志Redo深入解析,Undo回滚段深入解析,用户管理模式的备份恢复,RMAN备份恢复,Flashback闪回恢复管理,LogMiner日志挖掘技术,SQL_Loader,Oracle逻辑备份恢复迁移之exp/imp和expdp/impdp.

模拟电话簿系统,新增功能:备份数据和恢复备份

在原来的系统之上增加了两个新的功能,备份数据和恢复备份: 下面是两个功能的具体实现方法: public void saveall() // 备份所有数据 { List<Person> list1 = new ArrayList(); try { // 加载数据库驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); // 获取与数据库的连接 Connection conn = DriverManager.getConnect

服务器数据备份/恢复(灾备云特点、功能)

IDC彭帅UCACHE灾备云是一种能帮您轻松实现服务器定时备份的云服务,他能满足您要求的所有应用场景,满足公有云.虚拟环境.物理环境以及私有云和混合云状态下的所有数据定时备份.恢复的任务.避免人为误操作故障导致数据丢失.UCache灾备云推出[灾备云免费普及计划]100G免费使用云灾备的特点:?基础设施单位个体投入减小,TCO更低?按需扩容.按使用计费?具有高度的灵活性?快速迭代的复制与恢复技术?企业迁移成本低?企业级云灾备安全特性?帮助企业管理规范化运营?时实高效.操作简单服务器定时备份/恢复

为SSD编程(4)——高级功能和内部并行

原文 http://codecapsule.com/2014/02/12/coding-for-ssds-part-4-advanced-functionalities-and-internal-parallelism/ 在这个部分,我将简要的介绍一些SSD的主要功能,如TRIM和预留空间.我同样会介绍SSD中不同等级的内部并行. 5. 高级功能 5.1 TRIM 让我们假设一个程序向SSD所有的逻辑块地址都写入文件,这个SSD当然会被装满.然后删除这些文件.文件系统会报告所有的地方都是空的,尽