摘要:最近发现一个非常奇怪的阻塞问题,如下截图所示(来自监控工具DPA),会话583被会话1036阻塞,而且阻塞发生在tempdb,被阻塞的SQL如下截图所示,会话等待类型为LCK_M_S 因为DPA工具不好截取全部信息,使用下面SQL语句获取了阻塞会话的详细信息如下,来自Microsoft SQL Server Management Studio - Tran... 阅读全文
SQL Server Sleeping会话占用内存资源浅析?
2019-05-08 23:08 by 潇湘隐者, 2740 阅读, 0 推荐, 收藏,
摘要:在SQL Server中,会话的状态有运行(Running)、睡眠(Sleeping)、休眠(Dormant)、Preconnect 等状态,有时候你会在数据库中看到很多会话处于睡眠(Sleeping)状态,那么这些睡眠(Sleeping)状态的会话会消耗CPU、Memory资源吗?如果消耗资源的话,那么sleeping会话具体消耗多少内存资源呢? 另外它会影响数据库性能吗? 首先,处于睡... 阅读全文
SQL Server数据库文件与文件组总结
2019-04-25 13:38 by 潇湘隐者, 4038 阅读, 1 推荐, 收藏,
摘要:文件和文件组概念 关于文件与文件组,简单概括如下,详情请参考官方文档“数据库文件和文件组Database Files and Filegroups”或更多相关资料: 数据文件概念: 每个SQL Server数据库至少包含两个作系统文件:一个数据文件(data file)和一个日志文件(log file)。数据文件包含数据和对象,例如表、索引、存储过程和视图....。日志文件包含恢复... 阅读全文
SQL Server使用sp_rename重命名约束注意事项
2019-04-18 16:12 by 潇湘隐者, 3219 阅读, 1 推荐, 收藏,
摘要:在SQL Server中,我们可以使用sp_name这个系统存储过程重命名数据库中对象的名称。 此对象可以是表、 索引、 列、 别名,约束等数据类型(具体可以参考官方文档)。上周在使用这个函数重构数据库中约束的时候,遇到了下面错误,如下所示: USE AdventureWorks2014; GO sp_rename 'ErrorLog.DF_ErrorLog_ErrorTime', 'DF... 阅读全文
LogWriter: Operating system error 21(error not found) encountered
2019-04-15 14:58 by 潇湘隐者, 1031 阅读, 0 推荐, 收藏,
摘要:一台老旧的数据库服务器(SQL Server 2005)突然报如下错误,而且数据库处于RECOVERY PENDING ,检查错误日志,发现这个错误是突然出现的。没有任何其它人为误操作导致 Date 2019/4/15 10:57:47 Log SQL Server (Archive #1 - 2019/4/15 11:16:00) Source ... 阅读全文
SQL Server的Linked Server支持使用SEQUENCE吗?
2019-04-11 16:04 by 潇湘隐者, 822 阅读, 0 推荐, 收藏,
摘要:SQL Server的Linked Server支持使用SEQUENCE吗? SQL Server 2012开始支持序列(SEQUENCE),今天遇到有个同事咨询,能否在LINKED SERVER里面调用SEQENCE, 结果我测试发现不行,但是不管官方文档也好,网上相关资料也罢,都没有说支持,也没有说不支持。 例如官方文档NEXT VALUE FOR (Transact-SQL)中明确表... 阅读全文
SQL Server使用sp_spaceused查看表记录存在不准确的情况
2019-04-09 09:10 by 潇湘隐者, 910 阅读, 1 推荐, 收藏,
摘要:在之前写过一篇博客"关系数据库如何快速查询表的记录数",里面介绍了使用sp_spaceused查看表的记录数是否正确的问题,具体如下: 关于问题3:有多个索引的表,是否记录数会存在不一致的情况? 答案:个人测试以及统计来看,暂时发现多个索引的情况下,sys.partitions中的rows记录数都是一致的。暂时没有发现不一致的情况,当然也不排除有特殊情况。 关于问题5: 分区表的... 阅读全文
SQL Server死锁中的会话隔离级别为序列化(Serializable)实验测试
2019-04-03 09:36 by 潇湘隐者, 1217 阅读, 2 推荐, 收藏,
摘要:最近在分析SQL Server的死锁时,发现一个比较有意思的现象,发现死锁当中一个会话的隔离级别为序列化(Serializable),这个是让人比较奇怪的地方,我们知道SQL Server数据库的默认隔离级别为已提交读(READ COMMITTED),除非人为设置事务隔离级别(TRANSACTION ISOLATION LEVEL),否则事务隔离级别会使用数据库的默认隔离级别。在分析了死锁相关的存... 阅读全文
SQL Server统计信息偏差影响表联结方式案例浅析
2019-03-31 19:54 by 潇湘隐者, 1317 阅读, 5 推荐, 收藏,
摘要:我们知道数据库中的统计信息的准确性是非常重要的。它会影响执行计划。一直想写一篇关于统计信息影响执行计划的相关博客,但是都卡在如何构造一个合适的例子上,所以一直拖着没有写。巧合,最近在生产环境中遇到这么一个案例,下面对案例中的相关信息做了脱敏处理,有些中间步骤也省略了,只关注核心部分SQL。如下所示,同事反馈一个SQL语句执行很慢。 UPDATE bSET b.[Statu... 阅读全文
SQL Server关于predicate、density、selectivity、cardinality名词浅析
2019-03-27 08:45 by 潇湘隐者, 3433 阅读, 1 推荐, 收藏,
摘要:在SQL Server中,我们要看懂执行计划和统计信息,我们可能需要深刻理解一些关键词,例如密度(Density)、选择性(Selectivity)、谓词(predicate)、基数(Cardinality)。前阵子,对密度和选择性的概念模糊了,刚好看了Query Tuning Fundamentals: Density, Predicates, Selectivity, and Card... 阅读全文
Oracle dblink的连接模式的关系测试总结
2019-03-23 11:44 by 潇湘隐者, 1590 阅读, 0 推荐, 收藏,
摘要:这篇主要介绍一下database link由于连接数据库的方式不同遇到的一些问题,我们知道连接ORACLE服务器的模式一般有两种方式:专用服务器连接(dedicated server)和共享服务器连接(shared server)。这次遇到的案例服务是dblink跟连接ORACLE方式有关,当然本质原因是什么呢,这也是我这篇文章在探讨的问题。下面通过案例来讲述一下具体情况: 我们先来搭建测试环... 阅读全文
MySQL系统变量sql_safe_updates总结
2019-03-21 09:14 by 潇湘隐者, 3359 阅读, 2 推荐, 收藏,
摘要:MySQL系统变量sql_safe_updates总结 在MySQL中,系统变量sql_safe_updates是个非常有意思的系统变量,在Oracle和SQL Server中都没有见过这样的参数或功能。如果这个系统变量设置为1的话,意味着update与delete将会受到限制。个人臆测,之所以提供这个功能,一方面是要避免出现更新或删除数据时,忘记添加WHERE条件,导致数据被误更新或误删的情... 阅读全文
SQL Server移除事务日志后sys.master_files依然存在记录问题
2019-03-19 15:38 by 潇湘隐者, 1116 阅读, 1 推荐, 收藏,
摘要:在SQL Server中移除了事务日志文件后,使用sys.master_files检查时发现,对应的事务日志文件记录信息依然存在sys.master_files里面,只是状态state_desc为OFFLINE。需要经过一段时间,这条记录在这个系统视图才会消失。 DECLARE @db_name NVARCHAR(32);SET @db_name=N'TEST';SELECT f.dat... 阅读全文
阿里云RDS for SQL Server测试吐槽
2019-03-12 12:53 by 潇湘隐者, 2227 阅读, 0 推荐, 收藏,
摘要:最近测试了一下阿里云RDS for SQL Server,有些设计简直就是反人类,让人不得不吐槽一番。 1:控制台创建数据库时,数据库名不能包含大小字母。 如上截图所示,数据库名称不能包含大写字母,好吧,这个限制我认了。 但是使用“高权限账号”通过SSMS客户端连接数据库,可以创建包含大写字母的数据库。这个是完全不一致的行为? 实在不明白要弄成前后矛盾!。最坑爹的是,如果你用S... 阅读全文
SQL Server作业报错特殊案例
2019-03-08 17:15 by 潇湘隐者, 1713 阅读, 0 推荐, 收藏,
摘要:一个作业报错,报错信息如下,从错误信息根本看不出为什么出错,手工运行作业又成功了。一时不清楚什么原因导致作业出错。 MessageExecuted as user: NT SERVICE\SQLSERVERAGENT. ...eration. [SQLSTATE 01003] (Message 8153) Mar 6 2019 8:09AM [SQLSTATE 01000] (Mess... 阅读全文
Variable SQLLOGDIR not found
2019-03-01 12:58 by 潇湘隐者, 1033 阅读, 0 推荐, 收藏,
摘要:昨天在一数据库(SQL Server 2008 R2 SP3)上部署了一个作业,今天早上收到告警邮件,作业执行报错“Unable to start execution of step 1 (reason: Variable SQLLOGDIR not found). The step failed”,刚开始有点莫名其妙,后面检查发现出错的原因是因为在高级选项(Advanced)里面的output... 阅读全文
ORA-279 signalled during: alter database recover logfile
2019-03-01 11:47 by 潇湘隐者, 4153 阅读, 0 推荐, 收藏,
摘要:在RMAN的RECOVER还原过程中,RMAN界面正常,但是检查、刷新告警日志,发现告警日志里面有ORA-279,如下所示: alter database recover logfile '/u06/archivelog/2019_02_19/o1_mf_1_16228_g6oznpbv_.arc'Thu Feb 21 08:49:48 CST 2019Media Recovery Lo... 阅读全文
Linux如何查找文件的创建时间
2019-02-27 10:32 by 潇湘隐者, 17150 阅读, 2 推荐, 收藏,
摘要:Linux的文件能否找到文件的创建时间取决于文件系统类型,在ext4之前的早期文件系统中(ext、ext2、ext3),文件的元数据不会记录文件的创建时间,它只会记录访问时间、修改时间、更改时间(状态更改时间)。 Access 是访问时间,文件数据的最后访问时间。例如读文件内容 Modify 是修改时间,文件数据的最后修改时间。例如使用VIM修改文件内容 Change ... 阅读全文
ORA-02266错误的批量生成脚本解决方案
2019-02-25 17:09 by 潇湘隐者, 1397 阅读, 0 推荐, 收藏,
摘要:ORA-02266: unique/primary keys in table referenced by enabled foreign keys这篇博客是很早之前总结的一篇文章,最近导数时使用TRUNCATE清理主表数据又遇到了这个错误,发现还有其它解决方案: a) 禁用与主表相关的外键约束 b) TRUNCATE TABLE c) 启用那些外键约束。 在实际操作中... 阅读全文
SQL Server查看索引重建、重组索引进度
2019-02-25 14:57 by 潇湘隐者, 9243 阅读, 5 推荐, 收藏,
摘要:相信很多SQL Server DBA或开发人员在重建或重组大表索引时,都会相当郁闷,不知道索引重建的进度,这个对于DBA完全是一个黑盒子,对于系统负载非常大的系统或维护窗口较短的系统,你会遇到一些挑战。例如,你创建索引的时候,很多会话被阻塞,你只能取消创建索引的任务。查看这些索引维护操作的进度、预估时间对于我们有较大的意义,需要根据这个做一些决策。下面我们来看看看看如何获取CREATE INDEX... 阅读全文
当心Azure跨区域数据传输产生额外费用
2019-02-22 10:15 by 潇湘隐者, 1295 阅读, 0 推荐, 收藏,
摘要:最近同事发现Azure上一台虚拟机的费用环比增加了一部分。后面仔细检查发现费用来自数据传输, 因为这是早期部署的一台Azure虚拟机(Iaas),我们在本地生成备份,然后通过AzCopy到存储账号的Blob里面。但是Azure的虚拟机位于中国东部数据中心,而存储账号位于中国北部数据中心。以前由于数据量小没有留意,这次是由于数据量暴增才被发现的。 如果位于同一区域的数据传输是免费的。但是不通区... 阅读全文
SQL Server 查找统计信息的采样时间与采样比例
2019-02-18 16:39 by 潇湘隐者, 2449 阅读, 0 推荐, 收藏,
摘要:有时候我们会遇到,由于统计信息不准确导致优化器生成了一个错误的执行计划(或者这样表达:一个较差的执行计划),从而引起了系统性能问题。那么如果我们怀疑这个错误的执行计划是由于统计信息不准确引起的。那么我们如何判断统计信息不准确呢?当然首先得去查看实际执行计划中,统计信息的相关数据是否与实际情况有较大的出入,下面我们抛开这个大命题,仅仅从统计信息层面去查看统计信息的更新时间,统计信息的采样行数、采样比... 阅读全文
SQL Server中是否可以准确获取最后一次索引重建的时间?
2019-02-18 11:03 by 潇湘隐者, 1683 阅读, 0 推荐, 收藏,
摘要:在SQL Server中,我们能否找到索引的创建时间?最后一次索引重建(Index Rebuild)的时间? 最后一次索引重组(INDEX REORGANIZE)的时间呢? 答案是我们无法准确的找到索引的创建时间、最后一次索引重组时间,最后一次索引重建的时间。 其实就目前SQL Server的各个版本而言,还没有一个系统表或DMV视图有保存索引创建的时间,索引重建的时间、索引重组的时间。但是有些... 阅读全文
Linux查看监听端口的脚本测试
2019-02-15 17:34 by 潇湘隐者, 5021 阅读, 0 推荐, 收藏,
摘要:本文是按照lfree的博客(https://www.cnblogs.com/lfree/p/10368332.html)中的内容,进行学习、测试、总结的。有些知识点也是在阅读这篇博文时,发现不了解这方面的知识,遂网上搜索相关资料总结了一下。 1:Linux 设备里面有个比较特殊的文件:/dev/[tcp|upd]/host/port 只要读取或者写入这个文件,相当于系统会尝试连接:host... 阅读全文
[转载]——说说IO
2019-02-15 14:02 by 潇湘隐者, 1723 阅读, 3 推荐, 收藏,
摘要:本文转载自“和你在一起”的“说说IO“系列文章https://pengjiaheng.iteye.com/,总共分为8篇,特意整理、收录在此,支持原创、尊重原创,分享知识! 说说IO(一)- IO的分层 IO性能对于一个系统的影响是至关重要的。一个系统经过多项优化以后,瓶颈往往落在数据库;而数据库经过多种优化以后,瓶颈最终会落到IO。而IO性能的发展,明显落后于CPU的发展。Mem... 阅读全文
SQL Server一致性错误修复案例总结
2019-01-11 12:07 by 潇湘隐者, 5434 阅读, 1 推荐, 收藏,
摘要:今天遇到了一个关于数据库一致性错误的案例。海外工厂的一台SQL Server 2005(9.00.5069.00 Standard Edition)数据库在做DBCC CHECKDB的时候出现了一致性错误,下面总结一下处理过程。具体的一致性错误信息如下所示: Msg 8992, Level 16, State 1, Line 1 Check Catalog Msg 3853, State ... 阅读全文
ORA-12520 TroubleShooting
2019-01-10 23:24 by 潇湘隐者, 1421 阅读, 0 推荐, 收藏,
摘要:同事反馈他连接一个新搭建的测试数据库时,报“ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序”错误,在解决他这个问题时,顺便分析、总结一下ORA-12520错误。下面重现一下这个场景: Oracle Client段的tnsnames.ora的配置如下: MY_TEST= (DESCRIPTION= (ADDR... 阅读全文
MySQL:select command denied to user for table 'proc'案例
2019-01-08 16:44 by 潇湘隐者, 34005 阅读, 0 推荐, 收藏,
摘要:使用EMS MySQL Manager Pro(3.4.0.1)连接MySQL 5.6.20时,报错:“SELECT command denied to user xxx@xxx.xxx.xxx.xxx for table 'proc' 很是纳闷,后面使用同样的权限,发现使用命令工具mysql -h xxxx -u username -p连接时不会报错。个人猜测是因为EMS MySQ... 阅读全文
关于ORACLE数据库名以及数据实例名等几个重要概念
2019-01-06 23:22 by 潇湘隐者, 2162 阅读, 3 推荐, 收藏,
摘要:在Oracle中有关数据库和数据库实例的几个重要概念,有时候如果理解不是很深或者对其疏忽、混淆了,还真容易搞错或弄不清其概念,下面就数据库实例名、数据库名、数据库域名、数据库服务名、全局数据库名几个概念,我们来梳理一下概念,总结归纳一下这些知识,首先,我们来看看官方文档对这几者的概念介绍: INSTANCE_NAME(数据库实例名) Property Description P... 阅读全文
ORA-04030: out of process memory when trying to allocate 152 bytes (Logminer LCR c,krvtadc)
2019-01-01 21:51 by 潇湘隐者, 3056 阅读, 0 推荐, 收藏,
摘要:今天使用LogMiner找回误更新的数据时,查询v$logmnr_contents时,遇到了“ORA-04030: out of process memory when trying to allocate 152 bytes (Logminer LCR c,krvtadc)”错误。查了一下My Oracle Support,发现出现ORA-04030错误的原因,特摘录在此。 如... 阅读全文
浙公网安备 33010602011771号