网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > 体系架构 > Oracle错误案例:ORA-00922  

Oracle错误案例:ORA-00922

2006-06-06  作者:BitsCN.com整理  来源:中国网管联盟  点评 投稿 收藏

ORA-00922 missing or invalid option 
0RA-00922: 丢失或者无效的选项

  Cause An invalid option was specified in defining a column or storage clause. The valid option in specifying a column is NOT NULL to specify that the column cannot contain any NULL values. Only constraints may follow the datatype. Specifying a maximum length on a DATE or LONG datatype also causes this error.
 
  Action Correct the syntax. Remove the erroneous option or length specification from the column or storage specification. 

网管联盟bitsCN_com

  案例一:Oracle明文密码漏洞

网管u家bitscn.net

  受影响系统: 网管网www_bitscn_com

  Oracle Oracle10g Application Server 9.0.4.0
  Oracle Oracle10g Application Server 10.1.0.2
  描述: 网管网www.bitscn.com

  Oracle Database是一款商业性质大型数据库系统。 网管论坛bbs_bitsCN_com

  Oracle 10g存在包含明文密码的全局可读文件,本地攻击者可以利用这个漏洞获得对数据库的访问。

网管u家u.bitscn@com

  SYSMAN帐户的密码可在'$ORACLE_HOME/hostname_sid/sysman/config/emoms.properties'文件中获得,此文件全局可读。

网管u家u.bitscn@com

  另外如果安装Oracle 10g时提供SYS, SYSTEM, DBSNMP和SYSMAN 帐户密码相同,并且密码有惊叹号(如f00bar!!),那么当设置SYSMAN和DBSNMP密码时DB安装会出现错误,错误信息\"postDBCreation.log\"会记录密码: 中国网管联盟bitsCN.com

  alter user SYSMAN identified by f00bar!! account unlock
ERROR at line 1:
ORA-00922: missing or invalid option

网管朋友网www_bitscn_net

  alter user DBSNMP identified by f00bar!! account unlock
ERROR at line 1:
ORA-00922: missing or invalid option 网管网www.bitscn.com

  <*来源:David Litchfield (david@nextgenss.com)
 
  链接:http://marc.theaimsgroup.com/?  l=bugtraq&m=110382247308064&w=2
  *>

网管u家bitscn.net

  建议:

网管论坛bbs_bitsCN_com

  厂商补丁:

中国网管联盟bitsCN.com

  Oracle
  ------
  ORACLE已经发布patch (#68)来修正此漏洞:

网管网www_bitscn_com

  http://metalink.oracle.com/ 中国网管联盟bitsCN.com

案例二:置换变量 网管朋友网www_bitscn_net

  我才刚开始使用Oracle的产品,我在执行下面两条命令的时候遇到了问题:ACCEPT 和PROMPT。我已经更改了行的顺序,有时候放在CHAR中,有时候删除,有时候放在PROMPT中,有时候删除。无论我怎么做还是收到错误信息。我甚至试过把ACCEPT 和PROMPT放在BEGIN的前后。
我想做的事情是这样的。在脚本的开始,我从键盘读取开始和结束日期,然后在程序的主要部分,我从一个表中使用SELECT读取,并测试看日期是否在键盘输入的两个日期之间。现在当我在SQL*Plus中执行/编译脚本的时候,我得到的错误信息是ORA-00922。

PROMPT
ACCEPT in_beg_date  PROMPT 'Enter beginning extract date mm/dd/yy '
PROMPT
ACCEPT in_end_date  PROMPT 'Enter ending extract date mm/dd/yy '
DECLARE
   beg_date VARCHAR2(8) := &in_beg_date;
   end_date VARCHAR2(8) := &in_end_date;
网管网www.bitscn.com

   beg_dte  DATE;
   end_dte  DATE;
...
BEGIN
   beg_dte := TO_DATE (beg_date, 'MM/DD/YY');
   end_dte := TO_DATE (end_date, 'MM/DD/YY');
...
   IF (outrec_abs_date >= beg_dte and <= end_dte) THEN
... 网管bitscn_com

网管朋友网www_bitscn_net

  说实话,看起来你对PROMPT 和 ACCEPT 有一个很好的理解。PROMPT 告诉SQL*Plus 在屏幕上书写一行文字。你在这里使用了两个PROMPT命令;每个命令都在屏幕上打印一个空行,这对于垂直间距很有好处。ACCEPT命令是等待用户输入一个置换变量的值。ACCEPT命令中可选的PROMPT 子句在用户输入数值的同一行中显示了一条信息。你在PL/SQL 块的外面放置PROMPT 和 ACCEPT 是正确的:他们是SQL*Plus 命令,不是PL/SQL

网管u家bitscn.net

  你可能注意到当你运行这个脚本的时候,每一个拥有置换变量的行都引起了屏幕上的两行输出,例如:
old   3:    beg_date VARCHAR2(8) := &in_beg_date;
new   3:    beg_date VARCHAR2(8) := 09/01/03; 网管朋友网www_bitscn_net

  这就显示了SQL*Plus 在看到一行包括了置换变量的代码的时候所作的工作:他用变量的数值(以&开头)置换了变量的名字。这就像你在文本编辑器,例如记事本中,用查找和置换一样,将一个字符串的每个出现(这里是&in_beg_date)都替换成了另一个字符串(09/09/03)。“原来”的行就是在代码中的样子。“新”的行是将要执行的样子。如果你执行了\"beg_date VARCHAR2(8) := 09/01/03;\"语句,会发生什么?SQL*Plus 会创建一个字符串变量并且用\":=\"右侧的数值来进行初始化。在这个案例中,它是一个数字表达式,那么SQL*Plus 就会检测\"(9/1) / 3\"这个表达式,并将答案写为'3'。你实际的意思是:

网管论坛bbs_bitsCN_com

  beg_date VARCHAR2(8) := '&in_beg_date';
  end_date VARCHAR2(8) := '&in_end_date';
  单引号是至关重要的。 中国网管论坛bbs.bitsCN.com

TAGs案例   错误   PROMPT   密码   变量   SQL   ACCEPT   Plus   置换    
 上一篇:Oracle迁移SQL Server的陷阱   下一篇:Oracle和SUN Solaris内核参数
Oracle错误案例:ORA-00922 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: