ORA-00922: missing or invalid option
缺失或無效的選項
Cause:列定義或儲存子句中指定了無效選項。列有效選項僅 NOT NULL;約束需跟在數據類型後。對 DATE/LONG 指定最大長度也會觸發。
Action:修正語法,移除錯誤選項或長度規範。
CREATE TABLE t (c DATE(10)); — DATE 不接受精度;ALTER USER u IDENTIFIED BY "pass!!" ACCOUNT UNLOCK; — 密碼含特殊字符未加引號;CREATE TABLE t (c NUMBER(10,2) PRIMARY KEY NOT NULL UNIQUE); — 重複約束語法錯誤。$ORACLE_HOME/hostname_sid/sysman/config/emoms.properties 存儲明文密碼,文件權限過寬;f00bar!!),安裝時執行:
ALTER USER SYSMAN IDENTIFIED BY f00bar!! ACCOUNT UNLOCK;
ERROR at line 1: ORA-00922: missing or invalid option
ALTER USER DBSNMP IDENTIFIED BY f00bar!! ACCOUNT UNLOCK;
ERROR at line 1: ORA-00922: missing or invalid option
錯誤日誌 postDBCreation.log 直接記錄失敗 SQL,導致明文密碼落盤洩露。密碼含特殊字符 ! 在 SQL*Plus 中屬保留字,需用雙引號包裹:IDENTIFIED BY "f00bar!!"。安裝腳本未轉義導致語法錯誤 (ORA-00922),錯誤日誌記錄完整 SQL 暴露密碼。
! @ # 等 SQL*Plus 保留字,或強制雙引號包裹;emoms.properties 文件權限 chmod 600;UTLPWDMG 強制複雜度與歷史記錄。| 場景 | 錯誤寫法 | 正確寫法 |
|---|---|---|
| DATE 列定義 | c DATE(10) | c DATE |
| 密碼含特殊字符 | IDENTIFIED BY pass!! | IDENTIFIED BY "pass!!" |
| LONG 列指定長度 | c LONG(1000) | c LONG |
| 儲存子句 PCTINCREASE 0 配合 MINEXTENTS | STORAGE (MINEXTENTS 5 PCTINCREASE 0) | STORAGE (MINEXTENTS 5) 或移除 PCTINCREASE |
ORA-00922 看似單純語法錯誤,實則可能揭示安全配置缺陷。建立「語法規範 → 安全合規 → 自動化掃描」三層防線,從源頭消除此類風險。