oracle rollup,cube子句的应用举例;
rollup,cube子句在ORACLE中可以用来做交叉报表,如:如总计,小计类的功能很容易实现;但是必须和group by 子句一起使用。举例如下:[@more@]Oracle的Cube,Rollup子句的用法产生交叉报表的情况,演示一个cube的例子 create table test(sales varchar2(10),dest varchar2(10),revenue number); insert into test values('smith','hangzhou',1000); insert into test values('smith','wenzhou',2000); insert into test values('allen','wenzhou',3000); insert into test values('allen','wenzhou',4000);SALES DEST
分析函数的应用(更新版)
前言:1. 对原文重新排版,增强可读性2. 文中列举的例子都在scott/tiger用户下测试通过,增强可操作性,易验证。3. 继续增加:分析函数在美同统计系统中的应用,分析函数性能比较4. 欢迎大家批评指正.[@more@]概述:分析函数(oracle8.1.6以后版本支持),为解决"Calculate a running total", "Find percentages within a group", "Top-N queries", "Compute a moving average"等问题而设计的。标准的PL/SQL可以解决大部分问题,然而性能不尽人意。分析函数就是标准SQL的语言插件,不仅编码简单,而且
GOTO语句在PL/SQL中的应用
PL/SQL也提供GOTO语句,其语法是GOTO label;这里label是在PL/SQL块中定义的标签.标签是用双箭头括号括起来的.当执行GOTO语句的时候,控制会立即转到由标签标识的语句.[@more@]例如,我们可以按照下面的方式实现前面的循环示例.Declare vn:=1;begin loop insert into temptable values(vn,'loopcount'); vn := vn + 1; if vn > 50 then GOTO nextloop; end if; end loop; <<nextloop>> insert into temptable(char_col) values('done!');end;一:对于GOTO的限制1:PL/SQL对于GOTO的使用有一些限
SQLSERVER中实现返回汉字笔画数的函数;
SQL SERVER的排序规则平时使用不是很多,也许不少初学者还比较陌生,但有一个错误大家应是经常碰到: SQL SERVER数据库,在跨库多表连接查询时,若两数据库默认字符集不同,系统就会返回这样的错误: “无法解决 equal to 操作的排序规则冲突。”[@more@]一.错误分析: 这个错误是因为排序规则不一致造成的,我们做个测试,比如:create table #t1(name varchar(20) collate Albanian_CI_AI_WS, value int) create table #t2(name varchar(20) collate Chinese_PRC_CI_AI_WS, value int ) 表建好后,执行连接查询: select * from #t1
ORACLE 的加载工具SQLLDR应用
SQLLDR包括三个文件:控制文件,数据文件,日志文件;日志文件包括三种:错误日志文件(*.bad),丢弃日志文件(*.dsc);常规日志文件(*.log) [@more@]创建一个表;create table TEST(BM NUMBER(8),BMMC VARCHAR2(20),SJBM NUMBER(8));数据文件mmr.txt:13213,aaa,33312345,bbb,55512345,ddd,888创建一个批处理文件do.batsqlldr msno/msno@211 control=do.ctl log=D:loaddatalog22.txt;方法一:在控制文件中直接加载数据;创建控制文件loaddata.ctlLoad data infile *replace into table testfields terminated by ','optionally enclosed by ‘’’’tr
ORACLE 测试题:
ORACLE 测试题:1:描述死锁产生的过程;2:描述重做与回滚的认识;3:索引组织表,聚蔟表的用途;[@more@]4:对IMP/EXP,SQLLDR的认识;5:数据的备份与恢复的方案;6:分析函数的用途;7:消耗资源的SQL的定位方法;8:对触发器的认识;9:对ORA-01555错误的认识;10:ORACLE都有那些文件?并以什么格式存储;11:RMAN备份的操作: 12:丢失控制文件的恢复;13:将ORACLE数据库更改为归档模式;写出步骤14:把表A从表空间TSP1更改成表空间TSP2的方法15:删除表的列;16:配置RMAN的步骤;17:删除表空间的数据文件?18: 如何用ALTER命令把表数据加到缓存表里,清除呢
oracle系统表查询
数据字典dict总是属于Oracle用户sys的。 1、用户: select username from dba_users; 改口令 alter user spgroup identified by spgtest; 2、表空间: select * from dba_data_files; select * from dba_tablespaces;//表空间 select tablespace_name,sum(bytes), sum(blocks) from dba_free_space group by tablespace_name;//空闲表空间 where tablespace_name='RBS';//表空间对应的数据文件 where tablespace_name='INDEXS'; select * from dba_segments select * from dba_data_files
ORACLE RMAN备份的脚本配置
一: 备份;1:连接目标数据库:rman>connect target sys/sysray@db或者rman target=sys/sysray@db[@more@]2:查询目标数据库的配置情况;RMAN> SHOW ALL;修改成如下配置:CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # defaultCONFIGURE BACKUP OPTIMIZATION ON;CONFIGURE DEFAULT DEVICE TYPE TO DISK; # defaultCONFIGURE CONTROLFILE AUTOBACKUP ON;CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'F:rman_back%F'; # defaultCONFIGURE DEVICE TYPE DISK PARALLELISM 1; # defaultCONFIGURE DATAFILE BACKUP COPI
Oracle 表级的快速恢复(实习)
Oracle 表级的快速恢复(实习) 1:查询日志记录:Select * From v$log_history aOrder By a.SEQUENCE# Desc或者Select * From v$loghist aOrder By a.SEQUENCE# Desc其中SEQUENCE#字段就是日志文件的序列号[@more@]2:日志切换:alter system switch logfile;该命令可以手工切换日志文件组;Select * From v$log 该语句可以查询日志已经切换;3:找回表的原状态; select * from test as of scn 2345242其中2345242 为Select * From v$log_history a Order By a.SEQUENCE# Desc 查询出的SCN变化点的TEST表的内容,然后备
ORACLE 视图介绍
Oracle视图Oracle的数据库对象分为五种:表,视图,序列,索引和同义词。视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。视图是存储在数据字典里的一条select语句。 通过创建视图可以提取数据的逻辑上的集合或组合。[@more@]视图的优点:1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。2.用户通过简单的查询可以从复杂查询中得到结果。3.维护数据的独立性,试图可从多个表检索数据。4.对于相同的数据可产生不同的视图。视图分为简单视图和复杂
ORACLE 数组在过程中的应用
ORACLE 数组在存储过程中的应用,现在举实例如下:首先要初始化数组变量,然后对其分配存储数量.......[@more@]create or replace procedure research(username in varchar2)as TYPE num_t_name is varray(100) of varchar2(30) ; a num_t_name; c varchar2(10); j number;cursor mycur is select table_name from all_tab_columns where owner=username ; begin a := num_t_name(); a.extend(2); j := 1; for cur in mycur loop c := to_char(j,'0000'); --dbms_output.put_line(c); a(j) := cur.table_name; insert
ORACLE 树形查询(connect by...start with...)的应用(三)
该篇文章承接上篇:ORACLE 树形查询(connect by...start with...)的应用(二)做进一步的介绍:如下文:[@more@] 层次计算这里层次计算是指根据父子节点关系进行汇总,也就是说 父节点 = SUM(子节点)。但是在财务报表父指标,不一定是子指标的叠加,也可能是几个子指标减去另外几个子指标。例如: 长期资产 = 中长期贷款 – 贷款呆账准备 +固定资产净值 +其他长期资产。为了实现这种情况,我们建一个字段BS_Dir来表示加减方向 1表示 加,-1表示减这样 父节点 = SUM(子节点 * Direction)SELECT SUBSTR (PATH, 0, INSTR (PATH, '|',
ORACLE 树形查询(connect by...start with...)的应用(一)
关于oracle的树形查询(connect by...start with...)转录1:org是部门表,其中orgid是当前部门id,porgid是上级目录id,像这种有父子关系的表中做从某一部门向上或向下的查询用到了oracle的connect by语句:select * from org connect by prior orgid=porgid start with orgid=1 //从部门id为1的部门寻找所有子部门select * from org connect by prior porgid=orgid start with orgid=1 //从部门id为1的部门寻找所有父部门转录2:Oracle 中使用层次查询方便处理财务报表 Oracle 中使用层次查询方便处理财务报表摘要:本文介绍了如何使用Oracle
oracle高级队列在通信方面的应用设计(AQ高级队列设计说明一)
oracle高级队列在通信方面的应用设计---AQ高级队列设计说明 关键字:队列,接口,性能1 前言一般系统的应用可以分为:立即要执行和可以延迟要执行的事情,区分这个很重要。为了提高系统的性能,缩短系统等待时间,引入队列技术。队列是一种能将应用程序的处理工作有效地划分为前台任务和后台任务的技术。当处理容量允许时,这种技术通过存储消息、确定消息处理的优先顺序和向应用程序提交消息来发挥作用。它使你能够平衡本地计算机的负荷,或将任务分配到远程计算机。 为了减少用户的等待时间,应用程序可以让说明需要后台处理的消息排入队
利用RMAN备份异机恢复
利用RMAN备份异机恢复--rman全备份,异机恢复关键字:RMAN,备份,恢复,参数文件,控制文件,数据文件,oracle[@more@]1 概述1.1试验目的先暂定两个服务器:服务器A 151 ip:192.168.1.151服务器B 152 ip:192.168.1.152服务器A 是主服务器,服务器B是备份服务器.两个数据库的目录结构一样.首先每周二和五在A机器本地一个rman全备份,并且备份完毕后作恢复测试.如果服务器A 的数据文件或者其它损坏了,可以利用本机备份恢复.但是如果服务器A 整个都坏了,那就没有办法,所以在机器A做完rman全备份后每次自动ftp把备份集传到机器B上.试验目的:机器A上作一
oracle高级队列在通信方面的应用设计(AQ高级队列设计说明二)
5.2出队 create or replace procedure p102_mt_dequeue(p_equeue_name In varchar2, --队列名单大写字母,主队列:SMS_MT_QUEUE 备份队列:SMS_MT_QUEUE_BACKUPp_client_id Out Number, --短信内部网关p_res_str Out varchar2, --返回值 0 成功 -2 队列为空其它失败p_label out varchar2, --标签p_body out varchar2) --数据包体Is/*功能: 出队列,返回给java程序日期:2006-09-20write by hancy*/ v_Dequeue_Options Dbms_Aq.Dequeue_Options_t; v_Message_Properties Dbms_Aq.Message_Properties_t; v_Mess
ORACLE中杀死锁进程的方法
步骤一:查询试图,找出sidSelect Distinct a.session_id From Dba_Ddl_Locks aWhere a.name=upper('t_sqlload_tmp');如果不知道被锁的对象,可以用如下语句查找:SELECT b.owner,b.object_name,b.object_type,b.object_id FROM dba_Objects b WHERE b.OBJECT_ID IN ( SELECT DISTINCT a.object_id FROM v$locked_object a);从中发现有个自己在用的对象被锁了,根据object_id执行如下的sql语句:SELECT S.SID SESSION_ID,S.SERIAL# FROM V$LOCK L/*,SYS.DBA_OBJECTS O*/,V$SESSION S WHERE L.SID = S.SID AND L.ID1 =874582
oracle 绑定变量在动态条件统计中的应用
declarevsql_p varchar2(400);vsql varchar2(500);vnum number;begin vsql_p := 'partition(prov_id_'|| vprovid|| ')'; --记录分区vsql := 'select count(0) into :vnum from msno.t_msno_all '||vsql_p||' t where t.msno_comment = ' ||p_descid||' and t.split_id = 0';execute immediate vsql into vnum;if vnum = 0 thendbms_output.put_line('已经没有可用的一次营销号码');p_num := vnum;return; end if; end;[@more@]
ORACLE分区表的操作应用
ORACLE分区表的操作应用摘要:在大量业务数据处理的项目中,可以考虑使用分区表来提高应用系统的性能并方便数据管理,本文详细介绍了分区表的使用。 在大型的企业应用或企业级的数据库应用中,要处理的数据量通常可以达到几十到几百GB,有的甚至可以到TB级。虽然存储介质和数据处理技术的发展也很快,但是仍然不能满足用户的需求,为了使用户的大量的数据在读写操作和查询中速度更快,Oracle提供了对表和索引进行分区的技术,以改善大型应用系统的性能。 使用分区的优点: ·增强可用性:如果表的某个分区出现故障,表在其他
ORACLE 普通表转换成分区表(在线重定义)
ORACLE 普通表转换成分区表(在线重定义) 大部分转自yangtingkunyangtingkunyangtingkun在一个高可用系统中,如果需要改变一个表的定义是一件比较棘手的问题,尤其是对于7×24系统。Oracle提供的基本语法基本可以满足一般性修改,但是对于把普通堆表改为分区表,把索引组织表修改为堆表等操作就无法完成了。而且,对于被大量DML语句访问的表,幸运的是,Oracle从9i版本开始提供了在线重定义表功能,通过调用DBMS_REDEFINITION包,可以在修改表结构的同时允许DML操作。 在线重定义表具有以下功能: 修改表的存储参数; 可以将