如何删除oracle用户数据库用户名,Oracle 中如何更改用户名

实际工作中,有时候需要修改用户名,而通常的做法是exp imp这样的方式,而如果数据量大的话exp imp的方式会很浪费时间,所以下面写上如何通过修改Oracle基表的方式来修改用户名。

-- 直接修改底层表USER$更改用户名(该方法在Oracle9i中测试通过)

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 TABLE

SQL> CONN / AS SYSDBA

已连接。

SQL> SHOW USER

USER 为"SYS"

SQL> SHUTDOWN IMMEDIATE

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> STARTUP

ORACLE 例程已经启动。

......

数据库装载完毕。

数据库已经打开。

可以看出没有再恢复为TEST

SQL> SELECT USER#,NAME,PASSWORD FROM USER$ WHERE USER#=91;

USER# NAME PASSWORD

---------- ------------------------------ ----------------

91 TT 294CE6E7131DD890

SQL> CONN TT/TT

已连接。

查看数据对象

SQL> SELECT * FROM TAB;

TNAME TABTYPE CLUSTERID

------------------------------ ------- ----------

TEST_TT TABLE

SQL> 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 TABLE

TEST_TT TABLE

SQL> CONN / AS SYSDBA

已连接。

SQL> SHOW USER

USER 为"SYS"

--DROP USER 也没有问题

SQL> DROP USER TT CASCADE;

用户已丢弃

SQL> DROP USER TEST1 CASCADE;

用户已丢弃0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值