把程序下载到本地了,oracle 10g也装了,建表空间和用户aa,以aa登陆,将远程数据库的数据导入到里面。
突然发现程序里面所有的表名前面都带有用户名bb。而我不想改程序,就需要将本地的用户aa也改为bb。
SQL> conn sys/admin;
Connected.
SQL> show user
USER is "SYS"
SQL> UPDATE USER$ SET NAME='BB' WHERE NAME='AA';
1 row updated.
SQL> commit;
Commit complete.
SQL> ALTER SYSTEM CHECKPOINT;
System altered.
SQL> ALTER SYSTEM FLUSH SHARED_POOL;
System altered.
SQL> alter user BB identified by b;
User altered.
ALTER SYSTEM CHECKPOINT;--强制写入数据文件
ALTER SYSTEM FLUSH SHARED_POOL;--清除缓存数据字典信息
注释:重要的数据库不建议这样做。
ps:在这种方法之前,曾这样做过。
如果新建一个用户bb,并给bb授予aa的权限
select 'grant select,insert,update,delete on aa.' || table_name || ' to bb;' from user_tables;
以sys登陆,将这个sql语句的结果执行一遍,在以bb登陆,发现对表操作的时候,依然要带上表的拥有者aa,很不方便。而且在plsql界面的tables菜单下,也不会出现aa的表名。
因此,只能将aa改名为bb最省事了。