ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:21.29KB ,
资源ID:18305946      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-18305946.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Oracle数据库常见问题答疑.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

Oracle数据库常见问题答疑.docx

1、Oracle数据库常见问题答疑Oracle数据库常见问题答疑Oracle数据库以其强大的功能和稳定性而著称,但同时,在开发和管理方面也存在很多困难,笔者在此总结了一些Oracle数据库开发和管理的常见问题,希望能对大家有所帮助。 问:如果发现表中有坏块,如何检索其它未坏的数据? 答:首先需要找到坏块的ID(可以运行dbverify实现),假设为1234。运行下面的查询查找段名: select segment_name, segment_type, block_id, blocks from dba_extents where (1234 between block_id and (block_

2、id + blocks - 1); 一旦找到坏段名称,若段是一个表,则最好建立一个临时表,存放好的数据。若段是索引,则删除它,再重建。 create table good_table as select from bad_table where rowid not in ( select / +index(bad_table, any_index) / rowid from bad_table where substr( rowid, 1, 8 ) = 1234) 问:如请问如何关闭FORM调用REPORT时的小窗口? 答:在利用Oracle数据库的Develop 2000设计开发界面的过程中

3、,当FORM调用REPORT时,会显示一个背景窗口REPORT BACKGROUD ENGINE,等待FORM对REPORT的调用,当FORM调用其它REPORT时,也使用这个后台服务器,不论调用多少个REPORT,这个后台服务器存在且只有一个。但当FORM与REPORT全部退出后,该窗口仍处于等待状态,不会关闭,这时,我们需要手工将其关闭。 我们可以使用以下参数在FORM调用REPORT时不显示这个小窗口: Add_Parameter( pl_id, ORACLE_SHUTDOWN,TEXT_Parameter, Yes ); 需要注意的是,该参数必须加在所有参数的前面,即它必须为第一个参数

4、。 问:请问如何根据查询条件在REPORT中动态显示记录? 答:1. 在REPORT的“数据模型”下面的“用户参数”中,创建用户自定义参数W_CLAUSE,W_CLAUSE为从FORM传递过来的查询条件,数据类型为字符型,缺省值为NULL。 2. 修改查询Q_1,将SQL查询语句修改为select from dept &w_clause。 3. 在运行报表时,报表会自动将符合&w_clause的查询条件记录显示出来。 如果从FORM传递过来的w_clause为where dept=1,本报表的SQL查询自动转换为select from dept where dept=1,并在报表运行结果中显示

5、符合该查询条件的记录,如果从FORM传递过来的w_cluase为where to_char(年度,YYYY.MM)=2000.03,则在报表运行结果中自动显示2000年3月份的记录。 问:在Oracle中,我们如何查看某表上的约束? 答:我们可以使用下面语句从all_constraints视图中查看某表上的约束: SELECT constraint_name, table_name, r_owner, r_constraint_name FROM all_constraints WHERE table_name = table_name and owner = owner_name; 另一个视

6、图ALL_CONS_COLUMNS也包括组成表上约束列的信息。 问:如何将数据库从noarchivelog方式改变为archivelog方式? 答:首先打开Init.ora文件,确保存档日志目标指向一有效目录。 然后启动Server Manager svrmgrl shutdown immediate svrmgrl startup mount svrmgrl alter database archivelog; svrmgrl alter database open; svrmgrl archive log list; 在init.ora中设置参数archive_log_start=TRUE

7、,它设置存档日志为自动启动。在Oracle 8i中支持多个存档日志的目标,因此参数修改为log_archive_destn,其中n为1到5。 问:在Oracle数据库中,我们如何增加表空间的大小? 答: 在开发Oracle数据库中,我们有两种方法增加表空间的大小: 1.增加额外的数据文件到表空间中 例如:alter tablespace users add datafile /u01/oradata/orcl/users02.dbf size 25m; 2.修改表空间当前的数据文件 例如:alter database datafile /u01/oradata/orcl/users01.dbf

8、 resize 50M; 问:请问如何在REPORT中设置动态显示域? 答:在REPORT中设置动态显示域的方法如下: 1. 在REPORT的“数据模型”下面的“用户参数”中,创建用户自定义参数,如RQ,RQ是从FORM传递过来的显示日期,数据类型为字符型。 2. 在布局模型中,创建一个显示域F_1,在属性选项板中修改该显示域的源为用户自定义参数RQ,并且设为“不可见的”。 3. 在动态预览中,创建一个文本域D_1,调整该文本域的位置和宽度,在该域的内容中输入&F_1,则该域会动态显示用户定义参数RQ的值。 问:有关口令 我在Solaris系统上运行 Oracle8i 8.1.7企业版。我创建

9、了两个数据库:SUGAR和TestDb。将两者的remote_login_passwordfile都设置为 “独占(exclusive)”。我试图以SYSDBA身份连接到TestDb,但未能成功。下面是我的做法: $sqlplus /nolog SQL conn sys/change_on_installtestdb Connected.(已连接) SQL select * from v$pwfile_users; username sysdb sysop - internal true true sys true true SQL conn sys/change_on_installtest

10、db as sysdba ERROR(错误) ORA-01017: invalid username/password; logon denied(无效的用户名/口令,登录被拒绝) Warning: You are on longer connected to ORACLE(警告:你已经与ORACLE断开连接) 我为什么不能以SYSDBA身份连接到TestDb? 答:通常Oracle中的SYS口令与INTERNAL口令是同步的,SYS口令存储于口令文件中。在上述情况下你建立了包含有一个口令的口令文件,而不是使用缺省的 “change_on_install,”这就是问题之所在。 希望下面的方法对

11、你有所帮助。首先,建立一个口令文件,其中包含一个口令,这个口令不要与系统口令匹配: $ orapwd file=orapw password=foobar entries=40 然后,进入服务器,启动数据库: $ svrmgr SVRMGR connect internal Connected.(已连接) SVRMGR startup ORACLE instance started.(ORACLE 实例已启动) Total System Global Area (系统全局区域大小) 193073136 bytes Fixed Size (固定大小) 69616 bytes Variable S

12、ize (可变大小) 141639680 bytes Database Buffers (数据库缓冲区) 45056000 bytes Redo Buffers (重做缓冲区) 6307840 bytes Database mounted. (数据库已加载) Database opened.数据库已打开。 现在使用SYS用户的口令,以SYS身份连接: SVRMGR connect sys/change_on_installora81 Connected.(已连接) 成功了。现在试着以SYSDBA身份连接: SVRMGR connect sys/change_on_installora81 as

13、 sysdba; ORA-01017: invalid username/password; logon denied(无效的用户名/口令;登录被拒绝) 这里出现了你所说的错误。你的SYS口令为:change_on_install,但口令文件中的口令却是foobar。SYS用户是专用的,以SYSDBA身份连接就像是以INTERNAL连接,你必须使用口令文件中的口令。试试这样做: SVRMGR connect sys/foobarora81 as sysdba; Connected.(已连接) 并不是每个人都需要使用口令文件中的口令;用户需要使用他们自己的口令。通过授权SYSDBA给SCOTT,

14、你就可以明白这一点: SVRMGR grant sysdba to scott; Statement processed.(已处理) 这个命令将SCOTT以SCOTT的凭证加入到口令文件中。如果你改变了SCOTT的口令,口令文件也会自动同步改变。现在,你可以试试以SYSDBA身份连接SCOTT了: SVRMGR connect scott/tigerora81 as sysdba; Connected.(已连接) 一切正常。现在可以使用ALTER USER 命令来改变SYS用户的口令。 SVRMGR alter user sys identified by change_on_install;

15、 Statement processed.(已成功更改) SVRMGR≫ connect sys/change_on_installora81 as sysdba; Connected.(已连接) 你还可以用change_on_install,因为改变SYS用户口令将同时改变口令文件中的口令。当你建立了口令文件后,Oracle数据库在其中放入两个账号:SYS和INTERNAL,并将你在命令行中提供的口令作为这两个账户的口令。当你改变数据库中的SYS用户口令时,数据库将冲掉口令文件中的SYS和INTERNAL口令。下面操作将显示口令foobar已经是无效的了: SVRMGR connect

16、 sys/foobarora81 as sysdba; ORA-01017: invalid username/password; logon denied(无效的用户名/口令,登录被拒绝) 问:利用QUERY选项输出数据 我知道在Oracle8i中,可以使用QUERY有选择地输出表数据。我想用EXP命令来实现,但没有成功。下面是我所写的命令,以及得到的错误信息: exp ddd/ddd file=/dbf/u11/customer.dmp tables=AASC.AST_CUSTOMER_KEEP query=where CUA_TRANS_DTS .exp userid=tkyte/tky

17、te tables=t query=where object_id 5000 注意:在windows中,需要在WHERE语句的两端使用三个双引号。在UNIX中,必须这样做: $ exp userid=/ tables=t query=where object_id 5000 exp userid=/ tables=t parfile=exp.par 如果使用包含query=where object_id select dbms_random.value, dbms_random.value(55,100) 2 from dual; VALUE DBMS_RANDOM.VALUE(55,100)

18、 - - .782821936 79.6367038 NORMAL函数返回服从正态分布的一组数。此正态分布标准偏差为1,期望值为0。这个函数返回的数值中有68%是介于-1与+1之间,95%介于-2与+2之间,99%介于-3与+3之间。事实上,这就是你在清单1中所看到的。 最后,是STRING函数。它返回一个长度达60个字符的随机字符串。参数OPT可以是清单2显示的值中的任何一个单个字符。 关于这些函数及DBMS_RANDOM包的文件都包含在SQLPlus中: select text from all_source where name = DBMS_RANDOM and type = PACK

19、AGE order by line; 问:连接次序与谓词求值 在下面的查询中,WHERE 语句的哪一部分先执行? Select field names from emp, dept where emp.dept_num = dept.num and emp.name Like S% and dept.name=IT; 答:执行次序随已有的索引、统计、和session/init.ora参数的不同而变化。 假定已有一个建立在DEPT(name)和EMP(dept_num)上的索引。假定优化器认为DEPT是唯一的,它可能按下面的顺序进行操作: 利用建立在DEPT(name)上的索引查找dept列 利

20、用建立在EMP(dept_num)上的索引查找匹配的emp列(即连接emp.dept_num = dept.num) 依据建立在emp.ename like S%进行过滤 现在,我们假定没有建立在EMP(dept_num)上的索引,也没有建立在DEPT(name)上的索引,而存在建立在EMP(name)和DEPT(num)上的索引。优化器可能按下面的次序进行操作: 利用建立在EMP(name)上的索引找到带有S的EMPS 利用建立在DEPT(num)上的索引找到匹配项 根据dept.name = IT过滤结果 谓词求值的次序是不确定的,可以随时间的改变而改变,并由优化器决定。不要假定任何事情会

21、按一定的次序发生。如果你那么做,随着时间的推移,你的应用程序可能会出现一些看起来非常奇怪的错误。看以下的例子:建立一个表,输入一些数据。当X=a时,第二列的数据“Y”是一个数值,当X=b时,“Y”不是数字。 SQL create table t ( x varchar2(1), y varchar2(1) ); Table created. SQL insert into t values ( a, 1 ); 1 row created. SQL insert into t values ( b, x ); 1 row created. 现在根据这个表运行一个查询:查找满足x=a,y=1的行。

22、 SQL select * from t where x = a and y = 1; ERROR: ORA-01722: invalid number no rows selected(错误,无效的数字,没有选择任何行) 呦,没有成功。在这种情况下,数据库首先执行Y=1,当找到Y=X的行后,很显然,它不能将X转换为一个数字,所以失败了。而下面的程序将给出不同的结果: SQL analyze table t compute statistics; Table analyzed.(表已经分析过) SQL select * from t where x = a and y = 1; X Y - -

23、 a 1 使用不同的优化器模式,成功了!为什么?优化器说:“嘿,检查x= a要比检查y=1来得快,因为在y=1中有一个将y从字符变为数字的转换。所以,我先检查x= a,然后再检查y=1。” 这个例子说明谓词执行的次序可能是不确定的,你不能指望有一种特定的执行次序。也就是说,当你依靠一个隐含的转换时,必须非常谨慎。 问:显示SGA-fixed size(固定大小)与variable size(可变大小) 当在svrmgr提示符下运行 “show SGA”时,fixed size和variable size是什么意思? 答:fixed size就是SGA中固定组件(它在编译oracle 数据库本身时就固定于其中)的大小。它是固定大小的内存,用来指向SGA的其它部分。SGA这一部分的大小是不能改变的。 variable size指分配的内存块大小可变。SGA的可变块,分为共享池、大池、JAVA池、游标区和其他结构。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2