ITPUB论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
更多
查看: 8945|回复: 67

[精华] 如何快速安全的更改表的owner [复制链接]

版主

高级会员

精华贴数
4
技术积分
3185
社区积分
405
注册时间
2003-10-6
论坛徽章:
16
授权会员
日期:2005-10-30 17:05:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:012010新春纪念徽章
日期:2010-03-01 11:08:352010年世界杯参赛球队:阿尔及利亚
日期:2010-02-26 11:08:08生肖徽章2007版:蛇
日期:2009-03-02 15:39:19CTO参与奖
日期:2009-02-12 11:45:482008北京奥运纪念徽章:羽毛球
日期:2008-08-31 09:26:40ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
发表于 2009-6-27 11:39:22 |显示全部楼层
前两天有人问我这个问题,我说你先自己去搜索下答案吧。

后来他说没有找到合适的方法,我搜索了一下,竟然发现没有人提到exchange partition的方法。

exchange partition的方法是最安全,也是最快速的方法。

所以这里写出这种方法供大家参考。

假设有A,B两个用户,我们想把TEST表从A用户移到B用户。

我们以非分区表作为例子:

    SQL> conn a/a
    Connected.
    SQL> create table test(x int);

    Table created.

    SQL> create index test_idx on test(x);

    Index created.

    SQL> insert into test select rownum from dual connect by level <10000;

    9999 rows created.

    SQL> commit;

    Commit complete.

    SQL> conn b/b
    Connected.

    SQL> create table temp(x int) partition by range (x)
    2 (partition part0 values less than (-1),
    3 partition part1 values less than (maxvalue));

    Table created.

    SQL> create table test(x int);

    Table created.

    SQL> create index temp_idx on temp(x) local;

    Index created.

    SQL> create index test_idx on test(x);

    Index created.

    SQL> alter table temp exchange partition part1 with table a.test including indexes without validation;

    Table altered.

    SQL> alter table temp exchange partition part1 with table test including indexes without validation;

    Table altered.

    SQL> select count(*) from a.test;

    COUNT(*)
    ———-
    0

    SQL> select count(*) from b.test;

    COUNT(*)
    ———-
    9999

如果是分区表,操作过程如下:

    SQL> conn a/a
    Connected.

    SQL> create table test(x int) partition by range (x)
    2 (partition part0 values less than (100),
    3 partition part1 values less than (maxvalue));

    Table created.

    SQL> create index test_idx on test(x) local;

    Index created.

    SQL> insert into test select rownum from dual connect by level <1000;

    999 rows created.

    SQL> commit;

    Commit complete.

    SQL> conn b/b
    Connected.
    SQL> create table temp(x int);

    Table created.

    SQL> create index temp_idx on temp(x);

    Index created.

    SQL> create table test(x int) partition by range (x)
    2 (partition part0 values less than (100),
    3 partition part1 values less than (maxvalue));

    Table created.

    SQL> create index test_idx on test(x) local;

    Index created.

    SQL> select count(*) from a.test;

    COUNT(*)
    ———-
    999

    SQL> select count(*) from b.test;

    COUNT(*)
    ———-
    0

    SQL> alter table a.test exchange partition part0 with table temp including indexes without validation;

    Table altered.

    SQL> alter table test exchange partition part0 with table temp including indexes without validation;

    Table altered.

    SQL> select count(*) from a.test;

    COUNT(*)
    ———-
    900

    SQL> select count(*) from b.test;

    COUNT(*)
    ———-
    99

    SQL> alter table a.test exchange partition part1 with table temp including indexes without validation;

    Table altered.

    SQL> alter table test exchange partition part1 with table temp including indexes without validation;

    Table altered.

    SQL> select count(*) from a.test;

    COUNT(*)
    ———-
    0

    SQL> select count(*) from b.test;

    COUNT(*)
    ———-
    999

复合分区表的情况大同小异,大家可以自己试验一下。


更多文章请看:http://www.dbafan.com :)

精华贴数
0
技术积分
2255
社区积分
6
注册时间
2008-5-17
论坛徽章:
10
数据库板块每日发贴之星
日期:2009-06-04 01:01:02祖国60周年纪念徽章
日期:2009-10-09 08:28:002009日食纪念
日期:2009-07-22 09:30:00数据库板块每日发贴之星
日期:2009-06-28 01:01:02数据库板块每日发贴之星
日期:2009-06-15 01:01:02数据库板块每日发贴之星
日期:2009-06-14 01:01:02数据库板块每日发贴之星
日期:2009-06-09 01:01:02数据库板块每日发贴之星
日期:2009-06-07 01:01:02授权会员
日期:2009-06-06 10:43:16数据库板块每日发贴之星
日期:2010-12-01 01:01:01
发表于 2009-6-27 11:41:15 |显示全部楼层
先顶后看
I believe I can do it

http://www.eygle.com

使用道具 举报

精华贴数
0
技术积分
2255
社区积分
6
注册时间
2008-5-17
论坛徽章:
10
数据库板块每日发贴之星
日期:2009-06-04 01:01:02祖国60周年纪念徽章
日期:2009-10-09 08:28:002009日食纪念
日期:2009-07-22 09:30:00数据库板块每日发贴之星
日期:2009-06-28 01:01:02数据库板块每日发贴之星
日期:2009-06-15 01:01:02数据库板块每日发贴之星
日期:2009-06-14 01:01:02数据库板块每日发贴之星
日期:2009-06-09 01:01:02数据库板块每日发贴之星
日期:2009-06-07 01:01:02授权会员
日期:2009-06-06 10:43:16数据库板块每日发贴之星
日期:2010-12-01 01:01:01
发表于 2009-6-27 11:49:22 |显示全部楼层
有意思,O(∩_∩)O~
I believe I can do it

http://www.eygle.com

使用道具 举报

版主

半听可乐

精华贴数
4
技术积分
10614
社区积分
43535
注册时间
2008-1-18
论坛徽章:
107
现任管理团队成员
日期:2011-05-07 01:45:08ITPUB长老会成员
日期:2011-03-01 09:21:38蜘蛛蛋
日期:2012-02-05 17:55:512012新春纪念徽章
日期:2012-02-07 09:59:35
发表于 2009-6-27 20:44:13 |显示全部楼层
好贴!
人面不知何处去 亦无桃花亦无春
|找紅包|找找徽章|
进入虎吧传送门

使用道具 举报

精华贴数
0
技术积分
3356
社区积分
86
注册时间
2008-8-16
论坛徽章:
23
数据库板块每日发贴之星
日期:2008-08-25 01:02:022010广州亚运会纪念徽章:板球
日期:2010-12-31 18:45:232011新春纪念徽章
日期:2011-01-04 10:34:48生肖徽章2007版:兔
日期:2011-01-20 12:58:492011新春纪念徽章
日期:2011-02-18 11:43:342012新春纪念徽章
日期:2012-01-04 11:54:26数据库板块每日发贴之星
日期:2011-08-14 01:01:01茶鸡蛋
日期:2011-08-14 16:42:13ITPUB十周年纪念徽章
日期:2011-09-27 16:32:492010新春纪念徽章
日期:2010-01-04 08:33:08祖国60周年纪念徽章
日期:2009-10-09 08:28:00ITPUB8周年纪念徽章
日期:2009-09-27 10:21:22
发表于 2009-6-27 23:53:07 |显示全部楼层
tom书上分区那一章有讲到
Keep studying.............
BLOG:http://space.itpub.net/?15203236
淘宝北京分布式计算招聘火热进行中http://www.itpub.net/viewthread.php?tid=1466948&highlight=%CC%D4%B1%A6

使用道具 举报

精华贴数
12
技术积分
56553
社区积分
11423
注册时间
2008-1-16
论坛徽章:
238
ITPUB年度最佳版主
日期:2011-12-28 15:24:18蛋疼蛋
日期:2012-02-09 18:55:27
发表于 2009-6-28 08:19:34 |显示全部楼层
分区表不能直接与分区表交换所以
如果对换分区表,用普通表过渡
如果对换普通表,用分区表过渡

使用道具 举报

精华贴数
0
技术积分
3148
社区积分
2345
注册时间
2009-2-14
论坛徽章:
36
丹佛掘金
日期:2009-04-02 18:23:20ITPUB十周年纪念徽章
日期:2011-09-27 16:32:492011新春纪念徽章
日期:2011-01-04 10:24:02NBA季后赛之星
日期:2010-06-21 13:24:43NBA季后赛纪念徽章
日期:2010-06-21 13:18:42NBA常规赛纪念章
日期:2010-04-15 14:01:112010新春纪念徽章
日期:2010-01-04 08:33:08生肖徽章2007版:马
日期:2009-10-23 15:33:01祖国60周年纪念徽章
日期:2009-10-09 11:30:56生肖徽章2007版:牛
日期:2009-06-15 15:12:49生肖徽章2007版:虎
日期:2009-04-18 13:52:142012新春纪念徽章
日期:2012-01-04 11:54:46
发表于 2009-6-28 12:28:09 |显示全部楼层
学习一下.

使用道具 举报

精华贴数
8
技术积分
49203
社区积分
22313
注册时间
2001-10-15
论坛徽章:
184
蜘蛛蛋
日期:2012-02-03 17:20:24迷宫蛋
日期:2011-12-20 08:39:39茶鸡蛋
日期:2011-12-01 22:49:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41咸鸭蛋
日期:2012-01-06 16:55:17蜘蛛蛋
日期:2011-10-20 15:51:252012新春纪念徽章
日期:2012-01-04 11:49:54迷宫蛋
日期:2011-10-29 11:12:59复活蛋
日期:2011-12-14 09:37:30灰彻蛋
日期:2011-12-30 14:51:36ITPUB年度最佳版主
日期:2011-12-28 15:24:18紫蛋头
日期:2011-08-31 10:57:28
发表于 2009-6-29 15:57:42 |显示全部楼层
dbms_redefinition 包里带了对象属主,估计用这个包效率也不错.

使用道具 举报

版主

版主

精华贴数
2
技术积分
43704
社区积分
23993
注册时间
2002-10-29
论坛徽章:
146
生肖徽章2007版:羊
日期:2009-05-04 15:15:472010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:04:592010新春纪念徽章
日期:2010-04-13 13:57:03ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512010世博会纪念徽章
日期:2010-10-19 09:54:252010广州亚运会纪念徽章:跆拳道
日期:2010-12-09 15:29:012010广州亚运会纪念徽章:垒球
日期:2010-12-15 11:00:282010广州亚运会纪念徽章:赛艇
日期:2010-12-25 19:39:092011新春纪念徽章
日期:2011-01-04 10:24:582010广州亚运会纪念徽章:藤球
日期:2011-01-17 16:29:212010新春纪念徽章
日期:2010-01-04 08:33:08
发表于 2009-6-29 16:01:55 |显示全部楼层
Good
好好学习,天天向上------------------------------我也有itpub邮箱了耶"$我的id"@itpub.nethttp://www.dbanotes.net/EvDBT  ORAPERF ASKTOM TAHITI IXORAEygle

使用道具 举报

注册会员

高级会员

精华贴数
0
技术积分
5856
社区积分
15303
注册时间
2005-8-12
论坛徽章:
343
ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52ITPUB9周年纪念徽章
日期:2010-10-08 09:28:52每周论坛发贴之星
日期:2010-07-18 01:36:13每周论坛发贴之星
日期:2010-07-11 01:36:01每周论坛发贴之星
日期:2010-06-27 01:36:22每周论坛发贴之星
日期:2010-06-20 01:35:41每周论坛发贴之星
日期:2010-04-18 01:35:44每周论坛发贴之星
日期:2010-04-11 01:35:24每周论坛发贴之星
日期:2010-04-04 01:35:59每周论坛发贴之星
日期:2010-03-28 01:35:38每周论坛发贴之星
日期:2010-03-21 01:35:59
发表于 2009-6-29 16:49:54 |显示全部楼层
顶一下

使用道具 举报

相关内容推荐
您需要登录后才可以回帖 登录 | 注册

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 邮箱 虎吧 老博客 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
  
回顶部