在Oracle数据库中,提供了一套默认的用户操作环境。如用户查询的时候,从数据库中一次提取的行 数;列之间的分隔符;每行显示的最大宽度;每页默认显示的行数等等。这些都是靠数据库的环境变量来控 制。这些参数虽然是Oracle系统推荐的,但是,往往不符合数据库管理的要求。因为我们工作一段时间以 来,已经养成了自己的一套工作习惯。所以,我们希望每次更换一个Oracle运行环境之后,数据库都能够 提供一个我们熟悉的运行环境。这无疑可以提高我们工作的兴趣与效率。
为此,我们就需要手工的更改Oracle的环境变量,以达到我们的要求。笔者下面结合自己的工作习惯 ,谈谈一些常用的环境变量的设置。相信凭借这些参数,可以给各位数据库管理员提供一个舒适的“工作 环境”。
环境变量一:设置列之间的分隔符。
平时在SQL*Plus工具中,利用SQL语句查询的话,其列之间默认情况下是利用空格来进行区分的。但是 ,笔者觉得这个区分不够明显。有时候,经常会看错。当数据多的时候,还会给人一种“晕车”的感觉。 故笔者往往一开始,就会更改这个默认设置。笔者喜欢利用“|”符号来对列之间进行区分。
如通过如下设置,就可以让显示结果以“|”符号来区分各个列。SET COLSEP |。通过这条语句,就可 以对数据库的环境变量进行设置。最后的运行结果如下。利用|这个符号来对列进行区分,看起来就会清 楚的多。字段之间就会弄混。
环境变量二:设置是否自动递交。
在Oracle数据库中有事务控制的概念。也就是说,当我们利用Update语句更新数据库的某些内容的时 候,默认情况下,执行这条语句后不会马上就对数据库文件中的数据进行更改。在同一个对话中,查询的 话,其显示的结果已经是更改后的结果。但是,若先注销这个对话,在重新连接、查询的话,其显示的结 果仍然是修改之前的结果。其更改的内容没有被保存。这主要是因为这个更新的事务没有被递交上去。
根据Oracle数据库的设置,默认情况下,事务是不主动递交的。而是需要用户手工的输入commmit命令 ,来递交相关的事务。一般来说,DML语句都需要用户手工的递交事务才能够其作用。
这个设计本来是为了给数据库管理员有一个缓冲的机会;同时,也是给终端用户一个确认数据是否准确 的一个机会。另外,利用这种机制,也可以帮助数据库管理员很容易的实现回退机制。
如现在在一个进销存管理系统中,需要把物料从一个仓库中转移到另一个仓库里去。此时,就需要通 过事务来进行控制。从一个仓库中把物料数量减少,另一个仓库中增加。但是,若在另一个仓库中增加数 量的操作因为某种原因失败,则就需要对“某个仓库中数量减少”这个事务进行回退。也就是说,不向数 据库递交这个事务。通过这种机智,就可以轻松的实现各个作业之间数据的一致性。
不过,在数据库设计的时候,手工递交相关事务,笔者认为有中画蛇添足的感觉。笔者在数据库前期 开发的时候,往往会改变这个默认设置。笔者希望让系统自动递交这个事务。然后,再后台测试的时候, 再把这个环境变量改回来。
如相让数据库自动递交相关事务的话,则可以利用SET AUTOCOMMIT ON命令来实现。如此的话,每次执 行DML语句,数据库就会自动递交这个命令。而不会每次都要用户手工输入COMMIT命令才递交相关的事务 。不过,在数据库设计完成后,需要把这个环境变量改回来,改成手工递交事务。