oracle期末复习要点.docx
《oracle期末复习要点.docx》由会员分享,可在线阅读,更多相关《oracle期末复习要点.docx(13页珍藏版)》请在冰豆网上搜索。
oracle期末复习要点
作业
1.启动OEM服务和监听服务。
并写出数据库的三种启动状态以及各个状态之间转换的语句。
数据库的4种关闭方式(第一章)
答:
(1)启动监听:
lsnrctlstart 查看监听:
lsnrctlstatus停止监听:
lsnrctlstop
启动OracleServiceORCL服务:
netstartOracleServiceORCL
startupnomout;
alterdatabasemount;
shutdownimmeadiate;
startupmount;
alterdatabaseopen;
shutdownabort;
startupopen;
alterusersystemidentifidebyaa;
alterusersystemidentifidebyaaa;
(2)STARTUP[NOMOUNT|MOUNT|OPEN|FORSE][RESTRICT][PFILE='PFILE_NAME'];
nomount启动例程,但不装载数据库,即只完成启动步骤的第一步
Mount启动例程,装载数据库,但不打开数据库,即只完成启动步骤的第一步和第二步
Open启动例程,装载数据库,打开数据库,即完成全部的三个步骤
转换
.从NoMount模式切换到Mount模式(没有从mount切换到nomount的)命令:
ALTERDATABASEMOUNT;
当数据库状态为关闭时,切换到Open模式
命令:
ALTERDATABASEOPEN;
在Open模式下,还可以选择将数据库设置为非受限状态和受限状态。
命令:
在启动Open模式时,添加restrict关键字:
startuprestrict
设置或取消受限状态:
altersystemenable\disablerestrictedsession;
(3)1、shutdownnormal 正常方式关闭数据库。
2.shutdownimmediate 立即方式关闭数据库。
3、shutdownabort 强行关闭
4.shutdowntransaction事务关闭
2.请写出Oracle体系的逻辑(内部)结构及其作用、物理(外部)结构和作用。
(第二章)
答:
1.逻辑(内部)结构包括表空间(TableSpace)表(Table)约束条件(constraint)分区(partition)用户(User)索引(index)方案(schema)同义词{权限及角色(role)}{段(segment)盘区(extent)块(datablock)}
作用:
为了更好的管理物理磁盘上的数据文件,Oracle引入了逻辑存储的概念(描述了数据库的内部存储结构,即从技术概念上描述如何组织、管理数据)
2.物理(外部)结构包括数据文件(datafile数据文件用来存储数据库的数据)日志文件(重做日志文件记录对数据库的所有修改信息logsfiles{联机日志文件()归档日志文件()})控制文件(controlfiles用来描述数据库的物理结构,一个数据库只需要一个控制文件,控制文件的内容包括:
数据库名及数据库唯一标识
数据文件和日志文件标识)
参数文件(是来调用控制文件的)
作用:
3.请写出Oracle体系的内存、进程组成及其作用。
(第二章)
答:
(1)内存结构:
(系统全局区SGA)包括了数据块缓存区,字典缓存区,重做日志缓冲区,SQL共享池
作用:
内存是影响数据库性能的重要因素,Oracle8i使用静态内存管理,Oracle10g使用动态
内存管理。
所谓静态内存管理,就是在数据库系统中,无论是否有用户连接,也无论并发用
量大小,只要数据库服务在运行,就会分配固定大小的内存;动态内存管理允许在数据库服
务运行时对内存的大小进行修改,读取大数据块时使用大内存,小数据块时使用小内存,读
取标准内存块时使用标准内存设置
(2)进程结构包括 --DBWn(DatabaseWriter):
数据库写入
--PMON(ProcessMoniter):
进程监控
--LGWR(LogWriter):
日志写入
--SMON(SystemMoniter):
系统监控
--RECO(Recovery):
恢复
--CKPT(Chekpoint):
检查点
--ARCn(Archiver):
归档
--LCKn(Lock):
锁
--Dnnn(Dispatcher):
调度
作用:
是用来维持数据库的物理结构和存储结构之间的关系的
4.创建(修改、删除)表,完整性约束,增删改查。
答:
创建表:
CREATETABLES1
(SNOVARCHAR2(10)PRIMARYKEY,
SNAMEVARCHAR2(10),
DEPTVARCHAR2(20));
修改表:
ALTERTABLES1ADD(XFNUMBER
(2));
alterTABLES1
(SNOVARCHAR2(8)PRIMARYKEY,
SNAMEVARCHAR2(10),
DEPTVARCHAR2(20));
删除表:
dropTABLES1;
完整性约束:
createTABLES1
(SNOVARCHAR2(8)PRIMARYKEY,
SNAMEVARCHAR2(10),
DEPTVARCHAR2(20)
Foreignkey(cno)referencescourse(cno));
增:
insertintoS1values('2','aa2','xxx');
Commit;
删deletefromS1whereso=’2’;
改:
updateS1setdept=’YYY’whereSno=’2’;
查:
select*fromS1;
5.基于表创建(修改、删除)同义词。
(第三章)
答:
创建:
createpublicsynonymb_sforsystem.b;
修改:
alterpublicsynonymb_sforsystem.b;
删除:
dropsynonymsystem.b_s;
6.基于表创建(修改、删除)视图。
(第四章)
答:
创建:
createorreplaceviewnameasselectx,yfromtable1,table2wheretable1.sno=table2.snowithcheckoption;
修改:
createorreplaceviewnameasselectx,y,z,qfromtable1,table2wheretable1.sno=table2.snowithcheckoption;
删除:
dropviewname;
7.创建(修改、删除)索引,索引字段基于表的某字段。
(第五章)
答:
例如:
为表K的课程名(KCM)列建立索引
创建:
createindexnameonK(KCM);
例如:
重命名索引name
修改:
alterindexname1renameonname;
例如:
删除索引name
删除:
dropindexname;
8.依据表,创建(修改、删除)函数,并调用函数。
第六章)
答:
例如:
计算某门课程全体学生的成绩
创建函数:
createorreplacefunctionavge
(cnuminvarchar)
returnnumber
as
avger_cjnumber(3);
begin
selectavg(CJ)intoavger_cj
fromCJB
whereKCH=cnum
groupbyKCH;
return(avger_cj);
endavge;
函数的调用:
declare
abnumber;
anumber;
begin
a:
=&a;或者a:
=avge(10);
ab:
=avge(a);
dbms_output.put_line(a||'号课的平均分是:
'||ab);
end;
修改:
删除:
dropfunctionavge;
9.创建(修改、删除)触发器:
DML,替换,系统。
(第七章)
答:
(1)DML触发器
例如:
利用触发器在数据库XSCJ的XSB表执行插入操作后给出相应的提示
创建:
createorreplacetriggername
AtlerinsertonXSBforeachrow
Declare
Infochar(10);
Begin
Ifinsertingthen
Info:
=”插入”;
Endif;
DBMS_OUTPUT.PUT_LINE(info);
End;
修改:
删除:
droptriggername;
(2)替换触发器
例如:
在XSCJ数据库中建立视图stu_view包括学生学号、专业、课程号、成绩。
该视图依赖于XSB和CJB,是不更新视图,在视图上创建insteadof触发器,当向视图插入数据时,分别向XSB和成绩表插入数据
创建:
创建视图
Createviewstu_view
As
SelectXSB.xh,zy,kch,cj
FromXSB,CJB
WhereXSB.xh=CJB.xh
创建替换触发器
Createorreplacetriggerinsteat
Insteadofinsertonstu_viewforeachrow
Declaer
Xhchar(8);
Xbchar
(2);
Cssjdate;
Begin
Xm:
=’张三’;
Xb:
=’男’;
Cssj:
=’01-1月-90’;
InsertintoXSBvalue(:
NEW.xh,xm,xb,cssj,:
NEW.zy,);
InsertintoCJBvalues(:
NEW.xh,:
NEW.kch,:
NEW.cj);
End;
调用
Insertintostu_viewvalues(‘0999’,’计’,’01’,99);
修改:
删除:
droptriggerinsteat;
(3)系统触发器
例如:
创建一个用户事件触发器,记录用户system所删除的所有对象。
创建:
首先先创建一个表格
Createtabledrop_user(
Namechar(30)
Typechar(20)
Drop_datedate);
创建触发器
Createorreplacetriggername
Beforedroponsystem.schema
Begin
Insertintodrop_uservalues(name,type,sysdate);
End;
修改:
删除:
droptriggername;
10.通过保存点恢复表中误删除信息(第七章)
答:
例如向数据库XSCJ的XSB表添加一行数据,设置一个保存点,然后删除该行数据后,新插入的数据并没有被删除,因为事务中使用了ROLLBACKTO语句将操作回退到保存点,即删除前的状态
插入数据
insertintoXSBvalues(‘01’,’张’,’男’,TO_DATE(‘19990202’,‘YYYYMMDD’),’计算机’,8);
然后设置保存点
Savepointmy_sav;
查询:
select*fromXSBwhereXH=’01’;
删除:
deletefromXSBwhereXH=’01’;
然后回退到保存点my_sav
Rollbacktomy_sav;
Commmit;
11.口令认证方式创建(修改)用户(角色);给用户(角色)授予系统的角色;并授予基于方案下的对象权限;撤销系统权限;撤销用对象权限;删除用户(角色)。
(第九章)
答:
(1)例如,创建一个A的用户,口令为angel,默认表空间为USERS,临时表空间为TEMP,没有定额,使用默认概要文件
CreateuserAidentifiedbyangel
DefaulttablespaceUSERS
TemporarytablespaceTEMP
Accountunlock;
(2)给用户(角色)授予系统的角色:
Grantcreateanytable,createanyviewtoA;
(3)基于方案下的对象权限
Grantselect,insertonXSBtoA;
(4)撤销系统权限,撤销用对象权限
Revokecreateanytable,createanyviewfromA;
Revokeselect,insertonXSBfromA;
(5)删除用户(角色)
DropuserA;
12.编写SQL命令将数据库转换至archivelog(或非归档)模式。
(第十章)
答:
SQL>connsys/aaaassysdba
SQL>ARCHIVELOGLIST;数据库日志模式非存档模式
SQL>alterdatabasemount;数据库已装载
SQL>shutdownimmediate数据库已经关闭。
SQL>startupmount;ORACLE例程已经启动。
SQL>ALTERDATABASEARCHIVELOG;数据库已更改。
SQL>ARCHIVELOGSTART;已处理的语句
SQL>ALTERDATABASEOPEN;数据库已更改
SQL>ARCHIVELOGLIST;数据库日志模式存档模式
13.使用命令完成Rman工具恢复目录的配置。
(恢复目录的设置;数据库的注册(第十章)
答:
1生成数据文件
createtablespacermantsdatafile'e:
\app\rman\rmants.ora'size20M;
2生成用户和表空间
createuserrmanidentifiedbyrman
defaulttablespacermants
temporarytablespacetemp
quotaunlimitedonrmants;
3赋予权限
grantrecovery_catalog_ownertorman;
4在目录数据库中创建恢复目录
rmancatalogrman/rman
createcatalogtablespacermants;
rmantargetsys/sys@orcl
connectcatalogrman/rman@orcl
registerdatabase;
.建立恢复目录:
第一步,在目录数据库中创建恢复目录所用表空间:
SQL>createtablespacerman_tsdatafile'd:
\Oracle\oradata\rman\rman_ts.dbf'size20M;
第二步,在目录数据库中创建RMAN用户并授权:
SQL>createuserrmanidentifiedbyrmandefaulttablespacerman_tstemporarytablespacetempquotaunlimitedonrman_ts;
用户已创建。
SQL>grantrecovery_catalog_ownerconnect,resourcetorman;
授权成功。
第三步,在目录数据库中创建恢复目录
C:
\>rmancatalogrman/rman
恢复管理器:
版本8.1.6.0.0-Production
RMAN-06008:
连接到恢复目录数据库
RMAN-06428:
未安装恢复目录
RMAN>createcatalogtablespacerman_ts;
RMAN-06431:
恢复目录已创建
14.创建数据泵目录“dpump_dir”,使用数据泵导出Ora用户下的SC表,导出文件为SC.DMP;并模拟导入(忽略对象存在创建错误)。
(第十章)
答:
(1)创建数据泵目录“dpump_dir”
Createdirectorydpump_diras‘d:
\bar’;
必须给导入导出的用户赋予目录的读写权限
Grantread,writeondirectorydpump_dir<用户名>;
然后根据提示依次写下命令句如下:
EXPDPsystem123dumpfile=SC.DMPdirectory=dump_dirtables=SCJOB_NAME=SC_JOB
(2)
15.IMP/EXP导入/导出(第十章)P258
答:
(1)导出有三种模式:
交互模式、命令行模式、参数文件模式
以交互模式为例,输入语句如下:
EXP(回车)
System
123
默认值(回车)
XSB.DMP(输入导出文件名)
(2)u>T(选择输出类型)
其余选择默认
XSB(输入导出表名)
(2)导入有用户模式、表模式、全局模式(数据库模式)
IMP(回车)
System
123
XSB.DMP(输入导入文件名)
如果对象存在,选择YES
System(输入用户名,导入的数据会在此用户模式下创建)
XSB(输入要创建表的名称)
16.举例实现Oracle数据库的4种闪回。
(第十一章)
答:
查询闪回:
Settimeon;
查询,删除
然后查询闪回
select*fromaaaasoftimestampto_timestamp('2011-11-2909:
36:
48','YYYY-MM-DDHH24:
MI:
SS');
将闪回的数据插入到表中
Insertintoaaa
select*fromaaaasoftimestampto_timestamp('2011-11-2909:
36:
48','YYYY-MM-DDHH24:
MI:
SS');
表闪回:
Settimeon
查询
select*froma1;
删除
deletefroma1whereaa='a';
commit;
表闪回
Flashbacktablea1totimestampTO_TIMESTAMP('2011-11-2909:
36:
48','YYYY-MM-DDHH24:
MI:
SS');
使用表闪回恢复数据
Altertablea1enablerowmovement;
Flashbacktablea1totimestampTO_TIMESTAMP('2011-11-2909:
36:
48','YYYY-MM-DDHH24:
MI:
SS');
删除闪回:
select* fromtab;
droptablea1;
select* fromtab;
selectobject_name,original_name,type,droptimefromrecyclebin;
showrecyclebin;
FLASHBACKTABLEa1TOBEFOREDROP;
selectobject_name,original_name,type,droptimefromrecyclebin;
showrecyclebin;
select* fromtab;
管理回收站:
droptablea1;
showrecyclebin;
PURGERECYCLEBIN;
createtablea1asselect*fromaaa;
select* fromtab;
select* froma1;
DROPTABLEa1PURGE;
createtablea1asselect*fromaaa;
createtablea2asselect*fromaaa;
droptablea1;
droptablea2PURGE;
showrecyclebin;
purgetablea1;
showrecyclebin;
数据库闪回:
1)查看闪回信息
showparameterdb_recovery_file_dest;
showparameterflashback;
确认实例是否归档
selectdbid,name,log_modefromv$database;
shutdownimmediate
设置flashbackdatabase为启用
startupmount;
alterdatabaseflashbackon;
alterdatabaseopen;
1.查看当前数据库是否是归档模式和启用了闪回数据库功能
selectdbid,name,log_modefromv$database;
archiveloglist
showparameterdb_recovery_file_dest;
2.查看当前时间和旧的闪回号
showuser;
selectsysdatefromdual;
selectoldest_flashback_scn,oldest_flashback_timefromv$flashback_database_log;
settimeon
3当前用户下创建例表a2
createtablea2asselect*fromaa.aaa;
4确定时间点,模拟误操作,删除表a2
selectsysdatefromdual;
droptablea2;
desca2;
5以mount打开数据库并进行数据库闪回
shutdownimmediate
startupmountexclusive;
flashbackdatabasetotimestamp(to_date('2011-12-0609:
12:
02','YYYY-MM-DDHH24:
MI:
SS'));
alterdatabaseopenresetlogs;