大型数据库技术(Oracle)10
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验10Oracle数据库备份与恢复
姓名:计算机科学与技术学号:
专业:班级:
同组人:无实验日期:
【实验目的与要求】
⏹常见数据备份与恢复的方法
⏹学会Oracle备份方案的制定
【实验内容与步骤】
10.1.Oracle物理备份与恢复
.0.准备工作:
(1)查看数据库是否运行于归档模式下:
请给出查询的结果:
(2)干净的关闭数据库,做一个完全的冷备份。
提示:a.使用shutdown命令关闭数据库;
b.复制数据文件、日志文件和控制文件到安全地方
(3)把数据库改为归档模式
SQL> startup mount
SQL> alter database archivelog;
SQL> alter database open;
设置成自动归档
SQL> alter system set log_archive_start = true scope=spfile;
注意:本实验中的很多命令路径参数需根据自己的实现环境作出修改!!
1.实验1:
数据库系统数据文件和回退段遭破坏的情况下的恢复。此时数据库的状态是关闭的。
(1) 先启动数据库,用scott用户建立test表,并插入两条数据。
SQL> create table scott.test (id int,name varchar2(10));
表已创建。
SQL> insert into scott.test values(1001,’zhangfei’);
已创建1 行。
SQL> insert into scott.test values(1002,’guanyu’);
已创建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.实验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;
表空间已更改。
移除users01.dbf到一个指定文件夹(备份)
执行:SQL> alter tablespace users online;
请给执行结果:
此时出现错误,users表空间不能在线了。这时把备份的users01.DBF还原回去。
然后,执行:SQL> recover tablespace users;
(5)完成介质恢复。
SQL> alter tablespace users online;
表空间已更改。
SQL> select * from scott.test1;
请给执行结果:
3. 实验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,name varchar2(10))
tablespace testspace;
SQL> commit;
SQL> alter system switch logfile;
SQL> insert into scott.test3 values(1003,’songjian’);
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;
请给执行结果: