oracle创建实例时出现ORA- 00922缺失或无效,忽略后出现ORA-28000账号已被锁定。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle创建实例时出现ORA- 00922缺失或无效,忽略后出现ORA-28000账号已被锁定。相关的知识,希望对你有一定的参考价值。

使用sql plus创建表时同样出现ORA- 00922缺失或无效,检查数次没发现错误(而且我是照书本打的...),这是什么问题?如何解决?我是ORACLE的新手,才刚开始学,希望能得到有经验人士的帮助。

这是属于在前面配置管理员密码的时候,采用了数字开头的密码,而Oracle不支持数字开头的密码,但当时不提示出错。据说包含其他非法特殊字符也可能产生此问题。记录一下,给自己备忘:ORA-00922: 选项缺失或无效
错误原因:一般是语句的语法有问题。比如命名不对,关键字写错等等。对于非标准的命名,一般采用双引号来创建。
解决办法:
标识符命名规则:
1、必须以字母开始。
2、长度不能超过30个单字节字符。
3、只能包括A-Z,a-z,0-9,_,$和#。
4、不能在相同用户下建立两个同名的对象。
5、不能使用保留字和关键字
参考技术A 创建实例只是启动数据库的第一步,此时数据库还没有启动,你是不能登陆的,只能数据库打开了才能登陆。
没有遇到你说的错误,可以先把数据库shutdown,然后再次startup,如果号不行的话,把错误贴出来看看本回答被提问者和网友采纳
参考技术B 是你在设管理员密码时出了错,就是楼下说的那样,你可以在dboc管理中修改合法密码,另外解除锁定账号。具体可参考https://www.cnblogs.com/sdd53home/p/5069267.html 参考技术C 【视频教学】在WIN7上部署Oracle 11gR2+PL/SQL Developer+SQL Developer
可以参照以下视频安装,视频中给出了所有所需介质
http://www.tudou.com/programs/view/VK1Z4yBS7BY/
参考技术D 应该是你的账号多次登陆追问

我建实例时就已经出现ORA- 00922缺失或无效,忽略后出现ORA-28000账号已被锁定。

运行 Oracle 调度程序时出现错误:ORA-20001:必须从应用程序会话中调用此过程

【中文标题】运行 Oracle 调度程序时出现错误:ORA-20001:必须从应用程序会话中调用此过程【英文标题】:Run Oracle scheduler with error: ORA-20001: This procedure must be invoked from within an application session 【发布时间】:2016-12-12 07:08:18 【问题描述】:

我正在使用 Oracle Apex 构建交互式报告。目前,我使用apex_mail 包创建了一个触发器,以便在表更新时发送电子邮件。我还创建了一个调度程序,它运行一个每天更新表的过程。程序可以自己运行成功,但是在job中运行时,job失败,详细错误为

ORA-20001: This procedure must be invoked from within an application session. 
ORA-06512: at "APEX_050000.WWV_FLOW_MAIL", line 562 
ORA-06512: at "APEX_050000.WWV_FLOW_MAIL", line 588 
ORA-06512: at "APEX_050000.WWV_FLOW_MAIL", line 621 
ORA-06512: at "APEX_050000.WWV_FLOW_MAIL_API", line 47 
ORA-06512: at "USER.EMAIL_UPDATED", line 3 
ORA-04088: error during execution of trigger 'USER.EMAIL_UPDATED' 
ORA-06512: at "USER.CHANGE_CURRENT_CONTACT", line 19 
ORA-06512: at line 1

只有将use_current_session属性设置为true,我才能使用如下命令成功运行作业。

 BEGIN
 DBMS_SCHEDULER.RUN_JOB(
    JOB_NAME            => 'update_contact',
    USE_CURRENT_SESSION => TRUE);
 END;

我在互联网上搜索,发现这与安全问题有关。我尝试使用select workspace_id from apex_applications where application_id = :p_app_id 添加工作区ID 并添加命令wwv_flow_api.set_security_group_id(workspace_id);。但这不起作用。

以下是我发送邮件的源代码。

 create or replace trigger email_updated
 after update on users_info
 for each row
 begin
 apex_mail.send(
    p_to       => 'Helen@oracle.com', 
    p_from     => 'Jason@oracle.com',
    p_body     => '',
    p_body_html     => '<b>Please</b> review the app for details');,
    p_subj     => 'Alert Email'); 
  end;

我该如何解决?提前感谢您的帮助!

【问题讨论】:

我也遇到了同样的问题,但是通过 select workspace_id from apex_applications where application_id = :p_app_id 并添加了命令 wwv_flow_api.set_security_group_id(workspace_id);在 apex_mail.send() 调用之前在相同的函数和过程/函数中。希望这会对你有所帮助。 这不适用于我的程序 【参考方案1】:

不要使用 apex_mail 发送邮件,而是尝试使用基于 UTL_SMTP 或 UTL_MAIL 的另一个过程。你可以在这里找到例子(sending email from Oracle)。 APEX_MAIL 无法从计划的作业中运行,因为该作业在单独的会话中运行。

【讨论】:

以上是关于oracle创建实例时出现ORA- 00922缺失或无效,忽略后出现ORA-28000账号已被锁定。的主要内容,如果未能解决你的问题,请参考以下文章

创建表时出现“ORA-00922:缺少或无效选项”

编译触发器时出现 Oracle 错误 ORA-00922

创建oracle数据库时,出现ORA-00922: 选项缺失或无效

ORA-00922:选项缺失或无效

ORACLE安装报错

ORA-00922: 创建 PL/SQL 过程时选项丢失或无效