Oracle——20数据库恢复与备份
备份是将数据库中的数据信息保存起来,而恢复则是将已经备份的数据库信息还原到数据库系统中。
一、数据库的备份类型
Oracle数据库的备份有3种标准形式:导出、脱机备份和联机备份。
导出方式是数据库的逻辑备份,脱机备份和联机备份都是物理备份。
1、逻辑备份
导出有以下3种模式:
(1)用户(user)模式:导出用户所有对象以及对象中的数据。
(2)表(table)模式:导出用户的所有表或者用户指定的表。
(3)全局(full)模式:导出数据库中的所有对象,包括数据、数据定义和用于重建数据库的存储对象。
在导出期间,可以选择是否导出与表相关的数据字典的信息,如权限、索引和约束条件等。导出备份有3种类型:
(1)完全型(complete export):对所有表执行全数据库导出,或仅对上次导出后修改过的表执行全数据库导出。
(2)积累型(cumulative):备份上一次积累型备份所改变的数据。
(3)增量型(incremental):备份上一次备份后改变的数据。
2、物理备份
物理备份是复制数据库文件而不是其逻辑内容。
(1)脱机备份。脱机备份是在数据库正常关闭的情况下进行。数据库正常关闭后会提供给用户一个完整的数据库。当数据库处于脱机备份状态时,备份的文件包括所有数据文件、控制文件、联机重做日志和服务器参数文件。
(2)联机备份。联机备份可以在数据库打开的情况下进行。进行联机备份时要求数据库必须在归档方式下操作,在数据库不使用或者使用率低的情况下,同时要有大量的存储空间。数据库可从一个联机备份中完全恢复,并且可以通过归档的重做日志,前滚到任一时刻。联机备份的主要文件包括所有数据文件、归档的重做日志文件和一个控制文件。
二、导入和导出
导入是数据库的逻辑恢复,导出是数据库的逻辑备份。
1、导出
导出是通过在命令提示符窗口输入exp命令来实现的,可以通过输入exp help=y来调用exp命令的帮助信息。
导出有3种模式:
交互模式:在输入exp命令后,更加提示来输入导出参数完成导出。
命令行模式:把参数和参数值传递给导出命令。
参数文件模式:参数文件模式的关键参数是parfile。parfile的对象是一个包含激活控制导出对话的参数和参数值的文件名。
下面以交互模式为例导出用户andy下的几个表:
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\andy>exp /*在命令提示符下输入exp命令,接下来按提示操作*/
Export: Release 11.1.0.6.0 - Production on 星期五 6月 1 10:48:19 2012
Copyright (c) 1982, 2007, Oracle. All rights reserved.
用户名: andy /*输入登录数据库的用户名*/
口令: /*输入登录口令*/
连接到: Oracle Database 11g Release 11.1.0.6.0 - Production
输入数组提取缓冲区大小: 4096 > /*这里选择默认值,直接回车*/
导出文件: EXPDAT.DMP > D:\andy.dmp /*输入导出文件的位置*/
(1)E(完整的数据库), (2)U(用户) 或 (3)T(表): (2)U > t /*选择导出类型,这里选表(t)*/
导出表数据 (yes/no): yes > /*这里选择默认值,直接回车*/
压缩区 (yes/no): yes > /*这里选择默认值,直接回车*/
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出指定的表通过常规路径...
要导出的表 (T) 或分区 (T: P): (按 RETURN 退出) > t_module /*输入要导出的表名*/
. . 正在导出表 T_MODULE导出了 47 行
要导出的表 (T) 或分区 (T: P): (按 RETURN 退出) > t_employee /*输入要导出的表名*/
. . 正在导出表 T_EMPLOYEE导出了 1 行
要导出的表 (T) 或分区 (T: P): (按 RETURN 退出) > t_sysauthority /*输入要导出的表名*/
. . 正在导出表 T_SYSAUTHORITY导出了 137 行
要导出的表 (T) 或分区 (T: P): (按 RETURN 退出) > /*导完之后可以直接按回车退出*/
命令行模式:
exp username/password@host:port/service file=exportFilePath
- username:导出的用户名称
- password:导出的用户的密码
- host:导出数据库所在主机的ip
- port:导出数据库所在主机使用的端口
- service:导出数据库的实例名
- file:指定导出文件存放的路径
当导出数据库是本地数据库,或者在本地的NETWORK中配置了对应的别名后可以讲host和port省略,如:
exp abc/abc@orcl file=d:\oracle\abc.dmp
2、导入
导入跟导出类似,用法也类似,只是导出用的是exp命令,而导入用的是imp命令。
以下是通过在命令提示符窗口输入imp help=y得到的帮助信息:
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。
C:\Users\andy>imp help=y
Import: Release 11.1.0.6.0 - Production on 星期五 6月 1 11:16:52 2012
Copyright (c) 1982, 2007, Oracle. All rights reserved.
通过输入 IMP 命令和您的用户名/口令, 导入
操作将提示您输入参数:
例如: IMP SCOTT/TIGER
或者, 可以通过输入 IMP 命令和各种参数来控制导入
的运行方式。要指定参数, 您可以使用关键字:
格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
例如: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表
USERID 必须是命令行中的第一个参数。
关键字 说明 (默认值) 关键字 说明 (默认值)
--------------------------------------------------------------------------
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 拥有可传输表空间集中数据的用户
导入常用如下指令:
imp username/password@host:port/service fromuser=fromuser touser=touser file=importFilePath
- username:导入用户名
- password:导入用户的密码
- host:导入的数据库所在主机的ip
- port:导入数据库使用的端口号
- service:导入数据库使用的实例名
- fromuser:导出文件对应的用户
- touser:导入到哪个用户
- file:将用来进行导入的文件所在的路径
当导入数据库是本地数据库,或者在本地的NETWORK中配置了对应的别名后可以讲host和port省略,如:
imp abc/abc@orcl fromuser=def touser=abc file=D:\oracle\def.dmp
三、脱机备份
脱机备份是一种物理备份,通常在数据库通过一个shutdown normal或shutdown immediate命令正常关闭后进行。当数据库关闭时,其使用的各个文件都可以
进行备份。脱机备份一般在SQL/PLUS中进行。步骤如下:
(1)正常关闭要备份的实例,在登录数据库后,使用shutdown normal命令关闭数据库
(2)备份数据库。关闭数据库后可以使用各种备份工具备份所有的数据文件、重做日志文件、控制文件和参数文件。
(3)启动数据库。备份完成后可以使用startup mount命令启动数据库。
四、联机备份
联机备份又称为archivelog备份,它要求数据库运行在archivelog方式下。
1、以archivelog方式运行数据库
步骤如下:
(1)首先以管理员身份连接数据库
(2)在sql/plus中运行如下语句:
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
注:利用archive log list语句可以查看数据库的archive log状态。
2、执行数据库备份
一旦数据库在archivelog方式下打开并对用户可用时就可以进行备份。尽管联机备份可以在工作期间进行,但最好安排在用户活动比较少的时间进行。
数据库的备份可以方便的通过企业管理器进行,打开企业管理器,选择调度备份开始备份操作。