(1)关闭BOOKSALES数据库,进行一次完全冷备份。
启动SQL plus,以SYSDBA身份登录数据库
查询当前数据库所有的数据文件,控制文件,联机重做日志文件的位置
SELECT file_name FROM dba_data_files;
SELECT member FROM v$logfile;
SELECT value FROM v$parameter WHERE name='control_files';
SHUTDOWN IMMEDIATE
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表。
SHUTDOWN IMMEDIATE
复制文件(oradata和flash_recovery_area)
启动数据库
如果重启失败
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数据库进行一次热备份。
col TABLESPACE_NAME format a20
col FILE_NAME format a50
SELECT tablespace_name,file_name FROM dba_data_files ORDER BY tablespace_name;
分别对每个表空间中的数据文件进行备份,其方法为:
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;
备份控制文件
ALTER DATABASE BACKUP CONTROLFILE TO 'D:\app\labCopy\hotCopy\CONTROL.BKP';
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
备份其他物理文件
ALTER SYSTEM ARCHIVE LOG CURRENT;
归档当前的联机重做日志组文件,也可以通过日志切换完成
ALTER SYSTEM SWITCH LOGFILE;
(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');
进行数据文件的恢复
强行关闭数据库
SHUTDOWN ABORT
恢复之前的数据文件
HOST COPY D:\app\labCopy\hotCopy\USERS01.DBF D:\APP\DELL\ORADATA\LAB\USERS01.DBF
在文件管理器中覆盖
将数据库启动到mount状态
conn / as sysdba
STARTUP MOUNT
执行表空间恢复命令
RECOVER TABLESPACE USERS
ALTER DATABASE OPEN;
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工具进行恢复。
创建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;
给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