文章目录
备份和恢复
1. 备份和恢复概念
备份是数据库的数据副本,可以保护数据在出现意外损失时最大限度的恢复;
Oracle 数据库的备份包括两种类型:
物理备份是对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份,主要通过RMAN
逻辑备份是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份
2. 可能发生的故障类型
语句故障:在执行 SQL 语句无效可导致语句故障。(不需要处理)
用户进程故障:当用户程序出错而无法访问数据库时发生用户进程故障。导致用户进程故障的原因是异常断开连接或异常终止进程。(不需要处理,PMON进程自动处理)
实例故障:当 ORACLE 的数据库实例由于硬件或软件问题而无法断续运行时,就会发生实例故障(重启数据库)
介质故障:在数据库无法正确读取或写入某个数据库文件时,会发生介质故障
3.传统的导出和导入程序 exp/imp (了解内容)
3.1 传统的导出导入程序用于实施数据库的逻辑备份和恢复
导出程序将数据库中的对象定义和数据备份到一个操作系统二进制文件中;导入程序读取二进制导出文件并将对象和数据载入数据库中;
传统的导入程序是客户端工具,导出的二进制文件位于客户端;
3.2 优点
可以按时间保存表结构和数据;允许导出指定的表,并重新导入到新的数据库中;可以把数据库迁移到另外一台异构服务器上;在两个不同版本的 Oracle 数据库之间传输数据;在联机状态下进行备份和恢复;可以重新组织表的存储结构,降低HWM,减少链接及磁盘碎片
3.3 使用调用导出和导入实用程序的三种方法
交互提示符:
以交互的方式提示用户逐个输入参数的值
命令行参数:
在命令行指定执行程序的参数和参数值
参数文件:
允许用户将运行参数和参数值存储在参数文件中,以便重复使用参数
新建一个参数文件
exp parfile=参数文件路径
3.4 导出和导入数据库对象的四种模式(四种模式之间互斥)
数据库模式:导出和导入整个数据库中的所有对象; full
表空间模式:导出和导入一个或多个指定的表空间中的所有对象;
用户模式:导出和导入一个用户模式中的所有对象;
表模式:导出和导入一个或多个指定的表或表分区;
3.5 exp
exp命令
格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
例如: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表
参数说明:
USERID 用户名/口令
BUFFER 数据缓冲区大小
FILE 输出文件 (EXPDAT.DMP)
COMPRESS 导入到一个区 (Y)
GRANTS 导出权限 (Y)
INDEXES 导出索引 (Y)
DIRECT 直接路径 (N)
LOG 屏幕输出的日志文件
ROWS 导出数据行 (Y)
CONSISTENT 交叉表的一致性 (N)
FULL 导出整个文件 (N)
OWNER 所有者用户名列表
TABLES 表名列表
RECORDLENGTH IO 记录的长度
INCTYPE 增量导出类型
RECORD 跟踪增量导出 (Y)
TRIGGERS 导出触发器 (Y)
STATISTICS 分析对象 (ESTIMATE)
PARFILE 参数文件名
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 模式导出的模板名
如:
(1) 导出scott的emp、dept表
exp scott/123456@orcl tables=(emp,dept) file=D:\c\scott1.dmp log=D:\c\scott1.log
(2) 导出scott所有对象
exp scott/123456@orcl owner=scott file=D:\c\scott2.dmp log=D:\c\scott2.log
3.6 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 用户名/口令
BUFFER 数据缓冲区大小
FILE 输入文件 (EXPDAT.DMP)
SHOW 只列出文件内容 (N)
IGNORE 忽略创建错误 (N)
GRANTS 导入权限 (Y)
INDEXES 导入索引 (Y)
ROWS 导入数据行 (Y)
LOG 屏幕输出的日志文件
FULL 导入整个文件 (N)
FROMUSER 所有者用户名列表
TOUSER 用户名列表
TABLES 表名列表
RECORDLENGTH IO 记录的长度
INCTYPE 增量导入类型
COMMIT 提交数组插入 (N)
PARFILE 参数文件名
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)
DATA_ONLY 仅导入数据 (N)
如:
(1) 导入scott的emp、dept表
imp scott/123456@orcl file=D:\c\scott1.dmp
仅导入部分表:
imp scott/123456@orcl file=D:\c\scott1.dmp tables=(dept)
(2) 导入其他用户的表
imp cz/123456@orcl file=D:\c\scott2.dmp fromuser=scott touser=cz
3.7.可传输表空间(迁移的数据量很大)
步骤:
检查要传输的表空间是否是自包含的;
将表空间设置成只读;
exp 进行可传输表空间模式的导出;
将导出文件和数据文件复制到目标数据库上;
目标数据库上,imp 进行可传输表空间模式的导入;
目标数据库上,把表空间设置成读写状态;
4. 数据泵(expdp /impdp)
4.1 简介
exp/imp缺点在于速度太慢,oracle设计了一个服务器端工具,数据泵为数据库提供高速并行和大数据的迁移;
4.2 expdp 格式说明、参数说明、使用说明
在 expdp 进行导出时,先创建了 MT 表,并把对象的信息插入到 MT 表,之后进行导出动作;导出完成后,MT 表也导出到转储文件中;导出任务完成后、或者删除了导出任务后,MT 表自动删除;如果导出任务异常终止,MT 表仍然保留
expdp 具有四种模式:表、用户、可传输表空间、全库
格式: expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表
参数说明:
ATTACH
连接到现有作业。
例如, ATTACH=job_name。
COMPRESSION
减少转储文件大小。
有效的关键字值为: ALL, DATA_ONLY, [METADATA_ONLY] 和 NONE。
CONTENT
指定要卸载的数据。
有效的关键字值为: [ALL], DATA_ONLY 和 METADATA_ONLY。
ALL 导出表定义和数据,DATA_ONLY仅导出数据,METADATA_ONLY仅导出定义
DATA_OPTIONS
数据层选项标记。
有效的关键字值为: XML_CLOBS。
DIRECTORY
用于转储文件和日志文件的目录对象。
DUMPFILE
指定目标转储文件名的列表 [expdat.dmp]。
例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION
加密某个转储文件的一部分或全部。
有效的关键字值为: ALL, DATA_ONLY, ENCRYPTED_COLUMNS_ONLY, METADATA_ONLY 和 NONE
。
ENCRYPTION_ALGORITHM
指定加密的方式。
有效的关键字值为: [AES128], AES192 和 AES256。
ENCRYPTION_MODE
生成加密密钥的方法。
有效的关键字值为: DUAL, PASSWORD 和 [TRANSPARENT]。
ENCRYPTION_PASSWORD
用于在转储文件中创建加密数据的口令密钥。
ESTIMATE
计算作业估计值。
有效的关键字值为: [BLOCKS] 和 STATISTICS。
ESTIMATE_ONLY
计算作业估计值而不执行导出。
EXCLUDE
排除特定对象类型。
例如, EXCLUDE=SCHEMA:"='HR'"。
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
用于导出表的子集的谓词子句。
例如, QUERY=employees:"WHERE department_id > 10"。
REMAP_DATA
指定数据转换函数。
例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。
REUSE_DUMPFILES
覆盖目标转储文件 (如果文件存在) [N]。
SAMPLE
要导出的数据的百分比。
SCHEMAS
要导出的方案的列表 [登录方案]。
SOURCE_EDITION
用于提取元数据的版本。
STATUS
监视作业状态的频率, 其中
默认值 [0] 表示只要有新状态可用, 就立即显示新状态。
TABLES
标识要导出的表的列表。
例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。
TABLESPACES
标识要导出的表空间的列表。
TRANSPORTABLE
指定是否可以使用可传输方法。
有效的关键字值为: ALWAYS 和 [NEVER]。
TRANSPORT_FULL_CHECK
验证所有表的存储段 [N]。
TRANSPORT_TABLESPACES
要从中卸载元数据的表空间的列表。
VERSION
要导出的对象版本。
有效的关键字值为: [COMPATIBLE], LATEST 或任何有效的数据库版本。
ADD_FILE
将转储文件添加到转储文件集。
CONTINUE_CLIENT
返回到事件记录模式。如果处于空闲状态, 将重新启动作业。
EXIT_CLIENT
退出客户机会话并使作业保持运行状态。
FILESIZE
用于后续 ADD_FILE 命令的默认文件大小 (字节)。
HELP
汇总交互命令。
KILL_JOB
分离并删除作业。
PARALLEL
更改当前作业的活动 worker 的数量。
REUSE_DUMPFILES
覆盖目标转储文件 (如果文件存在) [N]。
START_JOB
启动或恢复当前作业。
有效的关键字值为: SKIP_CURRENT。
STATUS
监视作业状态的频率, 其中
默认值 [0] 表示只要有新状态可用, 就立即显示新状态。
STOP_JOB
按顺序关闭作业执行并退出客户机。
有效的关键字值为: IMMEDIATE。
如:
使用sysdba用户创建目录对象
create directory MY_DIR as 'D:\d';
grant read,write on directory MY_DIR to scott;
(1)导出scott的 emp、dept表,默认会导出表上的约束和索引
在命令行输入
expdp scott/123456@orcl DUMPFILE=scott1.dmp DIRECTORY=MY_DIR TABLES=(emp,dept)
(2)导出scott的 emp、dept表,仅导结构,不导出数据,导出文件名若存在则覆盖
在命令行输入
expdp scott/123456@orcl DUMPFILE=scott1.dmp DIRECTORY=MY_DIR TABLES=(emp,dept) CONTENT=METADATA_ONLY REUSE_DUMPFILES=y
(3)导出scott和hr用户
用户必须是管理员用户,在命令行输入
expdp system/123456@orcl DUMPFILE=system1.dmp DIRECTORY=MY_DIR SCHEMAS=(scott,hr) JOB_NAME=expdp1
JOB_NAME 若指定则生成的MT表名称为JOB_NAME的属性值
(4)导出scott的 emp、dept表,不导出索引和约束
在命令行输入
expdp scott/123456@orcl DUMPFILE=scott2.dmp DIRECTORY=MY_DIR TABLES=(emp,dept) exclude=index,constraint
(5)导出scott的所有表,除了 emp、dept表
在命令行输入
expdp scott/123456@orcl DUMPFILE=scott3.dmp DIRECTORY=MY_DIR exclude=table:"in('EMP')" exclude=table:"in('DEPT')"
(6)导出scott的 emp、dept表,但不导出emp的约束和索引
在命令行输入
expdp scott/123456@orcl DUMPFILE=scott4.dmp DIRECTORY=MY_DIR TABLES=(emp,dept) exclude=constraint:"in('PK_DEPT')" exclude=index:"in('PK_DEPT')"
(7)导出scott的 emp、dept表,带条件expdp,并使用parfile
创建parfile文件
在创建的文件的目录执行
expdp scott/123456@orcl parfile=exp1.txt
4.3 impdp 格式说明、参数说明、使用说明
格式: impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
参数说明:
ATTACH
连接到现有作业。
例如, ATTACH=job_name。
CONTENT
指定要加载的数据。
有效的关键字为: [ALL], DATA_ONLY 和 METADATA_ONLY。
DATA_OPTIONS
数据层选项标记。
有效的关键字为: SKIP_CONSTRAINT_ERRORS。
DIRECTORY
用于转储文件, 日志文件和 SQL 文件的目录对象。
DUMPFILE
要从中导入的转储文件的列表 [expdat.dmp]。
例如, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION_PASSWORD
用于访问转储文件中的加密数据的口令密钥。
对于网络导入作业无效。
ESTIMATE
计算作业估计值。
有效的关键字为: [BLOCKS] 和 STATISTICS。
EXCLUDE
排除特定对象类型。
例如, EXCLUDE=SCHEMA:"='HR'"。
FLASHBACK_SCN
用于重置会话快照的 SCN。
FLASHBACK_TIME
用于查找最接近的相应 SCN 值的时间。
FULL
导入源中的所有对象 [Y]。
HELP
显示帮助消息 [N]。
INCLUDE
包括特定对象类型。
例如, INCLUDE=TABLE_DATA。
JOB_NAME
要创建的导入作业的名称。
LOGFILE
日志文件名 [import.log]。
NETWORK_LINK
源系统的远程数据库链接的名称。
NOLOGFILE
不写入日志文件 [N]。
PARALLEL
更改当前作业的活动 worker 的数量。
PARFILE
指定参数文件。
PARTITION_OPTIONS
指定应如何转换分区。
有效的关键字为: DEPARTITION, MERGE 和 [NONE]。
QUERY
用于导入表的子集的谓词子句。
例如, QUERY=employees:"WHERE department_id > 10"。
REMAP_DATA
指定数据转换函数。
例如, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO。
REMAP_DATAFILE
在所有 DDL 语句中重新定义数据文件引用。
REMAP_SCHEMA
将一个方案中的对象加载到另一个方案。
REMAP_TABLE
将表名重新映射到另一个表。
例如, REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。
REMAP_TABLESPACE
将表空间对象重新映射到另一个表空间。
REUSE_DATAFILES
如果表空间已存在, 则将其初始化 [N]。
SCHEMAS
要导入的方案的列表。
SKIP_UNUSABLE_INDEXES
跳过设置为“索引不可用”状态的索引。
SOURCE_EDITION
用于提取元数据的版本。
SQLFILE
将所有的 SQL DDL 写入指定的文件。
STATUS
监视作业状态的频率, 其中
默认值 [0] 表示只要有新状态可用, 就立即显示新状态。
STREAMS_CONFIGURATION
启用流元数据的加载
TABLE_EXISTS_ACTION
导入对象已存在时执行的操作。
有效的关键字为: APPEND, REPLACE, [SKIP] 和 TRUNCATE。
TABLES
标识要导入的表的列表。
例如, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995。
TABLESPACES
标识要导入的表空间的列表。
TARGET_EDITION
用于加载元数据的版本。
TRANSFORM
要应用于适用对象的元数据转换。
有效的关键字为: OID, PCTSPACE, SEGMENT_ATTRIBUTES 和 STORAGE。
TRANSPORTABLE
用于选择可传输数据移动的选项。
有效的关键字为: ALWAYS 和 [NEVER]。
仅在 NETWORK_LINK 模式导入操作中有效。
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 的数量。
START_JOB
启动或恢复当前作业。
有效的关键字为: SKIP_CURRENT。
STATUS
监视作业状态的频率, 其中
默认值 [0] 表示只要有新状态可用, 就立即显示新状态。
STOP_JOB
按顺序关闭作业执行并退出客户机。
有效的关键字为: IMMEDIATE。
(1)改变所有者,REMAP_SCHEMA的使用
grant read,write on directory MY_DIR to hr;
在命令行输入
expdp scott/123456@orcl DUMPFILE=scott7.dmp DIRECTORY=MY_DIR SCHEMAS=(scott)
impdp hr/123456@orcl DUMPFILE=scott7.dmp DIRECTORY=MY_DIR remap_schema=scott:hr