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');