一些小SQL
找出数据库中热点对象 SELECT B.OWNER, B.OBJECT_NAME, B.OBJECT_TYPE, A.FILE#, A.DBABLK, A.TCH FROM X$BH A, DBA_OBJECTS B WHERE A.OBJ = B.OBJECT_ID AND A.TCH >= 10 AND B.OWNER <> 'SYS' ORDER BY TCH DESC 找到热数据块 Oracle 8i保留着一个X$BH内部查看表,用来显示数据缓冲池的相对性能。X$BH查看表有下列数据列: Tim:两次使用之间的时间差,和_db_aging_touch_time参数相关。 Tch:使用计数,它和被使用过_db_aging_hot_criteria次之后从冷区移入热区直接相关。 找出全表(索引)扫描 =============================
Oracle 10g安装程序无法运行的情况
装了N次了,基本上碰到过2种情况:1. 报错,说空间不足,或者是没有权限。 Preparing to launch Oracle Universal Installer from /tmp/OraInstall2006-12-07_02-38-41PM. Please wait ...Error in writing to directory /tmp/OraInstall2006-12-07_02-38-41PM. Please ensure that this directory is writable and has atleast 60 MB of disk space. Installation cannot continue.: Success2. 执行后,没有反应,界面出不来。原因就是文件损坏了,解决方法就是,把文件重新解压缩一遍,注意一定要把压缩文件传送上去,然后解压,千万不要
Sybase的timestamp类型
今天有同事问我一个建表时候的错误:1> create table aabbccddee( a timestamp,b timestamp)2> goMsg 2738, Level 16, State 2:Server 'ipnet', Line 1:A table can only have one timestamp column. Since table 'aabbccddee' alreadyhas one, you can't add the column 'b'.不能建2个时间类型?咋可能呢,上网查了一下Sybase数据库中的timestamp为用户定义数据类型,它实际为varbinary(8)类型,但很多工程师把它当作date或time类型,这是错误的。其实在Sybase数据库中每一个数据库都会有一个全局timestamp,它被存放在dbtable内存
DUMP函数结果的意思
用到dump的函数了,找到了一篇讲dump函数的结果的意思的文章:How Oracle Store Number internal?作者:eygle | English Version 【版权声明:转载时请务必以超链接形式标明文章原始出处和作者信息及本声明】链接:http://www.eygle.com/archives/2005/12/how_oracle_stor.html 转载一下,以备后用:[@more@]Oracle在数据库内部通过相应的算法转换来进行数据存储,本文简单介绍Oracle的Number型数值存储及转换.这个内容是为了回答留言板上的2119号问题.我们可以通过DUMP函数来转换数字的存储形式,一个简单的输出类似如下格式:SQL> sel
安装dev6i碰到的问题
想学Oracle ERP了,从Form,Report开始把,找了个dev6i安装一下。结果在安装的时候报错 OS_ERROR while getting value path 有没有搞错,这也会报错,死活没找到原因,因为我装过Oracle9i难道有冲突,以前我装过肯定能一起装,安装文件也不会有问题,折腾了n次无奈放弃,只好用最后一招:重装大法,把Oracle9i重装一次吧,在开始安装之前突然报错,说是Path变量的长度太长了,超过了xxxxx(具体记不清楚了)。突然想到难道是这个原因导致6i安装失败?,于是取消重装,把path的值删掉了一些,再次安装,成功... 。天哪要不是装9i,
sybase中datetime显示和识别的问题
前2天有同事问我时间格式无法识别的问题,其实对时间为什么显示和识别 '七月 3 2007 9:34AM' 还是 'May 3 2007 15:12:00' 我一直很模糊,这次被问到后还真有点发闷,于是仔细研究了一下,终于搞明白了。整理了一下测试结果,以备后用。[@more@]1.首先我创建了2个用户 chinese 和 englisth 默认语言分别是 chinese 和 englisth。 sp_addlogin 'chinese', 'password', @defdb='adj', @deflanguage='chinese', @auth_mech = 'ASE'gosp_locklogin 'chinese', 'unlock'gosp_role 'grant ', 'sa_role', 'chinese'gosp_addlogin 'englisth', 'pas
[转]Sybase ASE的字符集
1. 概念篇 1.1 什么是字符集? 1.2 什么是排序顺序? 1.3 什么是字符集转换? 2. 配置篇 2.1 如何配置字符集的转换类型 2.2 如何配置服务器端缺省字符集 2.3 如何配置客户端缺省字符集 2.4 如何选择ASE字符集使之支持简体中文字符 2.5 如何查看服务器端、客户端字符集 3. 错误处理篇 3.1 为什么会出现字符集转换失败 4. 附:如何安装cp936字符集[@more@] 1. 概念篇 1.1 什么是字符集? 字符集是字符(包含字母,数字,符号和非打印字符等)以及所指定的内码所组成的特定的集合。通常一个字
PL/SQL学习笔记-总结
PL/SQL学习笔记-总结写了个小总结[@more@]语句块的结构:DECLARE...BEGIN...EXCEPTION...END条件语句:IF ... THEN...ELSIF ... THEN...ELSE...END IF;CASE语法:[<<MyCase>>]CASE [test_var]WHEN value1 THEN sequence_of_statements1;WHEN value2 THEN sequence_of_statements2;...WHEN valuen THEN sequence_of_statementsn;[ELSE else_sequence;]END CASE [MyCase];简单循环:LOOP..EXIT [WHEN condition];END LOOP;WHILE循环:WHILE condition LOOP...END LOOP;数字式FOR循环FOR loop_counter IN [REVERSE] low_bound..hi
PL/SQL学习笔记-6
PL/SQL学习笔记-6第11-12章[@more@]第11章 数据库触发器11.1 触发器的类型1. DML触发器2. Instead-Of触发器 只可以定义为视图(关系型或是对象的)的触发器。3. 系统触发器 11.2 创建触发器CREATE [OR REPLACE] TRIGGER trigger_name{BEFORE | AFTER | INSTEAD OF} triggering_event[referencing_clause][WHEN trigger_condition][FOR EACH ROW]trigger_body;触发器体不能超过32K。触发器总共有12种可能的类型,即:3个语句*2个计时*2个级别伪代码 触发语句 :old :newINSERT NULL 当语句完成时,将要被插入的值UPDATE 更新前的原始值 当语句
PL/SQL学习笔记-5
PL/SQL学习笔记-5第10章[@more@]第10章 使用过程、函数和包10.1 子程序位置当用CREATE OR REPLACE创建子程序时,该子程序被存储到数据字典中。除源文本外,子程序以编译形式存储,这叫做p-code(伪码)。Oracle9i允许你把一个子程序编译成本地操作系统代码,而非伪代码。区别在于执行的时候伪代码任然需要被解释,本地代码不需要,所以执行速度快。但是伪代码可以在不同的平台下运行。具体相关内容参考oracle文档。user_objects 包含当前用户所有的对象的信息user_souce 包含原始代码局部子程序* 局部子程序可以被声明为存储子程序声明段的一
PL/SQL学习笔记-4
PL/SQL学习笔记-4第8章到第9章 [@more@]第8章 集合8.1 声明和使用集合类型PL/SQL有两种复合类型:纪录和集合。一共有三种集合类型:index-by表、嵌套表、可变数组。嵌套表是扩展了index-by的功能,它可以直接存储在数据库表中,而且可以直接使用SQL进行操作。index-by表和嵌套表统称PL/SQL表。可变数组被声明为具体的有固定数目的元素,而PL/SQL表没有声明上限。index-by表TYPE tabletype IS TABLE OF type INDEX BY BINARY_INTEGER;tablename(index)index-by表是无约束的。其行数的唯一限制就是它的关键字是BINARY_INTEGER类型的。index-
PL/SQL学习笔记-3
PL/SQL学习笔记-3第6章到第7章[@more@]第6章 游标6.1 什么是游标为了处理SQL语句,Oracle将在内存中分配一个区域,这就是上下文区。这个区包含了完成处理过程的必要信息,其中包括已经处理完的行数、指向被分析语句的指针和在查询情况下的活动集,它是查询语句返回的数据行集。游标是指向上下文区的句柄或者指针。处理显示游标的步骤1.声明游标CURSOR cursor_name IS select_statement;游标声明也可以引用PL/SQL变量。但必须在这之前声明。2.打开游标OPEN cursor_name;当游标打开时:* 检验绑定变量的值* 基于的绑定变量的值和查询中所使用
translate函数的灵活用法
ITPUB上看到篇帖子'测试123测试'(几万条的类似数据)用SQL只取其中的数字'123'方法:select translate(field_name,'1234567890'||field_name,'1234567890') from table_name果然是妙,虽然知道translate的方法,但是一开始看到这个题目还真是没想到这种用法,看来知道函数的用法是一回事,如何灵活的应用是另外一回事。[@more@]
Oracle中的进制转换
16进制转换为10进制 SQL> select to_number(’19f’,’xxx’) from dual; TO_NUMBER(’19F’,’XXX’) ---------------------- 415 SQL> select to_number(’f’,’xx’) from dual; TO_NUMBER(’F’,’XX’) ------------------- 15 10进制转换为16进制 SQL> select to_char(123,’xxx’) from dual; TO_C ---- 7b SQL> select to_char(4567,’xxxx’) from dual; TO_CH ----- 11d7 2进制转换为10进制 SQL> select bin_to_num(1,1,0,1) a,bin_to_num(1
PL/SQL学习笔记-2
Oracle9i PL/SQL程序设计 的学习笔记第4章到第5章[@more@]第四章 PL/SQL中的SQL4.1 SQL语句类别 SQL范例数据操纵语言(DML) SELECT,INSERT,UPDATE,DELETE,EXPLAIN PLAN数据定义语言(DDL) DROP,CREATE,ALTER,GRANT,REVOKE事务控制 COMMIT,ROLLBACK,SAVEPOINT,SET TRANSACTION会话控制 ALTER SESSION,SET ROLE系统控制 ALTER SYSTEM在PL/SQL中可以直接使用的SQL语句只有DML(除了EXPLAIN PLAN)和事务控制语句。特别的是,使用DDL语句是非法的。PL/SQL采用了早期绑定,就是在编译的时候绑定变量。这种设计导致了DDL语句被禁止使用了。因为DDL语
PL/SQL学习笔记-1
Oracle9i PL/SQL程序设计 的学习笔记第1章到第3章[@more@]第1章 PL/SQL概述1.1 为什么使用PL/SQLPL/SQL是Procedural Language/SQL的缩写。SQL: Structured Query Language. 结构化查询语言 是第四代语言(4GL),命令少,语法简单。但是相对来说第三代语言(3GL)例如C或者COBOL,在本质上缺少过程化。因此开发出了PL/SQL-将SQL语言的强大性和灵活性与3GL的过程性结构融为一体。扩展的有:变量和类型、控制结构、过程和函数、对象类型和方法。使用PL/SQL,可以将SQL打包到一个PL/SQL语句块中提交给数据库,减少网络I/O。1.2 PL/SQL的功能特性PL
Sybase果然强,连错误的SQL都能解析
今天有程序员和我反映,说用一个sql可以查出数据,可以加了gorup by 之后,就没有数据了。查了之后发现一个奇怪的现象,原来程序员的SQL写错了,可问题是Sybase竟然可以执行。1> select * from test2> goid money----------- -----------1 12 13 14 15 15 24 2(7 rows affected)1> select id,sum(money) from test where id<22> goid----------- -----------1 12 13 14 15 15 14 1(7 rows affected)1> select * from test where id<22> goid money----------- -----------1 1(1 row affected)select id,sum(money
DML操作涉及到的系统表
用户表上没有锁,却不能做select 操作,很奇怪哦。[@more@]用户反映对表做select 操作,被堵塞了,一直在等待我觉得很奇怪,表是rowdata,除非发生了表升级,否则不因该被堵塞住阿。查了一下,在表上没有锁,再查进程,果然是lock sleep ,再一查才发现,原来是在等待 syscolumns 表的锁。有个drop tble 死在那了,结果导致对 syscolumns 表有表一级的锁,这个原因导致的select 无法操作,倒是我一直没有注意到过了。顺便作了一个测试我用了一个测试库,因为系统标无法lock table,所以我用update 把syscolumsn 这张表上关于test1 ,这张表
DB2学习笔记 - 表空间
表空间的学习笔记。[@more@]CREATE TABLESPACEcreate tablespace语句给数据库定义了一个新的表空间,分配container给tablespace。表空间的定义和属性保存在catalog。有2种不同的方式管理表空间1. 系统管理的表空间(SMS)可以使用到系统的IO缓存。不能从SMS表空间删除container。在SMS表空间内,每个container就是一个目录。如果一个表空间由多个容器创建,那么db2将均衡写入到各个容器的数据量。所有表数据和索引都共享同一个表空间。文件大小有可能动态增长,其大小上限由容器数量、操作系统在文件大小方面的限制,以及操作系统在单个文件
都是ALP惹的祸
今天碰到个怪问题。有人在界面上删除一条记录,然后界面就死在那了,然后用select 访问表,也访问不了了,一直在等待。[@more@]今天碰到个怪问题。有人在界面上删除一条记录,然后界面就死在那了,然后用select 访问表,也访问不了了,看了一下数据库,在表上有个锁,导致select 操作lock sleep 了,可是。。。 就算有锁,也不应该会阻塞select 阿,晕。本来就对锁不是很清楚,回去查了下资料。原来对于select DOL表会要求 共享意图表锁和共享行锁,对于delete DOL表会要求 排它意图表锁和数据行上的更新行锁和随后的排它行锁。可对于APL表