前事不忘,后事之师,不忘国耻!

 注册  找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2550|回复: 2

行迁移消除中的疑问!

[复制链接]

行迁移消除中的疑问!

[复制链接]
gy1982329

主题

0

回帖

2

积分

初级会员

积分
2
2008-3-8 17:21:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
exp和imp可以将行迁移删除!我不太理解!为什么这样做能实现!请斑竹和高人从理论和实际层面加以讲解!谢谢!
免责申明1、欢迎访问本站,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@dbabbs.com
ehxz

主题

0

回帖

7251

积分

管理员

积分
7251
2008-3-8 18:38:53 | 显示全部楼层

检查行链接和行迁移的方法

1.执行
utlchain.sql脚本
SQL> CREATE TABLE chained_rows (
  2  owner_name         VARCHAR2(30),
  3  table_name         VARCHAR2(30),
  4  cluster_name       VARCHAR2(30),
  5  partition_name     VARCHAR2(30),
  6  head_rowid         ROWID,
  7  analyze_timestamp  DATE );
创建chained_rows表,然后分析
SQL> ANALYZE TABLE oe.orders LIST CHAINED ROWS;
Table analyzed.
SQL> SELECT  owner_name, table_name, head_rowid
  2    FROM  chained_rows
  3    WHERE table_name = 'ORDERS';
OWNER_NAME  TABLE_NAME  HEAD_ROWID        
----------  ----------  ------------------
SALES       ORDER_HIST  AAAAluAAHAAAAA1AAA
SALES       ORDER_HIST  AAAAluAAHAAAAA1AAB
2.对行迁移的处理
  a).exp/drop/imp table
  b).alter table emp move ...;
  c).查找迁移的行,拷贝迁移的行到一个新表,删除原记录,然后从新表将行拷贝到原表
3.相关的脚本

/* Get the name of the table with migrated rows */
ACCEPT table_name PROMPT 'Enter the name of the table with migrated rows: '
/* Clean up from last execution */
SET ECHO OFF
DROP TABLE migrated_rows;
DROP TABLE chained_rows;
/* Create the CHAINED_ROWS table */
@?/rdbms/admin/utlchain
SET ECHO ON
SPOOL fix_mig
/* List the chained & migrated rows */
ANALYZE TABLE &table_name LIST CHAINED ROWS;
------------------------------------------------------------------------

/* Copy the chained/migrated rows to another table */
CREATE TABLE migrated_rows AS
  SELECT orig.*
  FROM &table_name orig, chained_rows cr
  WHERE orig.rowid = cr.head_rowid
  AND cr.table_name = upper('&table_name');
/* Delete the chained/migrated rows from the original table */
DELETE FROM &table_name
WHERE rowid IN (
  SELECT head_rowid
  FROM chained_rows);
/* Copy the chained/migrated rows back into the original table */
INSERT INTO &table_name
  SELECT *
  FROM migrated_rows;
SPOOL OFF

参考一下,不知道是否能用上。
回复

使用道具 举报

gy1982329 楼主

主题

0

回帖

2

积分

初级会员

积分
2
2008-3-8 18:59:26 | 显示全部楼层
我的意思是,导入和导出是如何实现对行迁移的删除的!后台进行了什么操作或是如何实现的!我想知道原理!谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|DBA论坛中国 ( 鲁ICP备20017503号-2 )

GMT+8, 2024-11-22 22:51 , Processed in 0.057191 second(s), 13 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表