知识大全 Oracle数据库常见问题答疑二

Posted 索引

篇首语:千磨万击还坚劲,任尔东西南北风。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle数据库常见问题答疑二相关的知识,希望对你有一定的参考价值。

Oracle数据库常见问题答疑二  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   问 利用QUERY选项输出数据    我知道在Oracle i中 可以使用QUERY有选择地输出表数据 我想用EXP命令来实现 但没有成功 下面是我所写的命令 以及得到的错误信息     exp ddd/ddd file=/dbf/u /customer dmp    tables=AASC AST_CUSTOMER_KEEP    query=\\ where CUA_TRANS_DTS \\<    add_months\\(sysdate \\)\\     table_export[ ]: CUA_TRANS_DTS: not found (没有找到)    答 操作系统不同 用来指定QUERY=参数的方法也不同 WHERE 语句里面往往有很多特殊的字符 如= > <和空格等等 而UNIX和Windows操作系统中的外壳命令提示是不欢迎这些字符的 这些字符将被忽略 你应该根据不同的操作系统采用不用的方法 我一般使用带有QUERY选项的参数文件(PARFILE) 利用PARFILE 可以不考虑操作系统平台而使用完全相同的方法     下面给出一个例子 我用select * from all_objects建立了一个表T 我希望输出所有object_id 小于 的行 在Windows中 必须这样做     C:\\exp>exp userid=tkyte/tkyte tables=t    query= where object_id <     注意 在windows中 需要在WHERE语句的两端使用三个双引号 在UNIX中 必须这样做     $ exp userid=/ tables=t query=\\ where    object_id \\< \\     exp userid=/ tables=t parfile=exp par    如果使用包含query= where object_id < 的PARFILE文件 我可以在两个系统中使用相同的一个命令     exp userid=/ tables=t parfile=exp par    在两种操作系统中 完全相同 这相对于在不同的平台中使用不同的QUERY字符串容易多了      问 DBMS_RANDOM    您能否告诉我写一个能产生大于 小于 的随机数的随机数产生器的最好方法?    答 Oracle 版介绍了DBMS_RANDOM包 Oracle i 版介绍了DBMS_RANDOM包的新功能 但Oracle i 文档中没有详细全面介绍其功能 幸运的是 有一个新的DBMS_RANDOM包函数能够返回 之间的随机数 这个新函数是     FUNCTION value RETURN NUMBER;    FUNCTION value (low IN NUMBER high IN    NUMBER) RETURN NUMBER;    FUNCTION normal RETURN NUMBER;    FUNCTION string (opt char len NUMBER)    RETURN VARCHAR ;    VALUE函数的第一种形式返回一个大于或等于 且小于 的随机数 第二种形式返回一个大于或等于LOW 小于HIGH的随机数 下面是其用法的一个示例     SQL> select dbms_random value     dbms_random value( )     from dual;    VALUE DBMS_RANDOM VALUE( )              NORMAL函数返回服从正态分布的一组数 此正态分布标准偏差为 期望值为 这个函数返回的数值中有 %是介于 与+ 之间 %介于 与+ 之间 %介于 与+ 之间 事实上 这就是你在清单 中所看到的     最后 是STRING函数 它返回一个长度达 个字符的随机字符串 参数OPT可以是清单 显示的值中的任何一个单个字符     关于这些函数及DBMS_RANDOM包的文件都包含在SQLPlus中     select text    from all_source    where name = DBMS_RANDOM     and type = PACKAGE order by line;     问 连接次序与谓词求值    在下面的查询中 WHERE 语句的哪一部分先执行?    Select field names from emp dept    w    here 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列    利用建立在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 过滤结果    谓词求值的次序是不确定的 可以随时间的改变而改变 并由优化器决定 不要假定任何事情会按一定的次序发生 如果你那么做 随着时间的推移 你的应用程序可能会出现一些看起来非常奇怪的错误 看以下的例子 建立一个表 输入一些数据 当X= a 时 第二列的数据 Y 是一个数值 当X= b 时 Y 不是数字     SQL> create table t ( x varchar ( ) y varchar ( ) );    Table created     SQL> insert into t values ( a );     row created     SQL> insert into t values ( b x );     row created     现在根据这个表运行一个查询 查找满足x= a y= 的行     SQL> select * from t where x = a and    y = ;    ERROR:    ORA : invalid number    no rows selected(错误 无效的数字 没有选择任何行)    呦 没有成功 在这种情况下 数据库首先执行Y= 当找到Y= X 的行后 很显然 它不能将 X 转换为一个数字 所以失败了 而下面的程序将给出不同的结果     SQL> analyze table t pute statistics;    Table analyzed (表已经分析过)    SQL> select * from t where x = a and    y = ;    X Y         a     使用不同的优化器模式 成功了!为什么?优化器说 嘿 检查x= a 要比检查y= 来得快 因为在y= 中有一个将y从字符变为数字的转换 所以 我先检查x= a 然后再检查y=     这个例子说明谓词执行的次序可能是不确定的 你不能指望有一种特定的执行次序 也就是说 当你依靠一个隐含的转换时 必须非常谨慎      问 显示SGA fixed size(固定大小)与variable size(可变大小)    当在svrmgr提示符下运行 show SGA 时 fixed size和variable size是什么意思?    答 fixed size就是SGA中固定组件(它在编译oracle 数据库本身时就固定于其中)的大小 它是固定大小的内存 用来指向SGA的其它部分 SGA这一部分的大小是不能改变的     variable size指分配的内存块大小可变 SGA的可变块 分为共享池 大池 JAVA池 游标区和其他结构 cha138/Article/program/Oracle/201311/17509

相关参考

知识大全 Oracle数据库开发的一些经验积累(二)

Oracle数据库开发的一些经验积累(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  三LI

知识大全 动态性能视图,Oracle数据库维护的好帮手(二)

动态性能视图,Oracle数据库维护的好帮手(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 Oracle9i 数据库管理实务讲座(二)

Oracle9i数据库管理实务讲座(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Orac

知识大全 Oracle备份与恢复案例二

Oracle备份与恢复案例二  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  检查数据库的数据(完

知识大全 Oracle维护常用SQL语句二

数据库手册:Oracle维护常用SQL语句二  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  回滚

知识大全 ORACLE数据库常见问题诊断方法

ORACLE数据库常见问题诊断方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ORACLE的

知识大全 ORACLE数据库应用开发常见问题及排除

ORACLE数据库应用开发常见问题及排除  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  硬件平台

知识大全 Oracle数据库常见问题诊断-SQL*NET篇

Oracle数据库常见问题诊断-SQL*NET篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 ORACLE数据库问题诊断方法 :常见错误篇

ORACLE数据库问题诊断方法:常见错误篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ORA

知识大全 Oracle数据库诊断性能问题

Oracle数据库诊断性能问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用扩展SQL跟踪