记一次数据恢复
记一次数据恢复同事不小心把生产的一个表truncate了,匆忙来找我想解决办法。一开始想到了用helldba站点的兄弟写的truncate恢复办法,但之前实际操作过,太复杂,要建表空间,还要很多权限。手忙脚乱了一下后,冷静下来一想,还有个老耿写的gdul工具,有恢复truncate的数据的选项。于是赶紧上传工具,然后安装。安装...
截断表后空间不释放的原因分析
这个问题以前也遇到过,没具体分析。今天再次遇到,用比较合适的方法解决了这个问题。所以记录一下。现象:表T在被截断后,表空间仍为原来的大小。下面查询:select segment_name, round(bytes/1024/1024,4) || 'M' from user_segments where segment_name = 'T';查询到表T的大小为304m。将T表截断后再次查询,发现仍...
表空间迁移办法补充
上次总结了表空间迁移办法(http://blog.itpub.net/12932950/viewspace-741543),发现还存在几个不足的地方:1、没有考虑iot的情况。对于iot,是不能rebuild其主键索引的,要move表才行;2、没有考虑存在long字段的表。这类表不能直接做move,直接处理就报错了;所以,这次对这两个问题做了补充:1、检查是否为i...
在pl/SQL中调用logminer相关视图的问题
最近要写一套程序,用来从redo中采集表的变化数据。于是就使用了log miner工具,由于要定期处理,所以用plsql包做了封装。封装后执行,发现存在问题,一开始是报表不存在,疑是权限问题,授权之:grant execute_...
Oracle系统视图中address字段长度与db位数的关系
address字段如果是8位的,则是32bit数据库,如果是16位的,则是64bit数据库。比如:v$process.addrv$sql.addrv$session.sql_address等等。原来一直使用的是32位系统,没留意过这个方面的差别。...
sqlplus命令使用大全(转)
原文来自于woshijpdev 的一个帖子:http://www.itpub.net/thread-591149-1-1.html感觉比较实用,记下先:Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。 &n...
lob字段表空间迁移
lob字段在数据库中并不是与表的其他字段的数据放在一起的,原因很简单,因为既然是lob字段,就说明其所需空间会很大,需要单独的存储空间来存放这些数据。因此,oracle为此专门开辟了一块区域用于存放lob字段,其组...
to_char函数格式转换参考
Oracle的to_char函数功能非常丰富。包括对日期、数值、时间戳等都可以转换,其转换的模型也有很多,通常无法一一记住。今天找到了官方的详细说明,这里补充一下:http://docs.oracle.com/cd/B19306_01/server.102/b1...
Oracle的又一巨型bug
关于exist中条件为true时的执行计划问题,同事发现的,还真没留意到:SQL> with tmp as( 2 select 1 a from dual union all 3 select 2 a from dual union all ...
Oracle任务调度工具学习
没想到接触Oracle任务调度工具是从解决Oracle自动统计功能开始的。 话说从10g开始,cbo便大行其道,oracle更是不遗余力的在推动这个优化器,因为它可以智能化的生成执行计划...
Oracle行数据扩展方法总结
有如下需求:A用户有1笔交易B用户有3笔交易C用户有2笔交易数据如下:A 1B 3C 2现要求将该表数据扩展,变成:A 1B 3B 3B 3C 2C 2这是一个常见的数据...
Oracle groupby的bug
说到这个group by的bug,我自己都觉得不可思议,因为group by作为SQL语句中最常用的子句之一,被用在实现很多场景中。要是这个子句有bug,那其影响的范围可是非常广的。我遇到的这个bug,是在10g环境下的,...
Oracle分析函数多层使用时的一个bug及其解决方案
前几天因为客户数据统计错误,引起强烈反应,加班加点终于把问题解决。但是最终结果却出人意料,经排查,确定并非我们代码的问题,而是Oracle的一个bug。bug号及描述:6840911 Wrongs results from WINDOW NOSOR...
连续相同号码的识别
这个需求看上去比较简单,但是要完成却不是那么轻松的可以做到。首先看一个例子,假如有若干个手机号码:13677884444139884009651397325007413974416087139997503041396731118313999806632要找出其中有连续3-8个...
Oracle keep的用法
keep是Oracle下的另一个分析函数,他的用法不同于通过over关键字指定的分析函数,可以用于这样一种场合下:取同一个分组下以某个字段排序后,对指定字段取最小或最大的那个值。从这个前提出发,我们...
数字转时间间隔格式处理
Oracle中,我们知道to_date函数可以将字符串转换成时间格式,那如何将数字类型的值转换为日期interval类型的值呢?一共有以下几种方式,总结如下:1.interval转换虽然前面说的是数字的转换,但实际上在这里还是将字...
PL/SQL中char类型的暗门
在PL/SQL编程中,char类型是一个比较鸡肋的类型,除非是在CPU要求非常高的系统,否则这种类型完全可以用varchar2来替换。测试案例:SQL> declare 2 v_chr1 char(2) := '&nb...
【转】分析函数语法解析
下面文章对分析函数的语法总结很好,特借鉴过来看一下,以备后用。以下文章转自网络:分析函数语法解析2009年01月14日 星期三 10:52分析函数语法解析 1 分析函数整体语法 分析函数的语法如下: analytic...
Oracle SQL实现阶乘的几个方法
第一个:字符串叠加运算法原理是先将要相乘的数用字符串拼接起来,然后将拼接的逗号替换为乘号,再用dbms_aw.evel_number函数对字符串运算,即可得所求结果:SQL> select rownum rn, dbms_aw.eval_number(replace(wm...
使用rownum改变执行计划的一个典型情况
今天在itpub上看到一个案例。提到一个查询,如果使用rownum进行约束的时候,执行结果正常,而如果不用rownum则会报“ora-01722:无效数字”这样的错误。而实际rownum的限制并没有对结果集产生任何影响(rownum<=...