精华内容
下载资源
问答
  • oracle数据库维护中,备份或恢复是重中之重的问题,本文就讲一下oracle联机数据库备份的方法
  • Oracle9i数据库备份和恢复方案Oracle9i数据库备份和恢复方案Oracle9i数据库备份和恢复方案Oracle9i数据库备份和恢复方案
  • 教程名称:傻瓜式实战Oracle RMAN数据库备份和恢复视频课程目录:【】数据库备份和恢复系列].ITBOBA_RMAN_1【】数据库备份和恢复系列].ITBOBA_RMAN_10【】数据库备份和恢复系列].ITBOBA_RMAN_2【】数据库备份和恢复...
  • Oracle DBA数据库备份与恢复详解最佳实践,学习过程中的总结,有兴趣不妨看看,如果有不对的地方,高手不要留情!!
  • Oracle-Oracle数据库备份与恢复

    万次阅读 多人点赞 2019-06-21 22:59:31
    Oracle数据库备份与恢复 下面通过一些简单的例子来了解一下: Oracle数据库各种物理备份的方法。 Oracle数据库各种物理恢复的方法 利用RMAN工具进行数据库的备份与恢复。 数据的导出与导入操作。 (1)关闭...

    Oracle数据库备份与恢复

    下面通过一些简单的例子来了解一下:

    • Oracle数据库各种物理备份的方法。
    • Oracle数据库各种物理恢复的方法
    • 利用RMAN工具进行数据库的备份与恢复。
    • 数据的导出与导入操作。
    • (1)关闭BOOKSALES数据库,进行一次完全冷备份。
    select file_name from dba_data_files;
    

    在这里插入图片描述

    select member from v$logfile;
    

    在这里插入图片描述

    select value from v$parameter where name='control_files';
    

    在这里插入图片描述

    shutdown immediate
    //复制所有的数据文件、联机重做日志文件以及控制文件到备份磁盘
    startup
    
    • (2)启动数据库后,在数据中创建一个名为cold表,并插入数据,以改变数据库的状态。
    create table cold (id number(5,0) primary key);
    Table COLD 已创建。
    insert into cold values(1);
    1行已插入。
    select * from cold;
    

    在这里插入图片描述

    • (3)利用数据库冷备份恢复BOOKSALES数据库到备份时刻的状态,并查看恢复后是否存在cold表。
    //关闭数据库
    shutdown immediate
    //将备份的所有数据文件、控制文件、联机重做日志文件还原到原来所在的位置。
    //重新启动数据库
    startup
    
    • (4)将BOOKSALES数据库设置为归档模式。
    //关闭数据库
    shutdown immediate
    //设置归档目的地
    select name,value from v$parameter where name='db_recovery_file_dest';
    

    在这里插入图片描述

    alter system set log_archive_dest='D:\Oracle\backup\archive';
    alter system set log_archive_duplex='D:\Oracle\backup\archive';
    //将数据库启动到加载状态
    startup mount
    //改变数据库为归档模式
    alter database archivelog;
    //打开数据库
    alter database open;
    
    • (5)对BOOKSALES数据库进行一次热备份。
    select tablespace_name,file_name from dba_data_files order by tablespace_name;
    

    在这里插入图片描述

    alter tablespace users begin backup;
    Tablespace USERS已变更。
    //将表空间中所有的数据文件复制到备份磁盘
    alter tablespace users end backup;
    Tablespace USERS已变更。
    
    • (6) 在数据库中创建一个名为hot表,并插入数据,以改变数据库的状态。
    create table hot (id number primary key, name varchar2(25)) tablespace users;
    Table HOT 已创建。
    insert into hot values(33, 'xushicheng');
    1行已插入。
    
    • (7) 假设保存hot表的数据文件损坏,利用热备份进行数据库恢复。
    shutdown abort
    startup mount
    recover datafile 'D:\Oracle\app\administrators\oradata\BOOKSALES\users002.dbf';
    alter database datafile 'D:\Oracle\app\administrators\oradata\BOOKSALES\users002.dbf' online;
    alter database open;
    
    • (8) 数据库恢复后,验证hot表的状态及其数据情况。
    select * from hot;
    
    • (9) 利用数据库的热备份,分别进行基于时间,基于SCN和基于CANCEL的不完全恢复。
    shutdown abort;
    startup mount;
    recover database until time '2019-6-1';
    
    set time on
    alter system switch logfile;
    System SWITCH已变更。
    alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
    Session已变更。
    select recid,stamp,sequence#,first_change#,first_time,next_change# from v$log_history;
    

    在这里插入图片描述
    在这里插入图片描述

    shutdown abort;
    startup mount;
    recover database until change 1344396;
    
    • (10) 为了使用RMAN工具备份与恢复BOOKSALES数据库,配置RMAN的自动通道分配。
    RMAN target sys/admin@BOOKSALES
    

    在这里插入图片描述

    RMAN> configure default device type to sbt;
    
    使用目标数据库控制文件替代恢复目录
    新的 RMAN 配置参数:
    CONFIGURE DEFAULT DEVICE TYPE TO 'SBT_TAPE';
    已成功存储新的 RMAN 配置参数
    
    RMAN> configure device type disk parallelism 2;
    
    新的 RMAN 配置参数:
    CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
    已成功存储新的 RMAN 配置参数
    
    RMAN> configure device type disk parallelism 3;
    
    旧的 RMAN 配置参数:
    CONFIGURE DEVICE TYPE DISK PARALLELISM 2 BACKUP TYPE TO BACKUPSET;
    新的 RMAN 配置参数:
    CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
    已成功存储新的 RMAN 配置参数
    RMAN> configure channel 3 device type disk maxpiecesize=50m;
    
    新的 RMAN 配置参数:
    CONFIGURE CHANNEL 3 DEVICE TYPE DISK MAXPIECESIZE 50 M;
    已成功存储新的 RMAN 配置参数
    
    • (11)利用RMAN工具完全备份BOOKSALES数据库。
    shutdown immediate
    alter system set log_archive_dest_1='location=D:\Oracle\backup\ARCHIVE MANDATORY';
    System SET已变更。
    startup mount
    alter database archivelog;
    RMAN> backup database format 'D:\Oracle\backup\%U.BKP';
    
    启动 backup03-6-19
    使用目标数据库控制文件替代恢复目录
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: backup 命令 (06/03/2019 00:21:49) 失败
    ORA-19554: 配置设备时出错, 设备类型: SBT_TAPE, 设备名称:
    ORA-27211: 未能加载介质管理库
    (12) 利用RMAN工具备份BOOKSALES数据库的初始化参数文件和控制文件。
    RMAN> backup spfile format 'D:\Oracle\app\administrators\oradata\BOOKSALES\%U';
    
    启动 backup03-6-19
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: backup 命令 (06/03/2019 00:23:19) 失败
    ORA-19554: 配置设备时出错, 设备类型: SBT_TAPE, 设备名称:
    ORA-27211: 未能加载介质管理库
    RMAN> backup current controlfile format 'D:\Oracle\app\administrators\oradata\BOOKSALES\%U.CTL';
    
    启动 backup03-6-19
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: backup 命令 (06/03/2019 00:24:58) 失败
    ORA-19554: 配置设备时出错, 设备类型: SBT_TAPE, 设备名称:
    ORA-27211: 未能加载介质管理库
    
    • (13)利用RMAN工具对USERS表空间、BOOKTBS1表空间进行备份。
    RMAN> backup tablespace users,booktbs1 format 'D:\Oracle\app\administrators\oradata\BOOKSALES\%U.BKP';
    
    启动 backup03-6-19
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: backup 命令 (06/03/2019 00:26:39) 失败
    ORA-19554: 配置设备时出错, 设备类型: SBT_TAPE, 设备名称:
    ORA-27211: 未能加载介质管理库
    
    • (14) 利用RMAN工具备份BOOKSALES数据库的数据文件users01.dbf、users02.dbf进行备份。
    RMAN> backup datafile 'D:\Oracle\app\administrators\oradata\BOOKSALES\users01.dbf' format 'D:\Oracle\app\administrators\oradata\BOOKSALES\%u';
    
    启动 backup03-6-19
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: backup 命令 (06/03/2019 00:29:14) 失败
    ORA-19554: 配置设备时出错, 设备类型: SBT_TAPE, 设备名称:
    ORA-27211: 未能加载介质管理库
    RMAN> backup datafile 'D:\Oracle\app\administrators\oradata\BOOKSALES\users02.dbf' format 'D:\Oracle\app\administrators\oradata\BOOKSALES\%u';
    
    启动 backup03-6-19
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: backup 命令 (06/03/2019 00:30:49) 失败
    ORA-19554: 配置设备时出错, 设备类型: SBT_TAPE, 设备名称:
    ORA-27211: 未能加载介质管理库
    
    • (15) 利用RMAN工具备份BOOKSALES数据库的控制文件。
    RMAN> backup current controlfile format 'D:\Oracle\app\administrators\oradata\BOOKSALES\%U.ctl';
    
    启动 backup03-6-19
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: backup 命令 (06/03/2019 00:31:50) 失败
    ORA-19554: 配置设备时出错, 设备类型: SBT_TAPE, 设备名称:
    ORA-27211: 未能加载介质管理库
    (16) 利用RMAN工具备份BOOKSALES数据库的归档文件。
    RMAN> backup archivelog all;
    
    启动 backup03-6-19
    当前日志已存档
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: backup 命令 (06/03/2019 00:32:37) 失败
    ORA-19554: 配置设备时出错, 设备类型: SBT_TAPE, 设备名称:
    ORA-27211: 未能加载介质管理库
    
    RMAN> backup database plus archivelog format 'D:\Oracle\app\administrators\oradata\BOOKSALES\%u';
    
    
    启动 backup03-6-19
    当前日志已存档
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: backup plus archivelog 命令 (06/03/2019 00:33:14) 失败
    ORA-19554: 配置设备时出错, 设备类型: SBT_TAPE, 设备名称:
    ORA-27211: 未能加载介质管理库
    
    • (17) 利用RMAN工具备份BOOKSALES数据库形成的备份集,恢复数据库。
     RMAN> shutdown immediate;
    
    数据库已关闭
    数据库已卸装
    Oracle 实例已关闭
    
    RMAN> startup mount;
    
    已连接到目标数据库 (未启动)
    Oracle 实例已启动
    数据库已装载
    
    系统全局区域总计    3373858816 字节
    
    Fixed Size                     2180424 字节
    Variable Size               1845496504 字节
    Database Buffers            1509949440 字节
    Redo Buffers                  16232448 字节
    
    RMAN> restore database;
    
    启动 restore03-6-19
    分配的通道: ORA_DISK_1
    通道 ORA_DISK_1: SID=191 设备类型=DISK
    分配的通道: ORA_DISK_2
    通道 ORA_DISK_2: SID=129 设备类型=DISK
    分配的通道: ORA_DISK_3
    通道 ORA_DISK_3: SID=192 设备类型=DISK
    
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: restore 命令 (06/03/2019 00:34:44) 失败
    RMAN-06026: 有些目标没有找到 - 终止还原
    RMAN-06023: 没有找到数据文件4的副本来还原
    RMAN-06023: 没有找到数据文件3的副本来还原
    RMAN-06023: 没有找到数据文件2的副本来还原
    RMAN-06023: 没有找到数据文件1的副本来还原
    RMAN> recover database;
    
    启动 recover 于 03-6-19
    使用通道 ORA_DISK_1
    使用通道 ORA_DISK_2
    使用通道 ORA_DISK_3
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: recover 命令 (06/03/2019 00:35:37) 失败
    RMAN-06094: 数据文件4必须重新存储
    
    RMAN> alter database open;
    
    数据库已打开
    
    RMAN> alter database open resetlogs;
    
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: alter db 命令 (06/03/2019 00:36:19) 失败
    ORA-01531: 实例已打开数据库
    
    
    • (18) 利用EXPDP工具导出BOOKSALES数据库的整个数据库。
    create or replace directory dumpdir as 'D:\Oracle\backup';
    Directory DUMPDIR 已创建。
    grant read,write on directory dumpdir to system;
    Grant 成功。
    grant exp_full_database, imp_full_database to system;
    Grant 成功。
    expdp system/admin directory=dum_dir dumpfile=expfull.dmp full=yes nologfile=yes;
    
    • (19)利用EXPDP工具导出EXPDP数据库的USERS表空间。
    C:\Users\徐仕成>expdp system/admin directory=dum_dir dumpfile=expfull.dmp full=yes nologfile=yes;
    
    Export: Release 11.2.0.1.0 - Production on 星期一 63 00:49:22 2019
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    ORA-39001: 参数值无效
    ORA-39000: 转储文件说明错误
    ORA-39087: 目录名 DUM_DIR 无效
    
    • (20)利用EXPDP工具导出BOOKSALES数据库publisher表和books表。
    C:\Users\徐仕成>expdp system/admin directory=dump_dir dumpfile=publishers_books.dmp logfile=publishers_books.log tables=scott.emp, scott.dept parallel=3
    
    Export: Release 11.2.0.1.0 - Production on 星期一 63 00:50:14 2019
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    ORA-39002: 操作无效
    ORA-39070: 无法打开日志文件。
    ORA-39087: 目录名 DUMP_DIR 无效
    
    • (21)利用EXPDP工具导出BOOKSALES数据库中bs模式下的所有数据库对象及数据。
    C:\Users\徐仕成>expdp bs/bs directory=dump_dir dumpfile=exfull.dmp full=yes nologfile=yes
    
    Export: Release 11.2.0.1.0 - Production on 星期一 63 00:51:05 2019
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    ORA-39006: 内部错误
    ORA-39068: 在 PROCESS_ORDER=-3 的行中主表数据无效
    ORA-01658: 无法为表空间 USERS 中的段创建 INITIAL 区
    
    ORA-39097: 数据泵作业出现意外的错误 -1658
    
    • (22)删除BOOKSALES数据库中的orderitem表和order表,使用转储文件,利用IMPDP工具进行恢复。
    drop table orderitem;
    drop table order;
    C:\Users\徐仕成>impdp scott/admin directory=dpump_dir dumpfile=emp_deptdmp tables=detp,emp nologfile=yes
    
    Import: Release 11.2.0.1.0 - Production on 星期一 63 00:54:29 2019
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    UDI-28000: 操作产生了 ORACLE 错误 28000
    ORA-28000: the account is locked
    
    用户名: sys as sysdba
    口令:
    
    连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    ORA-39001: 参数值无效
    ORA-39000: 转储文件说明错误
    ORA-39087: 目录名 DPUMP_DIR 无效
    
    • (23)删除BOOKSALES数据库中的USERS表空间,使用转储文件,利用IMPDP工具进行恢复。
    drop users;
    C:\Users\徐仕成>impdp scott/admin directory=dpump_dir dumpfile=emp_deptdmp tables=detp,emp nologfile=yes
    
    Import: Release 11.2.0.1.0 - Production on 星期一 63 00:56:42 2019
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    UDI-28000: 操作产生了 ORACLE 错误 28000
    ORA-28000: the account is locked
    
    用户名: sys as sysdba
    口令:
    
    连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
    With the Partitioning, OLAP, Data Mining and Real Application Testing options
    ORA-39001: 参数值无效
    ORA-39000: 转储文件说明错误
    ORA-39087: 目录名 DPUMP_DIR 无效
    

    上面有很多操作其实都失败了,具体原因我也不清楚,也一直没有解决,但是相关的命令应该都是正确的。

    创作不易,喜欢的话加个关注点个赞,蟹蟹蟹蟹

    展开全文
  • Oracle9i数据库备份恢复初步研究,针对Oracle9i数据库备份恢复的一些见解
  • ORACLE_数据库备份和恢复 9. 对数据库做归档设置(备份前的工作) 10.备份的基本原理以及物理方式备份 11. 物理方式恢复(完全恢复) 12. 物理方式恢复(不完全恢复)
  • Oracle数据库备份

    2018-12-27 14:38:32
    oracle数据库备份。在这文档中我们 ,将备份的操作以实际样例形式展现。方便学习及掌握。
  • oracle数据库备份知识

    2019-07-23 01:55:26
    教程名称:oracle数据库备份知识课程目录:【】Oracle10g查找数据方法总结【】Oracle8i数据库恢复一例【】Oracle备份和恢复常见问题解答【】Oracle备份方式之差异性分析【】详谈oracle数据库备份 资源太大,传百度...
  • oracle 9i 数据库备份与恢复过程说明
  • Delphi oracle 数据库备份 Delphi oracle 数据库备份 Delphi oracle 数据库备份
  • oracle 数据库 备份

    2012-11-26 17:36:02
    oracle 数据库 备份
  • Oracle 数据库备份.bat

    2021-05-09 12:44:29
    Oracle 数据库备份.bat
  • oracle数据库备份

    2015-12-11 11:50:24
    oracle数据库备份批处理命令,添加定时任务自动备份。
  • oracle数据库备份命令

    2021-01-16 11:15:33
    oracle数据库备份、和删除备份命令
  • oracle数据库自动备份

    2008-09-03 18:00:59
    备份oracle数据库自动备份oracle数据库自动备份oracle数据库自动备份oracle数据库自动备份oracle数据库自动备份oracle数据库自动备份oracle数据库自动备份oracle数据库自动备份oracle数据库自动备份oracle数据库自动...
  • oracle 12c数据库备份与恢复

    万次阅读 2018-02-07 20:05:21
    oracle用得不是很多,但...当然要备份和恢复数据库,我们一定要先安装数据库,这里oracle 12c在安装的时候有个需要注意的地方,如下图注意到那个“创建为容器数据库”的选项了吗?那个钩一定取消。本次的恢复和备...

          oracle用得不是很多,但总体用起来也没啥问题,因为大多数时候就是增删查改的操作,这些跟其他数据库也没多大区别。不过当遇到备份和恢复的时候,才发现区别是比较大的,因此留下这篇文章做一个记录,方便以后查阅。

    当然要备份和恢复数据库,我们一定要先安装数据库,这里oracle 12c在安装的时候有个需要注意的地方,如下图


    注意到那个“创建为容器数据库”的选项了吗?那个钩一定取消。本次的恢复和备份都在非容器数据库中进行了,如果你安装的时候已经创建为容器数据库了,本方法可能就不适合你做备份和恢复了。

    好了说了那么多就直接进入正题了(啰嗦一下,所有备份和恢复都是用sys账号操作

    先说备份操作,如下

    1、  首先通过

    select *from dba_directories;

    查询备份的路径

    DATA_PUMP_DIR就是备份文件所在位置

    2、 select *from dba_tablespaces;查询表空间,恢复端与备份端表空间要保持一致

    3、  通过以下命令,直接在命令行界面运行完成备份

    expdp 'sys/密码 as sysdba'  directory=DATA_PUMP_DIR schemas=表空间所在用户 dumpfile=备份文件名.dmp logfile=日志文件名.log

    再来说下恢复,因为我不是在本机恢复,而是在另一台机器恢复,所以过程要繁琐一点。如果你只是在本机执行备份和恢复操作,那么只需用到恢复操作的最后一步即可。

    1、首先通过

    select *from dba_directories;

    查询备份的路径

    将备份文件放到DATA_PUMP_DIR路径下

     

    2、创建表空间

    create table space 表空间名称(与你备份时的表空间名称保持一致)

    datafile'D:\database\oracle_data\表空间名称.dbf'设置表空间文件位置

    size 2048m  --设置初始大小

    autoextend on 

    next 50m

    extent management local;

     

    3、创建用户

    create user 用户名 identified by 密码(用户也跟备份时的所在用户名保持一致)

    default tablespace 表空间名称

    temporary tablespace temp;

     

     

     

    4、给用户授权

    GRANT

    CREATE SESSION,        

    CREATE ANY SEQUENCE,    

    CREATE ANY TABLE,       

    CREATE ANY VIEW ,       

    CREATE ANY INDEX,       

    CREATE ANY PROCEDURE,   

    CREATE ANY DIRECTORY,   

    SELECT ANY TABLE,

    SELECT ANY DICTIONARY,

    INSERT ANY TABLE,

    UPDATE ANY TABLE,

    DEBUG ANY PROCEDURE

    to 用户名(及刚创建的这个用户);

     

    5、执行恢复(在运行中cmd命令调出命令行界面,直接在命令行中执行以下语句)

    impdp 'sys/密码 as sysdba' directory=DATA_PUMP_DIR schemas=表空间所在用户 dumpfile= 备份文件名.dmp


    好了这样就完成了oracle 12c的备份与恢复


    展开全文
  • 在Linux中Oracle数据库备份的方法有很多,就像mysql一样可以使用不同方法进行备份oracle数据库
  • Oracle数据库备份.pdf

    2021-10-09 23:07:06
    Oracle数据库备份.pdf
  • Oracle数据库备份脚本

    2015-05-26 10:13:15
    Oracle数据库备份脚本 用于备份数据库里的所有数据
  • Oracle 12c 数据库备份与恢复

    千次阅读 2018-03-09 23:08:10
    这是一篇学习笔记,在这篇笔记中,对Oracle数据库和归档日志进行了备份,然后将数据库删掉。之后通过恢复spfile+恢复控制文件+restore数据库+recover数据库的方式进行了恢复。环境: Oracle 12.2.0.1.0 on LINUX准备...
    这是一篇学习笔记,在这篇笔记中,对Oracle数据库和归档日志进行了备份,然后将数据库删掉。之后通过恢复spfile+恢复控制文件+restore数据库+recover数据库的方式进行了恢复。
    

    环境: Oracle 12.2.0.1.0 on LINUX

    准备工作: 数据库为归档模式,归档目录为/home/oracle/archlog/orcl。并且已经将归档目录里的文件清空。打开数据库,查询表T1的内容如下:
    SQL> archive log list;     
    Database log mode              Archive Mode
    Automatic archival             Enabled
    Archive destination            /home/oracle/archlog/orcl
    Oldest online log sequence     8
    Next log sequence to archive   10
    Current log sequence           10
    SQL> select * from t1;

            ID
    ----------
         10010

    [oracle@node01 ~]$ ls -ltrh /home/oracle/archlog/orcl
    total 0

    1. 备份数据库

    这一部分中,先备份了全库,然后往表T1里插入了一条记录,最后备份日志。这样restore只能恢复一条记录,recover之后才能恢复新加的记录

    创建一个目录,用于存放备份位置
    $ mkdir -p /home/oracle/orcbackup
    $ export NLS_DATA_FORMAT='dd-mon-yyyy hh24:mi:ss'

    打开RMAN,
    $ rman target /
    RMAN> set echo on;
    RMAN> configure device type disk parallelism 1;

    设置数据库备份文件的目录和格式:
    RMAN> configure channel 1 device type disk format '/home/oracle/orcbackup/rman1_%U.bk';

    设置spfile和control file备份文件的目录和格式:
    RMAN> show controlfile autobackup;
    RMAN> configure controlfile autobackup format for device type disk to '/home/oracle/orcbackup/rman_ctl_%F.bk';

    对数据库进行备份,最后自动备份了spfile和control file:
    RMAN> backup incremental level=0 database;

    Starting backup at 09-MAR-18
    using target database control file instead of recovery catalog
    allocated channel: ORA_DISK_1
    channel ORA_DISK_1: SID=269 device type=DISK
    channel ORA_DISK_1: starting incremental level 0 datafile backup set
    channel ORA_DISK_1: specifying datafile(s) in backup set
    input datafile file number=00001 name=/home/oracle/app/oracle/oradata/orcl/system01.dbf
    input datafile file number=00003 name=/home/oracle/app/oracle/oradata/orcl/sysaux01.dbf
    input datafile file number=00004 name=/home/oracle/app/oracle/oradata/orcl/undotbs01.dbf
    input datafile file number=00007 name=/home/oracle/app/oracle/oradata/orcl/users01.dbf
    channel ORA_DISK_1: starting piece 1 at 09-MAR-18
    channel ORA_DISK_1: finished piece 1 at 09-MAR-18
    piece handle=/home/oracle/orcbackup/rman1_0pstcmht_1_1.bk tag=TAG20180309T212517 comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:46
    channel ORA_DISK_1: starting incremental level 0 datafile backup set
    channel ORA_DISK_1: specifying datafile(s) in backup set
    input datafile file number=00010 name=/home/oracle/app/oracle/oradata/orcl/orclpdb/sysaux01.dbf
    input datafile file number=00009 name=/home/oracle/app/oracle/oradata/orcl/orclpdb/system01.dbf
    input datafile file number=00011 name=/home/oracle/app/oracle/oradata/orcl/orclpdb/undotbs01.dbf
    input datafile file number=00012 name=/home/oracle/app/oracle/oradata/orcl/orclpdb/users01.dbf
    channel ORA_DISK_1: starting piece 1 at 09-MAR-18
    channel ORA_DISK_1: finished piece 1 at 09-MAR-18
    piece handle=/home/oracle/orcbackup/rman1_0qstcmjb_1_1.bk tag=TAG20180309T212517 comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
    channel ORA_DISK_1: starting incremental level 0 datafile backup set
    channel ORA_DISK_1: specifying datafile(s) in backup set
    input datafile file number=00006 name=/home/oracle/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf
    input datafile file number=00005 name=/home/oracle/app/oracle/oradata/orcl/pdbseed/system01.dbf
    input datafile file number=00008 name=/home/oracle/app/oracle/oradata/orcl/pdbseed/undotbs01.dbf
    channel ORA_DISK_1: starting piece 1 at 09-MAR-18
    channel ORA_DISK_1: finished piece 1 at 09-MAR-18
    piece handle=/home/oracle/orcbackup/rman1_0rstcmk5_1_1.bk tag=TAG20180309T212517 comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:25
    Finished backup at 09-MAR-18

    Starting Control File and SPFILE Autobackup at 09-MAR-18
    piece handle=/home/oracle/orcbackup/rman_ctl_c-1496578512-20180309-01.bk comment=NONE
    Finished Control File and SPFILE Autobackup at 09-MAR-18

    完成后指定的备份目录内容如下:
    [oracle@node01 ~]$ ls -ltrh /home/oracle/orcbackup
    total 2.1G
    -rw-r-----. 1 oracle oinstall 1.1G Mar  9 21:25 rman1_0pstcmht_1_1.bk
    -rw-r-----. 1 oracle oinstall 524M Mar  9 21:26 rman1_0qstcmjb_1_1.bk
    -rw-r-----. 1 oracle oinstall 513M Mar  9 21:26 rman1_0rstcmk5_1_1.bk
    -rw-r-----. 1 oracle oinstall  18M Mar  9 21:26 rman_ctl_c-1496578512-20180309-01.bk

    往T1中插入一条记录:
    SQL> insert into t1 values(20020);
    SQL> commit;

    备份归档日志:
    RMAN> crosscheck archivelog all;
    RMAN> backup archivelog all;

    Starting backup at 09-MAR-18
    current log archived
    using channel ORA_DISK_1
    channel ORA_DISK_1: starting archived log backup set
    channel ORA_DISK_1: specifying archived log(s) in backup set
    input archived log thread=1 sequence=2 RECID=1 STAMP=968881650
    input archived log thread=1 sequence=10 RECID=9 STAMP=970349297
    input archived log thread=1 sequence=11 RECID=10 STAMP=970349345
    channel ORA_DISK_1: starting piece 1 at 09-MAR-18
    channel ORA_DISK_1: finished piece 1 at 09-MAR-18
    piece handle=/home/oracle/orcbackup/rman1_0tstcmp1_1_1.bk tag=TAG20180309T212905 comment=NONE
    channel ORA_DISK_1: backup set complete, elapsed time: 00:00:07
    Finished backup at 09-MAR-18

    Starting Control File and SPFILE Autobackup at 09-MAR-18
    piece handle=/home/oracle/orcbackup/rman_ctl_c-1496578512-20180309-02.bk comment=NONE
    Finished Control File and SPFILE Autobackup at 09-MAR-18

    再次查看备份目录内容如下
    [oracle@node01 ~]$ ls -ltrh /home/oracle/orcbackup
    total 2.3G
    -rw-r-----. 1 oracle oinstall 1.1G Mar  9 21:25 rman1_0pstcmht_1_1.bk
    -rw-r-----. 1 oracle oinstall 524M Mar  9 21:26 rman1_0qstcmjb_1_1.bk
    -rw-r-----. 1 oracle oinstall 513M Mar  9 21:26 rman1_0rstcmk5_1_1.bk
    -rw-r-----. 1 oracle oinstall  18M Mar  9 21:26 rman_ctl_c-1496578512-20180309-01.bk
    -rw-r-----. 1 oracle oinstall 192M Mar  9 21:29 rman1_0tstcmp1_1_1.bk
    -rw-r-----. 1 oracle oinstall  18M Mar  9 21:29 rman_ctl_c-1496578512-20180309-02.bk

    2. 删除数据库

    SQL> shutdown immediate; 
    SQL> startup force mount;
    SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
    SQL> drop database;

    3. 恢复数据库

    3.1 恢复spfile

    先造一个假的pfile,随便起个名叫pfile_tmp.ora,目地是设置数据库的名子,使数据库启动到nomount状态,因此这个文件只包含一条记录即可
    [oracle@node01 ~]$ export ORACLE_SID=orcl
    [oracle@node01 ~]$ echo "db_name=orcl" >> $ORACLE_HOME/dbs/pfile_tmp.ora

    RMAN> startup nomount pfile='$ORACLE_HOME/dbs/pfile_tmp.ora';

    再从备份中恢复出真正的spfile,由于两次备份操作都备份了spfile和control file,选择最后一个即可:
    RMAN> restore spfile from '/home/oracle/orcbackup/rman_ctl_c-1496578512-20180309-02.bk';
    RMAN> shutdown immediate;
    RMAN> startup nomount;

    3.2 恢复控制文件

    从备份中恢复控制文件
    RMAN> restore controlfile from '/home/oracle/orcbackup/rman_ctl_c-1496578512-20180309-02.bk';
    RMAN> alter database mount;

    3.3 restore db 

    由于都是在本机,备份片的位置没有变化,都记录在上一步的控制文件里,所以这一步比较简单:
    RMAN> restore database;

    3.4 recover db

    RMAN> recover database;
    RMAN> alter database open resetlogs;

    3.5 验证

    [oracle@node01 dbs]$ sqlplus / as sysdba
    SQL> select * from t1;
            ID
    ----------
         10010
         20020
    展开全文
  • oracle数据库备份与恢复 oracle数据库备份与恢复 oracle数据库备份与恢复 oracle数据库备份与恢复 oracle数据库备份与恢复 oracle数据库备份与恢复
  • Oracle 9i数据库备份,升级项目实例pdf
  • 中文版Oracle数据库备份与恢复Oracle数据库备份与恢复Oracle数据库备份与恢复Oracle数据库备份与恢复
  • oracle 数据库备份 实例代码 oracle 数据库备份 实例代码 oracle 数据库备份 实例代码
  • Oracle数据库应用与开发案例教程 Java Web开发技术 * * * Oracle数据库应用 与开发案例教程 主编 王红 中国水利水电出版社 * * Oracle数据库应用 与开发案例教程 第十章 数据库备份与恢复 * Oracle数据库应用与开发...
  • Oracle-数据库备份与恢复

    千次阅读 2015-06-07 23:32:36
    掌握oracle数据库常用的备份方法。 实验内容 (1)数据备份的方法 实验步骤 1、数据库备份 1)Oracle物理备份与恢复 .0.准备工作: (1) 查看数据库是否运行于归档模式下:   请给出查询的结果: 干净的...

    数据库备份与恢复

    实验目的

    掌握oracle数据库常用的备份方法。

    实验内容

    (1)数据备份的方法

    实验步骤

    1、数据库备份

    1)Oracle物理备份与恢复

    .0.准备工作:

    (1) 查看数据库是否运行于归档模式下:

     

    请给出查询的结果:

    干净的关闭数据库,做一个完全的冷备份。

    提示:a.使用showdown命令;  b.复制数据文件、日志文件和控制文件到安全地方

    (2) 把数据库改为归档模式

    SQL> startup mount

    SQL> alter database archivelog;

    SQL> alter database open;

    设置成自动归档

    SQL> alter system set log_archive_start = true scope=spfile;

     

    1.数据库系统数据文件和回退段遭破坏的情况下的恢复。此时数据库的状态是关闭的。

    (1) 先启动数据库,用scott用户建立test表,并插入两条数据。

    SQL> create table scott.test (id int);

    表已创建。

    SQL> insert into scott.test values(1);

    已创建 1 行。

    SQL> insert into scott.test values(2);

    已创建 1 行。

    SQL> commit;

    提交完成。

     

    (2)模拟数据库遭意外被迫关闭,并且系统数据文件丢失。

    SQL> shutdown abort

     

    把oracle服务停掉,移除SYSTEM01.dbf和UNDOTBS01.DBF文件(即将这两个文件移到其他文件夹下)。

     

    (3)启动服务,启动数据库, 提示如下错误

    a. 启动服务

     

    b. 启动数据库

    SQL> startup

    请给执行结果:

     

     

     

    (4)把备份的SYSTEM01.dbf和UNDOTBS01.DBF文件复制回去

    a. 执行以下命令:

     

    请给执行结果:

     

     

    然后就可以打开数据库,查看scott用户的test表。

    SQL> alter database open;

    SQL> select * from scott.test;

       请给执行结果:

     

     

    实2:

    数据库是打开的,这时损坏的文件是用户的数据文件而不是system和undo文件。

    (1)用scott用户在users表空间建立test1表

    SQL> create table scott.test1(id int)

      2  tablespace users;

    表已创建。

    (2) 插入两条数据

    SQL> insert into scott.test1 values(1);

    已创建 1 行。

    SQL> insert into scott.test1 values(2);

    已创建 1 行。

    SQL> commit;

    提交完成。

     

     

    (3)当前日志归档

    SQL> alter system archive log current;

    系统已更改。

    (4)现在破坏users表空间,使其离线,然后移除users01.dbf到一个指定文件夹(备份)

    SQL> alter tablespace users offline;

    表空间已更改。

    执行:SQL> alter tablespace users online;

     请给执行结果:

     

     

    此时出现错误,users表空间不能在线了。这时把备份的users01.DBF还原回去。

    然后,执行:SQL> recover tablespace users;

     

     

    (5)完成介质恢复。

    SQL> alter tablespace users online;

    表空间已更改。

    SQL> select * from scott.test1;

          请给执行结果:

     

     

    实3:数据文件没有备份(不能使system和undo文件)的恢复。

    (1)创建表空间testspace

    在SQL Plus中依次执行以下语句,给出最后的执行结果:

    SQL>  create tablespace testspace  datafile 'C:\oracle\product\10.1.0\db_1\TestDB\testspace.dbf' size 10m;

    SQL> create table scott.test3(id int)

           tablespace testspace;

    SQL> commit;

    SQL> alter system switch logfile;

    SQL> insert into scott.test3 values(1);

    SQL> commit;

    SQL> alter tablespace testspace offline;

    SQL> select * from scott.test3;

     请给执行结果:

     

     

     

    (2)由于没有备份数据文件,需重新创建一个

    SQL> alter database create datafile

           'C:\oracle\product\10.1.0\db_1\TestDB\testspace.dbf';

    SQL> recover tablespace testspace;

     

     

    (3) 完成恢复

    SQL> alter tablespace testspace online;

    表空间已更改。

    SQL> select * from scott.test3;

    请给执行结果:

     

    2)逻辑备份:导入导出实验

    实4:模式的导入导出

    案例:将scott/tiger用户对应的模式导出,通过导出文件将其导入到Test用户(为一个空用户)对应的模式中,包括该模式中的所有对象的定义和数据。

     

    1.准备工作

    (1)创建用户:

    Create user test

    Identified by test;

    (2)授权:

     

    注:这儿做了简化处理,实际工作中,尽量不要授DBA权限给一般用户

    2.数据的导出与导入

    (1)数据准备

    以scott身份登录: conn scott/tiger

    ①创建测试用表:

    create table  jobs(

      name  varchar2(20),

    job    varchar2(40),

      sales   number);

    加入数据:

    insert into jobs values('IT_Test','software testing',3000);

    提交:

     commit;

     

    ②创建测试用表scott_test

     create table scott_test(

     name  varchar2(10),

     age    number);

    加入数据:

     insert into scott_test values('manager','40');

     

    (2)以管理员身份登录:

     conn as sysdba;

     alter system enable restricted session;

     

     (3)导出数据库:

     在DOS提示符下执行:

    exp system/ testdb full=y file=test.dmp

    执行时,会要求输入system的口令,请根据实际情况输入。

     (4)恢复数据库运行状态

     conn as sysdba;

     alter system disable restricted session;

     

     (5)进行数据库的导入:

    以下是一示例:

    imp system/testdb fromuser=scott touser=test tables=(scott_test,jobs) file=test.dmp ignore=y;

     

    请给执行结果:

     

    3.结果检验

    对导入的数据进行查询,以确定导入是否成功,给出结果截图:

    (1)以test身份登录到数据库

     

     

    (2)查询刚才导出(导入)表中的某个表(如Jobs):

     

    请给执行结果:

     

     

     

    实验小结:

    1. 备份原则与策略:在刚建立数据库时,应该立即进行数据库的完全备份;

    将所有的数据库备份保存在一个独立磁盘上(必须是与当前数据库系统正在使用的文件不同的磁盘);

    应该保持控制文件的多路复用,且控制文件的副本应该存放在不同磁盘控制器下的不同磁盘设备上;

    应该保持多个联机日志文件组,每个组中至少应该保持两个日志成员,同一日志组的多个成员应该分散存放在不同磁盘上;

    至少保证两个归档重做日志文件的归档目标,不同归档目标应该分散于不同磁盘;

    如果条件允许,尽量保证数据库运行于归档模式;

    根据数据库数据变化的频率情况确定数据库备份规律;

    在归档模式下,当数据库结构发生变化时,如创建或删除表空间、添加数据文件、重做日志文件等,应该备份数据库的控制文件;

    在非归档模式下,当数据库结构发生变化时,应该进行数据库的完全备份;

    在归档模式下,对于经常使用的表空间,可以采用表空间备份方法提高备份效率;

    在归档模式下,通常不需要对联机重做日志文件进行备份;

    使用RESETLOGS方式打开数据库后,应该进行一个数据库的完全备份;

    对于重要的表中的数据,可以采用逻辑备份方式进行备份。

     

    2.根据数据备份方式的不同,数据库备份分为: 

    物理备份:将组成数据库的数据文件、重做日志文件、控制文件、初始化参数文件等操作系统文件进行复制,将形成的副本保存到与当前系统独立的磁盘或磁带上。

    逻辑备份是指利用Oracle提供的导出工具(如Expdp,Export)将数据库中的数据抽取出来存放到一个二进制文件中。

    3. 根据数据库备份时是否关闭数据库服务器,物理备份分为:

    冷备份又称停机备份,是指在关闭数据库的情况下将所有的数据库文件复制到另一个磁盘或磁带上去。

    热备份又称联机备份,是指在数据库运行的情况下对数据库进行的备份。要进行热备份,数据库必须运行在归档日志模式下。 

    4. 根据数据库备份的规模不同,物理备份可分为:

    完全备份:指对整个数据库进行备份,包括所有的物理文件。

    部分备份 :对部分数据文件、表空间、控制文件、归档重做日志文件等进行备份。

    5. 根据数据库是否运行在归档模式,物理备份可分为:归档备份,非归档备份 

    6. 如果没有启用归档模式,数据库不能恢复到备份完成后的任意时刻。如果启用归档模式,从冷备份结束后到出现故障这段时间的数据库恢复,可以利用联机日志文件和归档日志文件实现。

     

     

     

     

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 130,909
精华内容 52,363
关键字:

oracle如何停止数据库备份