一 ,特殊对象-分区表的改动
1. 注意事项
alter fragment是单个事务,所有的移动或者增加都会写事务,注意产生长事务,可以考虑关闭日志或者将操作分成多个小的alter fragment进行操作
alter fragment 执行时需要表级锁,面对是否记录日志将会有两种情况
记录日志:当数据移动时,原先的数据会被删除移动到新的片,但删除数据时,数据占用的extent仍是被使用状态,只有所有的数据移动后才可直接使用,需要有足够的剩余空间
不记录日志:原先的片会被保留,直到成功后会被释放
2. 针对分区表无法获取表级锁的特殊操作
alter fragment语句需要表级锁,在摘除分片或者挂载分片时可能由于其他业务要求无法独占表,所以为了避免这种情况,将会停止其他访问这张表的事务暂时终止的措施
--通过force_ddl_exec指定整数值,数据库尝试在这段时间内把其他事务进行回滚,以便相关操作可以进行
set environment force_ddl_exec "60";
set lock mode to wait 10;
set environment force_ddl_exec "off";
set environment force_ddl_exec
在日志记录或者ansi的数据库中使用
只有dbsa用户可以使用
如果没有设置锁等待上限,语句不会生效
如果另外一个用户在同一张表上执行DDL语句,alter fragment将会失败
如果有其他的用户也在执行这个语句,,第二个用户将会返回错误
如果系统表被锁住,alter fragment将会返回错误
3. 分区表初始为