1、数据库管理员试题Oracle数据库管理员笔试题(基本知识) 姓名: 以下是所有题目假设的环境:OS:RedHat Linux AS4 DataBase: Oracle 9.2.0.1 如果你答案描述的环境与此环境有差别,请声明,同样有效。任何题目都不限于形式,只要说出要点即可。答案写在答题纸上,不要写在题目上1. 请你描述一下Oracle架构,包括SGA,相关进程,表空间,数据文件,PGA,参数文件,控制文件等。 2. 请你写出SGA中各部分或者总体对应参数文件中的什么变量? PGA是什么作用,哪个参数控制它?3. 请你说出Oracle数据库启动(当你startup;时)时按照先后顺序都访问了
2、那些文件。Oracle中数据库实例和数据库是独立实体,可以独立存在。因此启动过程分成多个阶段:首先在内存中构建实例,然后通过安装数据库启用到数据库的连接,最后打开数据库来使用它。Oracle数据库有四种状态:Shutdown:所有数据库文件都关闭,不存在实例Nomount:实例在内存中创建(sga已经被创建,根据参数文件指定启动某些后台进程),但没有连接到任何数据库。Moun:实例定位并读取数据库控制文件。Open:所有的数据库文件都被定位和打开,终端用户可以使用数据库。数据库的启动可分为三步:、nomount:在这一阶段,只需要读取initsid.ora文件,启动数据库实例,创建后台进程。在
3、initsid.ora文件中,可以定位spfileorac.ora文件,这是参数文件,通过它可以初始化sga和启动后台进程。并可以定位控制文件的位置。在此阶段,可以执行的操作有:重建控制文件,重建数据库。、mount:在nomount阶段,可以通过读取控制文件来转换到mount阶段。在数据库加载阶段(mount),所有的数据文件和联机日志文件的名称及位置都从控制文件中读取,但是并没有真正查找到这些文件,在此阶段可以执行的操作有:数据库日志归档、数据库介质恢复、使数据文件联机或脱机、重定位数据文件和联机日志。、Open:通过查找定位并打开数据文件和联机日志文件来切换到open阶段。此时数据库可用
4、,可以建立会话。4. 请你说出几种startup命令的选项和他们的意义。5. 如果想关闭数据库,有什么选项,各是什么意义?6. 我想知道数据库是否运行在归档模式,使用什么命令或者查什么视图?怎样把数据库从非归档切换成归档模式?写出命令或者步骤。SQL conn /as sysdba已连接。SQL archive log list;数据库日志模式 存档模式自动存档 启用存档终点 D:oracleora92RDBMS最早的概要日志序列 0下一个存档日志序列 10当前日志序列 10SQL conn bill/bill已连接。SQL archive log list;ORA-01031: 权限不足SQ
5、L要使用sys用户select * from v$instance可以查看7. 如果开发组给你了一组创建表的脚本,他希望你把这些数据部署到已经建立好的一个空数据库中,写出你的规划步骤或者命令。8. 写出你知道的exp和imp命令的参数和它们的作用,尽量多写。exp将数据库内的各对象以二进制方式下载成dmp文件,方便数据迁移。buffer:下载数据缓冲区,以字节为单位,缺省依赖操作系统consistent:下载期间所涉及的数据保持read only,缺省为ndirect:使用直通方式 ,缺省为nfeeback:显示处理记录条数,缺省为0,即不显示file:输出文件,缺省为expdat.dmpfi
6、lesize:输出文件大小,缺省为操作系统最大值indexes:是否下载索引,缺省为n,这是指索引的定义而非数据,exp不下载索引数据log:log文件,缺省为无,在标准输出显示owner:指明下载的用户名query:选择记录的一个子集rows:是否下载表记录tables:输出的表名列表导出整个实例exp dbuser/oracle file=oradb.dmp log=oradb.log full=y consistent=y direct=yuser应具有dba权限导出某个用户所有对象exp dbuser/oracle file=dbuser.dmp log=dbuser.log owne
7、r=dbuser buffer= feedback=10000导出一张或几张表exp dbuser/oracle file=dbuser.dmp log=dbuser.log tables=table1,table2 buffer= feedback=10000导出某张表的部分数据exp dbuser/oracle file=dbuser.dmp log=dbuser.log tables=table1 buffer= feedback=10000 query=”where col1= and col2 ”不可用于嵌套表以多个固定大小文件方式导出某张表exp dbuser/oracle fil
8、e=1.dmp,2.dmp,3.dmp, filesize=1000m tables=emp buffer= feedback=10000这种做法通常用在:表数据量较大,单个dump文件可能会超出文件系统的限制直通路径方式direct=y,取代buffer选项,query选项不可用有利于提高下载速度consistent选项自export启动后,consistent=y冻结来自其它会话的对export操作的数据对象的更新,这样可以保证dump结果的一致性。但这个过程不能太长,以免回滚段和联机日志消耗完imp将exp下载的dmp文件上载到数据库内。buffer:上载数据缓冲区,以字节为单位,缺省依
9、赖操作系统commit:上载数据缓冲区中的记录上载后是否执行提交feeback:显示处理记录条数,缺省为0,即不显示file:输入文件,缺省为expdat.dmpfilesize:输入文件大小,缺省为操作系统最大值fromuser:指明来源用户方ignore:是否忽略对象创建错误,缺省为n,在上载前对象已被建立往往是一个正常现象,所以此选项建议设为yindexes:是否上载索引,缺省为n,这是指索引的定义而非数据,如果上载时索引已建立,此选项即使为n也无效,imp自动更新索引数据log:log文件,缺省为无,在标准输出显示rows:是否上载表记录tables:输入的表名列表touser:指明目
10、的用户方导入整个实例imp dbuser/oracle file=oradb.dmp log=oradb.log full=y buffer= commit=y ignore=y feedback=10000导入某个用户所有对象imp dbuser/oracle file=dbuser.dmp log=dbuser.log fromuser=dbuser touser=dbuser2 buffer= commit=y ignore=y feedback=10000导入一张或几张表imp dbuser2/oracle file=user.dmp log=user.log tables=table
11、1,table2 fromuser=dbuser touser=dbuser2 buffer= commit=y ignore=y feedback=10000以多个固定大小文件方式导入某张表imp dbuser/oracle file=(1.dmp,2.dmp,3.dmp,) filesize=1000m tables=emp fromuser=dbuser touser=dbuser2 buffer= commit=y ignore=y feedback=100009. 我想知道目前数据库的会话情况,还想知道数据库里有哪些表空间和数据文件,以及有哪些用户被创建在数据库中,还想知道这个用户已
12、经创建了哪些对象。应该查询哪些视图?下面的SQL语句列出当前数据库建立的会话情况: select sid,serial#,username,program,machine,status from v$session; 输出的结果: SID SERIAL# USERNAME PROGRAM MACHINE STATUS - - - - - - 1 1 ORACLE.EXE WORK3 ACTIVE 2 1 ORACLE.EXE WORK3 ACTIVE 3 1 ORACLE.EXE WORK3 ACTIVE 4 1 ORACLE.EXE WORK3 ACTIVE 5 3 ORACLE.EXE W
13、ORK3 ACTIVE 6 1 ORACLE.EXE WORK3 ACTIVE 7 1 ORACLE.EXE WORK3 ACTIVE 8 27 SYS SQLPLUS.EXE WORKGROUPWORK3 ACTIVE 11 5 DBSNMP dbsnmp.exe WORKGROUPWORK3 INACTIVE 其中SID 会话(session)的ID号; SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话; USERNAME 建立该会话的用户名; PROGRAM 这个会话是用什么工具连接到数据库的; STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INA
14、CTIVE表示当前会话没有执行任何操作; 假如DBA要手工断开某个会话,则执行: alter system kill session SID,SERIAL#; 注意: 在上面的示例中,SID为1到7(USERNAME列为空)的会话,它是Oracle数据库的后台进程,请大家不要对这些会话进行任何操作。一、查看Oracle数据库中表空间信息的方法1、查看Oracle数据库中表空间信息的工具方法:使用oracle enterprise manager console工具,这是oracle的客户端工具,当安装oracle服务器或客户端时会自动安装此工具,在windows操作系统上完成oracle安装后
15、,通过下面的方法登录该工具:开始菜单程序OracleOraHome92Enterprise Manager Console(单击)oracle enterprise manager console登录选择独立启动单选框确定 oracle enterprise manager console,独立 选择要登录的实例名 弹出数据库连接信息 输入用户名口令 (一般使用sys用户),连接身份选择选择SYSDBA确定,这时已经成功登录该工具,选择存储 表空间,会看到如下的界面,该界面显示了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。 图1 表空间大小
16、及使用率2、查看Oracle数据库中表空间信息的命令方法:通过查询数据库系统中的数据字典表(data dictionary tables)获取表空间的相关信息,首先使用客户端工具连接到数据库,这些工具可以是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 (selecttablespace_name a1, sum(
17、nvl(bytes,0) a2 from dba_free_space group by tablespace_name) a,(select tablespace_name b1,sum(bytes) b2 from dba_data_files group by tablespace_name) b,(select tablespace_name c1,contents c2,extent_management c3from dba_tablespaces) c where a.a1=b.b1 and c.c1=b.b1;该语句通过查询dba_free_space,dba_data_fil
18、es,dba_tablespaces这三个数据字典表,得到了表空间名称,表空间类型,区管理类型,以”兆”为单位的表空间大小,已使用的表空间大小及表空间利用率。dba_free_space表描述了表空间的空闲大小,dba_data_files表描述了数据库中的数据文件,dba_tablespaces表描述了数据库中的表空间。上面语句中from子句后有三个select语句,每个select语句相当于一个视图,视图的名称分别为a、b、c,通过它们之间的关联关系,我们得到了表空间的相关信息。语句执行结果如下:上面描述中分别介绍了查看Oracle数据库中表空间信息的工具方法和命令方法。 二、查询Orac
19、le数据库中数据文件信息的方法1、查看Oracle数据库中数据文件信息的工具方法:使用上面介绍过的方法登录oracle enterprise manager console工具,选择存储 数据文件,会看到如下的界面,该界面显示了数据文件名称,表空间名称,以”兆”为单位的数据文件大小,已使用的数据文件大小及数据文件利用率。2、查看Oracle数据库中数据文件信息的命令方法:通过查询数据库系统中的数据字典表(data dictionary tables)获取数据文件的相关信息,首先使用客户端工具连接到数据库,这些工具可以是SQLPLUS字符工具、TOAD、PL/SQL等,连接到数据库后执行如下的查
20、询语句 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)利用率 from dba_free_space a,dba_data_files b where a.file_id=b.file_id group by b.tablespace_name,b.file_name,b.bytes order by b.tables
21、pace_name语句执行结果如下:上明描述中分别介绍了查看Oracle数据库中数据文件信息的工具方法和命令方法。 三、查看临时表空间和数据库文件的方法在oracle数据库中,临时表空间主要用于用户在使用order by 、group by语句进行排序和汇总时所需的临时工作空间。要查询数据库中临时表空间的名称,大小及数据文件,可以查询数据字典dba_tablespaces及dba_data_files。命令如下:select a.talbespace_name 表空间名称,b.bytes大小bytes,b.file_name数据文件名from dba_tablespaces a, dba_da
22、ta_files bWhere a.talbespace_name=b.talbespace_name and a.contentsTEMPORARY;查询结果如下:从oracle 9i开始,可以创建Temporary tablespace类表空间,即“临时“表空间,这类表空间使用临时文件。临时文件的信息被存储在数据字典V$tempfile中。命令如下: Select file#,status,name from V$tempfile; 查询数据字典V$tempfile结果如下:在上面介绍的方法中,建议掌握命令方法,因为你的环境可能没有图形工具,而SQLPLUS一般情况下都是可以使用的,有了命
23、令脚本,很容易得到表空间和数据文件的相关信息。另外,数据库管理员应该多整理命令脚本,在需要时直接执行脚本以提高工作效率。在数据库管理员的日常工作中,应该经常查询表空间的利用率,按照数据库系统的具体情况估算表空间的增长量,当表空间的利用率超过90时,要及时采取措施,如清理历史表、历史数据以释放空间,向表空间中添加新的数据文件,扩展现有数据文件大小等方法来降低表空间的利用率,避免表空间利用率接近100时,将产生空间不够的错误。10. 如果我想在一个表T的字段CONTENT上建立全文索引,应该怎么做,写出sql?开发组想查出T.CONTENT包含“互联网”这个词的记录,怎样写sql?11. ORAC
24、LE都有什么索引?分别适用于什么情况?12. Oracle 的分区表有什么类型?分别适用于什么情况?分区表是将大表的数据分成称为分区的许多小的子集,9i提供四种分区方法:范围分区,列表分区,哈希分区和混合分区; 范围分区是根椐分区键的不同取值范围来划分子集的,关键字RANGE, VALUES LESS THAN; 列表分区是根椐分区键的一些离散的取值来划分子集的,关键字LIST, VALUES; 哈希分区是应用哈希算法将分区键对应到某个子集中去,关键字HASH, PARTITIONS; 混合分区只能有两层,第一层是范围分区,第二层可以是列表分区或者哈希分区; 范围分区和列表分区中,如果插入记录
25、的分区键没有对应的容纳分区,会产生ORA-14400; update操作如果会使记录从一个分区迁移到另一个分区,且分区表的ROW MOVEMENT属性是DISABLE,会产ORA-14402; 分区表上的索引有两大类:普通的二叉树索引,分区索引,下面讲到的都是分区索引: 按索引分区和表分区间的对应关系可以分为局部索引和全局索引; 局部索引的索引分区和表分区间是一一对应的,全局索引则相反; 局部索引的分区方法可以用上面提到四种的任何一种,全局索引的分区方法只有范围分区(而且最高的分区必须用MAXVALUE来定义); ORACLE自动维护局部索引的分区,当表分区被合并,分裂或删除时,关联的索引分区
26、也会被合并,分裂或删除;对分区表执行管理操作时会使其上的全局索引失效; 建在分区表的位图索引必须是局部分区索引; ORACLE推荐尽可能地使用局部索引; 按索引栏位和分区键间的关系分为前缀索引和非前缀索引; 前缀索引最前面的栏位是分区键栏位,非前缀索引相反; 在这两种分类方法的四种组合中,只有三种有效(局部前缀索引,局部非前缀索引,全局前缀索引),不存在全局非前缀索引; 分区表给CBO带来很多选项,如分区排除,并行分区连接等。 下面皆以学生表(tab_students)为例说明。下面是一些关键字说明INITIAL:specifies the size in bytes of the objec
27、ts first extent. Oracle allocates space for this extent when you create the object. You can also use K or M to specify this size in kilobytes or megabytes. The default value is the size of 5 data blocks. The minimum value is the size of 2 data blocks. The maximum value varies depending on your opera
28、ting system. Oracle rounds values up to the next multiple of the data block size. NEXT:specifies the size in bytes of the next extent to be allocated to the object. You can also use K or M to specify the size in kilobytes or megabytes. The default value is the size of 5 data blocks. The minimum valu
29、e is the size of 1 data block. The maximum value varies depending on your operating system. Oracle rounds values up to the next multiple of the data block size. MINEXTENTS:specifies the total number of extents allocated when the segment is created. This parameter allows you to allocate a large amoun
30、t of space when you create an object, even if the space available is not contiguous. The default and minimum value is 1, meaning that Oracle only allocates the initial extent, except for rollback segments for which the default and minimum value is 2. The maximum value varies depending on your operating system. If the MINEXTENTS value is greater than 1, then Oracle calculates the size of subsequent extents based on the values of the INITIAL, NEXT, and PCTINCREASE parameters. MAXEXTENTS:specifies the total number of extents, including the first, that Oracle can allocate for t
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1