a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 391|回复: 1

[考试辅导] 资格认证:创建最适合的Oracle运行环境

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
 在Oracle数据库中,提供了一套默认的用户操作环境。如用户查询的时候,从数据库中一次提取的行数;列之间的分隔符;每行显示的最大宽度;每页默认显示的行数等等。这些都是靠数据库的环境变量来控制。这些参数虽然是Oracle系统推荐的,但是,往往不符合数据库管理的要求。因为我们工作一段时间以来,已经养成了自己的一套工作习惯。所以,我们希望每次更换一个Oracle运行环境之后,数据库都能够提供一个我们熟悉的运行环境。这无疑可以提高我们工作的兴趣与效率。
0 f5 _! R5 N0 g7 C4 _$ j4 ^  为此,我们就需要手工的更改Oracle的环境变量,以达到我们的要求。考试.大下面结合自己的工作习惯,谈谈一些常用的环境变量的设置。相信凭借这些参数,可以给各位数据库管理员提供一个舒适的“工作环境”。; \- n. J3 J8 \% l
  环境变量一:设置列之间的分隔符。# O6 g" I4 _; H
  平时在SQL*Plus工具中,利用SQL语句查询的话,其列之间默认情况下是利用空格来进行区分的。但是,考试.大觉得这个区分不够明显。有时候,经常会看错。当数据多的时候,还会给人一种“晕车”的感觉。故考试.大往往一开始,就会更改这个默认设置。考试.大喜欢利用“|”符号来对列之间进行区分。% ^9 D. C- g8 g, l
  如通过如下设置,就可以让显示结果以“|”符号来区分各个列。SET COLSEP |。通过这条语句,就可以对数据库的环境变量进行设置。最后的运行结果如下。利用|这个符号来对列进行区分,看起来就会清楚的多。字段之间就会弄混。
5 @  Q7 ?% z& G* e* c# E; K  S  环境变量二:设置是否自动递交。: w% _- ^+ F$ n( ]; N- k" J+ B
  在Oracle数据库中有事务控制的概念。也就是说,当我们利用Update语句更新数据库的某些内容的时候,默认情况下,执行这条语句后不会马上就对数据库文件中的数据进行更改。在同一个对话中,查询的话,其显示的结果已经是更改后的结果。但是,若先注销这个对话,在重新连接、查询的话,其显示的结果仍然是修改之前的结果。其更改的内容没有被保存。这主要是因为这个更新的事务没有被递交上去。
" x* y+ h. M' [& y  根据Oracle数据库的设置,默认情况下,事务是不主动递交的。而是需要用户手工的输入commmit命令,来递交相关的事务。一般来说,DML语句都需要用户手工的递交事务才能够其作用。
5 k$ L$ |3 `- k' O8 ~  这个设计本来是为了给数据库管理员有一个缓冲的机会;同时,也是给终端用户一个确认数据是否准确的一个机会。另外,利用这种机制,也可以帮助数据库管理员很容易的实现回退机制。: L; r3 p( {  t) }- v; G  l$ y
  如现在在一个进销存管理系统中,需要把物料从一个仓库中转移到另一个仓库里去。此时,就需要通过事务来进行控制。从一个仓库中把物料数量减少,另一个仓库中增加。但是,若在另一个仓库中增加数量的操作因为某种原因失败,则就需要对“某个仓库中数量减少”这个事务进行回退。也就是说,不向数据库递交这个事务。通过这种机智,就可以轻松的实现各个作业之间数据的一致性。* r5 h1 @' s3 b. p; @3 y& c5 r/ H
  不过,在数据库设计的时候,手工递交相关事务,考试.大认为有中画蛇添足的感觉。考试.大在数据库前期开发的时候,往往会改变这个默认设置。考试.大希望让系统自动递交这个事务。然后,再后台测试的时候,再把这个环境变量改回来。
1 v( @6 j* ]$ |7 h  如相让数据库自动递交相关事务的话,则可以利用SET AUTOCOMMIT ON命令来实现。如此的话,每次执行DML语句,数据库就会自动递交这个命令。而不会每次都要用户手工输入COMMIT命令才递交相关的事务。不过,在数据库设计完成后,需要把这个环境变量改回来,改成手工递交事务。; K2 H% e3 R; J7 S7 U2 S) N
  环境变量三:设置每行的宽度。
8 Q4 Q0 R* y, q4 o  这是一个很重要环境变量。在Oracle数据库中,如果行数据长度超过我们设置的最大长度时,就会自动换行。可是数据查询的结果是按列来显示,但是若自动换行的话,则其结果看起来就会很糟糕。默认情况下,数据库的默认行宽度为80。3 Z6 q- r' M/ x; Z3 r% W
  考试.大认为这个宽度太小。考试.大喜欢采用比较大的宽度。考试.大宁愿利用滑条滚动来查看数据,也不原意让其自动分行影响显示结果。如下图。如果行宽度不够的话,就会按如下的方式显示。这个结果看起来的话,十个人中有十个人会看得眼花。
0 }. T' f& y4 S4 L; f9 s  就会把这个行设置的足够的宽,如可以设置为200。这可以有效的避免因为换行所造成的结果显示混乱问题。& [3 A5 s/ I& N, j& F" t) l
  环境变量四:字段名与标题之间的分隔线。& y; Z4 d  K. o+ j0 k
  从上面查询结果的截图中,我们可以看到,默认情况下,字段名与查询结果是用下划线进行区别的。不过考试.大个人也比较讨厌这种格式。觉得这种单下划线让人看得不够清楚。很容易跟字段中正常的下划线搞混。
8 K3 w0 Q6 d2 X& V2 i$ ~' n  考试.大喜欢利用米字符(*)来进行隔离。在数据库中,可以利用Underline参数来设置这个字段名与字段内容的分隔符。如下图中,就是考试.大设置后显示的结果。数据库管理员可以根据自己的操作习惯,设置合理的分隔符。/ A7 N# X# N' p/ C# u
  有些数据库管理员不喜欢在查询结果中显示出字段名,即只显示查询的结果。这在数据库中,也可以通过环境变量来控制。如只要把Heading这个变量设置为OFF,即可。如此的话,每次查询的结果,只有列的结果,而没有列的标题。不过考试.大不喜欢这种设置。
1 K& [6 Q  X! f8 ?# w' R  以上的这些环境变量设置只有在当前的会话中生效。如果数据库管理员退出会话后,这些用户设置的环境变量就会失效。当用户下次连接到数据库查询的时候,数据库仍然采用的是其默认的环境变量,而不是用户上次配置过后的环境变量。显然,若让我们数据库管理员每次登录数据库都一一的去配置环境变量的话,工作量太大,估计没有多少人会愿意做这些重复性的工作。而宁愿接受数据库不怎么人性化的默认设置。
6 {, H! s; _  u  其实,在Oracle数据库中,我们可以把自己配置的环境变量保存下来。如在第一次配置好环境变量之后,数据库管理员可以利用Store命令,将自己定义好的环境变量保存到一个脚本文件中。若在这个命令中,不指定具体保存路径的话,则数据库默认保存在Oracle的安装目录下。考试.大往往会为其指定一个保存路径,因为这个环境变量考试.大以后需要重复用到。到把这些文件保存为脚本文件后,下次数据库管理员需要初始化环境变量的时候,就可以利用Start命令,来执行这个脚本文件。
回复

使用道具 举报

 楼主| 发表于 2012-8-4 14:06:20 | 显示全部楼层

资格认证:创建最适合的Oracle运行环境

  这种方式虽然比用户手工的输入一个个环境变量要方便的多。但是,用户每次登录SQL*Plus环境都需要手工的运行这个脚本文件,显然也比较麻烦。我们希望能够在每次登录这个环境之后,系统会自动执行这个脚本文件;而不是每次去手工的执行。要实现这个需求,也不是什么难事。如果数据库管理员希望每次启动SQL*Plus工具的时候,都自动应用我们指定的环境变量,则只需要改变系统默认的环境变量脚本文件。也就是说,SQL*Plus在启动的时候,会自动的去运行其系统目录下的脚本文件。若我们把这个环境变量的脚本文件进行修改,则就可以把我们喜欢的操作环境指定为默认设置。系统默认的环境将变量脚本文件一般存放在\admin\目录下面。数据库管理员先把自己的配置保存后,覆盖这个文件即可。4 h3 D  |. ~: ]3 n7 h
  总之,这个环境变量跟用户的最终使用没什么直接的关系。主要是为了方便我们数据库工程师的工作。把它设置成为我们熟悉的环境,可以提高我们的工作效率。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-3-29 03:34 , Processed in 0.183415 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表