实验八

(1)关闭BOOKSALES数据库,进行一次完全冷备份。

  1. 启动SQL plus,以SYSDBA身份登录数据库

  2. 查询当前数据库所有的数据文件,控制文件,联机重做日志文件的位置

SELECT file_name FROM dba_data_files;
SELECT member FROM v$logfile;
SELECT value FROM v$parameter WHERE name='control_files';
  1. 关闭数据库
SHUTDOWN IMMEDIATE
  1. 复制文件(oradata和flash_recovery_area)
  2. 重启数据库
STARTUP

如果重启失败

sqlplus /nolog
conn /as sysdba;
startup

(2)启动数据库后,在数据库中创建一个名为cold表,并插入数据,以改变数据库的状态。

以sysdba登录数据库

conn sys@lab/123456 as sysdba
CREATE TABLE cold(
id NUMBER PRIMARY KEY,
name VARCHAR2(25)
);
INSERT INTO cold VALUES(1,'tt');
commit;

(3)利用数据库冷备份恢复BOOKSALES数据库到备份时刻的状态,并查看恢复后是否存在cold表。

  1. 关闭数据库
SHUTDOWN IMMEDIATE
  1. 复制文件(oradata和flash_recovery_area)

  2. 启动数据库

    如果重启失败

conn /as sysdba;
startup

(4)将BOOKSALES数据库设置为归档模式。**

shutdown immediate
startup mount
alter database flashback off
alter database archivelog;
alter database open;
archive log list

如果重启失败

sqlplus /nolog
conn /as sysdba;
startup mount

(5)对BOOKSALES数据库进行一次热备份。

  1. 查询当前数据库有哪些表空间,以及每个表空间有哪些数据文件
col TABLESPACE_NAME format a20
col FILE_NAME format a50
SELECT tablespace_name,file_name FROM dba_data_files ORDER BY tablespace_name;
  1. 分别对每个表空间中的数据文件进行备份,其方法为:

    • 将需要备份的表空间(USER)设置为备份状态
    ALTER TABLESPACE USERS BEGIN BACKUP; 
    
    • 将表空间中所有的数据文件复制到备份磁盘
    HOST COPY D:\APP\DELL\ORADATA\LAB\USERS01.DBF D:\app\labCopy\hotCopy\USERS01.DBF
    
    • 结束表空间的备份状态
    ALTER TABLESPACE USERS END BACKUP;
    
    ALTER TABLESPACE EXAMPLE BEGIN BACKUP; 
    HOST COPY D:\APP\DELL\ORADATA\LAB\EXAMPLE01.DBF D:\app\labCopy\hotCopy\EXAMPLE01.DBF
    ALTER TABLESPACE EXAMPLE END BACKUP;
    
    ALTER TABLESPACE SYSAUX BEGIN BACKUP; 
    HOST COPY D:\APP\DELL\ORADATA\LAB\SYSAUX01.DBF D:\app\labCopy\hotCopy\SYSAUX01.DBF
    ALTER TABLESPACE SYSAUX END BACKUP;
    
    ALTER TABLESPACE SYSTEM BEGIN BACKUP; 
    HOST COPY D:\APP\DELL\ORADATA\LAB\SYSTEM01.DBF D:\app\labCopy\hotCopy\SYSTEM01.DBF
    ALTER TABLESPACE SYSTEM END BACKUP;
    
    ALTER TABLESPACE UNDOTBS1 BEGIN BACKUP; 
    HOST COPY D:\APP\DELL\ORADATA\LAB\UNDOTBS01.DBF D:\app\labCopy\hotCopy\UNDOTBS01.DBF
    ALTER TABLESPACE UNDOTBS1 END BACKUP;
    
  2. 备份控制文件

    1. 将控制文件备份为二进制文件
    ALTER DATABASE BACKUP CONTROLFILE TO 'D:\app\labCopy\hotCopy\CONTROL.BKP';
    
    1. 将控制文件备份为文本文件
    ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
    
  3. 备份其他物理文件

    1. 归档当前的联机重做日志组文件
    ALTER SYSTEM ARCHIVE LOG CURRENT;
    

    ​ 归档当前的联机重做日志组文件,也可以通过日志切换完成

    ALTER SYSTEM SWITCH LOGFILE;
    
    1. 备份归档日志文件,将所有的归档日志文件复制到备份磁盘中
    2. 备份初始化参数文件,将初始化参数文件复制到备份磁盘中

(6)在数据库中创建一个名为hot表,并插入数据,以改变数据库的状态。

CREATE TABLE hot(
id NUMBER PRIMARY KEY,
name VARCHAR2(25)
)
TABLESPACE USERS;
INSERT INTO hot VALUES(1,'tt');
INSERT INTO hot VALUES(2,'yy');
commit;

对USERS表空间的数据文件进行热备份

ALTER TABLESPACE USERS BEGIN BACKUP;
HOST COPY D:\APP\DELL\ORADATA\LAB\USERS01.DBF D:\app\labCopy\hotCopy\USERS01.DBF
ALTER TABLESPACE USERS END BACKUP;

备份后再次插入数据

INSERT INTO hot VALUES(3,'hh');

进行数据文件的恢复

  1. 强行关闭数据库

    SHUTDOWN ABORT
    
  2. 恢复之前的数据文件

    HOST COPY D:\app\labCopy\hotCopy\USERS01.DBF D:\APP\DELL\ORADATA\LAB\USERS01.DBF
    在文件管理器中覆盖
    
  3. 将数据库启动到mount状态

    conn / as sysdba
    STARTUP MOUNT
    
  4. 执行表空间恢复命令

RECOVER TABLESPACE USERS
  1. 打开数据库
ALTER DATABASE OPEN;
  1. 查询hot表
SELECT * FROM hot;

(7)假设保存hot表的数据文件损坏,利用热备份进行数据库恢复。

(8)数据库恢复后,验证hot表的状态及其数据情况。

(9)利用数据库的热备份,分别进行基于时间、基于SCN和基于CANCEL的不完全恢复。

(18)利用EXPDP工具导出BOOKSALES数据库的整个数据库。

(19)利用EXPDP工具导出BOOKSALES数据库的USERS表空间。

(20)利用EXPDP工具导出BOOKSALES数据库publisher表和books表。

(21)利用EXPDP工具导出BOOKSALES数据库中bs模式下的所有数据库对象及数据。

(22)删除BOOKSALES数据库中的orderitem表和order表,使用转储文件,利用IMPDP工具进行恢复。

(23)删除BOOKSALES数据库中的USERS表空间,使用转储文件,利用IMPDP工具进行恢复。

检查步骤

P244不完全恢复的示例

创建human用户

create user human identified by human 
default tablespace users
temporary tablespace temp 
quota 10m on users ;
CREATE TABLE human.test(ID NUMBER PRIMARY KEY,NAME CHAR(10));
INSERT INTO human.test VALUES(1,'wang');
COMMIT;
ALTER SYSTEM SWITCH LOGFILE;
INSERT INTO human.test VALUES(2,'zhang');
COMMIT;
ALTER SYSTEM SWITCH LOGFILE;
INSERT INTO human.test VALUES(3,'Li');
COMMIT;
ALTER SYSTEM SWITCH LOGFILE;
DELETE FROM human.test WHERE id=2;
COMMIT;
ALTER SYSTEM SWITCH LOGFILE;
SELECT * FROM human.test;
ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
SELECT RECID,STAMP,SEQUENCE#,FIRST_CHANGE#,FIRST_TIME,NEXT_CHANGE# FROM V$LOG_HISTORY;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0czNOxV0-1590573742033)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\image-20200526210426278.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dmICHSV2-1590573742036)(C:\Users\dell\AppData\Roaming\Typora\typora-user-images\image-20200526210435904.png)]

找到删除操作对应的事务

SHUTDOWN ABORT

用所有的数据文件备份还原当前数据库的所有数据文件,复制所有的DBF文件

STARTUP MOUNT

恢复

RECOVER DATABASE UNTIL TIME '2020-05-27 12:59:39'
ALTER DATABASE OPEN RESETLOGS;
SELECT * FROM human.test;

导出bs下的所有数据库对象及数据,并导入到bscopy模式下

给human初始化数据

CREATE TABLE human.test2(ID NUMBER PRIMARY KEY,NAME CHAR(10));
INSERT INTO human.test VALUES(11,'wang1');
INSERT INTO human.test VALUES(12,'wang2');
INSERT INTO human.test VALUES(13,'wang3');
CREATE TABLE human.test3(ID NUMBER PRIMARY KEY,NAME CHAR(10));
INSERT INTO human.test VALUES(21,'li');
INSERT INTO human.test VALUES(22,'li2');
INSERT INTO human.test VALUES(23,'li3');
COMMIT;

创建DIRECTORY对象

CREATE OR REPLACE DIRECTORY dumpdir AS 'D:\app\dell\BACKUP';

将对象的READ,WRITE权限授予给用户

GRANT READ,WRITE ON DIRECTORY dumpdir TO human;
GRANT EXP_FULL_DATABASE,IMP_FULL_DATABASE TO human;

导出bs下的所有数据库对象及数据

expdp system/123456 DIRECTORY=dumpdir DUMPFILE=human.dmp SCHEMAS=human
create user bscopy identified by bscopy 
default tablespace users
temporary tablespace temp 
quota 10m on users ;
impdp system/123456 DIRECTORY=dumpdir DUMPFILE=human.dmp REMAP_SCHEMA=human:bscopy

EXP_FULL_DATABASE,IMP_FULL_DATABASE TO human;


导出bs下的所有数据库对象及数据

```sql
expdp system/123456 DIRECTORY=dumpdir DUMPFILE=human.dmp SCHEMAS=human
create user bscopy identified by bscopy 
default tablespace users
temporary tablespace temp 
quota 10m on users ;
impdp system/123456 DIRECTORY=dumpdir DUMPFILE=human.dmp REMAP_SCHEMA=human:bscopy

你可能感兴趣的:(数据库)