Oracle启动及关闭行移动

发布于:2025-06-19 ⋅ 阅读:(16) ⋅ 点赞:(0)

Oracle 在执行某些操作(如将LOB数据从一个表空间迁移至另一个表空间)前,需启动相关表的行移动。对应操作完成后需关闭行移动。所以本文将介绍表的行移动相关操作,需要对大家有所帮助。

1.开启某张表的行移动

ALTER TABLE your_table_name ENABLE ROW MOVEMENT;

例:开启当前用户下 TEST 表的行移动

ALTER TABLE TEST DISABLE ROW MOVEMENT;

2.关闭某张表的行移动

ALTER TABLE your_table_name DISABLE ROW MOVEMENT;

例:关闭当前用户下 TEST 表的行移动

ALTER TABLE TEST DISABLE ROW MOVEMENT;

3.查询某张表是否开启了行移动(Row Movement):

SELECT table_name, row_movement
FROM all_tables
WHERE table_name = UPPER('你的表名')
  AND owner = UPPER('你的用户名');

例:检查 RUI 用户下 TEST表是否开启了行移动

SELECT table_name, row_movement
FROM all_tables
WHERE table_name = UPPER('TEST')
  AND owner = UPPER('RUI');

4.检查DB中所有开启行移动的表

SELECT owner, table_name
FROM all_tables
WHERE row_movement = 'ENABLED';

5.检查某个 schema 下所有开启行移动的表

SELECT owner, table_name
FROM all_tables
WHERE row_movement = 'ENABLED'
AND owner=UPPER('你的用户名');

例:检查 RUI 下所有开启行移动的表

SELECT owner, table_name
FROM all_tables
WHERE row_movement = 'ENABLED'
AND owner=UPPER('RUI');

6.批量关闭所有已开启行移动(ROW MOVEMENT) 的表

可通过如下SQL生成批量执行语句:

SELECT 'ALTER TABLE "' || owner || '"."' || table_name || '" DISABLE ROW MOVEMENT;' AS sql_stmt
FROM all_tables
WHERE row_movement = 'ENABLED';

7.批量关闭 RUI 用户下所有已开启 行移动(ROW MOVEMENT)

可通过如下SQL生成批量执行语句:

SELECT 
  'ALTER TABLE "WCINSTALL"."'
  || table_name || '" DISABLE ROW MOVEMENT;' AS sql_stmt
FROM all_tables
WHERE row_movement = 'ENABLED'
  AND owner = UPPER('RUI');

网站公告

今日签到

点亮在社区的每一天
去签到