数据库实验五 备份与恢复

实验五 备份与恢复

一.实验目的

掌握Oracle数据库备份和恢复的基本方法

二.实验内容

登录orcl数据库,完成以下实验:

  1. 对orcl数据库进行一次完全冷备份。
  2. 对orcl数据库的所有表空间进行热备份。
  3. 在数据库中创建一张表t1,表结构自定。在表中插入若干数据。破坏表t1所在的数据文件,使用热备份对其进行恢复。恢复后,查看表t1的状态。(请给出操作的全过程)
  4. 使用expdp导出users表空间中的所有数据。使用expdp导出scott用户的dept表。
  5. 删除scott用户的dept表,并用impdp进行恢复。
  6. 实现教材151页, 9.2.5节, 3 数据库不完全恢复的示例。
  7. 查询orcl数据库的所有控制文件。假定控制文件全部丢失且无备份,其它文件完好。试恢复数据库。(请给出故障模拟和恢复的全过程)
  8. 查询orcl数据库的联机日志文件。假定状态为inactive的日志文件(任选一个)损坏,其它文件完好。试恢复数据库。(请给出故障模拟和恢复的全过程)

三. 实验过程

1.对orcl数据库进行一次完全冷备份。

C:\Users\Administrator>sqlplus

SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 4月 25 08:20:26 2021

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

请输入用户名:  sys
输入口令:

连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL> select file_name from dba_data_files;

FILE_NAME
--------------------------------------------------------------------------

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF

SQL> select member from v$logfile;

MEMBER
--------------------------------------------------------------------------

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG

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

VALUE
--------------------------------------------------------------------------

C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL, C:\ORACLE\PRODUCT\10.

ADATA\ORCL\CONTROL02.CTL, C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.


SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。

Total System Global Area  293601280 bytes
Fixed Size                  1248600 bytes
Variable Size             117441192 bytes
Database Buffers          167772160 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
数据库已经打开。

2.对orcl数据库的所有表空间进行热备份。

 SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  293601280 bytes
Fixed Size                  1248600 bytes
Variable Size             121635496 bytes
Database Buffers          163577856 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
SQL> alter database archivelog;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> select tablespace_name,file_name from dba_data_files order by tablespace_na
me;

TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------

EXAMPLE
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF

SYSAUX
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF

SYSTEM
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF


TABLESPACE_NAME
------------------------------
FILE_NAME
--------------------------------------------------------------------------------

UNDOTBS1
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF

USERS
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF


SQL> alter tablespace EXAMPLE begin backup;

表空间已更改。

SQL> alter tablespace SYSAUX begin backup;

表空间已更改。

SQL> alter tablespace SYSTEM begin backup;

表空间已更改。

SQL> alter tablespace UNDOTBS1 begin backup;

表空间已更改。

SQL> alter tablespace USERS begin backup;

表空间已更改。

SQL> host copy C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL02\
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL01.CTL
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL02.CTL
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\CONTROL03.CTL
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
已复制        12 个文件。

SQL> alter tablespace EXAMPLE end backup;

表空间已更改。

SQL> alter tablespace SYSAUX end backup;

表空间已更改。

SQL> alter tablespace SYSTEM end backup;

表空间已更改。

SQL> alter tablespace UNDOTBS1 end backup;

表空间已更改。

SQL> alter tablespace USERS end backup;

表空间已更改。

3.在数据库中创建一张表t1,表结构自定。在表中插入若干数据。破坏表t1所在的数据文件,使用热备份对其进行恢复。恢复后,查看表t1的状态。(请给出操作的全过程)

SQL> create table t1( classno CHAR(15) not null,classname  VARCHAR2(20) not null
,headteacher VARCHAR2(20),primary key (classno)) tablespace users;

表已创建。

SQL> ALTER TABLE t1 ADD address varchar2(40);

表已更改。

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  293601280 bytes
Fixed Size                  1248600 bytes
Variable Size             117441192 bytes
Database Buffers          167772160 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
SQL> alter database archivelog;

数据库已更改。

SQL> alter database open;

数据库已更改。

SQL> alter tablespace users begin backup;

表空间已更改。

SQL> host copy C:\oracle\product\10.2.0\oradata\orcl\USERS01.DBF C:\oracle\produ
ct\10.2.0\oradata\orcl03
已复制         1 个文件。
SQL> shutdown abort;
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。

Total System Global Area  293601280 bytes
Fixed Size                  1248600 bytes
Variable Size             117441192 bytes
Database Buffers          167772160 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
SQL> recover database;
完成介质恢复。
SQL> alter database open;

数据库已更改。


4.使用expdp导出users表空间中的所有数据。使用expdp导出scott用户的dept表。

  • 修改Scott密码并解锁

SQL> alter user scott identified by tiger account unlock;

  • 操作系统中创建文件夹

D:\oracle\backup

  • 命令行中创建目录及dumpdir对象,并且对scott用户授权

SQL> create or replace directory dumpdir as ‘d:\oracle\backup’;
目录已创建。
SQL> grant read,write on directory dumpdir to scott;
授权成功。

前三步截图

C:\Users\Administrator> expdp scott/tiger directory=dumpdir dumpfile=tsp.dmp tablespaces=users

在这里插入图片描述

C:\Users\Administrator>expdp scott/tiger directory=dumpdir dumpfile=emp_.dept.dm
p logfile=emp_dept.log tables=dept job_name=emp_dept_job parallel=3
C:\Users\Administrator>expdp scott/tiger directory=dumpdir dumpfile=tsp.dmp tablespaces=users

在这里插入图片描述

5.删除scott用户的dept表,并用impdp进行恢复。

SQL> drop table dept cascade constraints;

在这里插入图片描述
注意,退出数据库,在磁盘运行

C:\Users\Administrator>impdp scott/tiger directory=dumpdir dumpfile=emp_.dept.dmp tables=dept nologfile=yes content=data_only

在这里插入图片描述

6.实现教材151页, 9.2.5节, 3 数据库不完全恢复的示例。

6.1按照第2小题,对数据库进行一次归档模式下的完全备份

6.2创建表并进行删除操作,来模拟损坏文件

SQL> CREATE TABLE scott.test (ID NUMBER PRIMARY KEY, NAME CHAR(10));

表已创建。

SQL> set time on;
16:42:02 SQL> INSERT INTO scott.test VALUES(1, 'WANG');

已创建 1 行。

16:42:18 SQL> COMMIT;

提交完成。

16:42:28 SQL> ALTER SYSTEM SWITCH LOGFILE;

系统已更改。

16:42:36 SQL> INSERT INTO scott.test VALUES (2, 'ZHANG');

已创建 1 行。

16:42:42 SQL> COMMIT;

提交完成。

16:42:48 SQL> ALTER SYSTEM SWITCH LOGFILE;

系统已更改。

16:43:03 SQL> INSERT INTO scott.test VALUES(3, 'LI');

已创建 1 行。

16:43:15 SQL> COMMIT;

提交完成。

16:43:29 SQL> ALTER SYSTEM SWITCH LOGFILE;

系统已更改。

16:43:40 SQL> DELETE FROM scott.test WHERE id=2;

已删除 1 行。

16:43:46 SQL> COMMIT;

提交完成。

16:43:53 SQL> ALTER SYSTEM SWITCH LOGFILE;

系统已更改。

16:44:13 SQL> SELECT * FROM scott.test;

        ID NAME
---------- ----------
         1 WANG
         3 LI

6.3采取不完全恢复,备份还原当前数据库所有数据文件

10:47:03 SQL> shutdown abort
ORACLE 例程已经关闭。

(在shutdown abort之后,在操作系统上面将之前备份的文件orcl02覆盖到orcl文件,再进行startup mount以及recover)

在这里插入图片描述

10:47:14 SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area  293601280 bytes
Fixed Size                  1248600 bytes
Variable Size             117441192 bytes
Database Buffers          167772160 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
10:48:22 SQL> recover database until time '2021-02-26 10:46:47';
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01195: 文件 1 的联机备份需要更多的恢复来保持一致性
ORA-01110: 数据文件 1: 'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF'


10:48:43 SQL> recover database until time '2021-04-26 10:46:47';
完成介质恢复。

7.查询orcl数据库的所有控制文件。假定控制文件全部丢失且无备份,其它文件完好。试恢复数据库。(请给出故障模拟和恢复的全过程)

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

8.查询orcl数据库的联机日志文件。假定状态为inactive的日志文件(任选一个)损坏,其它文件完好。试恢复数据库。(请给出故障模拟和恢复的全过程)

SQL> select group#,sequence#,status,first_change# from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE#
---------- ---------- ---------------- -------------
         1         11 INACTIVE                783074
         2         12 CURRENT                 805673
         3         10 INACTIVE                763011

SQL> col member for a50;
SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- --------------------------------------------------
IS_
---
         3 STALE   ONLINE  C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
NO

         2         ONLINE  C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
NO

         1 STALE   ONLINE  C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG
NO


SQL> select group#,member from v$logfile where group#=1;

    GROUP# MEMBER
---------- --------------------------------------------------
         1 C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG

SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  293601280 bytes
Fixed Size                  1248600 bytes
Variable Size             100663976 bytes
Database Buffers          184549376 bytes
Redo Buffers                7139328 bytes
数据库装载完毕。
数据库已经打开。
SQL> select group#,sequence#,status from v$log where group#=1;

    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         1         11 INACTIVE

SQL> alter database clear logfile group 1;

数据库已更改。

SQL> select group#,sequence#,status,first_change# from v$log;

    GROUP#  SEQUENCE# STATUS           FIRST_CHANGE#
---------- ---------- ---------------- -------------
         1          0 UNUSED                  783074
         2         12 CURRENT                 805673
         3         10 INACTIVE                763011

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值