数据库管理员试题.docx
《数据库管理员试题.docx》由会员分享,可在线阅读,更多相关《数据库管理员试题.docx(26页珍藏版)》请在冰豆网上搜索。
数据库管理员试题
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:
在这一阶段,只需要读取文件,启动数据库实例,创建后台进程。
在文件中,可以定位文件,这是参数文件,通过它可以初始化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:
输出文件,缺省为
filesize:
输出文件大小,缺省为操作系统最大值
indexes:
是否下载索引,缺省为n,这是指索引的定义而非数据,exp不下载索引数据
log:
log文件,缺省为无,在标准输出显示
owner:
指明下载的用户名
query:
选择记录的一个子集
rows:
是否下载表记录
tables:
输出的表名列表
导出整个实例
expdbuser/oraclefile=log=full=yconsistent=ydirect=y
user应具有dba权限
导出某个用户所有对象
expdbuser/oraclefile=log=owner=dbuserbuffer=4096000feedback=10000
导出一张或几张表
expdbuser/oraclefile=log=tables=table1,table2buffer=4096000feedback=10000
导出某张表的部分数据
expdbuser/oraclefile=log=tables=table1buffer=4096000feedback=10000query=\”wherecol1=\’…\’andcol2\<…\”
不可用于嵌套表
以多个固定大小文件方式导出某张表
expdbuser/oraclefile=,,,…filesize=1000mtables=empbuffer=4096000feedback=10000
这种做法通常用在:
表数据量较大,单个dump文件可能会超出文件系统的限制
直通路径方式
direct=y,取代buffer选项,query选项不可用
有利于提高下载速度
consistent选项
自export启动后,consistent=y冻结来自其它会话的对export操作的数据对象的更新,这样可以保证dump结果的一致性。
但这个过程不能太长,以免回滚段和联机日志消耗完
imp
将exp下载的dmp文件上载到数据库内。
buffer:
上载数据缓冲区,以字节为单位,缺省依赖操作系统
commit:
上载数据缓冲区中的记录上载后是否执行提交
feeback:
显示处理记录条数,缺省为0,即不显示
file:
输入文件,缺省为
filesize:
输入文件大小,缺省为操作系统最大值
fromuser:
指明来源用户方
ignore:
是否忽略对象创建错误,缺省为n,在上载前对象已被建立往往是一个正常现象,所以此选项建议设为y
indexes:
是否上载索引,缺省为n,这是指索引的定义而非数据,如果上载时索引已建立,此选项即使为n也无效,imp自动更新索引数据
log:
log文件,缺省为无,在标准输出显示
rows:
是否上载表记录
tables:
输入的表名列表
touser:
指明目的用户方
导入整个实例
impdbuser/oraclefile=log=full=ybuffer=4096000commit=yignore=yfeedback=10000
导入某个用户所有对象
impdbuser/oraclefile=log=fromuser=dbusertouser=dbuser2buffer=2048000commit=yignore=yfeedback=10000
导入一张或几张表
impdbuser2/oraclefile=log=tables=table1,table2fromuser=dbusertouser=dbuser2buffer=2048000commit=yignore=yfeedback=10000
以多个固定大小文件方式导入某张表
impdbuser/oraclefile=\,,,…\)filesize=1000mtables=empfromuser=dbusertouser=dbuser2buffer=4096000commit=yignore=yfeedback=10000
9.我想知道目前数据库的会话情况,还想知道数据库里有哪些表空间和数据文件,以及有哪些用户被创建在数据库中,还想知道这个用户已经创建了哪些对象。
应该查询哪些视图?
下面的SQL语句列出当前数据库建立的会话情况:
selectsid,serial#,username,program,machine,status
fromv$session;
输出的结果:
SIDSERIAL#USERNAMEPROGRAMMACHINESTATUS
-------------------------------------------------------
11WORK3ACTIVE
21WORK3ACTIVE
31WORK3ACTIVE
41WORK3ACTIVE
53WORK3ACTIVE
61WORK3ACTIVE
71WORK3ACTIVE
827SYSWORKGROUP\WORK3ACTIVE
115DBSNMPWORKGROUP\WORK3INACTIVE
其中SID会话(session)的ID号;
SERIAL#会话的序列号,和SID一起用来唯一标识一个会话;
USERNAME建立该会话的用户名;
PROGRAM这个会话是用什么工具连接到数据库的;
STATUS当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;
假如DBA要手工断开某个会话,则执行:
altersystemkillsession'SID,SERIAL#';
注意:
在上面的示例中,SID为1到7(USERNAME列为空)的会话,它是数据库的后台进程,请大家不要对这些会话进行任何操作。
一、查看Oracle数据库中表空间信息的方法
1、查看Oracle数据库中表空间信息的工具方法:
使用oracleenterprisemanagerconsole工具,这是oracle的客户端工具,当安装oracle服务器或客户端时会自动安装此工具,在windows操作系统上完成oracle安装后,通过下面的方法登录该工具:
开始菜单——程序——Oracle-OraHome92——EnterpriseManagerConsole(单击)——oracleenterprisemanagerconsole登录——选择‘独立启动’单选框——‘确定’——‘oracleenterprisemanagerconsole,独立’——选择要登录的‘实例名’——弹出‘数据库连接信息’——输入’用户名/口令’(一般使用sys用户),’连接身份’选择选择SYSDBA——‘确定’,这时已经成功登录该工具,选择‘存储’——表空间,会看到如下的界面,该界面显示了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。
图1表空间大小及使用率
2、查看Oracle数据库中表空间信息的命令方法:
通过查询数据库系统中的数据字典表(datadictionarytables)获取表空间的相关信息,首先使用客户端工具连接到数据库,这些工具可以是SQLPLUS字符工具、TOAD、PL/SQL等,连接到数据库后执行如下的查询语句:
select
表空间名称,
类型,
区管理,
1024/1024表空间大小M,
已使用M,
substr(利用率
from
(select tablespace_namea1,sum(nvl(bytes,0))a2fromdba_free_spacegr