ORACLE实验报告完结版
- 格式:pdf
- 大小:3.83 MB
- 文档页数:50
实验报告(三)院系:信息学院课程名称:日期:
班级姓名
专业信息管理与信息系统学号实验室
实验名称Oracle的存储管理与分析(1)成绩评定
教师签名
实验目的索引
实验内容一、请写三个表明oracle读取数据所用的三种方式的SQL语句,并列出它们的执行
计划
二、以emp为原型,创建一个test表,在test的empno列上创建索引
三、分析索引,通过index_stats查看的索引高度,结构等信息
四、往test表中删除,插入,更新3-5条记录,再分析索引,查看三所列的索引结
构的信息
五、往test表中插入600条记录,查看索引结构
六、删除500条记录,查看索引结构
七、对索引进行合并,查看索引变化
八、重构索引,查看索引变化
一、请写三个表明oracle读取数据所用的三种方式的SQL语句,并列出它们的执行计划
1.全表扫描(fulltablescan--fts)
并行查询可能会使得我们的路径选择采用全表扫描
2.通过行ID(ROWID)
向表中插入对象时隐含会创建改行ROWID,它是数据行所存储的数据块地址,这样可以以
最快的速度找到该行数据,是oracle中读取单行数据最快的方法。
3.使用索引
(1)使用索引找到相应ROWID
(2)通过找到的ROWID从表中读取相应的数据
二、以emp为原型,创建一个test表,在test的empno列上创建索引
三、分析索引,通过index_stats查看的索引高度,结构等信息
四、往test表中删除,插入,更新3-5条记录,再分析索引,查看三所列的索引结构的信息
五、往test表中插入600条记录,查看索引结构
这样依次插入到表test中600条记录,再查看索引结构有如下变化:
六、删除500条记录,查看索引结构;
按照这样删除的方法把插入的600记录删除500条后在查看索引结构:七、对索引进行合并,查看索引变化;
八、重构索引,查看索引变化;
实验报告(三)院系:信息学院课程名称:日期:
班级姓名专业信息管理与信息系统学号实验室
实验名称oracle存储管理与优化(2)成绩评定
教师签名
实验目的日志管理
实验内容1查看日志组和日志文件的相关信息(v$log,v$logfile)了解日志组状态真正涵义;
2切换日志组,跟踪日志切换的时间频率;
3往数据里增加两个日志组,再删除其中的一个,结合日志组的状态,分析哪些类
型的日志组不能删除
4.往日志组里增加日志成员,再删除添加的日志成员,分析哪些类型的日志文件不
能删除;
5日志文件的恢复:1.nactive日志损坏清洗日志
2.active日志损坏,只要数据库是一致性关闭,与1的恢复一样
3.current日志损坏不完全恢复
1查看日志组和日志文件的相关信息(v$log,v$logfile)了解日志组状态真正涵义;
v$log记录了当前数据库的日志组号、日志序列号、每个日志文件的大小、以字节为单位、
每个日志组的成员数量,以及日志组的当前状态。
v$logfile记录了当前日志的日志组号、该日志组的状态、类型和日志成员信息。
2切换日志组,跟踪日志切换的时间频率
3往数据里增加两个日志组,再删除其中的一个,结合日志组的状态,分析哪些类型的日志
组不能删除
1>日志组的状态有四种:active、inactive、unused、current;
2>可以删除的日志组有:unused和inactive;
3>不能删除的有:active和current。
4.往日志组里增加日志成员,再删除添加的日志成员,分析哪些类型的日志文件不能删除;
1>当日志组中只有一个成员的时候,不能删除;
2>当日志组正在使用,在日志切换前不能删除该组中的成员;
3>数据库为归档模式,并且要删除的日志成员所属的日志组没有被归档,改组中的日志成
员不能被删除。
5日志文件的恢复:1.nactive日志损坏清洗日志
日志损坏之前的v$log:
日志损坏之后,清洗inactive日志组:(日志组1被误删除,与本题无关)
2.active日志损坏,只要数据库是一致性关闭,与1的恢复一样
3.current日志损坏不完全恢复
实验报告(三)院系:信息学院课程名称:日期:
班级姓名
专业信息管理与信息系统学号实验室
实验名称oracle存储管理与优化(3)成绩评定
教师签名
实验目的归档日志管理
实验内容1.查看数据库的存档状态
2.将数据库切换到归档状态(写出步骤)
3.修改存档的位置,给数据库设两个存档路径
4.修改归档日志文件的格式
5.请利用日志挖掘将已经删除且提交的数据恢复回来
1.查看数据库的存档状态
2.将数据库切换到归档状态(写出步骤)
SYS@beijing>shutimmediate(必须一致停库)
SYS@beijing>startupmount
SYS@beijing>alterdatabasearchivelog;
《变为非归档alterdatabasenoarchivelog》
SYS@beijing>alterdatabaseopen;
SYS@beijing>archiveloglist;
3.修改存档的位置,给数据库设两个存档路径
4.修改归档日志文件的格式
从10g开始,配置归档日志文件格式时,必须带有%s,%t和%r匹配符,配置了归档文件格式后,
必须重启数据库.
5.请利用日志挖掘将已经删除且提交的数据恢复回来
1.修改追加日志数据模式
1)利用scott用户下的emp表建立一个test表:createtabletestasselect*fromemp;
2)查询test表中的数据:select*fromtest;
3)删除4条记录:
SQL>deletefromtestwhereempno='7370';
SQL>deletefromtestwhereempno='7522';
SQL>deletefromtestwhereempno='7500';
SQL>deletefromtestwhereempno='7567';
4)提交:commit
5)将数据库改变成追加日志模式:alterdatabaseaddSUPPLEMENTALlogdata;
6)查看当前日志组:select*fromv$log;
7)查看当前日志组的日志文件的存储位置:select*fromv$logfile;
8)添加要挖掘的日志文件:exec
dbms_logmnr.add_logfile(‘D:\APP\GATEWAY\ORADATA\ORCL\REDO03.LOG’);
9)执行日志挖掘命令:exec
dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catal
og);
10)找到delete语句的redo条目:selectsql_redofromv$logmnr_contentswhere
lower(sql_redo)like'%update%'andseg_name=’TEST’;
11)找到delete语句的undo条目:selectsql_undofromv$logmnr_contentswhere
lower(sql_redo)like'%update%'andseg_name=’TEST’;
12)结束挖掘:EXECUTEDBMS_LOGMNR.END_LOGMNR;
13)利用11)中找到的undo语句执行一遍,就可以将删除的数据找回了(下面的是简化
的undo语句):
insertintoTESTvalues('7370','SMITH','CLERK','7902',TO_DATE('17-12
月-80','DD-MON-RR'),'800',NULL,'20');
insertintoTESTvalues('7522','WARD','SALESMAN','7698',TO_DATE('22-2
月-81','DD-MON-RR'),'1250','500','30');
insertintoTESTvalues
('7500','ALLEN','SALESMAN','7698',TO_DATE('20-2月-81',
'DD-MON-RR'),'1600','300','30');
insertintoTESTvalues('7567','JONES','MANAGER','7839',TO_DATE('02-4
月-81','DD-MON-RR'),'2975',NULL,'20');
实验报告(三)院系:信息学院课程名称:日期:
班级姓名
专业信息管理与信息系统学号实验室
实验名称oracle存储管理与优化(4)成绩评定
教师签名
实验目的永久表空间管理
实验内容1.查看当前数据库表空间的基本信息
2.往当前数据库中增加一个名为mytbs的表空间
3.修改表空间的状态(read,offline)
总结表空间状态发生变化之后,存储在这个表空间中的数据库对象的操作所受的
影响
4.将mytbs表空间的数据文件移动到另外一个地方,并改名,用两种方法实现
5.往mytbs表空间中增加一个数据文件,并修改这文件的属性为自动增长
6.删除mytbs表空间
7,将当前数据库某个用户表空间做只读处理之后,做控制文件的文本备份,然后用
该备份重建控制文件,通过实验将数据库的表空间调整为正常状态
1.查看当前数据库表空间的基本信息
2.往当前数据库中增加一个名为mytbs的表空间