摘要: 在Oracle中,如果要实现行列转换,较为常见的是用DECODE和CASE语句。对于简单的行列转行,DECODE和CASE语句尚能应付。在逻辑比较复杂,分组聚合较多的场景中,DECODE和CASE语句则力有不逮。而pivot则可完美解决这一切。首先,我们来看看Oracle对于其的解释:可见,pivo... 阅读全文
posted @ 2015-07-21 16:57 iVictor 阅读(4044) 评论(0) 推荐(1) 编辑
摘要: GROUP BY的扩展主要包括ROLLUP,CUBE,GROUPING SETS三种形式。ROLLUProllup相对于简单的分组合计增加了小计和合计,解释起来会比较抽象,下面我们来看看具体事例。例1,统计不同部门工资的总和和所有部门工资的总和。SQL> select deptno,sum(sal)... 阅读全文
posted @ 2015-07-20 14:41 iVictor 阅读(1618) 评论(0) 推荐(1) 编辑
摘要: 最近在学习的过程中,发现一个挺有意思的函数,它可实现对列值的拼接。下面我们来看看其具体用法。用法:对其作用,官方文档的解释如下:For a specified measure,LISTAGGorders data within each group specified in theORDERBYcl... 阅读全文
posted @ 2015-07-17 14:30 iVictor 阅读(80065) 评论(5) 推荐(7) 编辑
摘要: 同事最近在忙数据一致性比对工作,需要对不同文本文件中的数据进行比对,有的文件较大,记录较多,如果用普通的文本编辑器打开的话,很显然,会很卡,甚至打不开。基于此,可将该文本文件的数据导入到数据库中,在集合的层面进行比对。那么如何将文本文件的数据导入到数据库中呢?在这里,主要利用了Oracle的外部表特... 阅读全文
posted @ 2015-07-15 13:50 iVictor 阅读(3356) 评论(0) 推荐(0) 编辑
摘要: 1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(<>){ chomp; print "$_\n" unless exists $hash{$_}; $hash{$_}+=1; } 刚开始没有$hash{$_}+=1这一行,结果发现无论怎么执行, 阅读全文
posted @ 2015-07-01 10:59 iVictor 阅读(646) 评论(0) 推荐(0) 编辑
摘要: 最近写的一个perl程序,通过关键词匹配统计其出现的频率,让人领略到perl正则表达式的强大,程序如下:#!/usr/bin/perluse strict;my (%hash,%hash1,@array);while(){ s/\r\n//; my $line; if(/-... 阅读全文
posted @ 2015-06-23 08:59 iVictor 阅读(662) 评论(0) 推荐(0) 编辑
摘要: 1. 做一个3*3的加法表SQL> select a||'+'||b||'='||(a+b) from (select rownum a from all_objects where rownum0 and b.n0 and c.n0 and d.n0;6.每个雇员的薪水(SAL)都对应到一个薪水级... 阅读全文
posted @ 2015-06-10 14:40 iVictor 阅读(918) 评论(0) 推荐(1) 编辑
摘要: 今天实验了一下,如何在所有文件,包括数据文件,在线日志文件,控制文件都丢失的情况下,利用RMAN备份恢复和还原数据库。该实验的重点是用到了Dummy实例。 具体步骤如下: 备份数据库 模拟数据丢失 试着登录数据库查询数据,会报以下错误: 看看ORACLE相关进程,会发现实例并没有奔溃,进程还在 关闭 阅读全文
posted @ 2015-05-25 17:08 iVictor 阅读(2976) 评论(0) 推荐(0) 编辑
摘要: 如何查看特定目录下大小在前10位的文件 find 目录 -ls |sort -nrk7 |head 参数说明如下: -ls True; list current file in ls -dils format on standard output. 没加-ls之前,输出的只是文件名,类似于 加了-l 阅读全文
posted @ 2015-05-21 14:20 iVictor 阅读(4716) 评论(0) 推荐(0) 编辑
摘要: Automatic Memory Management 1. 如果要启动Automatic Memory Management,如何确定MEMORY_TARGET的值呢? 1> 在SQL*Plus下show parameter target,结果如下: 2> 确定maximum PGA alloca 阅读全文
posted @ 2015-05-18 09:47 iVictor 阅读(807) 评论(0) 推荐(0) 编辑
摘要: 在这里,我们会用到DBMS_RANDOM包和CASE WHEN语句,思路如下:一、利用DBMS_RANDOM.RANDOM函数随机生成数值,然后对数值进行取模,如果我们要在10个元素中随机读取的话,那我们需要对10进行取模。二、再将取模后的值利用CASE WHEN语句与元素进行关联。譬如,我有一个组... 阅读全文
posted @ 2015-05-14 23:17 iVictor 阅读(3798) 评论(2) 推荐(0) 编辑
摘要: EMP表是Oracle测试账户SCOTT中的一张雇员表,首先,我们来看看emp表的数据 其中,empno是员工编号,同时也是该表的主键,ename是员工姓名,sal是员工工资,deptno是员工部门。 如何找出每个部门的最高工资的员工信息呢? 常用的方法是关联查询,SQL语句如下: 结果如下: 下面 阅读全文
posted @ 2015-05-08 16:15 iVictor 阅读(6850) 评论(0) 推荐(0) 编辑
摘要: DBMS_RANDOM是Oracle提供的一个PL/SQL包,用于生成随机数据和字符。它具有以下函数。其中,initialize,random,terminate函数在Oracle11g中已不推荐使用,主要用于向后兼容。下面对各个函数进行举例说明1. INITIALIZE用一个种子值来初始化DBMS... 阅读全文
posted @ 2015-05-04 15:05 iVictor 阅读(13383) 评论(0) 推荐(1) 编辑
摘要: 1. 如何查看Oracle是否启动了RAC。 如果cluster_database的值为TRUE,则启用了RAC,cluster_database_instances是组成RAC的实例的数量。 网上说,用如下查询语句, 这个其实不太严谨,我这个是在单机单实例环境下查询的,但是根据输出我很难确定它是单 阅读全文
posted @ 2015-04-30 11:02 iVictor 阅读(434) 评论(0) 推荐(0) 编辑
摘要: CloneDB是Oracle 11.2.0.3推出的一项新特性,它利用的了11g新引入的Direct NFS。它直接利用目标数据库的备份,无需将备份COPY到克隆环境下,使得一个备份可以克隆多个不同用途的数据库。它同时采用了copy-on-write技术,使得备份中只有被修改了的block才会被应用... 阅读全文
posted @ 2015-04-27 15:27 iVictor 阅读(1435) 评论(0) 推荐(0) 编辑