首页 > 数据库 > Oracle > 关于修改objects的owner
http://www.itpub.net/696709.html
和大家讨论了一下,发现除了create table table_name as select ...;之外没有什么好的方法。我开始也是想这样做,但是考虑到表很多而且记录数非常大,不想这样做。toms_zhang的这句话是不错的:很多发明创造,就是因为人太懒了。看来懒未必就是坏事~
摘录下toms_zhang的一个例子:
下code仅供娱乐,不要乱试,否则我不负责的
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 125829120 bytes
Fixed Size 1247660 bytes
Variable Size 83887700 bytes
Database Buffers 37748736 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL> conn study/study
已连接。
SQL> create table toms_test as select * from dba_objects;
表已创建。
SQL> select count(*) from toms_test;
COUNT(*)
----------
50378
SQL>
SQL> select owner,object_name from dba_objects where object_name='TOMS_TEST';
OWNER OBJECT_NAME
----------- ----------------------
STUDY TOMS_TEST
SQL>
SQL> create user toms identified by toms default tablespace study;
用户已创建。
SQL> grant connect,resource to toms;
授权成功。
SQL>
SQL> conn /as sysdba
已连接。
SQL> select user#,name from user$ where name in ('STUDY','TOMS');
USER# NAME
---------- ------------------------------
61 STUDY
64 TOMS
SQL>
SQL> select obj#,owner#,name from obj$ where name='TOMS_TEST';
OBJ# OWNER# NAME
---------- ---------- ------------------------------
53446 61 TOMS_TEST
SQL> update obj$ set owner#=64 where name='TOMS_TEST';
已更新 1 行。
SQL> commit;
提交完成。
SQL> select obj#,owner#,name from obj$ where name='TOMS_TEST';
OBJ# OWNER# NAME
---------- ---------- ------------------------------
53446 64 TOMS_TEST
SQL>
SQL> select owner,object_name from dba_objects where object_name='TOMS_TEST';
OWNER OBJECT_NAME
----------- ----------------------
TOMS TOMS_TEST
SQL>
SQL> conn toms/toms
已连接。
SQL> select table_name from tabs;
TABLE_NAME
------------------------------
TOMS_TEST
SQL> select count(*) from toms_test;
COUNT(*)
----------
50378
SQL> conn study/study
已连接。
SQL> select table_name from tabs;
未选定行
SQL>
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 125829120 bytes
Fixed Size 1247660 bytes
Variable Size 88082004 bytes
Database Buffers 33554432 bytes
Redo Buffers 2945024 bytes
数据库装载完毕。
数据库已经打开。
SQL> select count(*) from toms.toms_test;
COUNT(*)
----------
50378
SQL>
oracle怎么不考虑到这种情况 增加各和rename tablespace差不多的功能 可以直接修改OBJECTS的owner 多好!
yangtingkun:
biti研究过通过修改数据字典的方式修改表的OWNER。
但是biti自己都不会用这个方式来进行这种操作。
如果你敢用,去深入区去找biti的帖子吧~
ZALBB:
两码事,TABLESPACE只供存储使用,而OWNER则是数据库系统
管理对象的基础,绝大多数对象都是基于OWNER概念来管理,
OWNER 涉及到的范围太广,权限,约束,过程等等,即便ORACLE提供这个功能,你也要考虑清清楚楚才敢动手。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7794469/viewspace-887166/ ,如需转载,请注明出处,否则将追究法律责任。