oracle增加字段失败,oracle添加字段引起的问题
author:skate
time:2010-05-27
oracle添加字段引起的问题
由于同事在添加了表的字段后,没有重新编译数据库的对象,导致和这个表相关的很多procedure和package都失效。
由于发现后是在修改后2个小时吧,而在这期间很多程序在调用这些过程,致使很多会话都僵死在那,所以也无法
再重新编译过去,及时kill相应session进程也无法编译,由于业务需要数据库快速提供服务,于是决定重启数据库
当我发出shutdown immediate1分钟后,有一种不祥的预感,数据库很难关闭,数据库里存在active事务,而且因为
对象失效,所以在那一直跑(僵死在那),我赶紧查看alert.log,如下所示:
Thu May 27 13:07:19 2010
Thread 1 advanced to log sequence 3666
Current log# 5 seq# 3666 mem# 0: /u01/oradata/dbtica/redo05.log
Thu May 27 13:59:37 2010
Starting background process EMN0
EMN0 started with pid=53, OS id=12951
Thu May 27 13:59:37 2010
Shutting down instance: further logons disabled
Thu May 27 13:59:37 2010
Stopping background process CJQ0
Thu May 27 13:59:37 2010
Stopping background process QMNC
Thu May 27 13:59:38 2010
Stopping background process MMNL
Thu May 27 13:59:39 2010
Stopping background process MMON
Thu May 27 13:59:41 2010
Shutting down instance (immediate)
License high water mark = 111
Thu May 27 13:59:41 2010
Stopping Job queue slave processes
Thu May 27 13:59:41 2010
Job queue slave processes stopped
Thu May 27 14:04:40 2010
Active call for process 19325 user 'oracle' program'oracle@ticketA.happypool.cn(TNS V1-V3)'
SHUTDOWN: waiting for active calls to complete.
Thu May 27 14:19:31 2010
MMNL absent for 1206 secs; Foregrounds taking over
从alert.log里可以证实我的想法,确实存在active的事务,看样子一时半会是不能关闭的,并且如果事务在shutdown后1小时还没有跑完,系统就自动取消shutdown。而业务又急需提供给服务
我于是想了如下几个方法
1. 用 shutdown abort强制关闭
2. 用kill进程的方法 : ps -ef |grep ora_|awk '{print $2}'| xargs kill -9
3. 实在不行就reboot(根据现在的情况,不会到这一步的)
我于是又耐心的等10分钟,还是没有反应。我决定执行shutdown abort ,在继续观察alert.log,如下:
Thu May 27 14:24:06 2010
Shutting down instance (abort)
License high water mark = 111
Instance terminated by USER, pid = 13255
Thu May 27 14:24:52 2010
Starting ORACLE instance (normal)
这回数据库关闭了,然后startup数据库,数据库很快正常启动了,启动后,重新编译数据库无效的对象,最后验证无误,应用正常工作
总结:
1.修改数据库对象物理结构时要注意重新编译所有无效对象,要寻找业务低峰期,并采用正确的方法减少锁对业务的影响
2.事先要仔细考虑修改字段对其他的影响
3.在解决问题时,要冷静,要多想几套方案以备处理最坏情况
-----end-----
oracle增加字段失败,oracle添加字段引起的问题相关推荐
- mysql增加中文字段_mysql怎么添加字段
在MySQL中编写sql语句时,会添加字段是非常重要的,例如:已创建表不足以满足要求时,这时就需要增加字段,已达到要求. mysql添加字段的方法: 首先以下面创建的表为例:CREATE TABLE ...
- oracle增加文件组,Oracle 文件和文件组
Oracle会产生许多文件和文件组,这些文件存储着重要的信息.本节就介绍这些文件和文件组. 一.Oracle控制文件 Oracle控制文件是Oracle数据库存储信息的重要文件,它是一个二进制文件,控 ...
- mysql如何加个字段_mysql如何添加字段 | mysql添加字段
alter table `sysinfo` add `fact_num` int(11); 添加字段并设置默认值: alter table `channel` add `needrestart` in ...
- mysql新增字段顺序_mysql 添加字段、删除字段、调整字段顺序 转
ALTER TABLE - 更改表属性 添加字段: alter table `user_movement_log` Add column GatewayId int not null default ...
- linux中oracle静默安装失败,oracle 11 Linux 静默安装 步骤及错误解决(更新中)
oracle 11 Linux 静默安装 步骤及错误解决(更新中) oracle 11 Linux 静默安装 步骤及错误解决(更新中) [待更新] oracle成功安装完成后 显示的页面如下 : 此时 ...
- mysql视图怎么加字段_mysql视图添加字段
mysql视图里面怎么新增一个全新字段,在原来表内没首先,要清楚视图的概念: 视图是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数 ...
- oracle 增加间隔分区,oracle分区表之间隔分区(oracle 11g) - 漫兮网
范围分区允许用户根据分区键列值的范围创建分区.下面是一个按范围分区表的示例: create table sales6 ( sales_id number, sales_dt date ) partit ...
- oracle 分页查询失败,Oracle 分页查询 插叙不出数据
进行分页查询时 使用了rownum关键字导致查询时查询不出数据 ,修改 给rownum字段取个别名,规避oracle关键字 select * from (select rownum,row_.* f ...
- oracle数据库升级失败,Oracle 11.2.0.1 rac 升级失败后,数据库降级方案(flashback database)...
升级失败后,数据库降级方案(flashback database) 环境:Oracle 11.2.0.1 rac on redhat 5.8 Flashback database 准备工作 查看是否f ...
最新文章
- java字典序列化_Java对象序列化,Serialize Java Data Object,音标,读音,翻译,英文例句,英语词典...
- FileZilla Server简介及使用说明
- 远程服务器返回了意外响应400,远程服务器返回400
- python按列输出字符_如何根据条件在Pandas中构建新列(新列应输出字符串)
- 福建职称计算机评聘任,职称聘任工作的有关补充规定(试行)
- octave中的一些基本操作
- AI领域都在用Python即将被淘汰?网友预测未来的编程语言不会是TA
- tomcat7 加载el表达式 报错 使用tomcat8得以解决
- USACO(含training section)水题合集[5/未完待续]
- pacman安装ubuntu_最受欢迎的Linux发行版, Manjaro Linux虚拟机安装折腾全记录
- Activiti中的流程存储服务(RepositoryService)
- 世界首富洛克菲勒的6句忠告,每个字都值钱
- 小米2 android版本更新,小米MIUI再更新,又有2款手机可以用上基于Android 11的MIUI12...
- 20220911- LC第310场周赛
- android手机刷机的作用,刷机有什么好处?为什么那么多人执着于安卓刷机
- 面试总结-2023届安全面试题总汇
- ArcGIS创建tpk切片缓存
- 第十三篇 Python建模库介绍
- angular基础学习
- `CSS filter` 有哪些神奇用途