系統整合、帳號規範調整、測試帳號轉正等情況需變更 Schema 名稱。Oracle 無直接 RENAME USER 指令,需採「改舊名→建新名→同步權限」策略。
SELECT USER#, NAME, PASSWORD FROM USER$ WHERE NAME = 'TICKETS';
-- 結果範例
USER# NAME PASSWORD
----- -------- ------------------------------
78 TICKETS 21EDA78F89D6FACD
UPDATE USER$ SET NAME = 'TICKETS_BAK' WHERE USER# = 78;
COMMIT;
CREATE USER tickets IDENTIFIED BY "123456"
DEFAULT TABLESPACE yytickets
TEMPORARY TABLESPACE temp;
-- 錯誤:ORA-01920: user name 'TICKETS' conflicts with another user or role name
ALTER SYSTEM CHECKPOINT; -- 強制寫入資料檔
ALTER SYSTEM FLUSH SHARED_POOL; -- 清除字典快取,強制重讀 USER$
CREATE USER tickets IDENTIFIED BY "123456"
DEFAULT TABLESPACE yytickets
TEMPORARY TABLESPACE temp;
-- User created.
GRANT CONNECT, RESOURCE TO tickets;
COMMIT;
TICKETS_BAK 物件遷移至新 TICKETS(ALTER TABLE ... RENAME、EXP/IMP、DBMS_METADATA 等)DROP USER TICKETS_BAK CASCADE;USER$ 屬非支援操作,僅限極特殊情況,且需完整備份EXP/IMP 或 Data Pump 重建 Schema,較安全SHARED_POOL 快取衝突,否則新用戶無法建立