大学oracle数据库总结(考试必备)

1.下列选项中,关于序列的描述哪一项不正确?(任何时1.完成以下PL/SQL块,功能是:使用游标显示销售报表。假设当前用户为SYSTEM,创建用户user,口令为abc,候都可以使用序列的伪列CURRVAL返回当前序列。)

2.oracle中,用来判断列值为空的操作符是(IS NULL)

3.下列选项中,那一部分不是oracle实例的组成部分?(控

制文件)

4.使用传统导出工具EXP导出SCOTT用户的所有对象时,

应该选择下列哪一项?(SCHEMAS)

5.在oracle中,一个用户拥有所有数据库对象统称:(模式)

6.在oracle中,使用HAVING子句亦可以进行条件查询,

以下选项说法正确的是(HAVING子句用于对已分组结果

的条件查询)

7.视图头部中的RETURN语句的作用是什么?(声明返回

值的数据类型)

8.有字符串数据“TEST”,分别存放到char(10)和varchar(10)

类型的字段中,其实际存储长度为:(10 4)

9.下列哪一个动作不会激发一个触发器?(查询数据)

10对于下面的函数,哪个语句将成功调用?

(Sum:=Calc_Sum(23,12))

11.DELETE FROM S WHERE 年龄>60的语句功能:S表中年

龄大于60岁的记录被加上删除标记

12.GROUP BY子句的作用是什么?(查询结果的分组条件)

13.查看下面的语句构建了哪一种索引?(复合索引)

14.下列哪个语句会终止事务(COMMIT)

1.(表空间)是oracle中可以使用的最大的逻辑存储结构,

(数据块)是oracle逻辑存储结构中最小的I/O单元。

2.PL/SQL程序块主要包括3个主要部分:声明部分、可执

行部分、(异常处理部分)。

3.查看操作数据表中所影响的行数,可通过游标的

(%ROWCOUNT)属性实现。

4.(角色)是具有名称的一组相关权限的组合。

5.oracle数据库系统的物理存储结构主要由3类文件组成,

分别为数据文件、(控制文件)、(重做日志文件)。

6.在SQL PLUS命令行下,查看EMP表的结构应使用

(describe)命令。

7.自定义异常必须使用(raise)语句引发。

8.在oracle10g版本以前,对撤销信息的管理采用(回滚段),

从oracle10g后采用(自动UNDO管理)方式管理撤销信

息。

9.在oracle数据库中的权限可以分为两类,即(系统权限)

和(对象权限)。(系统权限)是指在系统级控制数据库的

存取和使用的机制,(对象权限)是指在对象级控制数据

库的存取和使用的机制。

10.在oracle中创建公共同义词的SQL命令为(CREATE

PUBLIC SYNONYM synonym_name FOR object)。

如果目标销售额(tsales)大于实际销售额(asales),则显示消息“需提高销售额”。如果tsales等于asales,则显示消息“已达到销售额”,否则显示消息“销售业绩出色” DECLARE CURSOR sales_cur IS SELECT * FROM salesdetails; BEGIN __ FOR sales_rec IN sales_cur LOOP __ IF sales_rec.tsales > sales_rec.asales THEN DBMS_OUTPUT.PUT_LINE('产品:'||sales_rec.pid||' 需提高销售额'); ELSE IF __ sales_rec.tsales = sales_rec.asales __ THEN DBMS_OUTPUT.PUT_LINE('产品:'||sales_rec.pid||'已达到销售额'); ELSE DBMS_OUTPUT.PUT_LINE('产品:' ||sales_rec.pid||'销售业绩出色'); END IF; END IF; END LOOP; END; 2.完成以下PL/SQL块,功能是:接受职员编号并检索职员姓名。将职员姓名存储在变量empname中,如果代码引发VALUE_ERROR异常,则向用户显示错误消息。 DELCARE empname employee.ename%TYPE; eno employee.empno%TYPE; BEGIN eno:=’&employee_number’; __ SELECT ename INTO empname FROM employee WHERE empno=eno;_ DBMS_OUTPUT.PUT_LINE(‘职员姓名:’||empname); _ EXCEPTION_ WHEN VALUE_ERROR THEN DBMS_OUTPUT.PUT_LINE(‘要存储在变量中的值过大’) ; END; 表空间与数据文件的关系: 一个数据文件都必须隶属于某个表空间,但一个表空间可以由多个数据文件组合而成。创建新的表空间,需要创建新的数据文件。数据文件一旦加入到白哦空间,就不能从这个表空间中移走,也不能和其它表空间发生联系。 简述替代触发器的作用: 定义替代触发器后,用户对表的DML操作将不再被执行,而是执行触发器主体中的操作。替代触发器定义在视图上,是用来替换所有实际语句的触发器,对构成视图的各个表进行操作 简述调用过程时传递参数值的三种方式: IN:表示参数是输入给过程的; OUT:表示参数在过程中将被赋值,可以传给过程体的参数; IN OUT:表示该类型的参数既可以向过程体传值,也可以在过程体中赋值。 授予用户user连接数据库的权限CONNECT,以及对SCOTT模式下的emp表进行查询(SELECT)权限,并允许该用户向其他用户授权。 GRANT CREATE SESSION TO USER1; CONNECT USER1/abc; GRANT SELECT ON SCOTT .EMP TO user1 WITH ADMIN OPTION 创建大小为100MB的表空间MYTS,数据文件为:C:\oradata\orcl\MYTS01.DBF,允许自动扩展数据文件,增量为10MB,数据文件的最大值为300M。 CREATE TABLESPACE MYTS LOGGING DATAFILE ‘c:\oradata\orcl\MYTS01.DBF’ SIZE 100M REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 300M; 查询20部门的所有员工信息。 Select * from emp where d_no=20; 列出工资高于公司平均工资的所有雇员信息。 Select * from emp where e_sal>(select average(e_sal) from emp); 列出部门名称和这些部门的雇员信息,同时列出没有雇员的部门信息。 Select dept.d_name, emp.* from dept left join emp on dept.d_no=emp.d_no; 创建一个视图min_sal_view,通过该视图可以查询各种类别的工作的最终工资。 Create or replace view min_sal_view(部门,最低工资) As Select d_no, min(e_sal) from emp group by d_no; 创建一个序列对象seq_no,序列号从10000开始,最小值为10,序列间的间隔为2,不允许序列循环使用,预先分配5个序列号。 Create sequence seq_no Start with 1000 Mimvalue 10 Nocycle Cache 5; 创建一个存储函数dept_func,根据指定的部门编号d_no,返回该部门的名称d_name。 //存储函数 Create or replace function dept_func(DNO IN NUMBER) return VARCHAR2 AS out_name VARCHAR2(20); BEGIN Select e_name INTO out_name FROM EMP WHERE D_NO=DNO; END dep_func; //存储过程 Create or replace PROCEDURE dept_func (dno IN NUMBER, dname OUT VARCHAR2) AS BEGIN SELECT e_name INTO dname FROM EMP WHERE D_NO=DNO; Dbms_output.put_line(dname); END; 编写一个触发器del_dept_tri,当从部门表dept中删除某个部门的信号时,该触发器将从职工表emp中删除该部门的所有雇员记录。 Create or replace trigger del_dept_tri Before delete on dept for each row Begin Delete * from emp where d_no=:old.d_no; END;

 

第二篇:oracle学习资料

Oracle的体系太庞大了,对于初学者来说,难免会有些无从下手的感觉,什么都想学,结果什么都学不好,所以把学习经验共享一下,希望让刚刚入门的人对oracle有一个总体的认识,少走一些弯路。

一、定位

oracle分两大块,一块是开发,一块是管理。开发主要是写写存储过程、触发器什么的,还有就是用Oracle的Develop工具做form。有点类似于程序员,需要有较强的逻辑思维和创造能力,个人觉得会比较辛苦,是青春饭J;管理则需要对oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大,因为一个小的失误就会down掉整个数据库,相对前者来说,后者更看重经验。

因为数据库管理的责任重大,很少公司愿意请一个刚刚接触oracle的人去管理数据库。对于刚刚毕业的年轻人来说,可以先选择做开发,有一定经验后转型,去做数据库的管理。当然,这个还是要看人的实际情况而定。

二、学习方法

我的方法很简单,就是:看书、思考、写笔记、做实验、再思考、再写笔记

看完理论的东西,自己静下心来想想,多问自己几个为什么,然后把所学和所想的知识点做个笔记;在想不通或有疑问的时候,就做做实验,想想怎么会这样,同样的,把实验的结果记下来。思考和做实验是为了深入的了解这个知识点。而做笔记的过程,也是理清自己思路的过程。

学习的过程是使一个问题由模糊到清晰,再由清晰到模糊的过程。而每次的改变都代表着你又学到了一个新的知识点。

学习的过程也是从点到线,从线到网,从网到面的过程。当点变成线的时候,你会有总豁然开朗的感觉。当网到面的时候,你就是高手了

很多网友,特别是初学的人,一碰到问题就拿到论坛上来问,在问前,你有没有查过书,自己有没有研究过,有没有搜索一下论坛?这就叫思维惰性。由别人来回答你的问题,会让你在短时间内不费劲地弄懂这个知识点,然而通过自己的努力去研究它,不但会更深入的了解这个知识点,更重要的是在研究的过程会提高你解决问题和分析问题的能力。总的来说,没有钻研的学习态度,不管学什么东西,都不会成功的。

当然,初学的人很多时候是因为遇到问题时,无从下手,也不知道去哪里找资料,才会到论坛上提问题的。但我认为,在提问的时候,是不是可以问别人是如何分析这个问题?从哪里可以找到相关的资料?而不是这个问题的答案是什么?授人以鱼不如授人以渔。

下面我讲下我处理问题的过程

首先要知道oracle的官方网站: 这里有oracle的各种版本的数据库、应用

工具和权威的官方文档。其次,还要知道/这里是买了 oracle服务或是oracle的合作伙伴才可以进去的,里面有很多权威的解决方案和补丁。然后就是一些著名网站: , 。这里有很多经验之谈。

遇到问题了。如果是概念上的问题,第一时间可以找,这里会给你最详细的解释。如果在运行的过程中出了什么错误。可以去metalink看看。如果是想知道事务的处理的经验之谈。可以去asktom。当然。这里只是相对而言。

三、oracle的体系

oracle的体系很庞大,要学习它,首先要了解oracle的框架。在这里,简要的讲一下oracle的架构,让初学者对oracle有一个整体的认识。

1、物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成)

控制文件:包含维护和验证数据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个数据库至少需要一个控制文件

数据文件:存储数据的文件

重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件

参数文件:定义Oracle 例程的特性,例如它包含调整SGA 中一些内存结构大小的参数

归档文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。

密码文件:认证哪些用户有权限启动和关闭Oracle例程

2、逻辑结构(表空间、段、区、块)

表空间:是数据库中的基本逻辑结构,一系列数据文件的集合。

段:是对象在数据库中占用的空间

区:是为数据一次性预留的一个较大的存储空间

块:ORACLE最基本的存储单位,在建立数据库的时候指定

3、内存分配(SGA和PGA)

SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息, 它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果

实际内存不够再往虚拟内存中写。

PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA 正相反PGA 是只被一个进程使用的区域,PGA 在创建进程时分配在终止进程时回收

4、后台进程(数据写进程、日志写进程、系统监控、进程监控、检查点进程、归档进程、服务进程、用户进程)

数据写进程:负责将更改的数据从数据库缓冲区高速缓存写入数据文件

日志写进程:将重做日志缓冲区中的更改写入在线重做日志文件

系统监控:检查数据库的一致性如有必要还会在数据库打开时启动数据库的恢复

进程监控:负责在一个Oracle 进程失败时清理资源

检查点进程:负责在每当缓冲区高速缓存中的更改永久地记录在数据库中时,更新控制文件和数据文件中的数据库状态信息。

归档进程:在每次日志切换时把已满的日志组进行备份或归档

服务进程:用户进程服务。

用户进程:在客户端,负责将用户的SQL 语句传递给服务进程,并从服务器段拿回查询数据。

5、oracle例程:Oracle 例程由SGA 内存结构和用于管理数据库的后台进程组成。例程一次只能打开和使用一个数据库。

6、SCN(System Change Number):系统改变号,一个由系统内部维护的序列号。当系统需要更新的时候自动增加,他是系统中维持数据的一致性和顺序恢复的重要标志。

四、深入学习

管理:可以考OCP证书,对oracle先有一个系统的学习,然后看Oracle Concepts、oracle online document,对oracle的原理会有更深入的了解,同时可以开始进行一些专题的研究如:RMAN、RAS、STATSPACT、 DATAGUARD、TUNING、BACKUP&RECOVER等等。

开发:对于想做Oracle开发的,在了解完Oracle基本的体系结构之后,可以重点关注PL/SQL及Oracle的开发工具这一部分。 PL/SQL主要是包括怎么写SQL语句,怎么使用Oracle本身的函数,怎么写存储过程、存储函数、触发器等。 Oracle的开发工具主要就是Oracle自己的Developer Suite(Oracle Forms Developer and Reports Developer这些),学会如何熟练使用这些工具。

介绍几本oracle入门的好书

oracle官方文档:《concept》上面讲了oracle的体系和概念,很适合初学者看。

OCP的教学用书,也就是STUDY GUIDE(SG)。

Oracle8i 备份恢复手册

Oracle8高级管理与优化

Oracle8i PLSQL程序设计

Oracle8数据库管理员手册

以上书本都是机械工业出版社出版。

介绍几个网站

oracle的官方文档

/ oracle的技术支持网站。需要购买Oracle服务才能有一个帐号,才能登陆,有大量的Knowledge Base,大量问题解决经验。

oracle的官方网站,可以在这里down oracle的软件、官方文档和获得最新的消息

/ Oracle的杂志

/

.au/

/oracle_links.htm

学习Oracle是一个漫长艰辛的过程。如果没有兴趣,只是被迫学习,那么是很难学好的。学习到一定程度的时候,要想进一步提高,就不得不接触很多Oracle之外的东西,如Unix,如网络、存储等。因此,要真的决心学好Oracle,就一定要有兴趣。有了兴趣,就会一切变

得简单快乐起来。

简单总结一下,那就是:兴趣、学习、实践。

如何入门是许多初学者最头疼的事情。Oracle涉及的方面太多了:SQL、管理、优化、备份恢复??那么从哪开始学好呢?如果在大学期间学过数据库理论,或有一定的数据库基础自然很好;如果没有的话,真的是个大问题。我个人认为还是应该从SQL语句学起。比较好的教材是Oracle OCP认证的《SQL and PL/SQL》。学习SQL的时候,尽可能坚持使用Oracle自带的工具:SQLPLUS。

有了一定的SQL基础后,就要尽可能的了解Oracle的体系结构,这就涉及到了Oracle管理的内容了。我学习的时候,机械工业出版社的《Oracle9i DBA手册》这本书对我的帮助挺大。或许现在都出11g版本的了吧。Oracle公司的《Oracle Concepts》是非常棒的书,对了解Oracle体系结构很有好处。每个Oracle版本都有对应的版本,可以认真多读几次,每次都会有新的收获。

公司的产品现在几乎都采用Oracle了,我们做维护的时候,备份与恢复是不得不接触的内容。数据量少的,比如20、30多个G,还可以考虑用 exp/imp来备份与恢复,但数据量大了,这种方法就根本不适合了。于是学习Oracle备份与恢复技术也是必然的事情。大数据量情况下,Oracle 建议用RMAN来进行数据的备份与恢复。目前市场上有很多数据库备份恢复软件,其实好多也是后台调用RMAN。清华大学出版社出版的《Oracle 9i RMAN 备份与恢复技术》是一本非常不错的介绍RMAN的书。

有了以上的基础,可以说已经入门了,对遇到的一些初级Oracle问题将不再束手无策。然而我们的学习之路仍然还很漫长。我们的用户可能经常抱怨数据库运行缓慢。这时,如果有一定的优化知识,那就好办了。有时你会看到优化前需要运行几个小时的作业,优化后也许几秒钟就能完成!Oracle9i的性能诊断工具包statspack、Oracle10g/11g的自动工作符合存储库AWR都是调优的好帮手。机械工业出版社出版的《Oracle9i STATSPACK高性能调整》是学习statspack不错的书。

在数据库体系结构、编程优化方面,有一本书非常棒,这就是世界顶级的Oracle专家Thomas Kyte编写的《Oracle9i&10g编程艺术》(英文名为“Expert Oracle Database Architecture”)。Tom以前还写了一本叫做《Expert One-on-One Oracle》的书,也非常的经典。这两本书被很多Oracle学习者视为宝典,如果想在Oracle上深入学习的话,强烈建议认真研读。

掌握了以上内容,或者基本掌握以上内容,那么你在很多人的眼里也是Oracle的高手了,解决公司产品中的数据库问题应该不成问题。不过Oracle还有很多高级内容可以进一步学习。这里列举一些,仅供感兴趣的同仁参考。

1. 高级复制技术

2. Oracle Real Application Cluster (RAC)

3. Data Guard

4. Oracle Stream

5. 数据仓库

6. Proc、OCI编程

以上列举的这些高级内容,参考资料主要是Oracle公司的电子文档。实话实说,上面的列的数据仓库、Proc、OCI编程,我一点也不熟悉。

在学习Oracle过程中,充分利用网络资源可以起到事半功倍的作用。

总之,Oracle最大的问题是复杂,复杂是Oracle的最大魅力。让我们为了驾驭Oracle而共同努力吧!

相关推荐