24.Oracle11g的逻辑备份与恢复

oracle基础系统学习目录

01.CentOS7静默安装oracle11g
02.Oracle的启动过程
03.从简单的sql开始
04.Oracle的体系架构
05.Oracle数据库对象
06.Oracle数据备份与恢复
07.用户和权限管理
08.Oracle的表
09.Oracle表的分区
10.Oracle的同义词与序列
11.Oracle的视图
12.Oracle的索引
13.Oracle通过JDBC连接Java
14.Oracle中的事务
15.Oracle11g的归档方式和日志文件的相关操作
16.Oracle的数据字典和动态性能视图
17.Oracle11g的PL/SQL基础
18.Oracle的过程和函数
19.Oracle11g中的游标
20.Oracle11g中的触发器
21.Oracle的程序包(Package)
22.Oracle中的临时表空间
23.Oracle11g的UNDO表空间
24.Oracle11g的逻辑备份与恢复
25. Oracle的回收站
26.Oracle11g的数据装载
27.Oracle11g的闪回Flashback
28.Oracle11g物化视图



一、oracle11g的逻辑备份与恢复概述

Oracle数据库的备份包括以下两种类型:

  • 物理备份是对数据库的操作系统物理文件(如数据文件、控制文件和日志文件等)的备份
  • 逻辑备份是对数据库逻辑组件(如表、视图和存储过程等数据库对象)的备份

1、逻辑备份

逻辑备份是指将数据库中的逻辑结构(如表、视图、存储过程等)以SQL语句的形式进行备份。这种备份方式可以通过数据库管理工具或者命令行工具来进行,备份的文件通常是一个包含了一系列SQL语句的文本文件。

2、逻辑恢复

逻辑恢复是指使用备份的SQL语句来重新构建数据库中的逻辑结构,从而实现数据库的恢复。在恢复过程中,可以通过执行备份文件中的SQL语句来逐个恢复数据库中的表、视图、存储过程等对象,从而使数据库恢复到备份时的状态。

总的来说,逻辑备份与恢复是通过备份数据库中的逻辑结构来实现数据库的备份和恢复,适用于需要对数据库中的逻辑结构进行定期备份和恢复的场景。

二、故障类型

1、常见的故障类型

  1. 数据库故障:数据库故障是指数据库服务器硬件或软件出现问题,导致数据库无法正常运行。数据库故障可能会导致数据丢失、服务中断、性能下降等问题。

  2. 存储故障:存储故障是指数据库服务器所连接的存储设备出现问题,导致数据库无法正常读写数据。存储故障可能会导致数据丢失、服务中断、性能下降等问题。

  3. 网络故障:网络故障是指数据库服务器与客户端之间的网络连接出现问题,导致数据库无法正常通信。网络故障可能会导致服务中断、性能下降等问题。

  4. 安全故障:安全故障是指数据库服务器的安全机制出现问题,导致数据库受到攻击或未经授权的访问。安全故障可能会导致数据泄露、服务中断、系统崩溃等问题。

不同的故障类型会对数据库造成不同的后果,例如:

  1. 数据丢失:数据库故障、存储故障等可能会导致数据丢失,造成数据不可恢复的损失。

  2. 服务中断:各种故障都可能导致数据库服务中断,影响用户的正常使用。

  3. 性能下降:故障可能会导致数据库性能下降,例如查询速度变慢、响应时间变长等。

  4. 数据库崩溃:故障可能会导致数据库崩溃,需要进行数据恢复或重建数据库。

因此,对于Oracle数据库管理员来说,及时发现并解决各种故障是非常重要的,可以采取备份、监控、调优等措施来保障数据库的稳定性和可靠性。

2、导致数据库操作中止的故障

  1. 语句故障:当执行 SQL 语句无效时,可能会导致数据库操作中止,造成服务中断、性能下降等后果。例如,如果一条 SQL 语句包含错误的语法或逻辑错误,可能会导致数据库无法正确执行该语句,从而影响用户的正常操作。

    以下示例为语句故障:

    SQL> SELECT * FROM e;
    SELECT * FROM e
    
    ORA-00942: table or view does not exist 
    
    SQL> 
    

    一般不需要处理。

  2. 用户进程故障:当用户程序出错而无法访问数据库时发生用户进程故障。例如,如果客户端应用程序出现异常断开连接或异常终止进程,可能导致用户无法正常访问数据库,造成服务中断、用户体验下降等后果。

    一般不需要处理。

  3. 实例故障:当 Oracle 的数据库实例由于硬件或软件问题而无法继续运行时,就会发生实例故障。这可能导致数据库无法提供服务,造成服务中断、数据丢失等后果。例如,如果数据库实例崩溃或无法启动,用户将无法访问数据库,导致严重的业务影响。

    一般通过重启oracle可以解决。

  4. 介质故障:在数据库无法正确读取或写入某个数据库文件时,会发生介质故障。这可能导致数据损坏、丢失或不一致,造成数据完整性问题,从而影响业务的正常运行。

    需要DBA进行处理。

  5. 硬件故障:硬件故障包括服务器、存储设备、网络设备等硬件出现故障。这可能导致数据库服务器无法正常运行,造成数据库操作中止,导致服务中断、数据丢失等后果。

  6. 软件故障:软件故障可能是由于数据库软件本身出现bug或者配置错误导致的,也可能是由于操作系统或其他相关软件出现问题。这可能导致数据库无法正常响应请求,造成数据库操作中止,导致服务中断、性能下降等后果。

  7. 网络故障:网络故障可能导致数据库服务器与客户端之间的通信中断,造成数据库操作中止,导致服务中断、性能下降等后果。

  8. 锁冲突:当多个会话同时访问相同的数据时,可能会导致锁冲突,造成某些操作无法执行,导致数据库操作中止,可能会导致性能下降、服务中断等后果。

  9. 日志文件满:当数据库的日志文件空间不足时,可能会导致数据库操作中止,造成数据写入失败,可能会导致数据库服务中断、数据丢失等后果。

  10. 事务阻塞:当数据库中的事务出现阻塞时,可能会导致数据库操作中止,造成性能下降、服务中断等后果。

这些故障都可能导致数据库服务中断、数据丢失、性能下降等严重后果,因此对于数据库管理员来说,需要及时发现并解决这些故障,采取备份、监控、调优等措施来保障数据库的稳定性和可靠性。

三、传统的导出和导入实用程序

1、传统的导出和导入实用程序概述

1.1 什么是传统的导出和导入实用程序

  • 传统的导出导入程序用于实施数据库的逻辑备份和恢复
  • 导出程序将数据库中的对象定义和数据备份到一个操作系统二进制文件中
  • 导入程序读取二进制导出文件并将对象和数据载入数据库中
  • 传统的导出导入程序是客户端工具。

1.2 传统的导出和导入实用程序的特点

  • 可以按时间保存表结构和数据
  • 允许导出指定的表,并重新导入到新的数据库中
  • 可以把数据库迁移到另外一台异构服务器上
  • 在两个不同版本的Oracle数据库之间传输数据
  • 在联机状态下进行备份和恢复
  • 可以重新组织表的存储结构,减少链接及磁盘碎片

1.3 调用导出和导入实用程序的三种方法

  1. 交互提示符:以交互的方式提示用户逐个输入参数的值。
  2. 命令行参数:在命令行指定执行程序的参数和参数值。
  3. 参数文件:允许用户将运行参数和参数值存储在参数文件中,以便重复使用参数

2、导出和导入的具体操作

[oracle@localhost ~]$ exp

Export: Release 11.2.0.1.0 - Production on Fri Dec 1 18:26:57 2023

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


Username: test
Password:

Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
Enter array fetch buffer size: 4096 >

2.1 导出和导入数据库对象的四种模式

在Oracle数据库中,通常使用数据泵工具(Data Pump)来导出和导入数据库对象。以下是每种模式的示例代码:

  1. 数据库模式:导出和导入整个数据库中的所有对象

    -- 导出整个数据库
    expdp system/password@dbname directory=dpump_dir1 dumpfile=full_db_export.dmp logfile=full_db_export.log full=y
    
    -- 导入整个数据库
    impdp system/password@dbname directory=dpump_dir1 dumpfile=full_db_export.dmp logfile=full_db_import.log full=y
    
  2. 表空间模式:导出和导入一个或多个指定的表空间中的所有对象

    -- 导出指定表空间
    expdp system/password@dbname directory=dpump_dir1 dumpfile=ts_export.dmp logfile=ts_export.log tablespaces=example_ts
    
    -- 导入指定表空间
    impdp system/password@dbname directory=dpump_dir1 dumpfile=ts_export.dmp logfile=ts_import.log tablespaces=example_ts
    
  3. 用户模式:导出和导入一个用户模式中的所有对象

    -- 导出指定用户模式
    expdp system/password@dbname directory=dpump_dir1 dumpfile=user_export.dmp logfile=user_export.log schemas=example_user
    
    -- 导入指定用户模式
    impdp system/password@dbname directory=dpump_dir1 dumpfile=user_export.dmp logfile=user_import.log remap_schema=example_user:new_user
    
  4. 表模式:导出和导入一个或多个指定的表或表分区

    -- 导出指定表
    expdp system/password@dbname directory=dpump_dir1 dumpfile=table_export.dmp logfile=table_export.log tables=example_table
    
    -- 导入指定表
    impdp system/password@dbname directory=dpump_dir1 dumpfile=table_export.dmp logfile=table_import.log remap_schema=example_user:new_user
    

需要注意的是,以上代码中的expdp和impdp是数据泵导出和导入的命令,需要根据实际情况进行调整,包括连接信息、目录、日志文件等。

2.2 导出实用程序有以下常用命令参数

参数说明
USERID确定执行导出实用程序的用户名和口令
BUFFER确定导出数据时所使用的缓冲区大小, 其大小用字节表示
FILE指定导出的二进制文件名称, 默认的扩展名是.dmp
FULL指定是否以全部数据库方式导出, 只有授权用户才可使用此参数
OWNER要导出的数据库用户列表
HELP指定是否显示帮助消息和参数说明
ROWS确定是否要导出表中的数据
TABLES按表方式导出时, 指定需导出的表和分区的名称
PARFILE指定传递给导出实用程序的参数文件名
TABLESPACES按表空间方式导出时, 指定要导出的表空间名

以下是每个参数的具体使用代码示例:

  1. USERID:确定执行导出实用程序的用户名和口令

    expdp USERID=system/mypassword 
          DIRECTORY=dpump_dir 
          DUMPFILE=expdat.dmp 
          SCHEMAS=hr
    
  2. BUFFER:确定导出数据时所使用的缓冲区大小,其大小用字节表示

    expdp USERID=system/mypassword 
          DIRECTORY=dpump_dir 
          DUMPFILE=expdat.dmp 
          BUFFER=1000000
    
  3. FILE:指定导出的二进制文件名称,默认的扩展名是.dmp

    expdp USERID=system/mypassword 
    	  DIRECTORY=dpump_dir 
    	  DUMPFILE=expdat.dmp
    
  4. FULL:指定是否以全部数据库方式导出,只有授权用户才可使用此参数

    expdp USERID=system/mypassword 
    	  DIRECTORY=dpump_dir
    	  DUMPFILE=expdat.dmp 
    	  FULL=Y
    
  5. OWNER:要导出的数据库用户列表

    expdp USERID=system/mypassword 
          DIRECTORY=dpump_dir 
          DUMPFILE=expdat.dmp 
          SCHEMAS=hr,scott
    
  6. HELP:指定是否显示帮助消息和参数说明

    expdp HELP=Y
    
  7. ROWS:确定是否要导出表中的数据

    expdp USERID=system/mypassword 
    	  DIRECTORY=dpump_dir 
    	  DUMPFILE=expdat.dmp 
    	  CONTENT=DATA_ONLY
    
  8. TABLES:按表方式导出时,指定需导出的表和分区的名称

    expdp USERID=system/mypassword 
    	  DIRECTORY=dpump_dir 
    	  DUMPFILE=expdat.dmp 
    	  TABLES=employees,departments
    
  9. PARFILE:指定传递给导出实用程序的参数文件名

    expdp PARFILE=exp.par
    
  10. TABLESPACES:按表空间方式导出时,指定要导出的表空间名

    expdp USERID=system/mypassword 
    	  DIRECTORY=dpump_dir 
    	  DUMPFILE=expdat.dmp 
    	  TABLESPACES=users,temp
    

这些代码示例演示了如何使用每个参数进行导出,并提供了相应的说明。

2.3 导出实用程序有以下常用命令参数

参数说明
USERID指定执行导入的用户名和密码
BUFFER指定用来读取数据的缓冲区大小, 以字节为单位
COMMIT指定是否在每个数组 (其大小由BUFFER参数设置) 插入后进行提交
FILE指定要导入的二进制文件名
FROMUSER指定要从导出转储文件中导入的用户模式
TOUSER指定要将对象导入的用户名。FROMUSER与TOUSER可以不同
FULL指定是否要导入整个导出转储文件
TABLES指定要导入的表的列表
ROWS指定是否要导入表中的行
PARFILE指定传递给导入实用程序的参数文件名, 此文件可以包含这里列出的所有参数
IGNORE导入时是否忽略遇到的错误, 默认为N
TABLESPACES按表空间方式导入, 列出要导入的表空间名

以上参数使用示例如下:

-- 以下是一个示例代码,演示如何使用impdp命令导入数据

-- 导入整个数据库
impdp USERID=hr/hr FULL=Y DIRECTORY=dpump_dir1 DUMPFILE=full_export.dmp

-- 导入指定用户的数据
impdp USERID=hr/hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp FROMUSER=scott TOUSER=hr

-- 导入指定表的数据
impdp USERID=hr/hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp TABLES=employees, departments

-- 导入时忽略错误
impdp USERID=hr/hr DIRECTORY=dpump_dir1 DUMPFILE=expdat.dmp TABLES=employees, departments IGNORE=Y

-- 从参数文件导入
impdp PARFILE=import_param.par

在上述示例中,DIRECTORY参数用于指定导出文件的目录,DUMPFILE参数用于指定要导入的导出文件,FROMUSER和TOUSER参数用于指定要导入的用户,TABLES参数用于指定要导入的表,IGNORE参数用于指定在导入时是否忽略错误,PARFILE参数用于指定导入时使用的参数文件。

四、可传输表空间

如果迁移的数据量很大,可以使用可传输表空间:
1. 检查要传输的表空间是否是自包含的。
2. 将表空间设置成只读。
3. exp进行可传输表空间模式的导出。
4. 将导出文件和数据文件复制到目标数据库上。
5. 目标数据库上,imp进行可传输表空间模式的导入。
6. 目标数据库上,把表空间设置成读写状态。

1、什么是可传输表空间?

可传输表空间是Oracle11g中的一个特性,它允许将一个表空间从一个数据库传输到另一个数据库。这个特性可以用于数据库备份、数据迁移、数据复制等场景。

可传输表空间的原理是将表空间的数据文件转换为一个可传输的格式,然后在目标数据库中将这个格式转换为目标平台的数据文件格式。这个过程可以通过Oracle Data Pump工具完成。

2、可传输表空间具体用法。

  1. 可传输表空间的使用场景包括:

    • 备份和恢复:将一个表空间备份到另一个数据库中,以避免数据丢失。

    • 数据迁移:将一个表空间从一个数据库迁移到另一个数据库中,以实现数据的平滑迁移。

    • 数据复制:将一个表空间复制到另一个数据库中,以实现数据的复制和同步。

  2. 使用可传输表空间的步骤如下:

    在源数据库中创建一个可传输表空间:

    CREATE TABLESPACE transfer_ts
       DATAFILE 'transfer_ts.dbf' SIZE 100M
       EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
    

    使用Oracle Data Pump工具将可传输表空间导出为一个可传输的文件:

    expdp system/password DIRECTORY=DATA_PUMP_DIR DUMPFILE=transfer_ts.dmp TABLESPACES=transfer_ts
    

    将可传输文件传输到目标数据库中。

    在目标数据库中使用Oracle Data Pump工具将可传输文件导入为一个表空间:

    impdp system/password DIRECTORY=DATA_PUMP_DIR DUMPFILE=transfer_ts.dmp TABLESPACES=transfer_ts
    

    以上代码示例中,假设源数据库和目标数据库都已配置好Oracle Data Pump工具,并且已创建了名为DATA_PUMP_DIR的目录对象用于存储导出和导入的文件。具体的用户名、密码和文件路径需要根据实际情况进行替换。

需要注意的是,在使用可传输表空间的过程中,需要保证源数据库和目标数据库的数据库版本和操作系统平台相同。同时,也需要注意表空间中的对象是否与目标数据库中的对象冲突。

点击此处跳转下一节:25. Oracle的回收站


更多精彩文章可扫码关注公主号查看:
在这里插入图片描述
若需要各种相关资源可关注公众号留言

  • 24
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Juvenile少年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值