简答题1. 接触过哪些OS系统?常用命令有哪些?
首先,对于Oracle数据库而言,常用的系统是Linux、AIX、Windows、HP-UX等,对于MySQL常用的系统是Linux系统,对于SQL Server常用的系统是Windows系统。
IT人员对Windows系统都很熟悉,需要重点学习的是Windows下的服务和注册表,希望读者可以查找相关资料对Windows下的服务和注册表进行深入的学习。需要注意的是,WIN键+R键可以打开运行框,输入services.msc即可打开Windows的服务。
对于Linux和AIX系统,需要了解几个常用的命令,见表。
Linux下top截图如下:
AIX下输入topas可以看到:
3. 文件b.txt,每行以“:”符分成5列,如“1:apple:3:2012-10-25:very good”,如何得到所有行第三列的总和值?
4. 取文件c.txt的第60~480行记录,忽略大小写,统计出重复次数最多的那条记录及重复次数。
5. 如何生成日期格式的文件?
在Linux/Unix上,使用“'date+%y%m%d'或$(date+%y%m%d)”,如:
或者:
在WindoWS上,使用%date:~4,10%,其中4是开始字符,10是提取长度,表示从date生成的日期中,提取从4开始长度是10的串。如果想得到更精确的时间,那么在Windows上面还可以使用time。
6. 如何测试磁盘性能?
用类似如下的方法测试写能力:
期间系统I/O使用可以用iostat:
7. 什么样的并发调度是正确的调度?
可串行化(Serializable)的调度是正确的调度。可串行化的调度的定义:多个事务的并发执行是正确的,当且仅当其结果与按某一次序串行执行它们时的结果相同,称这种调度策略为可串行化的调度。
8. 试述数据、数据库、数据库系统、数据库管理系统的概念。
(1)数据(Data):描述事物的符号记录称为数据。数据的种类有数字、文字、图形、图像、声音等。数据与其语义是不可分的。在现代计算机系统中数据的概念是广义的。早期的计算机系统主要用于科学计算,处理的数据是整数、实数、浮点数等传统数学中的数据。现代计算机能存储和处理的对象十分广泛,表示这些对象的数据也越来越复杂。数据与其语义是不可分的。例如,100这个数字可以表示一件物品的价格是100元,也可以表示一段路程是100公里,还可以表示一个人的体重为100斤。
(2)数据库(DataBase,简称DB):数据库是长期储存在计算机内的、有组织的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
(3)数据库系统(DataBase System,简称DBS):数据库系统是指在计算机系统中引入数据库后的系统构成。数据库系统和数据库是两个概念。数据库系统是一个系统,数据库是数据库系统的一个组成部分。但是在日常工作中人们常常把数据库系统简称为数据库。
(4)数据库管理系统(DataBase Management System,简称DBMS):数据库管理系统是位于用户与操作系统之间的一层数据管理软件,用于科学地组织和存储数据、高效地获取和维护数据。DBMS是一个大型的复杂的软件系统,是计算机中的基础软件。DBMS的主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。目前,专门研制DBMS的厂商及其研制的DBMS产品很多。著名的有美国IBM公司的DB2关系数据库管理系统和IMS层次数据库管理系统、美国Oracle公司的Oracle关系数据库管理系统、美国微软公司的SQL Server等。
9. 什么是数据库镜像?它有什么用途?
数据库镜像即根据DBA的要求,自动把整个数据库或者其中的部分关键数据复制到另一个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据复制过去,即DBMS自动保证镜像数据与主数据的一致性。
数据库镜像的用途有:①用于数据库恢复。当出现介质故障时,可由镜像磁盘继续提供使用,同时DBMS自动利用镜像磁盘数据进行数据库的恢复,不需要关闭系统和重装数据库副本。②提高数据库的可用性。在没有出现故障时,当一个用户对某个数据加排它锁进行修改时,其他用户可以读镜像数据库上的数据,而不必等待该用户释放锁。
10. 什么是日志文件?为什么要设立日志文件?
日志文件是用来记录事务对数据库的更新操作的文件。设立日志文件的目的是:进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。
11. 在登记日志文件时为什么必须先写日志文件,后写数据库?
把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。如果先写了数据库修改,而在运行记录中没有登记这个修改,那么以后就无法恢复这个修改了。如果先写日志,但没有修改数据库,那么在恢复时只不过是多执行一次Undo操作,并不会影响数据库的正确性。所以一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。
12. 数据库运行中可能产生的故障有哪几类?哪些故障影响事务的正常执行?哪些故障破坏数据库数据?
数据库系统中可能发生各种各样的故障,大致可以分为以下几类:①事务内部的故障;②系统故障;③介质故障;④计算机病毒。事务故障、系统故障和介质故障影响事务的正常执行;介质故障和计算机病毒破坏数据库数据。
13. PL/SQL中的%ROWTYPE和%TYPE的区别是什么?
%TYPE是定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同。
关于%ROWTYPE,需要了解以下内容:
1)%ROWTYPE返回的是一个记录类型,其数据类型和数据库表的数据结构一致。
2)声明的变量对应于数据库表或视图中列的集合。
3)在%ROWTYPE之前加上数据库表名。
4)记录内字段名和数据类型与参照表或视图中的列相同。
具体而言,%ROWTYPE有如下优点:
1)可以不必知道数据库中列的数量和类型。
2)在运行期间,数据库中列的数量和类型可能发生变化,但是却不用修改代码。
3)在SELECT语句中使用该属性可以有效地检索表中的行。
14. Oraele有哪些预定义角色?
在表中列出的角色是在创建数据库过程中执行某部分标准脚本时自动为Oracle数据库定义的。可以对这些预定义角色授予和撤销权限和角色,授权方法和对自定义的角色的授权操作相同。
如果想查询角色所拥有的权限,那么可以通过视图DBA_SYS_PRIVS来查询。如下例,查询的是RESOURCE角色拥有的权限:
15. 如何定义序列?其作用是什么?
在很多数据库系统中,都存在一个自动增长的列,如果想要在Oracle中实现自动增长的功能,那么只能依靠序列完成。序列通常具有如下的特性:①自动提供唯一的数值。②共享对象。③主要用于提供主键值。④代替应用代码。⑤将序列值装入内存可以提高访问效率。
序列的创建语法如下:
关于序列需要注意以下两点内容:
1)对于设置了CYCLE属性的SEQUENCE来说,当SEQUENCE的值达到最大值后会从1开始循环。
2)创建序列后,不能使用CURRVAL直接查询当前值,必须使用NEXTVAL先取值才能使用,否则报ORA-08002:sequence MY_SEQ.CURRVAL is not yet defined in this session,且第一次执行NEXTVAL后当前值并不增加。
可以通过查询数据字典视图USER_SEQUENCES获取序列的定义信息,NEXTVAL返回序列中下一个有效的值,任何用户都可以引用CURRVAL中存放的序列的当前值。当序列值不符合实际需求时,可以执行ALTER SEQUENCE命令修改序列,需要注意的是,启动序列号不可以修改(START WITHN)。
修改序列的语法和序列的创建语法一样,只是将CREATE修改为ALTER即可。