ORACLE数据库实验总集 实验八 Oracle 数据库备份与恢复

一、 实验目的
(1) 掌握 Oracle 数据库各种物理备份的方法。
(2) 掌握 Oracle 数据库各种物理恢复的方法。
(3) 掌握数据的导出与导入操作。
二、实验要求
(1) 对 BOOKSALES 数据库进行一次冷备份。
(2) 对 BOOKSALES 数据库进行一次热备份。
(3) 利用热备份恢复数据库。
(4) 利用备份进行数据库的不完全恢复。
三、 实验内容
(1) 关闭 BOOKSALES 数据库, 进行一次完全冷备份。
(2) 启动数据库后, 在数据库中创建一个名为 cold 表, 并插入数据, 以改变数据库的状态。
(3) 利用数据库冷备份恢复 BOOKSALES 数据库到备份时刻的状态, 并查看恢复后是否存在 cold 表。
(4) 将 BOOKSALES 数据库设置为归档模式。
(5) 对 BOOKSALES 数据库进行一次热备份。
(6) 在数据库中创建一个名为 hot 表, 并插入数据, 以改变数据库的状态。
(7) 假设保存 hot 表的数据文件损坏, 利用热备份进行数据库恢复。
(8) 数据库恢复后, 验证 hot 表的状态及其数据情况。
(9) 利用数据库的热备份, 分别进行基于时间和基于 SCN 的不完全恢复。
(10) 利用 EXPDP 工具导出 BOOKSALES 数据库的整个数据库。
(11) 利用 EXPDP 工具导出 BOOKSALES 数据库的 USERS 表空间。
(12) 利用 EXPDP 工具导出 BOOKSALES 数据库 publisher 表和 books 表。
(13) 利用 EXPDP 工具导出 BOOKSALES 数据库中 bs 模式下的所有数据库对象及数据。
(14) 删除 BOOKSALES 数据库中的 orderitem 表和 order 表, 使用转储文件, 利用 IMPDP工具进行恢复。
(15) 删除 BOOKSALES 数据库中的 USERS 表空间, 使用转储文件, 利用 IMPDP 工具进行恢复。
四、问题解答及实验结果
因为这里用服务器docker中安装的oracle做老是遇到问题,我就在本机上的oracle进行了实验。
(1) 关闭 BOOKSALES 数据库, 进行一次完全冷备份。
SQL> select file_name from dba_data_files;
SQL> select member from v l o g f i l e ; S Q L > s e l e c t v a l u e f r o m v logfile; SQL> select value from v logfile;SQL>selectvaluefromvparameter WHERE name=‘control_files’;
SQL> shutdown immediate
C:\Windows\system32> XCOPY D:\oracle\flash_recovery_area D:\oracle\backup\flash_recovery_area /S /E /Y
C:\Windows\system32> XCOPY D:\oracle\oradata D:\oracle\backup\oradata /S /E /Y
SQL> startup
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2) 启动数据库后, 在数据库中创建一个名为 cold 表, 并插入数据, 以改变数据库的状态。
SQL> create table cold( id number primary key, name VARCHAR2(25));
SQL> insert into cold VALUES(1,‘ylh’);
SQL> commit;
SQL> select * from cold;
在这里插入图片描述

(3) 利用数据库冷备份恢复 BOOKSALES 数据库到备份时刻的状态, 并查看恢复后是否存在 cold 表。
SQL> shutdown immediate
C:\Windows\system32> XCOPY D:\oracle\backup\flash_recovery_area D:\oracle\flash_recovery_area /S /E /Y
C:\Windows\system32> XCOPY D:\oracle\backup\oradata D:\oracle\oradata /S /E /Y
SQL> startup
SQL> select * from cold;
在这里插入图片描述
在这里插入图片描述

(4) 将 BOOKSALES 数据库设置为归档模式。
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database flashback off;
SQL> alter database archivelog;
SQL> alter database open;
SQL> archive log list;
在这里插入图片描述

(5) 对 BOOKSALES 数据库进行一次热备份。
SQL> col TABLESPACE_NAME format a20;
SQL> col FILE_NAME format a50;
SQL> SELECT tablespace_name,file_name FROM dba_data_files ORDER BY tablespace_name;
SQL> ALTER TABLESPACE USERS BEGIN BACKUP;
SQL> HOST COPY D:\oracle\oradata\orcl\USERS01.DBF D:\oracle\hotbackup\USERS01.DBF
SQL> ALTER TABLESPACE USERS END BACKUP;
SQL> ALTER TABLESPACE EXAMPLE BEGIN BACKUP;
SQL> HOST COPY D:\oracle\oradata\orcl\EXAMPLE01.DBF D:\oracle\hotbackup\EXAMPLE01.DBF
SQL> ALTER TABLESPACE EXAMPLE END BACKUP;
SQL> ALTER TABLESPACE SYSAUX BEGIN BACKUP;
SQL> HOST COPY D:\oracle\oradata\orcl\SYSAUX01.DBF D:\oracle\hotbackup\SYSAUX01.DBF
SQL> ALTER TABLESPACE SYSAUX END BACKUP;
SQL> ALTER TABLESPACE SYSTEM BEGIN BACKUP;
SQL> HOST COPY D:\oracle\oradata\orcl\SYSTEM01.DBF D:\oracle\hotbackup\SYSTEM01.DBF
SQL> ALTER TABLESPACE SYSTEM END BACKUP;
SQL> ALTER TABLESPACE UNDOTBS1 BEGIN BACKUP;
SQL> HOST COPY D:\oracle\oradata\orcl\UNDOTBS01.DBF D:\oracle\hotbackup\UNDOTBS01.DBF
SQL> ALTER TABLESPACE UNDOTBS1 END BACKUP;
SQL> ALTER DATABASE BACKUP CONTROLFILE TO ‘D:\oracle\hotbackup\CONTROL.BKP’;
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
SQL> ALTER SYSTEM ARCHIVE LOG CURRENT;
SQL> ALTER SYSTEM SWITCH LOGFILE;
在这里插入图片描述

(6) 在数据库中创建一个名为 hot 表, 并插入数据, 以改变数据库的状态。
SQL> CREATE TABLE hot(id NUMBER PRIMARY KEY,name VARCHAR2(25));
SQL> SELECT * FROM dba_tablespaces WHERE tablespace_name = ‘USERS’;
SQL> INSERT INTO hot VALUES(1,‘ylh1’);
SQL> INSERT INTO hot VALUES(2,‘ylh2’);
SQL> commit;
SQL> ALTER TABLESPACE USERS BEGIN BACKUP;
SQL> HOST COPY D:\oracle\oradata\orcl\USERS01.DBF D:\oracle\hotbackup\USERS01.DBF
SQL> ALTER TABLESPACE USERS END BACKUP;
SQL> INSERT INTO hot VALUES(3,‘ylh3’);

在这里插入图片描述

(7) 假设保存 hot 表的数据文件损坏, 利用热备份进行数据库恢复。
SQL> SHUTDOWN ABORT
SQL> HOST COPY D:\oracle\hotbackup\USERS01.DBF D:\oracle\oradata\orcl\USERS01.DBF
SQL> conn / as sysdba
SQL> STARTUP MOUNT
SQL> RECOVER TABLESPACE USERS
SQL> ALTER DATABASE OPEN;
在这里插入图片描述

(8) 数据库恢复后, 验证 hot 表的状态及其数据情况。
SQL> SELECT * FROM hot;
在这里插入图片描述

(9) 利用数据库的热备份, 分别进行基于时间和基于 SCN 的不完全恢复。
SQL> shutdown abort;
SQL> startup mount;
SQL> recover database until time ‘2023-11-10’;
SQL> set timing on;
SQL> alter session set nls_date_format=‘YYYY-MM-DD HH24:MI:SS’;
SQL> select recid,stamp,sequence#,first_change#,first_time,next_change# from vKaTeX parse error: Expected 'EOF', got '#' at position 71: …QL> select file#̲, status from vdatafile WHERE file# = 1;
SQL> recover datafile 1;
在这里插入图片描述
在这里插入图片描述

(10) 利用 EXPDP 工具导出 BOOKSALES 数据库的整个数据库。
SQL> create or replace directory DMP as ‘DMP’;
C:\Users\lzAngle> expdp full=Y directory=DMP dumpfile=booksales_full_expdp.dmp logfile=booksales_full_expdp.log
在这里插入图片描述
在这里插入图片描述

(11) 利用 EXPDP 工具导出 BOOKSALES 数据库的 USERS 表空间。
C:\Users\lzAngle> expdp tablespaces=USERS directory=DMP dumpfile=users_tablespace_expdp.dmp logfile=users_tablespace_expdp.log
在这里插入图片描述

(12) 利用 EXPDP 工具导出 BOOKSALES 数据库 publisher 表和 books 表。
C:\Users\lzAngle> expdp tables=bs.publisher,bs.books directory=DMP dumpfile=publisher_books_expdp.dmp logfile=publisher_books_expdp.log

在这里插入图片描述

(13) 利用 EXPDP 工具导出 BOOKSALES 数据库中 bs 模式下的所有数据库对象及数据。
C:\Users\lzAngle> expdp schemas=bs directory=DMP dumpfile=bs_schema_expdp.dmp logfile=bs_schema_expdp.log
在这里插入图片描述

(14) 删除 BOOKSALES 数据库中的 orderitem 表和 orders 表, 使用转储文件, 利用 IMPDP工具进行恢复。
– 使用 Data Pump 导出
C:\Users\lzAngle> expdp tables=bs.orderitem,bs.order directory=DMP dumpfile=orders_expdp.dmp logfile=orders_expdp.log
在这里插入图片描述

– 在数据库中删除表
DROP TABLE bs.orderitem;
DROP TABLE bs.orders;
在这里插入图片描述

– 使用 Data Pump 导入
C:\Users\lzAngle> impdp directory=DMP dumpfile=orders_expdp.dmp logfile=orders_impdp.log remap_schema=bs:bs
在这里插入图片描述

(15) 删除 BOOKSALES 数据库中的 USERS 表空间, 使用转储文件, 利用 IMPDP 工具进行恢复。
– 使用 Data Pump 导出
C:\Users\lzAngle> expdp tablespaces=USERS directory=DMP dumpfile=users_tablespace_expdp.dmp logfile=users_tablespace_expdp.log
在这里插入图片描述

– 在数据库中删除表空间
DROP TABLESPACE USERS INCLUDING CONTENTS AND DATAFILES;
在这里插入图片描述

– 使用 Data Pump 导入
C:\Users\lzAngle> impdp directory=DMP dumpfile=users_tablespace_expdp.dmp logfile=users_tablespace_impdp.log remap_tablespace=USERS:USERS
在这里插入图片描述

五、实验体会与收获
通过Oracle数据库备份与恢复实验,我深刻认识到数据库管理的关键性。掌握了冷备份和热备份等备份方法,在冷备份中,成功关闭BOOKSALES数据库执行完全备份,并通过文件拷贝方式成功恢复数据库。通过热备份逐一备份表空间,利用Data Pump工具完成整个数据库导出,为后续导入提供基础。在模拟数据文件损坏情况下,通过热备份成功进行数据库恢复,验证了备份有效性,确保了数据一致性。将数据库设置为归档模式,实践了基于时间和基于SCN的不完全恢复。通过Data Pump工具进行多种数据库导出,包括整个数据库、特定表空间和指定表,提升了实际操作能力,为未来数据库迁移和复制提供可靠手段。在实验中遇到Docker安装Oracle数据库的挑战,通过仔细排查和学习文档解决问题。这个实验不仅深化了对数据库备份与恢复原理的理解,也培养了解决实际问题的能力,提升了数据库管理技能。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值