误删除序列sequence,是否可以找回?
今天同事手一抖,误删除了一套测试环境中的所有sequence序列对象。序列不像表这种对象,drop删除可以从回收站中找回来,当然一般认为序列并不是那么重要,只要记得名称以及一些非默认参数,可以选择重建。唯一可能有问题的就是,一般序列常用于主键字段,如果之前的序列已经被用了,他的last_number可能就不是初始值了,...
非分区表是否可以创建分区索引?
有同事问一个问题,一张非分区表,是否可以创建分区索引?答案是可以,但分区索引的类型有限制。MOS这篇文章给出了答案,以及一些例子,What Is The Global Partitioned Index On Non Partitioned Table? (文档 ID 1612359.1)。依据文章中的示例,以下实验操作,1. 创建测试表,...
kill等待session的方法 - 引申自恩墨面试题的一些思考
Kamus曾在微信公众号发表了一篇文章《删繁就简 - 云和恩墨的一道面试题解析》,恩墨的新书《Oracle性能优化与诊断案例精选》第五章引用了相同的文章,来自恩墨的一道面试题,乍一看其中涉及的知识点,大部分比较眼熟,但开始解决的时候,能否清晰地完成,就因人而异了。从我的认识来看,对于日常的工作,有一些...
Tuxedo域连接错误引出的netstat不同平台参数的区别
最近测试同事有一个需求,搭建一套Tuxedo域,连接网关,通过其和其他域交互,搭建过程中配置正确,但域连接报错,模拟过程如下,假设本地域名称为LOCALDOM,网关域名称为GWDOM,主机操作系统是Solaris。从LOCALDOM本地域执行pd发现无连接的域,connect显示无法连接网关,...
含LOB的表实际容量计算方法
前两天有一个开发库,报了ORA-01654的错误,提示的是SYS_IL000…$$的对象不能分配表空间了,首先这种SYS_IL的对象名称是系统默认为LOB大对象LOBINDEX设置的名称,其次开发人员检索dba_segments视图看这个LOB所属表的空间,似乎占比一般。这次涉及的问题,就是如何计算包含LOB对象的表空间实际容量的方法,之所以是说...
经典的print_table学习
最近上班路上读《Oracle性能优化与诊断案例精选》,发现eygle引用了一个非常方便的工具,原作者是大名鼎鼎的Tom,更加引起了我的关注。我理解一些工具是方便了我们日常的工作需求,但同时由于其封装了一些细节,因此若只是知道用法,不知道实现原理,对于个人来说,浪费了一次锻炼的机会,因为往往这些经典的工具,蕴...
ORA-01653/01654错误和dba_free_space视图的理解
上周,兄弟部门提出了一个问题,描述如下,开发库,对表X他们查询,或者DELETE的时候,经常出这个问题, 好像还与查询或者DELETE的数据量有关,是不是由于没建索引的原因,我查百度也没解决 select sum(bytes/1024/1024) sizeMB from dba_free_space z where z.tablespace_name=’XXX_DAT’&n...
创建索引的两种方式比对
有一个应用,需要创建索引,创建索引一般有两种方法,一种是CREATE INDEX ...;一种是CREATE INDEX ... ONLINE;字面意思上看,一个是在线,一个是非在线,有什么不同?1.语句执行时间的不同 创建测试表, 使用非在线创建索引,用时00.06秒, 使用在线方式...
三种批量删除PLSQL写法效率的比对
我们有一个重要的旧系统,最近夜维出现了一些问题,夜间执行5小时未完成,为了不影响业务,只能早上高峰期之前,DBA手工kill夜维进程。这一个夜维程序采用了PLSQL写的存储过程,通过数据库job定时启动执行。存储过程我很少使用,借着这次机会,补习了下,这个存储过程中的逻辑比较简单,依次删除若干张业务表,每张表...
从ORA-01752的错误,透过现象看本质
这几天开发同学反映了一个问题,有一个Java写的夜维程序,用于每天定时删除历史过期数据,3月10日之前经过了内测,但这两天再次执行的时候,有一条SQL语句一直报ORA-01752的错误,由于近期做过一次开发库的迁移,从一个机房搬迁至另一个机房,而且开发同学确认这期间未变代码逻辑,所以怀疑是否和数据迁移有关,这个错...
PLUSTRACE角色
使用示例数据库用户HR登陆需要打印执行计划等信息的时候,提示了错误, 提示很清楚了,PLUSTRACE角色未赋给HR。查询HR所有的角色, 确实缺少PLUSTRACE角色,通过oerr工具,可以进一步查看这个错误, AUTOTRACE Option in SQL*Plus (文档 ID 43214.1)中说明了要使用AUTOTRACE就必须有PLUSTRACE角...
SYS_CONTEXT函数返回IP地址的一些误解
上次分享中曾使用了SYS_CONTEXT函数获取ip地址,但返回值为空,当时认为其是返回ipv6的地址,所以为空,但其实这是错误的结论。虽然是一个小小的知识点,但从中可以看出Oracle对于这种内置函数的考虑非常周到,我们先看如下是返回空的ip地址的一个示例, 我们首先看看SYS_CONTEXT函数的定义, 这个函数有两个...
一种批量删除数据的方法
这两天碰见一个比较紧急的生产问题,由于还在处理中,所以暂时不能给出整体描述,但其中涉及的一个问题就是删除一张大表中的过期历史数据,针对不同的类型的表可能有不同的解决方法,比如若是按照时间做的分区表,droppartition删除分区的操作可能是效率最快的、最简单的,若是一张普通表则需要有一些索引键值为删除...
PMON主动调用的频率控制
今天有一位兄弟问了一个问题,"pmon清理失败process的频率是多少时间,还是只要process有失败,就清理?"以前感觉就是好像如果kill一个session之后立即执行其他操作,则会立即报错,但v$session中好像还是有这条记录,过了不知道具体多久,才会清除。了解的不系统,因此,接下来就用实验来再说明这个问题。1...
VMware Fushion解决"vmmon模块的版本不匹配"报错
我手上一份新的虚拟机环境是用Windows下的VMWare Workstation 12这版本做的,对应于Mac下的VMware Fushion我的版本是7.0,加载虚机后提示错误: 说明VMware Fushion 7.0版本不能匹配上VMWare Workstation 12版本。网上搜了一下,针对VMWare Workstation 12,需要VMware Fushion 8.5版本。下载、安装再次启...
我的第一次坏块故障恢复经历
前几天由于单位断电了,导致一台BK*应用的开发数据库环境无法open打开,本以为借助于advise/repair failure就可以实现恢复,中间还是费了不少周折。这算是自己第一次处理稍微比较复杂的恢复问题,以前碰见的问题都是比较常规简单的,对于备份恢复来说,一直想找一个时间更系统的学习一下,这个问题处理的过程...
一些搬迁GitLab环境中碰见的问题和解决
因为单位机房搬迁,涉及到之前为运维开发搭建的GitLab环境也需要做迁移。旧环境中安装的时候很顺畅基本没有碰见什么问题(参考:http://blog.itpub.net/7192724/viewspace-2124847/),但这次新环境的安装着实费了一些功夫,碰见了一些棘手的问题,记录于此,对碰见这些问题的朋友们有所帮助。注:以下问题和解...
一个执行计划异常变更的案例 - 正传
之前的几篇文章: 《一个执行计划异常变更的案例 - 前传》 《一个执行计划异常变更的案例 - 外传之绑定变量窥探》 《一个执行计划异常变更的案例 - 外传之查看绑定变量值的几种方法》 《一个执行计划异常变更的案例 - 外传之rolling invalidation》 《一个执行计划异常变更的案例 - 外传之聚簇因子(Clusteri...
select count(*)、count(1)、count(主键列)和count(包含空值的列)有何区别?
下班路上看见网上有人问一个问题:oracle 10g以后count(*)和count(非空列)性能方面有什么区别?乍一看,确实有些含糊,Oracle中往往小问题蕴含着大智慧,如何破云见日?最直接的方法,我想就是通过10053事件,来看下不同SQL对应的执行计划和资源消耗等情况,进而看看是否有些信息可以为...
一个执行计划异常变更的案例 - 外传之SQL Profile(下)
之前的几篇文章: 《一个执行计划异常变更的案例 - 前传》 《一个执行计划异常变更的案例 - 外传之绑定变量窥探》 《一个执行计划异常变更的案例 - 外传之查看绑定变量值的几种方法》 《一个执行计划异常变更的案例 - 外传之rolling invalidation》 《一个执行计划异常变更的案例 - 外传之聚簇因子(Clusteri...