--直接修改底层表 USER$ 更换用户名SQL> UPDATE USER$ SET NAME='TT' WHERE USER#=91;已更新 1 行。SQL> COMMIT;提交完成。SQL> ALTER SYSTEM CHECKPOINT;系统已更改。SQL> ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890';ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890' *ERROR 位于第 1 行:ORA-01918: 用户'TT'不存在 强制Oracle 读取实际数据,而不是读取缓存SQL> ALTER SYSTEM FLUSH SHARED_POOL;系统已更改。SQL> ALTER USER TT IDENTIFIED BY VALUES '294CE6E7131DD890';用户已更改。 测试连接SQL> CONN TT/TT 已连接。SQL> SELECT * FROM TAB;TNAME TABTYPE CLUSTERID------------------------------ ------- ---------- TEST_TT TABLESQL> CONN / AS SYSDBA 已连接。SQL> SHOW USER USER 为"SYS"SQL> SHUTDOWN IMMEDIATE数据库已经关闭。 已经卸载数据库。ORACLE 例程已经关闭。 SQL> STARTUPORACLE 例程已经启动。......数据库装载完毕。 数据库已经打开。 可以看出没有再恢复为TESTSQL> SELECT USER#,NAME,PASSWORD FROM USER$ WHERE USER#=91; USER# NAME PASSWORD ---------- ------------------------------ ---------------- 91 TT 294CE6E7131DD890SQL> CONN TT/TT已连接。 查看数据对象SQL> SELECT * FROM TAB;TNAME TABTYPE CLUSTERID------------------------------ ------- ---------- TEST_TT TABLESQL> SELECT * FROM TEST_TT;A-A 对象权限依然有效SQL> SELECT * FROM TEST1.TEST1_TT;A-A 系统权限依然有效SQL> CREATE TABLE KK AS SELECT * FROM TEST1.TEST1_TT;表已创建。SQL> SELECT * FROM TAB;TNAME TABTYPE CLUSTERID------------------------------ ------- ----------KK TABLETEST_TT TABLESQL> CONN / AS SYSDBA已连接。