oracle数据库复习资料

来源:互联网 发布:java搭建游戏服务器 编辑:程序博客网 时间:2024/06/09 22:14

一、Oracle10g简介

1Oracle10g一共有哪几个版本?

Oracle数据库10g标准版1,Oracle数据库10g标准版,Oracle数据库10g企业版,Oracle数据库10g个人版.

2Oracle10g中的g是什么含义?

Oracle 10gg就代表grid computing

3、理解Oracle数据库中的方案、数据块、区间、段、表、表空间之间的关系。

 Oracle 数据库的逻辑结构包括方案(schema)对象、数据块(data block)、区间(extent)、段(segment)和表空间(tablespace)等。数据库由若干个表空间组成,表空间由表组成,表由段组成,段由区间组成,区间则由数据块组成。

4、标准数据块大小由初始参数(DB_BLOCK_SIZE)指定。

5、理解数据库、表空间、数据文件之间的关系。

每个表空间由一个或多个数据文件组成。数据文件用于在物理上存储表空间中所有逻辑结构的数据。表空间中数据文件的大小之和就是表空间的存储容量(图中系统表空间存储容量为2MB,用户表空间的存储容量为4MB)。数据库中表空间的存储容量之和就是数据库的存储容量。

6、叙述Oracle数据库的物理结构。(每个Oracle数据库都由3类文件组成:数据文件、日志文件、控制文件,……

Oracle数据库有一个或多个物理的数据文件。数据库的数据文件包含全部数据库数据。逻辑(1)数据物理地存储在数据文件中。数据文件有下列特征:

一个数据文件仅与一个数据库联系。

当数据库容量越界时,数据文件能够自动扩展。

一个或多个数据文件组成一个表空间。

(2)每个数据库有两个或多个日志文件组,日志文件组用于收集数据库日志。

日志的主要功能是记录对数据所作的修改,所有对数据库作的全部修改记录在日志中。

(3)每个Oracle数据库有一个控制文件,记录数据库的物理结构。

控制文件包含数据库名、数据库数据文件和日志文件的名字、位置和数据库建立日期等信息。

7、谁能够启动数据库例程(实例),并打开数据库?(DBA

8、当一个数据库启动时,Oracle将分配一块内存空间,叫做系统全局区,其英文缩写是什么?(SGA

9Oracle管理数据库存储空间的最小数据存储单位是什么?(数据块)

10Oracle分配磁盘空间的最小单位是什么?(区间)

11、简述C/S结构和多层结构。

C/S客户/服务器结构 ,能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。

多层结构是对客户/服务器结构的一种扩展:1.客户端2.应用程序服务器3.数据库服务器

二、Oracle10g数据库管理工具

1、服务启动后,可以在Web浏览器中按什么方式访问EM10g?(http://<oracle数据库服务器名称>:<EM端口号>/em

2、不同数据库的EM端口号是否相同?(可以不同)

3EMiSQL*Plus页面的默认端口号分别是什么?配置监听程序时服务默认的TCP/IP端口号是什么?(115855601521

4、监听程序驻留在哪里?解释监听程序的作用。

Oracle Net Manager ,oracle 监听程序的作用1、监听程序就是在服务端等客户端连接的程序 2、简单地说,要和数据库服务器通讯,必须要和服务器连接, 建立连接时,服务器要知道有客服端连接进来了,而监听器就是干这个活的,对于专用连接来说, 它负责建立 一个与客户端对应的服务器进程来为其服务。

三、数据库管理、配置和维护

1Oracle数据库实例有哪四种状态?

打开(OPEN,关闭(CLOSE,已装载(MOUNT,已启动(NOMOUNT.

2、关闭数据库实例的操作分为哪四种情况?分别说明。

正常关闭 SHUTDOWN NORMAL,立即关闭SHUTDOWN IMMEDIATE,事务处理关闭SHUTDOWN TRANSACTIONAL,中止关闭  SHUTDOWN ABORT.

3SPFile是什么文件?其英文全称是什么?它始终存放在哪里?(保存初始化参数的服务器参数文件,Server Parameter File,存放在服务器端)

4SYSSYSTEMSCOTT用户的默认密码分别是什么?

SYS,默认密码为CHANGE_ON_INSTALLSYSTEM,默认密码为MANAGER

  SCOTT,默认密码为TIGER 

5、执行立即关闭的命令是什么? SHUTDOWN IMMEDIATE 

6、给出数据库正常启动所经历的几种状态 ?STARTUP NOMOUNT – 数据库实例启动;STARTUP MOUNT - 数据库装载;STARTUP OPEN – 数据库打开)

四、数据库存储管理

1、创建表空间的语句是什么?分别使用什么关键字可以创建大文件表空间、临时表空间、撤消表空间?CREATE TABLESPACE 

BIGFILE  TEMPORARY  UNDO

2、修改表空间的语句是什么?ALTER TABLESPACE 

3、控制文件的扩展名是什么?(CTL

五、数据库安全管理

1Oracle中密码(口令)长度必须介于多少个字符之间?(4~30

2、授予用户系统权限的命令是什么?授予用户数据对象上操作权限的命令是什么?

GRANT <系统权限> TO <用户名>

GRANT <数据对象权限>  ON <数据对象> TO <用户名>

3、如何建立方案?

在创建用户的时候,会同时生成一个与用户同名的方案,此方案归同名用户所有。 

4、简述用户和角色的关系。

oracle中建立用户需要授予对应的权限才能进行相应的操作。
角色是定义好的一个权限的集合。
如对用户授予dba角色,他会马上具备dba角色包含的所有权限,而不需要挨个去授权除系统自带的角色外,还可以定义自己的角色,比较方便对批量用户的权限管理。

5、一个方案对应多少个Oracle用户?一个 

6、创建用户时,需要赋予新用户什么权限才能使它联上数据库?(CONNECT

六、数据库对象管理

2、简述表与视图的区别与联系。视图:虚拟的表,它在物理上并不存在。视图可以把表或其他视图的数据按照一定的条件组合起来,所以也可以把它看成是一个存储的查询。视图并不包含数据,它只是从基表中读取数据。 

3、简述索引的工作原理。

索引:与表相关联的可选结构。创建索引可以提高读取数据的效率。索引的功能类似于书的目录一样,读者可以通过目录很快地在书中找到需要的内容,Oracle索引提供对表数据的访问路径,从而使用户能够快速定位指定的信息。 

七、PL/SQL语言基础

1PL/SQL中的块由哪三部分组成?

PL/SQL的块由变量声明、程序代码和异常处理代码3部分组成。

2Oracle中标识符的命名规则。

标识符必须以字符开头。

标识符中可以包含数字(09)、下划线(_)、“$”和“#”。

标识符最大长度为30

标识符不区分大小写,TypeNametypename是完全相同的。

不能使用PL/SQL保留字使用标识符名,例如不能声明变量名为DECLARE

3PL/SQL语言中赋值号和判等符号分别是什么?

判断相等的情况用‘=’,赋值情况用=’,

4、书写简单的PL/SQL程序。

演示IF语句的使用方法:

SET ServerOutput ON;

DECLARE

  Num INTEGER := -11; 

BEGIN

  IF Num < 0 THEN

    dbms_output.put_line('负数');

  ELSIF Num >0 THEN

    dbms_output.put_line('正数');

  ELSE

    dbms_output.put_line('0');

  END IF;

END;

使用CASE语句根据给定的整数输出对应的星期值:

SET ServerOutput ON;

DECLARE

  varDAY INTEGER := 3; 

  Result VARCHAR2(20);

BEGIN

  Result := CASE varDAY

    WHEN 1 THEN '星期一'

    WHEN 2 THEN '星期二'

    WHEN 3 THEN '星期三'

    WHEN 4 THEN '星期四'

    WHEN 5 THEN '星期五'

    WHEN 6 THEN '星期六'

    WHEN 7 THEN '星期七'

    ELSE '数据越界'

  END;

  dbms_output.put_line(Result);

END;

LOOPEXITEND语句的示例程序:

SET ServerOutput ON;

DECLARE

  v_Num INTEGER := 1; 

  v_Sum INTEGER := 0;

BEGIN

  LOOP

     v_Sum := v_Sum + v_Num;

     dbms_output.put_line(v_Num);

     IF v_Num = 3 THEN

         EXIT;

     END IF;

     dbms_output.put_line(' + ');

     v_Num := v_Num + 1;

  END LOOP;

  dbms_output.put_line(' = ');

  dbms_output.put_line(v_Sum);

END;

LOOPEXIT WHENEND语句来实现:

SET ServerOutput ON;

DECLARE

  v_Num INTEGER := 1; 

  v_Sum INTEGER := 0;

BEGIN

  LOOP

     v_Sum := v_Sum + v_Num;

     dbms_output.put_line(v_Num);

     EXIT WHEN v_Num = 3;

     dbms_output.put_line(' + '); 

     v_Num := v_Num + 1;

  END LOOP;

  dbms_output.put_line(' = ');

  dbms_output.put_line(v_Sum);

END;

WHILELOOPEND LOOP语句来实现:

SET ServerOutput ON;

DECLARE

  v_Num INTEGER := 1; 

  v_Sum INTEGER := 0;

BEGIN

  WHILE v_Num <= 3

  LOOP

    v_Sum := v_Sum + v_Num;

    dbms_output.put_line(v_Num);

    IF v_Num < 3 THEN

      dbms_output.put_line(' + ');

    END IF;

    v_Num := v_Num + 1;

  END LOOP;

  dbms_output.put_line(' = ');

  dbms_output.put_line(v_Sum);

END;

FORINLOOPEND LOOP语句来实现,代码如下:

SET ServerOutput ON;

DECLARE

  v_Num INTEGER; 

  v_Sum INTEGER := 0;

BEGIN

  FOR v_Num IN 1..3

  LOOP

    v_Sum := v_Sum + v_Num;

    dbms_output.put_line(v_Num);

    IF v_Num < 3 THEN

      dbms_output.put_line(' + ');

    END IF;

  END LOOP;

  dbms_output.put_line(' = ');

  dbms_output.put_line(v_Sum);

END;

下面是一段与数据库操作有关的异常处理代码:

SET SERVEROUTPUT ON;

DECLARE

    var_UserName VARCHAR(40);

BEGIN

    SELECT UserName INTO var_UserName

    FROM Users WHERE UserType = 1;

EXCEPTION

    WHEN NO_DATA_FOUND THEN

        DBMS_OUTPUT.PUT_LINE('没有数据');

    WHEN TOO_MANY_ROWS THEN

        DBMS_OUTPUT.PUT_LINE('返回多行匹配的数据');

    WHEN OTHERS THEN

        DBMS_OUTPUT.PUT_LINE('错误情况不明');

END;

八、游标、存储过程和触发器

1、使用显式游标需要哪四个步骤?

1)声明游标。(2)打开游标。(3)读取数据。(4)关闭游标

2Oracle游标有哪四个属性?

1%ISOPEN属性2%FOUND属性和%NOTFOUND属性(3%ROWCOUNT属性 

3、解释过程、函数和包的区别?

function procedurePL/SQL代码的集合,通常为了完成一个任务。procedure 不需要返回任何值而function将返回一个值,Package是为了完成一个商业功能的一组functionproceudre的集合

4、书写简单的存储过程和触发器。

创建示例过程ResetPwd,此过程的功能是将表Users中指定用户的密码重置为111111

CREATE OR REPLACE PROCEDURE UserMan.ResetPwd

( UserId IN NUMBER)

AS

BEGIN

   UPDATE  Users  SET  UserPwd = '111111' 

WHERE  UserId = UserId;

END;

创建一个触发器MyTrigger,它的作用是当表USERMAN.UserTypeTypeId列的值发生变化时,自动更新表USERMAN.Users中的UserType列的值,从而保证数据的完整性:

CREATE OR REPLACE TRIGGER USERMAN.MyTrigger

AFTER UPDATE ON USERMAN.UserType

FOR EACH ROW

BEGIN

  UPDATE USERMAN.Users SET UserType = :new.TypeId

  WHERE UserType = :old.TypeId;

END;

 

原创粉丝点击