在安装Oracle数据库的过程中,异常中止,提示ORA-00922: 选项缺失或无效
在安装界面有出错日志的位置:
于是到相关目录中查看日志:
查看trace日志,在文件末尾可以看到报错信息:
[Thread-90] [ 2021-09-14 10:14:08.995 CST ] [SQLEngine.initialize:362] m_bReaderStarted: false
[Thread-90] [ 2021-09-14 10:14:08.995 CST ] [SQLEngine.initialize:366] Starting Reader Thread...
[Thread-90] [ 2021-09-14 10:14:08.995 CST ] [SQLEngine.initialize:415] Waiting for m_bReaderStarted to be true
[Thread-90] [ 2021-09-14 10:14:09.105 CST ] [OsUtilsBase.deleteFile:1863] OsUtilsBase.deleteFile: E:\app\Administrator\cfgtoollogs\dbca\neubi\initneubiTemp.ora
[Thread-90] [ 2021-09-14 10:14:09.152 CST ] [BasicStep.execute:202] Executing Step : CLONE_POST_CREATE_SCRIPTS
[Thread-90] [ 2021-09-14 10:14:09.152 CST ] [StepErrorHandler.setIgnorableErrors:250] setting Ignorable Error: ORA-00942
[Thread-90] [ 2021-09-14 10:14:09.152 CST ] [StepErrorHandler.setIgnorableErrors:250] setting Ignorable Error: ORA-06512
[Thread-90] [ 2021-09-14 10:14:09.152 CST ] [StepErrorHandler.setIgnorableErrors:250] setting Ignorable Error: ORA-20000
[Thread-90] [ 2021-09-14 10:14:09.152 CST ] [StepErrorHandler.setIgnorableErrors:250] setting Ignorable Error: ORA-01952
[Thread-90] [ 2021-09-14 10:14:09.152 CST ] [StepErrorHandler.setIgnorableErrors:250] setting Ignorable Error: ORA-01927
[Thread-90] [ 2021-09-14 10:14:09.152 CST ] [BasicStep.configureSettings:304] messageHandler being set=oracle.sysman.assistants.util.UIMessageHandler@6efbfb30
[Thread-90] [ 2021-09-14 10:14:09.183 CST ] [SQLEngine.setSpool:1967] old Spool = null
[Thread-90] [ 2021-09-14 10:14:09.183 CST ] [SQLEngine.setSpool:1968] Setting Spool = E:\app\Administrator\cfgtoollogs\dbca\neubi\postScripts.log
[Thread-90] [ 2021-09-14 10:14:09.183 CST ] [SQLEngine.setSpool:1969] Is spool appendable? --> true
[Thread-90] [ 2021-09-14 10:14:09.402 CST ] [ClonePostCreateScripts.executeImpl:284] OraNLSLanguage: SIMPLIFIED CHINESE
[Thread-106] [ 2021-09-14 10:14:09.402 CST ] [BasicStep.handleNonIgnorableError:430] oracle.sysman.assistants.util.UIMessageHandler@6efbfb30:messageHandler
[Thread-106] [ 2021-09-14 10:14:09.402 CST ] [BasicStep.handleNonIgnorableError:431] ORA-00922: 选项缺失或无效
:msg
这里能看到JAVA installer的报错信息,但并未找到出错点。接着找,最终在postScripts中找到了出错点:
安装器在执行更改密码操作时报错,我查了下我自己设置的随机密码发现密码有问题,是以数字0开始的:
看来密码管理工具并没有不能以数据开头的限制,而SQL执行时对密码有这个限制。只记得在写程序时对关键字、变量等有不能以数据开头的限制,在这里遇到这个错误应该是命令行解析时把参数当关键字进行解析了。
此时如果忽略这个错误,后续还会报错,查看了下错误内容对数据库并未造成严重影响,最终数据库还是可以完成创建。
安装完成后检查监听和数据库状态,数据库目录下的密码文件也是存在的,除了之前报错的账号是锁定状态,其它并没有发现异常。
为了验证数字开头的密码文件能否使用,检查了密码文件及参数配置。
Windows和Linux的密码文件默认路径有点不一样
Linux 密码文件默认路径:$ORACLE_HOME/dbs/
Windows 密码文件默认路径:%ORACLE_HOME%/database/
对sys账号密码临时重置后,可以远程连接到数据库。
通过远程方式访问数据库:
再重新设置之前用到的数字开头的密码,遇到和之前安装时提示的一样的错误:
尝试通过密码文件重置密码,并不报错:
远程以sys账号连接数据库,证明数字密码可以正常使用:
同样在本地通过切换sys账号,密码是可以被识别的。可以在本地先以操作系统认证进入系统之后,再尝试切sys账号,提示输入密码,此时可以验证以数字开头的密码是可以被正常识别的。
到此可以做总结了:
以数字开头的密码在执行alter 语句时,解析会报错,这也是安装过程报错的原因。但Oracle并不对密码结构有要求,这里报错应该是SQL解析的问题,可以用双引号把密码引起来避免,如果不加引号还是要注意一下;
orapwd程序中指定以数字开头的密码并不会报错,并且sqlplus也是识别的;
最后要注意一下Oracle在Linux和Windows下的差异点:
默认密码文件在Linux下是在$ORACLE_HOME/dbs/,Windows是在%ORACLE_HOME%/database/
orapwd程序在Windows下和Linux下执行也有一点小差别,Windows下要给出全名把.ora的文件名补全,在Linux下密码文件是没有后缀的。密码文件不匹配会导致远程连接sys账号时提示密码错。
Linux下和Window下orapwd使用差异对比:
Windows: orapwd file=PWDneubi.ora entries=30 password=0PvLqf78
Linux: orapwd file=orapwhlwsdb entries=30 password=0PvLqf78
使用双引号处理以数字开头的密码: