数据库管理员试题.docx

上传人:b****6 文档编号:7840181 上传时间:2023-01-26 格式:DOCX 页数:25 大小:212.24KB
下载 相关 举报
数据库管理员试题.docx_第1页
第1页 / 共25页
数据库管理员试题.docx_第2页
第2页 / 共25页
数据库管理员试题.docx_第3页
第3页 / 共25页
数据库管理员试题.docx_第4页
第4页 / 共25页
数据库管理员试题.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

数据库管理员试题.docx

《数据库管理员试题.docx》由会员分享,可在线阅读,更多相关《数据库管理员试题.docx(25页珍藏版)》请在冰豆网上搜索。

数据库管理员试题.docx

数据库管理员试题

Oracle数据库管理员笔试题(基本知识)姓名:

以下是所有题目假设的环境:

OS:

RedHatLinuxAS4DataBase:

Oracle9.2.0.1如果你答案描述的环境与此环境有差别,请声明,同样有效。

任何题目都不限于形式,只要说出要点即可。

答案写在答题纸上,不要写在题目上

1.请你描述一下Oracle架构,包括SGA,相关进程,表空间,数据文件,PGA,参数文件,控制文件…等。

2.请你写出SGA中各部分或者总体对应参数文件中的什么变量?

PGA是什么作用,哪个参数控制它?

 3.请你说出Oracle数据库启动(当你startup;时)时按照先后顺序都访问了那些文件。

Oracle中数据库实例和数据库是独立实体,可以独立存在。

因此启动过程分成多个阶段:

首先在内存中构建实例,然后通过安装数据库启用到数据库的连接,最后打开数据库来使用它。

Oracle数据库有四种状态:

Shutdown:

所有数据库文件都关闭,不存在实例

Nomount:

实例在内存中创建(sga已经被创建,根据参数文件指定启动某些后台进程),但没有连接到任何数据库。

Moun:

实例定位并读取数据库控制文件。

Open:

所有的数据库文件都被定位和打开,终端用户可以使用数据库。

数据库的启动可分为三步:

①、nomount:

在这一阶段,只需要读取initsid.ora文件,启动数据库实例,创建后台进程。

在initsid.ora文件中,可以定位spfileorac.ora文件,这是参数文件,通过它可以初始化sga和启动后台进程。

并可以定位控制文件的位置。

在此阶段,可以执行的操作有:

重建控制文件,重建数据库。

②、mount:

在nomount阶段,可以通过读取控制文件来转换到mount阶段。

在数据库加载阶段(mount),所有的数据文件和联机日志文件的名称及位置都从控制文件中读取,但是并没有真正查找到这些文件,在此阶段可以执行的操作有:

数据库日志归档、数据库介质恢复、使数据文件联机或脱机、重定位数据文件和联机日志。

③、Open:

通过查找定位并打开数据文件和联机日志文件来切换到open阶段。

此时数据库可用,可以建立会话。

4.请你说出几种startup命令的选项和他们的意义。

5.如果想关闭数据库,有什么选项,各是什么意义?

6.我想知道数据库是否运行在归档模式,使用什么命令或者查什么视图?

怎样把数据库从非归档切换成归档模式?

写出命令或者步骤。

SQL>conn/assysdba

已连接。

SQL>archiveloglist;

数据库日志模式        存档模式

自动存档        启用

存档终点        D:

\oracle\ora92\RDBMS

最早的概要日志序列    0

下一个存档日志序列  10

当前日志序列        10

SQL>connbill/bill

已连接。

SQL>archiveloglist;

ORA-01031:

权限不足

SQL>

要使用sys用户

select*fromv$instance可以查看

7.如果开发组给你了一组创建表的脚本,他希望你把这些数据部署到已经建立好的一个空数据库中,写出你的规划步骤或者命令。

8.写出你知道的exp和imp命令的参数和它们的作用,尽量多写。

exp

将数据库内的各对象以二进制方式下载成dmp文件,方便数据迁移。

buffer:

下载数据缓冲区,以字节为单位,缺省依赖操作系统

consistent:

下载期间所涉及的数据保持readonly,缺省为n

direct:

使用直通方式,缺省为n

feeback:

显示处理记录条数,缺省为0,即不显示

file:

输出文件,缺省为expdat.dmp

filesize:

输出文件大小,缺省为操作系统最大值

indexes:

是否下载索引,缺省为n,这是指索引的定义而非数据,exp不下载索引数据

log:

log文件,缺省为无,在标准输出显示

owner:

指明下载的用户名

query:

选择记录的一个子集

rows:

是否下载表记录

tables:

输出的表名列表

导出整个实例

expdbuser/oraclefile=oradb.dmplog=oradb.logfull=yconsistent=ydirect=y

user应具有dba权限

导出某个用户所有对象

expdbuser/oraclefile=dbuser.dmplog=dbuser.logowner=dbuserbuffer=feedback=10000

导出一张或几张表

expdbuser/oraclefile=dbuser.dmplog=dbuser.logtables=table1,table2buffer=feedback=10000

导出某张表的部分数据

expdbuser/oraclefile=dbuser.dmplog=dbuser.logtables=table1buffer=feedback=10000query=\”wherecol1=\’…\’andcol2\<…\”

不可用于嵌套表

以多个固定大小文件方式导出某张表

expdbuser/oraclefile=1.dmp,2.dmp,3.dmp,…filesize=1000mtables=empbuffer=feedback=10000

这种做法通常用在:

表数据量较大,单个dump文件可能会超出文件系统的限制

直通路径方式

direct=y,取代buffer选项,query选项不可用

有利于提高下载速度

consistent选项

自export启动后,consistent=y冻结来自其它会话的对export操作的数据对象的更新,这样可以保证dump结果的一致性。

但这个过程不能太长,以免回滚段和联机日志消耗完

imp

将exp下载的dmp文件上载到数据库内。

buffer:

上载数据缓冲区,以字节为单位,缺省依赖操作系统

commit:

上载数据缓冲区中的记录上载后是否执行提交

feeback:

显示处理记录条数,缺省为0,即不显示

file:

输入文件,缺省为expdat.dmp

filesize:

输入文件大小,缺省为操作系统最大值

fromuser:

指明来源用户方

ignore:

是否忽略对象创建错误,缺省为n,在上载前对象已被建立往往是一个正常现象,所以此选项建议设为y

indexes:

是否上载索引,缺省为n,这是指索引的定义而非数据,如果上载时索引已建立,此选项即使为n也无效,imp自动更新索引数据

log:

log文件,缺省为无,在标准输出显示

rows:

是否上载表记录

tables:

输入的表名列表

touser:

指明目的用户方

导入整个实例

impdbuser/oraclefile=oradb.dmplog=oradb.logfull=ybuffer=commit=yignore=yfeedback=10000

导入某个用户所有对象

impdbuser/oraclefile=dbuser.dmplog=dbuser.logfromuser=dbusertouser=dbuser2buffer=commit=yignore=yfeedback=10000

导入一张或几张表

impdbuser2/oraclefile=user.dmplog=user.logtables=table1,table2fromuser=dbusertouser=dbuser2buffer=commit=yignore=yfeedback=10000

以多个固定大小文件方式导入某张表

impdbuser/oraclefile=\(1.dmp,2.dmp,3.dmp,…\)filesize=1000mtables=empfromuser=dbusertouser=dbuser2buffer=commit=yignore=yfeedback=10000

9.我想知道目前数据库的会话情况,还想知道数据库里有哪些表空间和数据文件,以及有哪些用户被创建在数据库中,还想知道这个用户已经创建了哪些对象。

应该查询哪些视图?

下面的SQL语句列出当前数据库建立的会话情况:

selectsid,serial#,username,program,machine,status

fromv$session;

输出的结果:

SIDSERIAL#USERNAMEPROGRAMMACHINESTATUS

-------------------------------------------------------

11ORACLE.EXEWORK3ACTIVE

21ORACLE.EXEWORK3ACTIVE

31ORACLE.EXEWORK3ACTIVE

41ORACLE.EXEWORK3ACTIVE

53ORACLE.EXEWORK3ACTIVE

61ORACLE.EXEWORK3ACTIVE

71ORACLE.EXEWORK3ACTIVE

827SYSSQLPLUS.EXEWORKGROUP\WORK3ACTIVE

115DBSNMPdbsnmp.exeWORKGROUP\WORK3INACTIVE

其中SID会话(session)的ID号;

SERIAL#会话的序列号,和SID一起用来唯一标识一个会话;

USERNAME建立该会话的用户名;

PROGRAM这个会话是用什么工具连接到数据库的;

STATUS当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;

假如DBA要手工断开某个会话,则执行:

altersystemkillsession'SID,SERIAL#';

注意:

在上面的示例中,SID为1到7(USERNAME列为空)的会话,它是Oracle数据库的后台进程,请大家不要对这些会话进行任何操作。

一、查看Oracle数据库中表空间信息的方法

1、查看Oracle数据库中表空间信息的工具方法:

使用oracleenterprisemanagerconsole工具,这是oracle的客户端工具,当安装oracle服务器或客户端时会自动安装此工具,在windows操作系统上完成oracle安装后,通过下面的方法登录该工具:

开始菜单——程序——Oracle-OraHome92——EnterpriseManagerConsole(单击)——oracleenterprisemanagerconsole登录——选择‘独立启动’单选框——‘确定’——‘oracleenterprisemanagerconsole,独立’——选择要登录的‘实例名’——弹出‘数据库连接信息’——输入’用户名/口令’(一般使用sys用户),’连接身份’选择选择SYSDBA——‘确定’,这时已经成功登录该工具,选择‘存储’——表空间,会看到如下的界面,该界面显示了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。

                                                    图1表空间大小及使用率

2、查看Oracle数据库中表空间信息的命令方法:

通过查询数据库系统中的数据字典表(datadictionarytables)获取表空间的相关信息,首先使用客户端工具连接到数据库,这些工具可以是SQLPLUS字符工具、TOAD、PL/SQL等,连接到数据库后执行如下的查询语句:

 

select

a.a1表空间名称,

c.c2类型,

c.c3区管理,

b.b2/1024/1024表空间大小M,

(b.b2-a.a2)/1024/1024已使用M,

substr((b.b2-a.a2)/b.b2*100,1,5)利用率

from

(select  tablespace_namea1,sum(nvl(bytes,0))a2fromdba_free_spacegroupbytablespace_name)a,

(selecttablespace_nameb1,sum(bytes)b2fromdba_data_filesgroupbytablespace_name)b,

(selecttablespace_namec1,contentsc2,extent_managementc3  fromdba_tablespaces)c

wherea.a1=b.b1andc.c1=b.b1;

该语句通过查询dba_free_space,dba_data_files,dba_tablespaces这三个数据字典表,得到了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。

dba_free_space表描述了表空间的空闲大小,dba_data_files表描述了数据库中的数据文件,dba_tablespaces表描述了数据库中的表空间。

上面语句中from子句后有三个select语句,每个select语句相当于一个视图,视图的名称分别为a、b、c,通过它们之间的关联关系,我们得到了表空间的相关信息。

语句执行结果如下:

上面描述中分别介绍了查看Oracle数据库中表空间信息的工具方法和命令方法。

 

二、查询Oracle数据库中数据文件信息的方法

1、查看Oracle数据库中数据文件信息的工具方法:

使用上面介绍过的方法登录oracleenterprisemanagerconsole工具,选择‘存储’——数据文件,会看到如下的界面,该界面显示了数据文件名称,表空间名称,以”兆”为单位的数据文件大小,已使用的数据文件大小及数据文件利用率。

2、查看Oracle数据库中数据文件信息的命令方法:

通过查询数据库系统中的数据字典表(datadictionarytables)获取数据文件的相关信息,首先使用客户端工具连接到数据库,这些工具可以是SQLPLUS字符工具、TOAD、PL/SQL等,连接到数据库后执行如下的查询语句

select

b.file_name物理文件名,

b.tablespace_name表空间,

b.bytes/1024/1024大小M,

(b.bytes-sum(nvl(a.bytes,0)))/1024/1024  已使用M,

substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5)  利用率

fromdba_free_spacea,dba_data_filesb

wherea.file_id=b.file_id

groupbyb.tablespace_name,b.file_name,b.bytes

orderbyb.tablespace_name

语句执行结果如下:

上明描述中分别介绍了查看Oracle数据库中数据文件信息的工具方法和命令方法。

 

三、查看临时表空间和数据库文件的方法

在oracle数据库中,临时表空间主要用于用户在使用orderby、groupby语句进行排序和汇总时所需的临时工作空间。

要查询数据库中临时表空间的名称,大小及数据文件,可以查询数据字典dba_tablespaces及dba_data_files。

命令如下:

select

a.talbespace_name表空间名称,

b.bytes  大小bytes,

b.file_name  数据文件名

fromdba_tablespacesa,dba_data_filesb

Wherea.talbespace_name=b.talbespace_nameanda.contents=’TEMPORARY’;

查询结果如下:

从oracle9i开始,可以创建Temporarytablespace类表空间,即“临时“表空间,这类表空间使用临时文件。

临时文件的信息被存储在数据字典V$tempfile中。

命令如下:

Selectfile#,status,namefromV$tempfile;

查询数据字典V$tempfile结果如下:

在上面介绍的方法中,建议掌握命令方法,因为你的环境可能没有图形工具,而SQLPLUS一般情况下都是可以使用的,有了命令脚本,很容易得到表空间和数据文件的相关信息。

另外,数据库管理员应该多整理命令脚本,在需要时直接执行脚本以提高工作效率。

在数据库管理员的日常工作中,应该经常查询表空间的利用率,按照数据库系统的具体情况估算表空间的增长量,当表空间的利用率超过90%时,要及时采取措施,如清理历史表、历史数据以释放空间,向表空间中添加新的数据文件,扩展现有数据文件大小等方法来降低表空间的利用率,避免表空间利用率接近100%时,将产生空间不够的错误。

10.如果我想在一个表T的字段CONTENT上建立全文索引,应该怎么做,写出sql?

开发组想查出T.CONTENT包含“互联网”这个词的记录,怎样写sql?

11.ORACLE都有什么索引?

分别适用于什么情况?

12.Oracle的分区表有什么类型?

分别适用于什么情况?

分区表是将大表的数据分成称为分区的许多小的子集,9i提供四种分区方法:

范围分区,列表分区,哈希分区和混合分区;

•范围分区是根椐分区键的不同取值范围来划分子集的,关键字RANGE,VALUESLESSTHAN;

•列表分区是根椐分区键的一些离散的取值来划分子集的,关键字LIST,VALUES;

•哈希分区是应用哈希算法将分区键对应到某个子集中去,关键字HASH,PARTITIONS;

•混合分区只能有两层,第一层是范围分区,第二层可以是列表分区或者哈希分区;

•范围分区和列表分区中,如果插入记录的分区键没有对应的容纳分区,会产生ORA-14400;

•update操作如果会使记录从一个分区迁移到另一个分区,且分区表的ROWMOVEMENT属性是DISABLE,会产ORA-14402;

•分区表上的索引有两大类:

普通的二叉树索引,分区索引,下面讲到的都是分区索引:

•按索引分区和表分区间的对应关系可以分为局部索引和全局索引;

Ø局部索引的索引分区和表分区间是一一对应的,全局索引则相反;

Ø局部索引的分区方法可以用上面提到四种的任何一种,全局索引的分区方法只有范围分区(而且最高的分区必须用MAXVALUE来定义);

ØORACLE自动维护局部索引的分区,当表分区被合并,分裂或删除时,关联的索引分区也会被合并,分裂或删除;对分区表执行管理操作时会使其上的全局索引失效;

Ø建在分区表的位图索引必须是局部分区索引;

ØORACLE推荐尽可能地使用局部索引;

•按索引栏位和分区键间的关系分为前缀索引和非前缀索引;

Ø前缀索引最前面的栏位是分区键栏位,非前缀索引相反;

•在这两种分类方法的四种组合中,只有三种有效(局部前缀索引,局部非前缀索引,全局前缀索引),不存在全局非前缀索引;

•分区表给CBO带来很多选项,如分区排除,并行分区连接等。

下面皆以学生表(tab_students)为例说明。

下面是一些关键字说明

INITIAL:

specifiesthesizeinbytesoftheobject'sfirstextent.Oracleallocatesspaceforthisextentwhenyoucreatetheobject.YoucanalsouseKorMtospecifythissizeinkilobytesormegabytes.Thedefaultvalueisthesizeof5datablocks.Theminimumvalueisthesizeof2datablocks.Themaximumvaluevariesdependingonyouroperatingsystem.Oracleroundsvaluesuptothenextmultipleofthedatablocksize.

NEXT:

specifiesthesizeinbytesofthenextextenttobeallocatedtotheobject.YoucanalsouseKorMtospecifythesizeinkilobytesormegabytes.Thedefaultvalueisthesizeof5datablocks.Theminimumvalueisthesizeof1datablock.Themaximumvaluevariesdependingonyouroperatingsystem.Oracleroundsvaluesuptothenextmultipleofthedatablocksize.

MINEXTENTS:

specifiesthetotalnumberofextentsallocatedwhenthesegmentiscreated.Thisparameterallowsyoutoallocatealargeamountofspacewhenyoucreateanobject,evenifthespaceavailableisnotcontiguous.Thedefaultandminimumvalueis1,meaningthatOracleonlyallocatestheinitialextent,exceptforrollbacksegmentsforwhichthedefaultandminimumvalueis2.Themaximumvaluevariesdependingonyouroperatingsystem.

IftheMINEXTENTSvalueisgreaterthan1,thenOraclecalculatesthesizeofsubsequentextentsbasedonthevaluesoftheINITIAL,NEXT,andPCTINCREASEparameters.

MAXEXTENTS:

specifiesthetotalnumberofextents,includingthefirst,thatOraclecanallocatefort

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1