[第138期] DBA大讨论:数据库应用与故障排除

企业动态
对于数据的管理成为企业信息化关注的焦点,目前,数据库的种类繁多,而牵扯到数据库应用和部署的技术也纷繁复杂。在这种情况下,数据库管理与故障排除的重要性日益重要。本期门诊邀请了资深DBA李涛与我们一起讨论数据库在企业中的应用与故障排除。

不知不觉中,人们已经进入了一个数据爆炸的时代,曾经,我们买一个32MB的U盘就需要几百元,如今,600元就可以买到1.5TB的移动硬盘了。这种数据量的大幅增加,给数据的存储带来了前所未有的压力。数据的交换越来越频繁,而数据作为新的企业资产,企业的决策者同样希望这些新的资产能够给企业带来新的利润和增长空间。于是,对于数据的管理成为企业信息化关注的焦点,目前,数据库的种类繁多,而牵扯到数据库应用和部署的技术也纷繁复杂。在这种情况下,数据库管理与故障排除的重要性日益重要。

技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问。从热门技术到前沿知识,从技术答疑到职业规划。每期一个主题,站在最新最热的技术前沿为你引航!

本期门诊邀请了资深DBA李涛与我们一起讨论数据库在企业中的应用与故障排除。

专家介绍:

姓  名:李涛

擅长领域:数据库、项目管理

BEC企业全球化及本地化工程师,微软资深讲师,企业信息化与解决方案专家。主要从事企业信息化产品研发、实施与管理,企业高端IT培训。专注数据库、信息系统、EIP和.NET平台等技术。多年来为政府和企业开发部署了多种信息化平台,近千名学生遍布政府机关、中小企业和世界500强。

查看本期门诊精彩实录:http://doctor.51cto.com/develop-151.html

参与最新技术门诊:http://doctor.51cto.com/

精选本期网友提问与专家解答,以供网友学习参考。

Q:李老师你好,我们公司的informix数据库每天早上都要手动登录,使用onstat -  oncheck -pr  等命令进行数据库运行及备份状态的监控,并发送报告邮件。虽说工作量不大,但这样下来每天都是重复性的操作。我想使用自动化工具来实现informix数据库的监控及发送报告。我想了解一下,是否有这样的工具,效果怎么样?谢谢!

A: 你好,数据库的自动化管理一直都是信息工作者烦恼的事情。针对你这个问题,解决办法有多种,其一可以设计一个定时器来解决问题。定时器负责处理监控状态、生成LOG、备份等业务逻辑,在Linux环境下可以让开发人员设计一个Linux守护进程来实现定时器,如果在Windows环境下则可以开发一个 Windows服务实现,Windows服务也属于守护进程,就像是一个机器人帮助你做事情一样。另外也有一些共享软件可以使用,像 DBRichTool,Aqua Data Studio等

Q:老师你好,我想当一个网络工程师,要不要学习数据库,如果学习需要学习到什么程度?

A: 你好,网络工程师可以先学习下系统,比如Windows,Linux等,因为网络和系统结合的更紧密些,其次可以学习数据库等。最好的选择是先专精后专多,可以根据自己兴趣和实际工作需求来决定。一般学习数据库可以先从开发入手,然后学习管理,周期一般都在6个月到1年才能熟练,而实际经验只能从工作中慢慢摸索了。

Q:李老师,您好!我一直存在一个困惑就是 oracle stream在实例化数据库的时候,采取那一种方式呢?export/import,rman,hot/cold backup,因为在一次实施过程中失败了。报错与是未能提供实例化SCN。我当时用的是exp /imp,数据量是200G,错误信息为未能提供实例化的SCN,我很郁闷,难道EXP后数据的sCN还会一致,不可能,既然不可能,那为什么会报"未能提供实例化的SCN"呢?希望专家帮我这只菜鸟解决这个问题。谢谢!

A: advanced replication和stream实现的机制不同,再挖局日志时需要SCN的辅助,可以过一遍DBMS_APPLY_ADM.SET_INSTANTIATION_SCN。

Q:专家您好!mysql备份通常都是使用mysqldump,生成的sql文件这个文件直接放到别的数据库产品里面执行吗?

A: 虽然各种数据库厂商都说自己遵从了ANSI的SQL标准,但事实上每个数据库系统都已有不同的标准。所以这种方法基本没戏,但可以在这个基础上修改,省不少时间。不过每个数据库都提供了一些数据源驱动程序,比如你可以利用ODBC通过导入导出向导把MySqL的数据导入到SQLServer中。

Q:专家您好!我问个很菜的问题。我用本地企业管理器为何无法远程连接数据库?

A: 远程数据库在那里?如果是在托管商那里,是独立主机的话,基本不会有问题,如果是虚拟主机,一般需要在托管商的网站配置你的自己的IP地址。如果你的远程数据库是在局域网里面这种问题可有很多,信任的问题,安全的问题,都有可能,一般不会出现这种情况,连接的时候选择具体实例就可以了。你参考如下步骤看看:

1、先保证ping通

2、在dos下写入telnet   ip   1433不会报错

3、用ip连如企业管理器:

  企业管理器-->右键SQlserver组-->新建sqlserver注册-->下一步-->写入远程实例名(IP,机器名)-->下一步-->选Sqlserver登陆-->下一步-->写入登录名与密码(sa,password)-->下一步-->下一步-->完成

4、如果还不行:

  sqlserver服务器-->开始菜单-->SQLserver-->服务器网络实用工具-->启用   WinSock代理-->代理地址:(sqlserver服务器IP)-->代理端口-->1433-->OK了

5、如果还不行:

  sqlserver客户端-->开始菜单-->SQLserver-->客户端网络实用工具-->别名-->添加 -->写入别名如"51CTO"-->"网络库"选tcp/ip-->服务器名称写入远程ip或实例名-->OK了

Q:李老师你好,我想问一下,面向对象的数据库现在具体运用在哪些方面,广泛吗?还有,又没有versant的学习资料,嘿嘿

A: 从关系模型到面向对象模型,是数据库发展的一个过程,本质上是数据库系统设计时使用的算法有了改变,目前数据库的大部分应用都在关系算法这一块上,实际的开发中,可以利用ORM映射设计处更容易理解和控制模型。对象的好处在于,它具有属性,方法等,对表示事物更容易理解,可以随时变化,可以更好的控制。面向对像数据库这几年发展的也很火,主要由于计算机辅助,人工智能等高密集型数据存储的技术领域,需要面向对象的数据库来更好的理解对象的定义和存储。

Q:专家你好,我想请问一下DBA在linux方面的应用有哪些。Linux掌握到什么时候开始学习DBA比较好。谢谢专家指点。

A: 数据库系统本身就属于系统软件,如果你对操作系统原理,数据结构,数据库原理等比较熟悉,就奠定了成为DBA的扎实基础。如果你的数据库开发和管理工作是在 Linux上完成的,那么Linux系统本身对你很重要,像对Linux系统的理解,管理等,Shell编程,都算是比较基础的东西。DBA在Linux 下主要工作就是管理数据库,包裹I/O,性能优化,安全,监控,高可用性,灾难恢复等等。

Q:我想问一下学习数据库应该如何入手,ACCESS 还可以,SQL懂点网站设计用的简单语句,不知道想学的高深点应该 学些什么?入手选择MySql 还是 MsSql好?

A: 可以根据自身情趣和具体工作,比如你们上的项目用到了MySQL数据库,可以先学习MySQL,如果是SQL Server,就可以先学习SQL Server。从入门到熟练开发的学习周期二者都不长,但后期的深度提高就靠实际经验来不断磨合了。如果数据库理论扎实,ANSI SQL语法很熟悉,二者都学习也可以,甚至DB2,Oracel等都可以学习,关键是看你的职业规划,和你所处的团队是什么情况,一般在一个团队里面学习一个产品的用法,通过实际的项目经验,很快就能熟悉。其实就用一个数据库而言,不需要太长的时间就上手了,MySQL比较小巧,上手非常快,直接去 MySQL的官方下载个5.0的,相关的工具也很多,MySQL官方也提供了一套。而SQL Server从开发到管理,再到BI提供了一整套的功能,适合企业级的应用,可以先学习开发,基本3个月的周期,然后学习SQL Server的管理,基本也是3各月的周期,正所谓入门容易提高难,后期的需要自己多研究,多在实际工作中积累经验。

Access实际上是一个不错的数据库,在企业应用中也很普遍,总之针对不同的项目,不同的客户,选择合适的数据库才是硬道理。

真正想成为数据库设计的专家,我的建议,一开始最重要的是学习数据库理论,数据库建模等,具体的数据库系统是次要的。

#p#

Q:请问一下,DBA主要学习的内容有哪些?初级应该掌握哪些?中级应该掌握哪些?什么样的水平才能叫高级DBA?

偶现在管单位的一个小数据库,是一个软件开发公司给偶们单位开发的,平时基本不需要维护,所以不知道DBA的职责有哪些?DBA的工作是干嘛?要什么样的水平才能叫合格?

A: 一个有优秀的DBA首先是职业素养,其次是兴趣。从技术层面讲,DBA要学习一条线的知识,比如相关的系统平台,其次是基于这个平台的信息系统领域,最后才是数据库系统。一般来讲,一个优秀的DBA也必须是数据库开发的高手,中级DBA要达到对这个数据库系统及其相关平台,以及工具有很好的认识和使用熟练过程,有相当经验的数据库实际维护工作。高级DBA必须是一个系统方面的高手,说到底数据库就是一个系统级别的产品,如果你对系统原理,系统实现研究很深,那么DBA后期的路子走起来会顺的多。

从软件开发角度讲,DBA的知识可有可无,就用一个数据库产品做开发讲而言,现在主流的数据库你只需要一到两周,都可以上手,只是时间问题。但要做一个优秀的开发者,DBA的知识必须要具备的。

Q:李老师,对于一个数据库初学者来说,我对于品类繁多的数据库软件中选择一款适合的数据库还是有一定的困难,我现在正在学习linux,但是听人说只会 linux是没用的,要学习linux上的应用,比如集群,中间件,数据库应用等等。所以想选择一款数据库,你觉得在linux上面哪一种数据库应用最广泛呢,最有发展前景呢。

之前听到一位年薪217万的专家分析,"根据我对数据库的理解,目前市场上虽然有Oracle,DB2,Informix,Sybase和SQL Server数据库,但Informix数据库已经被IBM收购,而Sybase数据库在技术和市场上正走向没落,占据市场主要份额的就是 Oracle,DB2和SQL Server数据库。SQL Server数据库非常好,但是很遗憾的是只能在Windows平台使用。所以如果你深入研究SQL Server数据库,我只能说获取高薪的概率稍低,而且坦白的说,使用SQL Sever数据库的企业一般是中小企业居多。而国内做Oracle数据库的人太多,如果你想在Oracle领域出人头地,难度极大。但是,做DB2数据库的人反而不太多,物以稀为贵。况且,DB2数据库广泛应用在银行、电信、制造行业、零售行业、保险行业等"高薪"领域中,所以我强烈建议学习DB2数据库 "而在这其中也没有提到mysql,你可以就其分析一下吗?

非常感谢李涛老师,原谅一个初学者的诸多疑问。

A: 根据你的情况,可以从Oracel,DB2中选一个作为职业发展的技术方向,努力学精。DB2在国内不温不火,但市场占有率也没想象的那么差,Oracel 的市场份额最高,MySQL使用的公司也很多,从每年招聘的数量来看,这三个中可以选择Oracel和MySQL搭配学习,或者DB2和MySQL学习,任意一个组合学好了,高薪都不是问题(但高薪和技术的关系不是成正比的)。当然SQL Server也是一样,大小公司都在用,因为你选择了Linux,所以不推荐你学习SQL Server。在开发平台中,比如.NET平台,JAVA平台上,ORACEL,SQL Server,DB2,MySQL,Sybase,Informix等等中的任何数据库都可以被用到,ORACEL,SQL Server在国内应该是最多的。DB2在电信,金融方面用的比较多,尤其是配合IBM的OS。

选择一个路子,自己认真的走下去,就是对的。祝你好远。

Q:SQL Server 2008 相比2005有什么新特性?谢谢!

A: 从开发,管理,高可用性,性能优化等方面都有一些新东西加入,而且加入了很多比较新颖的东西。google一下吧

Q:老师:你好!我对安全工程师感兴趣! 不知道得学习什么知识?

A: 安全是个很大的话题,看你对那方面感性趣了,比如网络 ,系统,分层架构等。

Q:老师你好,我是做弱电工程的,装考勤机的时候经常需要连数据库,但是有的时候,老是提示我违反唯一性原则,连不上数据库,老师,这是为什么?

A: 唯一性原则?应该是考勤软件本身报的异常,开发人员在开发这个软件的时候,会有异常判断,如果代码或者不合理的操作产生异常时,就会抛出这个异常,给最终用户友好的提示。仔细的分析下这个软件的运行条件,合理的配置,最终会解决问题的。

Q:你好,李老师,能不能讲下SQL SERVER高级的开发功能,尤其是存储过程,触发器和自定义函数。谢谢了!

A: 你好,由于篇幅的问题,你的问题在这里不做深入的回答了,活动结束后,通过博文来解答你这个问题吧。

Q:李老师你好,今天早上我在公司需要修改一些数据的时候,右键点击表open table->return all rows 出现查询设计器遇到查询错误 未指定的错误  所有的表都这样,但是用select * from 可以查询数据,数据库是SQL Server 7,请问如何解决,只能重装吗?

A: 不用,重启一下你的服务器,释放下内存。应该就没问题了

Q:李老师你好,我以前遇到一个很奇怪的问题,现在都想不出怎样解决。在一间有5台电脑的公司里装了一套C/S的系统,其中有一台电脑是作数据库(SQL SERVER2000)的,其它电脑就连那台的数据库。但是有一台电脑就是连不上。PING那台数据库的PC是通的,在那连不上数据库的电脑上装SQL SERVER客户端还是连不上。但过一个小时后它又可以连上,用了不久还是会断。网络一直是通的。为什么呢?

A: 数据库服务器可能存在负载的问题,对服务器性能进行性能测试,如果不是性能的问题,那么可以按最初的软件配置方法,对数据库连接重新配置。

Q:李老师!你好看到你的样子太亲切了!呵呵~-~在此我想问做为一个网络工程师来说!对于数据库的学习从那些方面入手!同时关于数据库与WEB开发之间的关系!谢谢你。

A: 先学习SQL的开发吧。选一个你感兴趣的数据库,比如SQL Server ,Oracel等,坚持一个月基本就上手了,然后学习该数据库的管理特性,工具等等,勤实践,多动手。数据库是存储数据的地方,WEB开发的后端一般都会用数据库存储数据,另外也可以用XML,特定文件来存储数据,不一定非要用数据库。

Q:李老师,您好。我企业有一ERP系统,SAP BUSINESS ONE。其数据库有一张表的记录达到近三百万条,而且,每次在ERP系统中执行相关查询操作时,系统就会变慢甚至死机。请问,对于这种比较大的表,有什么好办法增加查询效率吗?谢谢!

A: 从2个方面进行优化,第一,针对ERP系统本身,如果是你们自主开发的,那么在编写查询语句的代码时,可以对SQL语句进行优化,最好使用存储过程,启用相关开发平台的缓存功能。第二,对数据库本身优化,可以尝试使用分区表,分割数据库文件,维护索引等方面进行优化。

Q:老师,你好!我想了解一下 数据库安全方面的问题! 我是学网络安全的!对于管理网络安全 或者网站后台安全  应学习哪方面的知识!还有能给我推荐写资源吗?比如网站 或者电子书之类的!

A: 网络安全这个概念太大了,网络安全理论,网络安全产品,相关系统平台,和网络有关的组件要非常熟悉,网站后台安全包裹系统和网路配置的安全,数据库安全,WEB程序的代码安全等。建议你选择一个平台,做某个平台的网络安全专家,先专后全面发展。基本功最重要,可以阅读下TCP/IP协议,共三册。

Q:李老师您好!我想问一下,关于企业级的网络管理员对于数据库的理解级别应为?如果现在工作当中去学习应该多学习哪些关于数据库方面的问题?谢谢!

A: 网路管理员,可以偏重系统一些,数据库可以作为了解,如果你是偏重系统管理的网络管理员,数据库也可以学习下,先学习SQL语句,然后学习下它的基本管理,像数据库安全,备份和还原等,基本2个月就熟悉了。

【编辑推荐】

  1. [第137期] 玩转08活动目录,助力您的企业管理
  2. [136期]阅卷组长解析:软考网络系列重难点与论文写作
  3. [135期]金牌网管实战篇:Cisco/H3C交换机配置与管理
责任编辑:张攀 来源: 51cto
相关推荐

2018-01-18 20:47:18

CPU数据线程

2010-09-28 15:42:36

DHCP服务故障排除

2023-02-27 08:07:47

语言模型数据库故障

2010-12-30 11:20:13

数据库连接

2011-05-27 13:47:30

DBA

2011-09-16 17:53:33

2019-01-14 08:18:43

DBA数据库运维

2019-12-27 17:25:13

大咖来了数据安全

2009-10-20 10:01:22

技术周刊

2009-11-20 13:29:59

Oracle数据库恢复

2009-10-21 14:16:50

服务器故障排除

2017-11-15 15:23:30

2019-10-16 08:55:32

DBA免费数据库监控

2011-08-17 15:29:00

2017-07-19 06:37:18

数据库计算存储

2011-05-26 13:07:29

数据库切换故障转移

2023-10-12 08:57:23

故障排除监控

2011-08-10 10:54:12

PingPing命令

2022-06-27 11:02:41

数据库时间云时代

2017-07-12 07:27:11

数据库中间表存储
点赞
收藏

51CTO技术栈公众号