存档

2010年8月 的存档,文章数:22

oracle的版本为:10gr2,10.2.0.1.0。 利用oracle中的hsodbc连接sqlserver2005数据库。已成功连接。db link的名字为: sql2005fororacle。 执行:select count(*) from sysdatabases@sql2005fororacle; 能够成功执行。 但是,在执行: select count(*) from sysobjects@sql2005fororacle;却导致系统出现了死机症状,无法响应任务的操作,任务管理器看到cpu利用率不高。无奈,只能强制关机。 在alert_<SID>.log文件中发现有这么几句: Memory Notification: Library Cache Object loaded into SGA Heap size 2225K exceeds notification threshold (2048K) KGL object name :XDB.XDbD/PLZ01TcHgNAgAIIegtw== 原来遇到oracle的bug了。上网检索,说 是oracle的一个bug在10g10.2.0.1的各个平台上都出现过。 Oracle10g中,在load较大的对象进library cache中时,会记录以上警告。在版本10.2.0.1中,这个定义大对象的阈值是2M,这是有隐含参数 _kgl_large_heap_warning_threshold 指定的从10.2.0.2起,这个参数的默认值被修改为50M。 解决方法1 :升级到10.2.0.2或者以上。 解决方法2 : SQL> alter system set "_kgl_large_heap_warning_threshold"=20388608 scope=spfile ; SQL> shutdown immediate SQL> [...]

在Sybase中,表内新添加的列都位于表的最后。其它数据库也基本相同,这和数据库的内部物理存储是有必然关系的。我研究过sybase 中数据的物理存储结构,理解在sybase以及其它数据库中新增加的列必须放置在最后的原因。 在项目实践中,可能有这样的需求:需要将最后添加的一列放置到前面的位置。比如:表test中原来的列为:a,b,c,不想让最后添加的列d放在第四个位置,而让列d放在第2个位置,形成:a,d,b,c这样的顺序。如何实现呢? 一般的办法是: 1.新建一个临时表:test_bak, create table test_bak ( a 列属性, d 列属性, b 列属性, c 列属性 )   2.将原表test的数据拷贝到临时表test_bak中 insert into test_bak(a,d,b,c) select a,d,b,c from test   3.将原表删除,临时表改名为原表的名字 drop table test sp_rename test_bak,test   以上是常规的办法。如果表内的数据量很大的时候,则会比较耗费时间。 下面我介绍另外一个比较简便的方法。 主要思路是调整表在syscolumns中对应的colid的值。 先建立一个新的测试表test 1> drop table test 2> go 1> create table test(id int not null,name varchar(30) null,age tinyint [...]

dbcc writepage是sqlserver 2000 和 2005中未公开的命令,也就是说使用这些未官方支持的命令出现的任何后果与MS无关。 同样,本文仅仅演示dbcc writepage的使用,您在操作时出现的任何后果与本人无关。 dbcc writepage的语法为:    dbcc writepage ({ dbid, ‘dbname’ }, fileid, pageid, offset, length, data) 下面演示dbcc writepage的使用方法: —————————————————————————- 第一步:创建一个测试表 1> create table test (id int not null,name varchar(30) null) 2> go 1> insert into test 2> select 1,'china' 3> go (1 行受影响) 1> insert into test 2> select 2,'beijing' 3> [...]

在ASE中统计某个用户表的信息,比如:表中的行数、分配的空间、数据所占空间、索引所占空间以及剩余空间等,我们可以使用系统存储过程sp_spaceused来实现。 系统存储过程sp_spaceused有两个参数:@objname和@list_indices,第一个@objname是待统计的对象名,一般 是表名;第二个@list_indices标志是否单独统计索引信息,@list_indices=1表示单独统计索引信 息,@list_indices=0则不单独统计。 示例: 1> sp_spaceused sysobjects,0 2> go  name       rowtotal reserved data   index_size unused  ———- ——– ——– —— ———- ——  sysobjects 1014     252 KB   132 KB 68 KB      52 KB (1 row affected) (return status = 0) 1> sp_spaceused sysobjects,1 2> go  index_name   size  reserved unused  ———— —– ——– ——  ncsysobjects 48 KB [...]

What does the “I/O request” error below represent?   2008-04-21 13:26:42.480 spid364      Microsoft SQL Server 2005 – 9.00.3177.00 (Intel X86) 2008-04-22 16:30:02.140 spid6s       SQL Server has encountered 2 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [F:\sql data files\xxx.MDF] in database [xxx] (5).  2008-04-22 16:32:08.780 spid6s       SQL Server has encountered [...]

请参考:              aix与solaris中mount一个iso文件的方法   Linux系统在使用光盘、软盘或U盘时,必须先执行挂载(mount)命令。挂载命令会将这些存储介质指定成系统中的某个目录,以后直接访问相应目录即可读写存储介质上的数据。      1.挂载光盘      挂载光盘的命令如下:      # mount -t is09660 /dev/cdrom /mnt/cdrom      该命令将光盘挂载到/mnt/cdrom目录,使用“ls /mnt/cdrom”命令即可显示光盘中数据和文件。      卸载光盘的命令如下:      # umount /mnt/cdrom      2.挂载软盘      将软盘挂载到/mnt/floppy目录的命令如下:      # mount /dev/fd0 /mnt/floppy      卸载软盘的命令如下:      #umount /mnt/floppy      3.挂载U盘挂载U盘相对复杂一些。      首先使用“fdisk -l”命令查看外挂闪存的设备号,一般为/dev/sda1。然后用“mkdir /mnt/usb”命令建立一个挂载U盘用的目录。之后使用如下命令挂载FAT格式的U盘:      # mount -t msdos /dev/sda1 /mnt/usb      使用如下命令挂载FAT32格式的U盘:    [...]

前日误删除了C:\Documents and Settings\Administrator\.virtualbox目录,导致virtualbox上配置的redhat64bit虚拟机不能启动了。 试图拷贝一个其它虚拟机的xml文件修改一下,但是不可以。提示物理盘的uuid不匹配。那个虚拟机的xml文件丢失了,那么此虚拟机vdi文件上记录的uuid就无从得知了。 难道此redhat64bit虚拟机就不能用了?文件好几个G呢,删除了又太可惜,重装一遍很麻烦。 最后,在网上找到一个解决的办法: 利用virtualbox自带的命令行工具VBoxManage.exe 对残留的vdi虚拟机文件进行克隆,最后会重新生成一个uuid。 D:\Program Files\Oracle\VirtualBox>VBoxManage.exe clonehd /? Oracle VM VirtualBox Command Line Management Interface Version 3.2.6 (C) 2005-2010 Oracle Corporation All rights reserved. Usage: VBoxManage clonehd          <uuid>|<filename> <outputfile>                             [--format VDI|VMDK|VHD|RAW|<other>]                             [--variant Standard,Fixed,Split2G,Stream,ESX]                             [--type normal|writethrough|immutable]                             [--remember] [--existing] Syntax error: Mandatory output file parameter missing   步骤一: VBoxManage.exe [...]

sql server 2005中增加了动态性能视图,可以查看sys.dm_exec_query_stats获得正在执行的SQL的一些信息。 下面的SQL语句查询当前运行时间最长的10个事务的信息: SELECT DISTINCT TOP 10            t.TEXT QueryName,            s.execution_count AS ExecutionCount,            s.max_elapsed_time AS MaxElapsedTime,            ISNULL(s.total_elapsed_time / 1000 / NULLIF(s.execution_count, 0), 0) AS AvgElapsedTime,            s.creation_time AS LogCreatedOn,            ISNULL(s.execution_count / 1000 / NULLIF(DATEDIFF(s, s.creation_time, GETDATE()), 0), 0) AS FrequencyPerSec FROM sys.dm_exec_query_stats s       CROSS APPLY sys.dm_exec_sql_text( s.sql_handle ) t [...]