您现在的位置: 易考吧(etest8.com)==>计算机==>Oracle认证==>考试指南
更多: Oracle认证考试信息
ORACLE问答精选
http://www.etest8.com时间:2006-11-01】 【来源:易考吧】 【阅读次数
Q:如何使用CostBased优化器优化查询操作? 
  A:OracleServer提供了基于成本(CostBased)和基于规则(RuleBased)两种优化器,简称为CBO和RBO,用于确定查询操作的执行计划。CostBased优化器将计算各种执行计划的开销,然后选出最低成本的执行计划。可使用下列方法选择使用CBO:方法1:在INIT.ORA文件中设置参数OPTIMIZER_MODE=choose 
  方法2:在Session级设置 OPTIMIZER_GOAL=FIRST_ROWS或ALL_ROWS例如:altersessionsetoptimizer_goal=first_rows;方法3:在查询语句中使用Hint,包括CHOOSE,ALL_ROWS,FIRST_ROWS等。 

 
  Q:如何确定某个查询使用了哪一种优化器? 
  A:使用EXPLAINPLAN命令生成该查询语句的执行计划,然后检查PLAN_TABLE表中POSITION字段,如果值为Null,说明使用了RuleBased优化器;否则表明使用了CostBased优化器。例如: 
  SELECTdecode(nvl(position,-1),-1,’RBO’,’CBO’) 
  FROMplan_table 
  WHEREid=0; 
  Q:我的查询上周的性能很好,为什么现在查询速度很慢? 
  A:这是由于执行计划被改变而造成的,下列因素将会改变一个执行计划: 
  1)INIT.ORA文件中的参数OPTIMIZER_MODE被改变 
  2)表上定义或改变了并行查询度 
  3)使用ANALYZE命令重新分析了表,而且使用了ESTIMATE方式,因这种方式选择不同的百分比可产生不同的分析结果。 
  4)DB_FILE_MULTIBLOCK_READ_COUNT参数被修改。 
  5)SORT_AREA_SIZE参数被修改 
  Q:为什么我的执行计划不是最好的? 
  A:CBO是依赖表的一些统计信息来选择出最低成本的执行计划,当这些统计信息不准确时,产生的计划便可能不是最佳的。因而应使用ANALYZE命令及时对表进行分析统计。 
  Q:当使用ESTIMATE方式对表进行分析时,选用什么百分比最好? 
  A:经测试证明,使用5%的的比例较好。即提高了分析效率,又保证分析结果的准确性。 
  Q:如何在Oracle8数据库中创建PartitionTable? 
  A:使用CREATETABLE命令,并指定PartitionKey和每个Partition的分区范围,Partition名为可选项,如未指定,系统将自动产生Partition名。例如:CREATETABLEemp 
  (EMPNONUMBER(5), 
  ...) 
  PARTITIONBYRANGE(EMPNO), 
  emp_p1VALUESLESSTHAN(2000), 
  emp_p2VALUESLESSTHAN(4000) 
  emp_p3VALUESLESSTHAN(MAXVALUE); 
  Q:PartitionTable有何限制? 
  A:1)数据类型限制: 
  PartitionTable不能包含LONG、LONGRAW、LOB及OBJECT类型的字段2)Cluster不能被分区3)Bitmap索引:Bitmap索引必须是LOCAL索引,不能是GLOBAL索引4)优化器: 
  Oracle8中CostBased优化器支持Partitions,而RuleBased优化器对Partitions不敏感,无法通过Partitions获得性能的提高。 
  5)PartitionTables不能跨多个数据库,所有的Partition必须存在于一个数据库中 
  Q:如何建立一个与现存数据库相同,但不包含数据的空库? 
  A:对全库作Export或Import时,使用参数ROWS=Y 
  例如:expsystem/managerfull=Yrows=Nfile=full.dmp 
  impsystem/managerfull=Yrows=Nfile=full.dmp 
  Q:当ExportingProcedures和Packages时,是否会改变其时间标签(Timestamp)? 
  A:不改变,这是为避免不必要的重编译。 
  Q:Exp的参数VOLSIZE能否用于所有的平台? 
  A:VOLSIZE只能用于UNIX系统,将数据exporting至外部介质上(如磁带) 
  Q:如何通过SQL*PLUS往表中插入"’",如往表中插入i’m. 
  A:在SQL*PLUS中,我们可以用chr(39)来表示"’",例如: 
  sql>createtabletest(col1varchar2(10)); 
  sql>insertintotestvalues(’i’||chr(39)||’m’); 
  sql>select*fromtest; 
  col1 
  ----- 
  i’m 
  Q:在win95或windowsNT上运行oracleNet8Assistant或Net8EasyConfiguration时报错"unhandledexceptionerrorinJava.exe" 
  A:oracleNet8Assistant或Net8EasyConfiguration调用了Java,而Java在win95或windowsNT上运行对系统的分辨率和颜色都有要求.应把系统的分辨率调到大于640x480,把系统的颜色调到大于256色但不能设置成truecolor. 
  Q:安装oracle8forwindowsNT4.0需要NT的那种servicepack? 
  A:安装oracle8forwindowsNT4.0需要NT的servicepack3. 
  Qelphi3.0是否支持oracle8? 
  A:Delphi3.0只有oracle7的driver,所以不支持oracle8. 
  Delphi4.0.x有oracle8的driver,所以支持oracle8. 
  Q:怎样在oracle7和oracle8之间export/import数据?
A:必须先在oracle8数据库上以internal或sys用户运行catexp7.sql 
  svrmgr>connectinternal 
  svrmgr>@?/rdbms/admin/catexp7.sql 
  Q:怎样为远程用户设置"internal"的口令? 
  A:先在数据库端的init.ora文件中设置 
  remote_login_passwordfile=exclusive 
  并且为oracleowner设置环境变量 

 
  ORA__PWFILE=orapw.pwd 
  然后以oracleowner运行以下命令 
  $cd$ORACLE_HOME/dbs 
  $orapwdfile=orapw.pwdpassword=entries=5 
  Q:如何手工安装sqlplus的helpfacility? 
  A:以oracle用户运行以下命令 
  $cd$ORACLE_HOME/bin 
  $SYSTEM_PASS=system/manager;exportSYSTEM_PASS 
  $helpins 
  Q:如何查出前台正在发出的sql语句? 
  A:先查出正在运行的前台程序的sid: 
  sql>selectsid,serial#,username,program 
  fromv$session 
  wherestatus=’ACTIVE’; 
  然后根据上面得到的sid,可查出正在运行的前台程序发出的sql语句: 
  sql>selectuser_name,sql_text 
  fromv$open_cursor 
  wheresid=xx; 
  Q:在oracle8中如何使用sharedlibrary来编译pro*c程序? 
  A:首先以oracleowner创建sharedlibrary 
  $cd$ORACLE_HOME/rdbms/lib 
  $make-fins_rdbms.mkclient_sharedlib 
  然后设置LIBPATH环境变量(有的平台用LD_LIBRARY_PATH,请参见手册 : 
  $LIBPATH=$ORACLE_HOME/lib;exportLIBPATH 
  最后编译你的pro*c程序: 
  $make-fdemo_proc.mkbuildOBJS=yourprog.oEXE=yourprog 
  Q:在数据库一级设置SQLTrace 
  A:在init.ora中加入参数sql_trace=true.然后重新启动数据库。 
  Q:在SQL*PLUS中对某一session设置SQLtrace. 
  A:sql*plus>altersessionsetsql_tracetrue; 
  在产生Trace之后,使用如下命令关闭Trace. 
  sql*plus>altersessionsetsql_tracefalse;3: 
  Q:在PL/SQL中设置和关闭SQLTrace. 
  A:dbms_session.set_sql_trace(true); 
  dbms_session.set_sql_trace(false); 
  如果你不能发现这个package,首先用SYS用户执行 
  dbmsutil.sql这个脚本。 
  Q:怎样设置redolog文件的大小。 
  A:设置redolog文件的原则就是要保证30分钟之内进行logswitch. 
  logswitch的信息被记录在alertSID.log中。 
  ------------------------------------------------------- 
  MonMay513:53:311997 
  Thread1advancedtologsequence68 
  Currentlog#2seq#68mem#0:/u05/dbs/log2ween.dbf------------------------------------------------------- 
   
  如果两次switch的时间是10分钟,你需要增加redolog文件 
  到三倍的尺寸。 
  如果两次switch的时间是15分钟,你需要增加redolog文件 
  到两倍的尺寸。 
  如果两次switch的时间超过30分钟,你不需要需要增加redo 
  log文件的尺寸。 
   
  同时设置CHECK_POINT_INTERVAL大于redolog文件的大小。 
  Q:怎样检查是否一个数据库用户被授予sysdba,sysoper的权限。 
  A:注册到sys用户下,查询数据字典v$pwfilw_users. 
  Q:你是否可以将withgrantoption的object权限授给一个role. 
  A:不能,这个被授权者必须是一个user或者public. 
  Q:withadminoption的系统授权是否是hierarchical 
  A:不是,所以revokegrantwithadminoption并不cascade. 
  如:userAgrantselectanytabletouserBwithadminoption. 
  userBgrantselectsnytabletouserCwithadminoption. 
  userArevokeselectanytablefromuserB. 
  此时userC仍然具有selectanytablewithadminoption. 
  Q:被授予的withgrantoption的object的权限是否被收回,如果授权者的权限已经被收回。 
  A:是的,object的withgrantoption的权限是hierarchical. 
  Q:在用createuser命令创建了一个用户之后,那些表可以用来查看这个新用户的基本信息。 
  A:可以查看表dba_users,dba_ts_quotas. 
  Q:是否可以用alterdatabasedatafaile’file_name’offlinedrop的命令来删除一个表空间中的某个数据文件。 
   
  A:这个命令并非是一个常规的对数据库的管理命令,仅仅当数据库出现异常,或某个文件丢失时,可以用他来强制将这一文件的记录从数据字典中删除,以达到open数据库的目的,但是此后,你必须备份此表空间的数据,然后重新创建该表空间。
Q:如何移动数据文件的位置? 
  A:1.正常关闭数据库; 
  2.拷贝数据文件到新位置; 
  $cp$ORACLE_HOME/dbs/dbsNEW.dbf/usr3/oracle/dbsNEW.dbf 
  3.svrmgrl 
  connectinternal; 
  startupmount; 
  alterdatabaserenamefile’<$ORACLE_HOME>/dbs/dbsNEW.dbf’ 

 
  to’/usr3/oracle/dbsNEW.dbf’; 
  alterdatabaseopen. 
   
  Q:如何移动LOG文件的位置? 
  A:可以先添加新的LOG文件,再删除原来的LOG文件。 
  svrmgrl>connectinternal; 
  alterdatabaseaddlogfile’<$ORACLE_HOME>/usr3/oracle/logNEW.dba’; 
  alterdatabasedroplogfile’<$ORACLE_HOME>/dbs/logNEW.dbf’; 
   
  Q:能否把数据文件一部分放在RAWDEVICE上,另一部分放在普通文件系统上? 
  A:可以,ORACLE把它们同等对待,把数据文件放在RAWDEVICE上有时可以提高系统的性能。 
   
  Q:能否把多个数据文件放在同一个RAWDEVICE上?在CREATETABLESPACE时,如何指定RAWDEVICE的大小? 
  A:一个RAWDEVICE只能作为一个数据文件使用,如果你有一个较大的RAWDEVICE,需要把它用于不同的表空间,你可以把它再分区。在使用RAWDEVICE创建表空间时,你只能使用RAWDEVICE的95%左右的空间,其余空间用于记录文件头的信息。 
   
  Q:如何知道我已经安装了哪种NETWORKDRIVER? 
  A:可以用’nm’命令检查,例如,TCP/IPDRIVER的符号名为’nttini’,要检查Oracle是否链接了该符号,可以利用下列命令: 
  nmoracle|grepnttini如果nttini存在,表示rdbms已经链接了TCP/IPDRIVER. 
  Q:如何检查已安装的SQL*NET的版本? 
  A:可以在?/orainst目录下使用’inspdver’命令检查。 
  $inspdver|grepSQL*Net 
  2.3.4.0.0SQL*Net(V2) 
  Q:如何打开IntelligentAgentTracing? 
  A:在7.3.2.x,编辑SNMP.ORA文件,在7.3.3.x及以上版本编辑SNMP_RW.ORA文件,分别加入以下内容: 
  NMI.TRACE_LEVEL=16 
  NMI.TRACE_MASK=(106) 
  NMI.TRACE_DIRECTORY= 
  Q:SNAPSHOT不自动refresh怎么办? 
  A:我们可以从以下几个方面查找原因: 
  1.检查JOB_QUEUE_PROCESSES参数; 
  2.检查DBA_JOBS,确认JOB的状态不是broken; 
  3.检查DBA_JOBS_RUNNING,看refreshjob是否正在运行; 
  4.检查dblink和NET是否正常。 
  Q:如何清除replicated环境? 
  A:1.在MasterDefinitionsite,执行dbms_repcat.remove_master_databases(); 
  2.在Mastersite执行dbms_repcat.drop_master_repgroup。 
  Q:如何确定snapshot是ReadOnly或Updatable? 
  A:可以运行下列语句,确定snapshot是ReadOnly或Updatable: 
  SQL>selectname,updatablefromuser_snapshots; 
  Example:-------- 
  SQL>selectname,updatablefromuser_snapshots;
考试分类
考试辅导
考试软件
 
精彩文摘
2007年职业资格全国统考时间和考试科目
波兰专家给出了女性完美身材的全新标准
19个职业资格鉴定时间排定 11个职业全国
2007年8种职业类证书考试报名时间确定
最让人快乐的九种职业
教育部:享受免费教育师范生至少到西部
周星弛泡妞经典对白
怎样喝水能排毒清宿便
教育部:中外合作办学专业不单独录取
歌名串烧:司法考试与爱情