Oracle备份与恢复详解
http://www.360doc.com/content/10/1015/15/3267996_61218717.shtml
--------摘自 360doc
为了能有效地备份和恢复数据库,建议大家将数据库修改为归档方式。
数据库的备份
一、物理备份数据库
1、完全数据库脱机备份
A、编写一个要备份的最新文件列表,备份数据文件,日志文件和控制文件。
SQL> select file_name from dba_data_files;
FILE_NAME
------------------------------------------
E:\ORACLE\ORADATA\TRNG2\USERS01.DBF
E:\ORACLE\ORADATA\TRNG2\SYSAUX01.DBF
E:\ORACLE\ORADATA\TRNG2\UNDOTBS01.DBF
E:\ORACLE\ORADATA\TRNG2\SYSTEM01.DBF
SQL> select member from v$logfile;
MEMBER
-----------------------------------
E:\ORACLE\ORADATA\TRNG2\REDO01.LOG
E:\ORACLE\ORADATA\TRNG2\REDO03.LOG
E:\ORACLE\ORADATA\TRNG2\REDO02.LOG
SQL> select name from v$controlfile;
NAME
--------------------------------------
E:\ORACLE\ORADATA\TRNG2\CONTROL01.CTL
E:\ORACLE\ORADATA\TRNG2\CONTROL02.CTL
E:\ORACLE\ORADATA\TRNG2\CONTROL03.CTL
B、用shutdown命令来关闭数据库。
C、用操作系统的备份工具来备份所用数据文件,日志文件和控制文件。
D、重启动数据库。
2、部分数据库联机备份
A、设置表空间为备份状态。
SQL> select tablespace users begin backup;
在备份期间系统拒绝关闭数据库。
B、备份表空间的数据文件。
C、恢复表空间为正常状态。
SQL>alter tablespace users end backup;
3、部分数据库的脱机备份
A、将表空间设置为脱机。
SQL>alter tablespace users offline;
B、备份表空间的数据文件
C、将表空间设置为联机。
SQL>alter tablespace online;
SYSTEM表空间不允许设置为offline。
4、控制文件的在线备份
SQL>alter database backup controlfile to D:\oracle\product\10.2.0\admin\TRNG2\udump\control.backup;
or
SQL>alter database backup controlfile to 'trace;
在 D:\oracle\product\10.2.0\admin\TRNG2\udump\*.trc文件中
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "TRNG2" NORESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'E:\ORACLE\ORADATA\TRNG2\REDO01.LOG' SIZE 50M,
GROUP 2 'E:\ORACLE\ORADATA\TRNG2\REDO02.LOG' SIZE 50M,
GROUP 3 'E:\ORACLE\ORADATA\TRNG2\REDO03.LOG' SIZE 50M
-- STANDBY LOGFILE
DATAFILE
'E:\ORACLE\ORADATA\TRNG2\SYSTEM01.DBF',
'E:\ORACLE\ORADATA\TRNG2\UNDOTBS01.DBF',
'E:\ORACLE\ORADATA\TRNG2\SYSAUX01.DBF',
'E:\ORACLE\ORADATA\TRNG2\USERS01.DBF'
CHARACTER SET ZHS16GBK
;
-- Commands to re-create incarnation table
-- Below log names MUST be changed to existing filenames on
-- disk. Any one log file from each branch can be used to
-- re-create incarnation records.
-- ALTER DATABASE REGISTER LOGFILE 'D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\TRNG2\ARCHIVELOG\2007_04_30\O1_MF_1_1_%U_.ARC';
-- Recovery is required if any of the datafiles are restored backups,
-- or if the last shutdown was not normal or immediate.
RECOVER DATABASE
-- All logs need archiving and a log switch is needed.
ALTER SYSTEM ARCHIVE LOG ALL;
-- Database can now be opened normally.
ALTER DATABASE OPEN;
直接运行上述sql语句可以重新创建控制文件。
二、数据库的逻辑备份
1、逻辑导出
EXP命令用于逻辑导出,使用exp命令有三种导出方式:表方式、用户方式、全部数据库方式。
EXP导出关键字说明:
USERID 用户名/口令 FULL 导出整个文件 (N)
BUFFER 数据缓冲区大小 OWNER 所有者用户名列表
FILE 输出文件 (EXPDAT.DMP) TABLES 表名列表
COMPRESS 导入到一个区 (Y) RECORDLENGTH IO 记录的长度
GRANTS 导出权限 (Y) INCTYPE 增量导出类型
INDEXES 导出索引 (Y) RECORD 跟踪增量导出 (Y)
DIRECT 直接路径 (N) TRIGGERS 导出触发器 (Y)
LOG 屏幕输出的日志文件 STATISTICS 分析对象 (ESTIMATE)
ROWS 导出数据行 (Y) PARFILE 参数文件名
CONSISTENT 交叉表的一致性 (N) CONSTRAINTS 导出的约束条件 (Y)
OBJECT_CONSISTENT 只在对象导出期间设置为只读的事务处理 (N)
FEEDBACK 每 x 行显示进度 (0)
FILESIZE 每个转储文件的最大大小
FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCN
FLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间
QUERY 用于导出表的子集的 select 子句
RESUMABLE 遇到与空格相关的错误时挂起 (N)
RESUMABLE_NAME 用于标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT RESUMABLE 的等待时间
TTS_FULL_CHECK 对 TTS 执行完整或部分相关性检查
TABLESPACES 要导出的表空间列表
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TEMPLATE 调用 iAS 模式导出的模板名
如:
A、按表方式导出
exp userid=symbols/symbols direct=y tables=(RB_ACCT) file=d:\oracle\backup\RB_ACCT_2007-04_30.dmp log=d:\oracle\backup\RB_ACCT_2007-04_30.log
B、按用户方式导出
exp userid=symbols/symbols direct=y file=d:\oracle\backup\symbols_2007-04_30.dmp log=d:\oracle\backup\symbols_2007-04_30.log
C、按数据库方式导出
exp userid=system/symbols direct=y full=y file=d:\oracle\backup\symbolfull_2007-04_30.dmp log=d:\oracle\backup\ymbolfull_2007-04_30.log
2、逻辑导入
IMP 逻辑导入关键字:
USERID 用户名/口令 FULL 导入整个文件 (N)
BUFFER 数据缓冲区大小 FROMUSER 所有者用户名列表
FILE 输入文件 (EXPDAT.DMP) TOUSER 用户名列表
SHOW 只列出文件内容 (N) TABLES 表名列表
IGNORE 忽略创建错误 (N) RECORDLENGTH IO 记录的长度
GRANTS 导入权限 (Y) INCTYPE 增量导入类型
INDEXES 导入索引 (Y) COMMIT 提交数组插入 (N)
ROWS 导入数据行 (Y) PARFILE 参数文件名
LOG 屏幕输出的日志文件 CONSTRAINTS 导入限制 (Y)
DESTROY 覆盖表空间数据文件 (N)
INDEXFILE 将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)
FEEDBACK 每 x 行显示进度 (0)
TOID_NOVALIDATE 跳过指定类型 ID 的验证
FILESIZE 每个转储文件的最大大小
STATISTICS 始终导入预计算的统计信息
RESUMABLE 在遇到有关空间的错误时挂起 (N)
RESUMABLE_NAME 用来标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT RESUMABLE 的等待时间
COMPILE 编译过程, 程序包和函数 (Y)
STREAMS_CONFIGURATION 导入流的一般元数据 (Y)
STREAMS_INSTANTIATION 导入流实例化元数据 (N)
下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
TABLESPACES 将要传输到数据库的表空间
DATAFILES 将要传输到数据库的数据文件
TTS_OWNERS 拥有可传输表空间集中数据的用户
A、按用户和表的方式导入
imp userid=symbols/symbols file=d:\oracle\backup\symbols_2007-04_30.dmp log=d:\oracle\backup\symbols_2007-04_30.log full=y
B、按数据库导入
imp userid=system/symbols full=y file=d:\oracle\backup\symbolsfull_2007-04_30.dmp log=d:\oracle\backup\symbolsfull_2007-04_30.log
3、表空间的导入导出
A、检查表空间的自包含性。
SQL>exec dbms_tts.transport_set_check('users',true);
SQL>select * from transport_set_voilations;
如果未选定行,表示该表空间是自包含的,否则不得传输。
B、将表空间设置为只读。
SQL>alter tablespace users read only;
C、用exp导出
exp transport_tablespace=yes tabelspaces=users file=users.dmp;
如果要转换到不同平台上,需要使用rman进行转化
SQL〉select d.platform_name,endian_format from v$transportable_platform tp,v$database d where tp.platform_name=d.platform_name;
查询出平台,假如显示是Linux要想windows转移,使用rman工具:
$rman target sys/sys
RMAN>convert tablespace users to platform 'Microsoft Windows NT' format '/temp/%U;
转化完的结果在/temp下
D、复制文件到另外的服务器。
E、用imp导入
imp transport_tablespace=y datafiles=../users.dbf tablespaces=users file=users.dmp;
F、将表空间修改为读写状态。
SQL>alter tablespace users read write;
3、使用数据泵技术对数据库备份和恢复
EXPDP关键字:
ATTACH 连接到现有作业, 例如 ATTACH [=作业名]。
COMPRESSION 减小有效的转储文件内容的大小
关键字值为: (METADATA_ONLY) 和 NONE。
CONTENT 指定要卸载的数据, 其中有效关键字为:
(ALL), DATA_ONLY 和 METADATA_ONLY。
DIRECTORY 供转储文件和日志文件使用的目录对象。
DUMPFILE 目标转储文件 (expdat.dmp) 的列表,
例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION_PASSWORD 用于创建加密列数据的口令关键字。
ESTIMATE 计算作业估计值, 其中有效关键字为:
(BLOCKS) 和 STATISTICS。
ESTIMATE_ONLY 在不执行导出的情况下计算作业估计值。
EXCLUDE 排除特定的对象类型, 例如 EXCLUDE=TABLE:EMP。
FILESIZE 以字节为单位指定每个转储文件的大小。
FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCN。
FLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间。
FULL 导出整个数据库 (N)。
HELP 显示帮助消息 (N)。
INCLUDE 包括特定的对象类型, 例如 INCLUDE=TABLE_DATA。
JOB_NAME 要创建的导出作业的名称。
LOGFILE 日志文件名 (export.log)。
NETWORK_LINK 链接到源系统的远程数据库的名称。
NOLOGFILE 不写入日志文件 (N)。
PARALLEL 更改当前作业的活动 worker 的数目。
PARFILE 指定参数文件。
QUERY 用于导出表的子集的谓词子句。
SAMPLE 要导出的数据的百分比;
SCHEMAS 要导出的方案的列表 (登录方案)。
STATUS 在默认值 (0) 将显示可用时的新状态的情况下,
要监视的频率 (以秒计) 作业状态。
TABLES 标识要导出的表的列表 - 只有一个方案。
TABLESPACES 标识要导出的表空间的列表。
TRANSPORT_FULL_CHECK 验证所有表的存储段 (N)。
TRANSPORT_TABLESPACES 要从中卸载元数据的表空间的列表。
VERSION 要导出的对象的版本, 其中有效关键字为:
(COMPATIBLE), LATEST 或任何有效的数据库版本。
下列命令在交互模式下有效。
注: 允许使用缩写
命令 说明
------------------------------------------------------------------------------
ADD_FILE 向转储文件集中添加转储文件。
CONTINUE_CLIENT 返回到记录模式。如果处于空闲状态, 将重新启动作业。
EXIT_CLIENT 退出客户机会话并使作业处于运行状态。
FILESIZE 后续 ADD_FILE 命令的默认文件大小 (字节)。
HELP 总结交互命令。
KILL_JOB 分离和删除作业。
PARALLEL 更改当前作业的活动 worker 的数目。
PARALLEL=<worker 的数目>。
START_JOB 启动/恢复当前作业。
STATUS 在默认值 (0) 将显示可用时的新状态的情况下,
要监视的频率 (以秒计) 作业状态。
STATUS[=interval]
STOP_JOB 顺序关闭执行的作业并退出客户机。
STOP_JOB=IMMEDIATE 将立即关闭
数据泵作业。
IMPDP关键字:
ATTACH 连接到现有作业, 例如 ATTACH [=作业名]。
CONTENT 指定要加载的数据, 其中有效关键字为:
(ALL), DATA_ONLY 和 METADATA_ONLY。
DIRECTORY 供转储文件, 日志文件和 sql 文件使用的目录对象。
DUMPFILE 要从 (expdat.dmp) 中导入的转储文件的列表,
例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION_PASSWORD 用于访问加密列数据的口令关键字。
此参数对网络导入作业无效。
ESTIMATE 计算作业估计值, 其中有效关键字为:
(BLOCKS) 和 STATISTICS。
EXCLUDE 排除特定的对象类型, 例如 EXCLUDE=TABLE:EMP。
FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCN。
FLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间。
FULL 从源导入全部对象 (Y)。
HELP 显示帮助消息 (N)。
INCLUDE 包括特定的对象类型, 例如 INCLUDE=TABLE_DATA。
JOB_NAME 要创建的导入作业的名称。
LOGFILE 日志文件名 (import.log)。
NETWORK_LINK 链接到源系统的远程数据库的名称。
NOLOGFILE 不写入日志文件。
PARALLEL 更改当前作业的活动 worker 的数目。
PARFILE 指定参数文件。
QUERY 用于导入表的子集的谓词子句。
REMAP_DATAFILE 在所有 DDL 语句中重新定义数据文件引用。
REMAP_SCHEMA 将一个方案中的对象加载到另一个方案。
REMAP_TABLESPACE 将表空间对象重新映射到另一个表空间。
REUSE_DATAFILES 如果表空间已存在, 则将其初始化 (N)。
SCHEMAS 要导入的方案的列表。
SKIP_UNUSABLE_INDEXES 跳过设置为无用索引状态的索引。
SQLFILE 将所有的 SQL DDL 写入指定的文件。
STATUS 在默认值 (0) 将显示可用时的新状态的情况下,
要监视的频率 (以秒计) 作业状态。
STREAMS_CONFIGURATION 启用流元数据的加载
TABLE_EXISTS_ACTION 导入对象已存在时执行的操作。
有效关键字: (SKIP), APPEND, REPLACE 和 TRUNCATE。
TABLES 标识要导入的表的列表。
TABLESPACES 标识要导入的表空间的列表。
TRANSFORM 要应用于适用对象的元数据转换。
有效的转换关键字: SEGMENT_ATTRIBUTES, STORAGE
OID 和 PCTSPACE。
TRANSPORT_DATAFILES 按可传输模式导入的数据文件的列表。
TRANSPORT_FULL_CHECK 验证所有表的存储段 (N)。
TRANSPORT_TABLESPACES 要从中加载元数据的表空间的列表。
仅在 NETWORK_LINK 模式导入操作中有效。
VERSION 要导出的对象的版本, 其中有效关键字为:
(COMPATIBLE), LATEST 或任何有效的数据库版本。
仅对 NETWORK_LINK 和 SQLFILE 有效。
下列命令在交互模式下有效。
注: 允许使用缩写
命令 说明 (默认)
------------------------------------------------------------------------------
CONTINUE_CLIENT 返回到记录模式。如果处于空闲状态, 将重新启动作业。
EXIT_CLIENT 退出客户机会话并使作业处于运行状态。
HELP 总结交互命令。
KILL_JOB 分离和删除作业。
PARALLEL 更改当前作业的活动 worker 的数目。
PARALLEL=<worker 的数目>。
START_JOB 启动/恢复当前作业。
START_JOB=SKIP_CURRENT 在开始作业之前将跳过
作业停止时执行的任意操作。
STATUS 在默认值 (0) 将显示可用时的新状态的情况下,
要监视的频率 (以秒计) 作业状态。
STATUS[=interval]
STOP_JOB 顺序关闭执行的作业并退出客户机。
STOP_JOB=IMMEDIATE 将立即关闭
数据泵作业。
A、创建一个存储数据泵导出数据的目录。
SQL>create direcotry dpump_dir as '/oracle/oradata/orcl10/pumpdata';
SQL>grant read,write on directory to scott;
设置系统的环境变量:export DATA_PUMP_DIR=dpump_dir
B、进行数据的导入导出
expdp scott/tiger tables=emp dumpfile=emp.dmp directory=dpump_dir(按表导出)
impdp scott/tiger dumpfile=emp.dmp directory=dpump_dir
expdp scott/tiger dumpfile=emp.dmp directory=dpump_dir(按用户到出)
impdp scott/tiger dumpfile=emp.dmp directory=dpump_dir
expdp 'sys/sys as sysdba' schemas=scott dumpfile=emp.dmp directory=dpump_dir(按方案到出)
impdp 'sys/sys as sysdba' dumpfile=emp.dmp directory=dpump_dir
表空间和exp,imp步骤相同
expdp system/password dumpfile=emp.dmp directory=dpump_dir transport_tablespace=users
impdp system/password dumpfile=emp.dmp directory=dpump_dir transport_datafile='../users.dbf'
数据的恢复
一、完全数据库恢复
完全数据库恢复的语法如下:
SQL>alter database recover datafile
SQL>alter database recover database
SQL>recover datafile
SQL>recover database
SQL>recover tablespace
二、不完全数据恢复
1、基于时间的数据库恢复
SQL>alter databse recover database until time
SQL>alter databse recover until time using backup controlfile
SQL>recover database until time
SQL>recover database until time using backup controlfile
2、基于撤销的数据库恢复
SQL>alter database recover database until concel
SQL>recover database until concel
3、基于改变的数据库恢复
SQL>alter database recover database until change
SQL>recover database until change
三、Oracle10g的闪回操作
1、表数据的闪回
SQL>insert into emp (select * from emp as of timestamp to_timestamp('2007-01-01','YYYY-MM-DD HH24:MI:SS);
2、表操作的闪回
SQL>flashback table emp to timestamp to_timestamp('2007-01-01','YYYY-MM-DD HH24:MI:SS);
3、表删除的闪回
SQL>flashback table emp to before drop;
4、数据库的闪回
SQL>flashback database to scn 22222;
SQL>flashback database to timestamp to_timestamp('2007-01-01','YYYY-MM-DD HH24:MI:SS);
Oracle备份与恢复详解的更多相关文章
- ORACLE数据库备份与恢复详解
ORACLE数据库备份与恢复详解 学习过程中的总结,有兴趣不妨看看,如果有不对的地方,高手不要留情!! Oracle的备份与恢复有三种标准的模式,大致分为两 大类,备份恢复(物理上的)以及导入导出(逻 ...
- oracle 数据类型详解---日期型(转载)
oracle 数据类型详解---日期型 oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享: 注:由于INTER ...
- oracle 序列 详解
序列: 是oacle提供的用于产生一系列唯一数字的数据库对象. l 自动提供唯一的数值 l 共享对象 l 主要用于提供主键值 l 将序列值装入内存可以提高访问效率 创建序列: 1. 要有创建 ...
- oracle checkpoint 详解
Oracle checkpoint详解 topcheckpoint扫盲 top什么是checkpoint 在数据库系统中,写日志和写数据文件是数据库中IO消耗最大的两种操作,在这两种操作中写数据文件属 ...
- Oracle数据字典详解
学习笔记:oracle数据字典详解 --- 本文为TTT学习笔记,首先介绍数据字典及查看方法,然后分类总结各类数据字典的表和视图.然后列出一些附例. 数据字典系统表,保存在system表空间中. ...
- oracle rowid 详解
oracle rowid详解 今天是2013-09-15,存储在数据库中的每一行数据都有一个地址,oracle使用rowid数据类型在存储地址.rowid有如下类别: 1)physical rowid ...
- Oracle索引详解
Oracle索引详解(二) --索引分类 Oracle 提供了大量索引选项.知道在给定条件下使用哪个选项对于一个程序的性能来说非常重要.一个错误的选择可能会引发死锁,并导致数据库性能急剧下降或进程 ...
- Oracle内存详解之 Library cache 库缓冲
Oracle内存详解之 Library cache 库缓冲 2017年11月09日 11:38:39 阅读数:410更多 个人分类: 体系结构 Library cache是Shared pool的一部 ...
- Oracle date 详解
oracle 数据类型详解---日期型 oracle数据类型看起来非常简单,但用起来会发现有许多知识点,本文是我对ORACLE日期数据类型的一些整理,都是开发入门资料,与大家分享:注:由于INTERV ...
随机推荐
- Zabbix数据库表分区
zabbix的监控主机数量将近300,且运行了一年时间了,最近zabbix server服务监控历史数据等服务不断自身告警.查询性能也变得很低 关于历史数据的两个参数,在zabbix server的配 ...
- Web性能优化之-深入理解TCP Socket
什么是Socket? 大家都用电脑上网,当我们访问运维社区https://www.unixhot.com的时候,我们的电脑和运维社区的服务器就会创建一条Socket,我们称之为网络套接字.那么既 ...
- fail-safe fail-fast知多少
目录 简介 Fail-fast Iterator Fail-fast 的原理 Fail-safe Iterator 总结 fail-safe fail-fast知多少 简介 我们在使用集合类的时候,通 ...
- 在java中使用JMH(Java Microbenchmark Harness)做性能测试
文章目录 使用JMH做性能测试 BenchmarkMode Fork和Warmup State和Scope 在java中使用JMH(Java Microbenchmark Harness)做性能测试 ...
- Linux发送邮件命令mail,mutt
邮件常常是Linux下监控报警手段之一.Linux下的mail命令可以方便,快速的完成发送邮件. 1. Linux发邮件2种常见客户端命令 1.1 mail命令(推荐) 语法: 无邮件正文 mail ...
- 配置路由器/交换机的Telnet登录
实验目的:给配置路由器/交换机管理IP地址.设置Telnet的登录帐号.密码. 第一步:配置路由器的名称.接口IP地址. Switch> Switch>en Switch# Switch# ...
- 解决layui动态追加的点击事件不起作用问题
2019独角兽企业重金招聘Python工程师标准>>> //不起作用 $('#demo').on('click', function() { layer.msg('响应点击事件'); ...
- #Week3 Linear Regression with Multiple Variables
一.Multiple Features 这节课主要引入了一些记号,假设现在有n个特征,那么: 为了便于用矩阵处理,令\(x_0=1\): 参数\(\theta\)是一个(n+1)*1维的向量,任一个训 ...
- html入门详细笔记
Web的基本概念 什么是Web? 中文翻译"网页",它是一些列技术的总称,(包括网站的前台布局.后台程序.美工.数据库开发等),我们称它为网页. Web标准 结构标准(HTML) ...
- 图论--最短路--dijkstra(含路径输出)模板
#include<iostream> #include<stack> #include<queue> #include<cstring> #includ ...