楼主: liubo1977

如何更改表结构???

[复制链接]
论坛徽章:
38
2010新春纪念徽章
日期:2010-01-04 08:33:082012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:25版主2段
日期:2012-05-15 15:24:11优秀写手
日期:2013-12-18 09:29:08马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14
11#
发表于 2008-7-24 22:16 | 只看该作者
原帖由 liubo1977 于 2008-7-23 09:26 发表
我没有说清楚,应该是阻塞等待,我等了一个多小时都没有反应。



楼主早说吗,我还当是死机了呢。
如果没死机的话,应该查查等待事件、V$LOCK这些视图吗。看看在等什么、有什么锁。

使用道具 举报

回复
论坛徽章:
68
2015年新春福章
日期:2015-03-06 11:57:31奥运会纪念徽章:手球
日期:2012-09-13 15:50:49奥运会纪念徽章:水球
日期:2012-08-26 20:46:49版主1段
日期:2012-05-15 15:24:112012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-01-04 11:49:54
12#
发表于 2008-7-25 01:31 | 只看该作者
死机 or wait, big difference a!

使用道具 举报

回复
论坛徽章:
112
2008新春纪念徽章
日期:2008-02-13 12:43:03马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14马上有车
日期:2014-11-03 12:40:39沸羊羊
日期:2015-03-04 14:43:432015年新春福章
日期:2015-03-06 11:57:31慢羊羊
日期:2015-03-09 16:15:39
13#
发表于 2008-7-25 14:25 | 只看该作者
根据我的经验,你最好查一下这个表是否被其他的pl/sql object所引用,在11g之前,你修改表的属性的时候,会导致依赖这个表的相关属性的那些pl/sql变为invalid,同时,你的系统中,可能彼此互相递归引用了很多,会导致很多的pl/sql object invalid,在高并发的时候,会导致大量的libary cache pin/lock,给客户端的感觉就是hang.

所以Oracle 在11g中,对这个缺憾也做了改进。当然了,更多的是性能上有了提升,Oracle不用再花费额外的时间去编译这些invlid object了。

使用道具 举报

回复
论坛徽章:
36
数据库板块每日发贴之星
日期:2008-06-23 01:01:58奥运会纪念徽章:足球
日期:2012-08-21 19:26:212013年新春福章
日期:2013-02-25 14:51:24蜘蛛蛋
日期:2013-05-03 17:38:25一汽
日期:2013-08-19 16:12:56保时捷
日期:2013-10-18 23:41:21阿斯顿马丁
日期:2013-11-11 14:17:47大众
日期:2013-11-17 16:50:19问答徽章
日期:2014-01-13 00:25:10马上有车
日期:2014-08-03 11:06:20
14#
发表于 2008-7-26 23:47 | 只看该作者
学习.不错,可能有session对此表进行操作吧.查v$lock,v$locked_object;

使用道具 举报

回复
论坛徽章:
76
双子座
日期:2015-07-28 14:26:072012新春纪念徽章
日期:2012-02-13 15:09:52ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15鲜花蛋
日期:2011-08-26 02:02:24管理团队成员
日期:2011-05-07 01:45:082010广州亚运会纪念徽章:皮划艇
日期:2011-04-18 11:24:412011新春纪念徽章
日期:2011-02-18 11:43:342011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:15
15#
发表于 2008-7-29 09:52 | 只看该作者
原帖由 Toms_zhang 于 2008-7-25 14:25 发表
根据我的经验,你最好查一下这个表是否被其他的pl/sql object所引用,在11g之前,你修改表的属性的时候,会导致依赖这个表的相关属性的那些pl/sql变为invalid,同时,你的系统中,可能彼此互相递归引用了很多,会导致很多的pl/sql object invalid,在高并发的时候,会导致大量的libary cache pin/lock,给客户端的感觉就是hang.

所以Oracle 在11g中,对这个缺憾也做了改进。当然了,更多的是性能上有了提升,Oracle不用再花费额外的时间去编译这些invlid object了。

使用道具 举报

回复
论坛徽章:
12
奥运会纪念徽章:皮划艇静水
日期:2008-05-04 15:32:29参与WIN7挑战赛纪念
日期:2009-11-17 13:32:26祖国60周年纪念徽章
日期:2009-10-09 08:28:00CTO参与奖
日期:2009-01-15 11:42:462009新春纪念徽章
日期:2009-01-04 14:52:28奥运会纪念徽章:举重
日期:2008-10-24 13:16:31授权会员
日期:2008-09-29 09:30:46奥运会纪念徽章:马术
日期:2008-09-05 04:19:37奥运会纪念徽章:曲棍球
日期:2008-08-14 11:19:03奥运会纪念徽章:皮划艇激流回旋
日期:2008-07-31 22:06:04
16#
发表于 2008-10-10 16:04 | 只看该作者
正在学习索引

使用道具 举报

回复
论坛徽章:
0
17#
发表于 2008-10-25 21:25 | 只看该作者
查下表的锁状态。会不会其他进程在使用这个表呢?

使用道具 举报

回复
论坛徽章:
259
2015年新春福章
日期:2015-03-04 14:19:112015年新春福章
日期:2015-03-06 11:57:31
18#
发表于 2008-10-26 10:10 | 只看该作者
原帖由 sqysl 于 2008-7-23 09:49 发表
查一下,有没有该表的锁阻塞,以及哪个用户什么操作引起的阻塞。

看看当时的等待事件是啥~

再看看当时有什么session锁了该表。

使用道具 举报

回复
论坛徽章:
1
ITPUB9周年纪念徽章
日期:2010-10-08 09:31:21
19#
发表于 2009-11-18 20:34 | 只看该作者
学习学习

使用道具 举报

回复
论坛徽章:
41
马上加薪
日期:2014-02-19 11:55:14铁扇公主
日期:2012-02-21 15:02:402012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-02-13 15:12:092012新春纪念徽章
日期:2012-01-04 11:50:44ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15ITPUB年度最佳BLOG写作奖
日期:2012-03-13 17:09:53
20#
发表于 2009-11-19 09:50 | 只看该作者
原帖由 liubo1977 于 2008-7-21 13:06 发表
有一个表叫T_user,里面有2000行记录,我想将一个名为name的列的长度由varchar2(20)改成varchar2(30),但一执行修改语句不死机,我执行的语句为:
alter table t_user modify (name varchar(30))
这知这是怎么回事,望高手指教。


首先语句写的有问题。
应该是:
alter table t_user modify (name varchar2(30));

在oracle中不要使用 varchar数据类型。

其次,即使使用这个语句也是可以修改成功的。
实验如下:
sec@ora10g> create table t (x varchar2(20));

Table created.

sec@ora10g> desc t;
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
X                                                  VARCHAR2(20)

sec@ora10g> alter table t modify (x varchar(30));

Table altered.

sec@ora10g> desc t;
Name                                      Null?    Type
----------------------------------------- -------- ----------------------------
X                                                  VARCHAR2(30)


LZ提到的这个问题需要具体分析了。建议查看数据库的等待事件,看数据库中是否有异常情况。

如果数据库可以重启,try it again.

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表