飘飘悠悠 发表于 2015-1-16 22:22:20

MYSQL网页编程之Oracle毛病案例:ORA-00922

DBaaS解决方案既可以解决这些问题,又能为客户节约资金。相反作为解决方案提供商,采用DBaaS模式似乎就并不那么有吸引力了,因为与企业内部署软件的解决方案相比,DBaaS意味着更低的利润。<pstyle="TEXT-INDENT:2em">ORA-00922missingorinvalidoption
0RA-00922:丧失大概有效的选项  CauseAninvalidoptionwasspecifiedindefiningacolumnorstorageclause.ThevalidoptioninspecifyingacolumnisNOTNULLtospecifythatthecolumncannotcontainanyNULLvalues.Onlyconstraintsmayfollowthedatatype.SpecifyingamaximumlengthonaDATEorLONGdatatypealsocausesthiserror.

  ActionCorrectthesyntax.Removetheerroneousoptionorlengthspecificationfromthecolumnorstoragespecification.
  案例一:Oracle明文暗码毛病
  受影响体系:
  OracleOracle10gApplicationServer9.0.4.0
  OracleOracle10gApplicationServer10.1.0.2
  形貌:
  OracleDatabase是一款贸易性子年夜型数据库体系。
  Oracle10g存在包括明文暗码的全局可读文件,当地打击者能够使用这个毛病取得对数据库的会见。
  SYSMAN帐户的暗码可在$ORACLE_HOME/hostname_sid/sysman/config/emoms.properties文件中取得,此文件全局可读。
  别的假如安装Oracle10g时供应SYS,SYSTEM,DBSNMP和SYSMAN帐户暗码不异,而且暗码有惊讶号(如f00bar!!),那末当设置SYSMAN和DBSNMP暗码时DB安装会呈现毛病,毛病信息"postDBCreation.log"会纪录暗码:
  alteruserSYSMANidentifiedbyf00bar!!accountunlock
ERRORatline1:
ORA-00922:missingorinvalidoption
  alteruserDBSNMPidentifiedbyf00bar!!accountunlock
ERRORatline1:
ORA-00922:missingorinvalidoption
  <*DavidLitchfield(david@nextgenss.com)

  链接:http://marc.theaimsgroup.com/?  l=bugtraq&m=110382247308064&w=2
  *>
  倡议:
  厂商补钉:
  Oracle
  ------
  ORACLE已公布patch(#68)来修改此毛病:
  http://metalink.oracle.com/


案例二:置换变量
<p>  我才刚入手下手利用Oracle的产物,我在实行上面两条命令的时分碰到了成绩:ACCEPT和PROMPT。我已变动了行的按次,偶然候放在CHAR中,偶然候删除,偶然候放在PROMPT中,偶然候删除。不管我怎样做仍是收到毛病信息。我乃至试过把ACCEPT和PROMPT放在BEGIN的前后。
我想做的事变是如许的。在剧本的入手下手,我从键盘读取入手下手和停止日期,然后在程序的次要部分,我从一个表中利用SELECT读取,并测试看日期是不是在键盘输出的两个日期之间。如今当我在SQL*Plus中实行/编译剧本的时分,我失掉的毛病信息是ORA-00922。
PROMPTACCEPTin_beg_datePROMPTEnterbeginningextractdatemm/dd/yyPROMPTACCEPTin_end_datePROMPTEnterendingextractdatemm/dd/yyDECLAREbeg_dateVARCHAR2(8):=&in_beg_date;end_dateVARCHAR2(8):=&in_end_date;beg_dteDATE;end_dteDATE;...BEGINbeg_dte:=TO_DATE(beg_date,MM/DD/YY);end_dte:=TO_DATE(end_date,MM/DD/YY);...IF(outrec_abs_date>=beg_dteand<=end_dte)THEN...
  说假话,看起来你对PROMPT和ACCEPT有一个很好的了解。PROMPT告知SQL*Plus在屏幕上誊写一行笔墨。你在这里利用了两个PROMPT命令;每一个命令都在屏幕上打印一个空行,这关于垂直间距很有优点。ACCEPT命令是守候用户输出一个置换变量的值。ACCEPT命令中可选的PROMPT子句在用户输出数值的统一行中显现了一条信息。你在PL/SQL块的表面安排PROMPT和ACCEPT是准确的:他们是SQL*Plus命令,不是PL/SQL。
  你大概注重到当你运转这个剧本的时分,每个具有置换变量的行都引发了屏幕上的两行输入,比方:
old3:beg_dateVARCHAR2(8):=&in_beg_date;
new3:beg_dateVARCHAR2(8):=09/01/03;
  这就显现了SQL*Plus在看到一行包含了置换变量的代码的时分所作的事情:他用变量的数值(以&开首)置换了变量的名字。这就像你在文本编纂器,比方记事本中,用查找和置换一样,将一个字符串的每一个呈现(这里是&in_beg_date)都交换成了另外一个字符串(09/09/03)。“本来”的行就是在代码中的模样。“新”的行是将要实行的模样。假如你实行了"beg_dateVARCHAR2(8):=09/01/03;"语句,会产生甚么?SQL*Plus会创立一个字符串变量而且用":="右边的数值来举行初始化。在这个案例中,它是一个数字表达式,那末SQL*Plus就会检测"(9/1)/3"这个表达式,并将谜底写为3。你实践的意义是:
  beg_dateVARCHAR2(8):=&in_beg_date;
  end_dateVARCHAR2(8):=&in_end_date;
  单引号是相当主要的。
  本文国际http://searchoracle.techtarget.com/

解决方案提供商应记住DBaaS通常仅仅是解决方案的一部分。客户之所以与他们的解决方案提供商协同工作,不仅是因为他们出售的产品,而且还因为他们所提供的服务。

小魔女 发表于 2015-1-19 09:36:10

原来公司用过MYSQL自己也只是建个表写个SQL

小妖女 发表于 2015-1-26 22:28:48

以前的DTS轻盈简单。但是现在的SSIS虽然功能强大了很多,但是总是让人感觉太麻烦。看看论坛中询问SSIS的贴子就知道。做的功能太强大了,往往会有很多用户不会用了

冷月葬花魂 发表于 2015-2-4 22:10:24

可以动态传入参数,省却了动态SQL的拼写。

灵魂腐蚀 发表于 2015-2-10 21:48:36

其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!

愤怒的大鸟 发表于 2015-3-1 16:01:45

呵呵,这就是偶想说的

飘飘悠悠 发表于 2015-3-10 20:23:36

索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。

谁可相欹 发表于 2015-3-17 10:11:34

这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片?

精灵巫婆 发表于 2015-3-24 07:19:12

如果处理少量数据,比如几百条记录的数据,我不知道这两种情况哪个效率更高,如果处理大量数据呢?比如有表中有20万条记录.
页: [1]
查看完整版本: MYSQL网页编程之Oracle毛病案例:ORA-00922