oracle快速更改表名称,使用“基表修改法”快速修改Oracle用户名(z)

Oracle中没有提供直接修改用户名的方法,即使在11gR2中也没有提供具体的手段。由于没有直接修改用户名的方法,因此在Oracle中若要修改用户名,通常是比较周折的。通常修改用户名的一种方法是:重新创建一个新用户,把原用户中的数据使用EXP/IMP方法迁移到新用户中,最后删除原用户。如果用户所包含的数据量非常的巨大,这个过程将相当的耗时,对系统的冲击也比较大。

有没有更好的方法来完成这个修改用户名的方法呢?这里给出一个通过修改Oracle数据库基表USER$达到修改Oracle用户名的目的。

1.在基表user$中查看待修改用户TEST的基本信息

SQL> conn /as sysdba

Connected.

SQL> select user#,name,password from user$ where name ='TEST';

USER# NAME                           PASSWORD

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

91 TEST                           7A0F2B316C212D67

注意:里面存放的用户都是大写!

2.直接使用update语句将USER#列修改为新的用户名SECOOLER

1)修改

SQL> update user$ set name='SECOOLER' where user#=91;

1 row updated.

2)提交

SQL> commit;

Commit complete.

3)确认修改完毕

SQL> select user#,name,password from user$ where USER# = 91;

USER# NAME                           PASSWORD

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

91 SECOOLER                       7A0F2B316C212D67

3.为使新用户的密码生效,我们尝试重置新用户名SECOOLER的密码

SQL> alter user secooler identified by secooler;

User altered.

4. 测试连接

SQL> conn secooler/secooler

Connected.

说明:以上是在oracle11g 11.1.0.6.0 版本测试成功。

以下是在oracle10g的版本上执行。

4.手工执行检查点操作,将Database Buffer Cache中的数据强制写出到外存,这一步骤不是关键。

SQL>  alter system checkpoint;

System altered.

5.关键步骤在此--强制刷新Shared Pool!因为Oracle的数据字典信息是缓存在Shared Pool的Dictionary Cache中的。

SQL> alter system flush shared_pool;

System altered.

6.开始修改SECOOLER的密码,成功!整个通过基表修改方法修改用户名的操作全部完成。

1)修改密码,成功。

SQL> alter user secooler identified by secooler;

User altered.

2)确认密码确实发生了变化

SQL> select user#,name,password from user$ where USER# = 65;

USER# NAME                           PASSWORD

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

91  SECOOLER                        7A0F2B316C212D67

3)测试新用户的可用性

SQL> conn secooler/secooler

Connected.

SQL>  show user

USER is "SECOOLER"

7.小结

在修改完基表后,更彻底的使其生效的方法是重新启动数据库。不过无论是使用“flush shared_pool”还是“startup force;”对于运行要求比较高的生产系统来说都会面临数据库短暂无法提供服务的情况。因此,在使用这种方法之前同样需要做好计划,预见到影响。

注意:不建议使用这种方法来修改用户名,早期规划并严格按照规范执行避免用户名的随意修改才是正途。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值