数据库管理员

希望提高数据库技能并向社区中的其他人学习的数据库专业人员的问答

4
创建集中式DBA数据库
我们有200多个服务器,我正在考虑创建一个集中式DBA数据库,该数据库在其中记录备份,错误,空间作业并生成关于SSRS的报告。我不确定从哪里开始,非常感谢您的帮助。非常感谢你。

5
Oracle的哪些功能使其成为小型项目的诱人选择?
考虑到Oracle的许可处理[a](在较小程度上包括成本),我一直想知道选择PostgreSQL还是选择MySQL的决定因素是什么。 我的公司几乎总是选择Oracle(如果可能,则使用XE),即使对于只有一个简单的Windows服务器运行数据库而没有任何专门的DB管理的小型项目。(请注意,小的也并不意味着数据将总是适合的Oracle XE的相当小尺寸的限制。) 我一直对这种选择提出质疑,但是这样做的好处是,至少我们只接触一种数据库产品。 尽管如此,在给定一个新项目的情况下,您需要RDBMS,但是数据库的项目和范围很小,基于您在简单Windows服务器上运行Oracle的哪些独特功能(无需过多的专门管理),您会选择Oracle另一个RDBMS? 附加上下文:我们的许多数据库部署都以“低管理”模式在客户站点上运行。即,数据库仅建立一次。对其现场的正确行为和性能进行了一些初步测试。此后,数据库就可以继续运行了。没有进行常规管理。仅当出现故障时,技术人员(而非专门的DBA)才会检查数据库,以尝试找出问题所在。备份通常作为脱机备份完成。在某些项目中,客户甚至都不在乎是否涉及RDBMS。他们只是将自己的应用视为可以(可以不可以)的黑匣子。 [a]:在我工作的地方,数名项目经理反复花了几个月的时间才能为小型项目获得适当的许可,因为如果收入微不足道,当地的Oracle代表对销售他们的产品就不太感兴趣。

3
SQL Server性能突然下降
我有一个SQL Server 2005,它最近已经变得不可预测,并且我为之why恼。在几秒钟内执行的查询正在更改计划并花费数分钟(花费时间进行全表扫描或索引假脱机)。现在最明显的是,统计数据已过时,导致优化程序感到困惑,但我坚信情况并非如此-首先,因为基础数据没有发生重大变化(例如,将一年的数据添加到一年的数据之上)已经存在于表格中),其次是因为“自动创建统计信息”和“自动更新统计信息”均为true。然而,优化器变得混乱了。在Tuning Advisor中运行SQL给了我许多CREATE STATISTICS似乎可以解决它的多列语句(直到下一个SQL行为异常)。 有什么我可以用来解决根本原因的策略构想吗?为什么“正常”统计数据还不够?

5
如何检测对数据库的任何更改(DDL和DML)
我的客户端的SQL服务器上有很多数据库。这些数据库正在开发中,因此开发人员可以设计,重构,进行数据修改等。有些数据库很少更改。我的客户必须确保所有人(备份)的安全,并花一些时间来管理环境。(该公司没有数据库管理员的职位。)经过长时间的讨论,由于易于还原,客户决定使用每日完全备份策略。 因此,这是情况的摘要: 数据库的数量每天都会变化。 更改的数据库(意味着数据和/或结构已更改)应备份。 未更改的数据库不得备份。 解决方案不得影响数据库结构(这不是限制性要求) 该“备份引擎”将自动工作。 主要问题:如何检测数据库已更改。问题的第一部分(DDL更改)可以通过使用DDL触发器来解决。但是数据更改(DML更改)是一个问题。无法将DML触发器应用于所有数据库的所有表以跟踪更改(性能,扩展对象的管理...)。备份引擎必须跟踪所有更改,以将每个数据库标记为准备备份。 更改数据捕获是一种解决方案,但似乎过于繁琐(它也需要SQL Server Enterprise Edition)。 另一种方法是跟踪数据库文件的更改(大小或上次更改时间),但无法正常工作:当数据库超出所有保留的可用空间并且sp_spaceused不是解决方案时,数据库可以更改其大小。 跟踪是一种解决方案,但它会导致性能问题并需要其他管理。 是否有解决方案可以计算实际的数据库使用量,而又不影响其他数据库管理对象(如统计数据……)?可以肯定的是,对表数据的更改不会改变表的大小不会触发(我认为),但这总比没有好。确实,我在寻找SQL Server 2008的直接或间接解决方案。 感谢您的任何评论,解决方案和想法。 添加: 这是解决方案(感谢Marian): Select NextLSN = MAX(fn.[Current LSN]) ,Databasename = DB_NAME() from fn_dblog(NULL, NULL) fn LEFT JOIN sys.allocation_units au ON fn.AllocUnitId = au.allocation_unit_id LEFT JOIN sys.partitions p ON p.partition_id = au.container_id LEFT JOIN …


4
计算一行占总和的百分比
不好意思,我很抱歉,对此我不确定。 这是我目前正在使用的数据(的简化视图) Agent | Commission ---------|------------ Smith | 100 Neo | 200 Morpheus | 300 我需要计算每个代理商负责的总佣金百分比。 因此,对于史密斯探员,该百分比将计算为 (Agent Smith's commission / Sum(commission)*100 所以,我的预期数据是 Agent | Commission | % Commission ---------|---------------|--------------- Smith | 100 | 17 Neo | 200 | 33 Morpheus | 300 | 50 我有一个函数返回每个代理的佣金。我还有另一个函数将百分比返回(Commission/Sum(Commission))*100。问题是要Sum(commission)为每一行进行计算,并且考虑到此查询将在数据仓库上运行,因此数据集将相当大(当前,它的记录不足2000条),并且说实话,这是一种不好的方法(IMO )。 有没有一种方法可以Sum(Commission)不对正在获取的每一行进行计算? 我在考虑两部分查询的问题,第一部分将获取sum(commission)到包变量/类型中,第二部分将引用此预先计算的值,但是我不确定如何实现此目的。 我仅限于使用SQL,并且我在Oracle …

4
用于远程数据库的SQL Server Management Studio
使用远程托管的专用服务器上的SQL Sever数据库,我可以使用安装在同一服务器或本地计算机上的SQL Server Management Studio。在第一种情况下,我应该使用远程桌面工作,这会使工作变慢一些。在第二种情况下,我需要在服务器的防火墙中打开其他端口,但是我将获得更舒适的用户体验。 这两个的推荐做法是什么?
13 sql-server  ssms 

4
有关操作/管理MongoDB的良好资源
学习如何操作和管理MongoDB的最佳资源是什么? 有大量的资源来开发它,这实际上会在您具有足够的开发能力并且确实需要过滤出这种噪音时造成问题。对于尚无力聘请DBA的开发人员,我们需要在保持我们的Mongo集群稳定,高性能等方面取得相当好的成绩。除了常见问题解答和快速入门指南之外,还有其他好的信息存储库吗?值得关注的好博客等?
13 mongodb 

2
如何在不安装新实例的情况下在MS SQL 2005中更改实例名称?
我有一个实例,实际上没有任何内容,只是安装了一个实例(它原本用于一个项目,但实际上从未在此服务器上完成,该项目在另一台服务器上重复完成了),所以既然有了该实例,我想重命名。 能做到吗?我该怎么办? 进一步调查(搜索)说,这实际上是不可能的。与我的同事进行的其他协商表明,我不妨安装2k8实例并继续前进。

5
在同一台物理服务器上运行复制是否明智?
我正在考虑为我的数据库设置主从复制。从属服务器将用于冗余,可能还用于报告服务器。但是,我遇到的最大问题之一是,我们已经在数据中心实现了最大的供电能力。因此,添加另一台物理服务器不是一个选择。 就cpu而言,我们现有的数据库服务器未得到充分利用(四核的平均负载从未真正超过1)。因此,最主要的想法是投入一些新的驱动器,并将内存增加一倍(从8GB到16),并在同一台物理计算机上运行另一个mysql实例。每个实例将具有用于数据库的单独磁盘。 这个想法有什么问题吗? 编辑(更多信息):幸运的是,我从未发生过任何严重的事情来关闭服务器,但是我正在尝试提前计划。我们当然有每晚可以从中恢复的备份。但是我认为,如果主服务器的驱动器发生故障(如果整个计算机都熄灭,显然不会),那么将冗余数据存储在单独的磁盘上将提供更快的解决方案。 至于报告方面,我们要报告的任何表都是MyIsam。因此,对要写入的同一表进行昂贵的读取可能会使服务器瘫痪。我的假设是有一个从属服务器进行报告不会影响主服务器,只要我们向其提供足够的内存即可(因为cpu负载尚未成为问题)。



2
在Oracle中进行PL / SQL工作的应用程序开发人员的安全性
您如何处理Oracle中缺少架构级别特权的问题?Oracle的安全体系结构适用于只需要对象级特权的应用程序,并且适用于几乎不需要限制的DBA。但是,对于使用前端应用程序和多种模式的PL / SQL进行开发的程序员而言,体系结构中似乎存在很大的漏洞。这是我的一些缺点: 使每个程序员都按照自己的模式进行开发。DBA将向需要它们的程序员授予对象级别的特权。任何软件包开发都必须由DBA完成。主要缺点是程序员会像使用存储桶一样使用数据库,从而损害数据库性能。我希望程序员在数据库中进行开发,但是这种方法会大大不利于它。 为每个程序员提供他们需要进行开发的十几种模式的用户名/密码。向这些应用程序模式授予创建过程,表等的权限。这种方法的一些缺点是程序员必须维护多个登录名,并且必须很少自己登录。跨模式开发也很困难。 向程序员授予开发所需的每个模式的代理身份验证特权。这使他们可以自己登录,而不必授予他们代理权限以外的其他权限。缺点包括程序员必须为其代理的每个模式维护独立的连接,跨模式开发更加麻烦,因为连接必须不断更改,并且使用带有已通过身份验证的公共数据库链接的程序包无法在代理连接内部进行编译。 给每个程序员DBA特权。–这里的缺点是安全性。不能将任何模式程序员挡在任何模式之外,并且任何程序员都可以模仿任何其他程序员(DBA)。 似乎缺少一个选项来授予每个程序员SELECT / INSERT / CREATE / etc。他们需要在其中进行开发的模式具有特权。他们使用一个连接以自己的身份登录以完成工作。他们有权访问的架构中的新对象将立即可用。 我想念什么吗?您如何处理进行PL / SQL开发的应用程序程序员?

2
标准化练习资源
我想提高我的数据库规范化技能。在网上哪里可以找到高质量的初学者到高级水平的练习(包括解决方案)?

2
如何构建模型以正确,有效地表示关系数据库中的树状数据?
基于使用SQL问题在关系数据库中遍历树状数据的方法,我想知道如何在考虑物理影响的情况下定期用于在关系数据库中描述树状数据的方式? 我假设RDBMS除了常规的SQL ANSI或常用功能之外,没有其他特殊功能来处理这些功能。 毫无疑问,我一直对MySQL和PostgreSQL以及最终对SQLite感兴趣。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.