ORACLE修改字段大小过程分析

(1)测试表

-- Create table
create table RECALL.RECALL_TIMELY_FOX
(
  ID          NUMBER(16) not null,
  LOGIN_TIME  DATE,
  CN          VARCHAR2(50),
  CN_MASTER   VARCHAR2(100),
  GAME_TYPE   NUMBER(2) default 1,
  LOGIN_IP    VARCHAR2(20),
  INSERT_TIME DATE default sysdate
)

(2)修改字段大小测试(变大)

--执行10046事件
alter session set events '10046 trace name context forever,level 12';
--修改表字段信息
alter table RECALL.RECALL_TIMELY_FOX modify  CN VARCHAR2(100);
--获得当前trace文件生成路径
select tracefile from v$process where addr in (select paddr from v$session where sid in (select distinct sid from v$mystat));

--使用oracle server自带的tkprof工具解析trace文件
tkprof /U01/app/oracle/diag/rdbms/s3megdb/megdb/trace/megdb_ora_9236.trc /home/oracle/alter_test.log

--查看解析后的日志内容如下:

可以看到表上加了一个EXCLUSIVE MODE  NOWAIT的锁,但其主要操作的是数据字典表,锁占用时间几乎可以忽略不计,所以几乎不会影响业务。

(3)修改字段大小测试(变小)

alter table RECALL.RECALL_TIMELY_FOX modify CN_MASTER VARCHAR2(90);

可以看到缩短长度的操作,还会以EXCLUSIVE模式锁表,但需要以FIRST_ROWS优化器模式,执行全表扫描,判断已存数据是否有超长的记录,因此相比扩大的操作执行时间会略久,但基本可控。

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#慧#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值