技术开发 频道

专家点评:达梦6.0试用之数据字典

  【IT168 独家

  编者言:在4月份举办的2010中国数据库与商业智能技术大会上,国产数据库的代表厂商达梦高调亮相,给一向由国外厂商把持的企业商业数据库市场带来不小的波澜。人们开始纷纷将目光投向国产数据库软件市场,开始关注由中国人自己开发的数据库产品。

  国产数据库产品究竟能不能用?在功能和特性上够不够用?为了解开这些疑问,我们特邀请在数据库业界众多知名的技术专家亲身试用相关产品,并真实地写出自己的试用感受。这些专家大都是Oracle数据库的ACE,或者是对其它主流的商业数据库十分精通和了解,让他们站在这样的角度来客观写出自己对国产数据库的技术评测,是非常有说服力的。

  尽管各位专家的工作都十分繁忙,但他们还是都认为,将国产数据库软件在技术上的真实情况书写出來,给出自己中肯的评价,这是一件非常有意义的工作。 更令人欣慰的是,相比过去,今天像达梦这样的国产数据库产品已经显得非常自信,它们希望听到业界技术专家的建议甚至是批评,不断完善自己的产品和功能,这将是一个非常良性的循环,长此下去,我们相信,摆在国产数据库脚下的将是更为宽广的道路!

  作者简介:杨廷琨(网名Yangtingkun),现任海虹医药电子商务有限公司首席DBA, ITPUB论坛Oracle数据库管理版版主,知名社区技术专家。2004年曾参与编写《Oracle数据库性能优化》一书,2007年被Oracle公司授予Oracle ACE称号,喜欢研究Oracle相关的技术问题,他的技术博客上积累了1500多篇Oracle相关的原创技术文章。

  前几天ITPUB的熊主编和我联系,希望我能参加国产数据库达梦的试用活动,并写几篇使用感受。本来最近手头的事情比较多,本打算推辞的,不过熊主编再三邀请,而且强调并非是枪手文,只要写出真实使用感受即可。既然如此,我就本着支持国产数据库的原则,写几篇试用感受。

  达梦6.0 for Windows安装

  达梦6.0试用之测试环境搭建

  达梦6.0试用之SQL篇

  达梦6.0试用之数据类型

  达梦6.0试用之PLSQL篇

  达梦6.0试用之数据库对象

  达梦6.0试用之架构篇

  达梦6.0试用之数据字典

  达梦6.0试用之分区(即将发布)

  达梦6.0试用之并发和锁机制(即将发布)

  达梦6.0试用之备份恢复(即将发布)

  达梦6.0试用之导入导出(即将发布)

  由于本人唯一熟悉的数据库就是Oracle,因此所有的对比都是与Oracle数据库进行对比,在这个过程中,将尽可能避免将对Oracle数据库的喜爱之情带进来,争取站在一个比较公正的位置上来进行评价。

  这一篇简单介绍一下达梦数据库的数据字典。

  数据字典是数据库存储对象结构,维护数据库正常运行的内部表、视图和同义词的总称。除了维护数据库对象的完整性外,数据字典还提供给用户方便的查询和维护接口,此外数据字典还提供动态的系统、实例和会话级的统计信息和状态信息。用户可以根据这些信息了解系统运行状态,分析、诊断系统问题,对系统进行优化。

  Oracle的数据字典可以分为两大类,一部分是以DBA/ALL/USER开头的视图,另一部分是以V_$开头的视图。前者是静态视图,里面包含数据库中所有数据对象的信息,是Oracle提供给用户的查询访问接口。而后者是动态视图,里面包含会话、实例以及系统级的动态统计信息或状态信息,用户可以根据这些视图的状态和统计信息,分析、诊断系统或会话,从而达到优化或问题诊断的目的。

  而达梦提供的数据字典信息就显得过于简单了。对于静态视图而言,没有USER和ALL类型的视图,这意味着普通用户很难获取当前的

C:\dmdbms\bin>isql
isql V6.
0.2.51-Build(2009.12.23)
SQL
>login
server name:localhost
user name:test
password:
port:
12345
dm_login time used:
197.689(ms)
SQL
>select * from systables;
select * from systables;
无效的表或视图名
'systables' .error code = -1010
SQL
>select * from tables;
select * from tables;
无效的表或视图名
'tables' .error code = -1010

  当前用户已经授权了SYSDBA角色,而查询数据字典仍然很难查询到当前用户下的对象信息:

SQL>login
server name:localhost
user name:sysdba
password:
port:
12345
dm_login time used:
44.871(ms)
SQL
>select count(*) from systables;
select count(*) from systables;

1       101
1 rows got
time used:
0.430(ms) clock tick:707240.
SQL
>set current database test;
set current database test
设置当前数据库为
'test'
time used:
0.305(ms) clock tick:495190.
SQL
>select count(*) from systables;
select count(*) from systables;

1       77
1 rows got
time used:
0.399(ms) clock tick:649930.
0
相关文章