统计session 打开的游标数目
v$open_cursor 中纪录的不光是打开的游标数目,还有cached 的游标所以要统计真实的打开的游标数据,需要查看select * from v$sesstat a,v$statname bwhere a.STATISTIC#=b.STATISTIC# and b.NAME='opened cursors current';[@more@]v$open_cursor 中纪录的不光是打开的游标数目,还有cached 的游标所以要统计真实的打开的游标数据,需要查看select * from v$sesstat a,v$statname bwhere a.STATISTIC#=b.STATISTIC# and b.NAME='opened cursors current';
sqlplus失去响应
今天突然发现用sqlplus一连接数据库就死在那里了。[@more@]现象:今天本地装了个10g的数据库,用 sqlplus xxx/xxx@aaa 来连接数据库,然后就死掉了,没有反应,但是用 sqlplus "/ as sysdba" 可以正常连接数据库,用 @xxx 的方法连接别的地方的数据库正常。分析:发现数据库的udump目录下,每次一连接就会有一个.trc文件生成,里面的内容是 opiino: Attach failed! error=-1 ifvp=00000000sqlnet.log 文件里面也发现抱错;TNS-12560: TNS:协议适配器出现错误上网查了一下,意思就是 用了9i的listener来连接了10g的数据库。可是我
物化试图日志过大
发现一张物化试图日志表达到了2G。...[@more@]1. 远程试图使用的rowid刷新,可我的日志用的是主键创建的,所以fast刷新失败,结果使用了完全刷新,导致日志表一直增加。顺便看了下物化视图刷新的顺序。更新的顺序是先删除后更新,最后插入。首先查询出需要删除的数据:SELECT /*+ remote_mapped(MASPROD104.CIMC.COM) */DISTINCT M_ROW$$FROM (SELECT M_ROW$$FROM "MAS9I"."MLOG$_ACTION_TEST1"@MASPROD104.CIMC.COM MLOG$WHERE "SNAPTIME$$" > :1AND ("DMLTYPE$$" != 'I')) LOG$WHERE (M_ROW
[转贴]Skip Scan Index
今天用STA,叫我用Skip Scan Index ,转个贴记录了一下[@more@]在Oracle9i中,有一个新的特性:跳跃式索引(Skip Scan Index)。当表有一个复合索引,而在查询中有除了索引中第一列的其他列作为条件,并且优化器模式为CBO,这时候查询计划就有可能使用到SS。此外,还可以通过使用提示index_ss(CBO下)来强制使用SS。强制使用ss的方法: select /*+index_ss(test1 test_idx1)*/* from test1 a where b ='a';但并不是任何情况下都会使用到SS。在Oracle的官方文档中,除了提到需要CBO,并且对表进行过分析外,还需要保证第一列的distinct valu
enq: DX - contention
今天用addm检查数据库的时候,报了一个enq: DX - contention的过多等待。[@more@]enq: DX - contention 是分布式事务所使用的锁。select * from v$lock where type='DX'发现C0000001380D5D00 C0000001380D5D20 2833 DX 16 0 1 0 1121192 0C0000001380E76C8 C0000001380E76E8 2234 DX 51 0 4 0 4150509 1C0000001380E7B08 C0000001380E7B28 2784 DX 51 0 0 6 4150445 0这些锁的时间可不小啊,原来是2234堵住了2784,而且时间很久了,杀掉2234后,正常不过 DX 这个锁是如何发生的呢,做了一个小测试数据库A,数据库B 数据库A上有 dblinkB 连
windows通过samba访问aix的共享目录
windows通过samba访问aix的共享目录的配置方法 [@more@]一、Samba基础1、 简介1).SMB协议 SMB(Server Message Block,服务器信息块)协议可以看作是局域网上的共享文件/打印机的一种协议,它可以为网络内部的其它Windows和Linux机器提供文件系统、打印服务或是其他一些信息。 SMB的工作原理是让NetBIOS(Win95网络邻居通信协议)与SMB这两种协议运行在TCP/IP的通信协议上,且使用NetBIOS nameserver让用户的Linux机器可以在Windows的网络邻居里被看到,所以就可以和Win95/NT主机在网络上相互沟通,共享文件与服务了。 目前Micros
dbms_system.set_sql_trace_in_session 无效
用 dbms_system.set_sql_trace_in_session 设置了sql trace,可是无效。 [@more@]今天需要追踪下别人的sql,用exec dbms_system.set_sql_trace_in_session(11,13,true);执行成功,可是看 v$session 字段里面的SQL_TRACE还是DISABLED 阿,奇怪是sys用户阿,执行也没有抱错,后来才发现,原来要用户做下操作,该字段才会被刷新的,虽然字段还没有改过来,其实已经生效了。
11g新特性之结果集缓存
11g新特性之结果集缓存[@more@]结果集缓存(Result Set Caching)缓存是提高性能的一个常用手段,可以说在Oracle数据库中,Cache无处不在。Result Cache进一步又可以分为:Server Result Cache 和 Client Result Cache。前者通过服务器端SGA来缓存结果集,后者通过客户端来缓存结果集。Client Result Cache:在使用OCI应用程序时,可以通过客户端内存来缓存查询的结果集,缓存结果可以在所有session间共享,当查询反复执行时,查询结果可以直接从客户段的缓存中获得,从而极大地提高应用效率。客户端结果集缓存并不使用服务器端的内存,不会
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内存
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 什么是字符集? 字符集是字符(包含字母,数字,符号和非打印字符等)以及所指定的内码所组成的特定的集合。通常一个字
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表