首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 11g/12c/19c/21c 解鎖 SCOTT 使用者並重設密碼標準流程

     編輯:Oracle 資料庫基礎

Oracle 11g 起預設鎖定 SCOTT 範例帳號 (密碼 TIGER)。本文提供標準解鎖、重設密碼、授權、驗證流程,並說明 12c/18c/19c/21c 多租戶架構 (CDB/PDB) 下的操作差異。

單一實例 / 非 CDB 環境 (11g, 12c 非 CDB, 19c 非 CDB)

步驟 1: 以具備 ALTER USER 權限的帳號登入 (SYS/SYSTEM/DBA)


sqlplus / as sysdba
-- 或
sqlplus system/password
-- 或具備 DBA 角色的應用管理帳號

步驟 2: 解鎖帳號


SQL> ALTER USER scott ACCOUNT UNLOCK;
User altered.

步驟 3: 重設密碼 (強制複雜度)


SQL> ALTER USER scott IDENTIFIED BY "Sc0tt#Pass2024";
User altered.

注意:11g+ 預設啟用密碼複雜度驗證函數 (VERIFY_FUNCTION_11G),密碼需滿足長度、大小寫、數字、特殊字元要求。

步驟 4: 授予基本權限 (視需求)


SQL> GRANT CONNECT, RESOURCE TO scott;
-- 若需建立視圖/程序/同義詞
SQL> GRANT CREATE VIEW, CREATE PROCEDURE, CREATE SYNONYM TO scott;
-- 若需無限表空間配額
SQL> ALTER USER scott QUOTA UNLIMITED ON users;

步驟 5: 驗證連線


SQL> CONNECT scott/"Sc0tt#Pass2024"
Connected.
SQL> SELECT * FROM tab;  -- 查看 SCOTT 範例表 (EMP, DEPT, BONUS, SALGRADE)
-- 若表不存在,執行 @?/rdbms/admin/scott.sql (需先解鎖 SCOTT 並授權)

多租戶架構 (CDB/PDB) 環境 (12cR1+, 18c, 19c, 21c)

SCOTT 通常建立在 **PDB** 中 (而非 CDB$ROOT)。

場景 A: SCOTT 存在於特定 PDB (如 ORCLPDB)


-- 1. 連線至 CDB$ROOT
sqlplus / as sysdba

-- 2. 切換至目標 PDB
SQL> ALTER SESSION SET CONTAINER = ORCLPDB;

-- 3. 執行解鎖與授權 (同上)
SQL> ALTER USER scott ACCOUNT UNLOCK;
SQL> ALTER USER scott IDENTIFIED BY "Sc0tt#Pass2024";
SQL> GRANT CONNECT, RESOURCE TO scott;
SQL> ALTER USER scott QUOTA UNLIMITED ON users;

場景 B: SCOTT 不存在,需從種子建立 (PDB$SEED 無 SCOTT)


-- 在目標 PDB 中執行標準建立腳本
SQL> ALTER SESSION SET CONTAINER = ORCLPDB;
SQL> @?/rdbms/admin/scott.sql
-- 腳本會建立 SCOTT/TIGER 並授權,建議緊接著修改密碼
SQL> ALTER USER scott IDENTIFIED BY "Sc0tt#Pass2024" ACCOUNT UNLOCK;

場景 C: 應用容器 / Application PDB

同場景 A,但需確認應用根容器中是否已定義 SCOTT 共用使用者 (罕見)。

常見問題與解決

現象原因解決
ORA-28000: the account is locked帳號鎖定ALTER USER scott ACCOUNT UNLOCK;
ORA-01017: invalid username/password密碼錯誤 (大小寫敏感 11g+)確認密碼大小寫;重設密碼 ALTER USER scott IDENTIFIED BY "NewPass";
ORA-28001: the password has expired密碼過期 (Profile 限制)ALTER USER scott IDENTIFIED BY "NewPass" PASSWORD EXPIRE; 然後登入修改
ORA-01950: no privileges on tablespace 'USERS'無配額ALTER USER scott QUOTA UNLIMITED ON users; 或指定額度
ORA-65096: invalid common user or role name在 CDB$ROOT 嘗試建立/操作非 C## 開頭的一般使用者切換至 PDB: ALTER SESSION SET CONTAINER = pdb_name;

安全性建議

  • 生產環境禁用 SCOTT:範例帳號已知密碼、擁有 RESOURCE 角色 (含 CREATE TABLE 等),屬安全風險。ALTER USER scott ACCOUNT LOCK; REVOKE CONNECT, RESOURCE FROM scott;
  • 專用教學/測試 PDB:若需 SCOTT,建立獨立 PDB (如 TRAINING_PDB) 隔離風險。
  • 密碼複雜度 Profile:套用嚴格 Profile (PASSWORD_VERIFY_FUNCTION) 並設定 PASSWORD_LIFE_TIME, PASSWORD_GRACE_TIME。
  • 審計 SCOTT 存取:AUDIT SELECT, INSERT, UPDATE, DELETE ON scott.emp BY ACCESS;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved