【IT168 业界资讯】 在Oracle数据库中,对于环境变量的管理是一件比较麻烦的事情。在Windows操作系统上部署Oracle数据库的时候,数据库安装程序会自动设置Oracle相关的环境变量。但是在Linux等操作系统上部署Oracle数据库时,不得不手工来设置环境变量,而且必须在Linux操作系统上进行设置。这就对Oracle数据库管理员提出了特殊的要求。他们不仅要懂得Oracle数据库系统的专业知识,而且还必须要了解Linux操作系统的相关命令。
数据库管理员可以利用数据库命令来更改这张表中的环境变量值。然后数据库系统会自动将相关相关的内容更新到操作系统中,从而达到控制环境变量的目的。简单的说,在DB2数据库中环境变量的管理是跟数据库系统融为一体的。在不需要掌握Linux操作系统命令的情况下就可以配置数据库的环境变量。
一、简要注册表的类型
在DB2数据库中,有多张简要注册表。每张简要注册表都负责特定级别的环境变量。
一是实例级别的简要注册表。在这张表中,保存了大量的DB2数据库变量标量。一般情况下,特定实例的环境变量都会保存在这张简要注册表中。而且,这个表中的环境变量具有比较高的优先性。在这个级别定义的环境变量的值与在全局级别的对应设置的值相互冲突的话,则这个级别的环境变量的值会取而代之。二是全局级简要注册表。如果对于特定的实例数据库管理员没有设置相关的环境变量,则会使用这张全局简要注册表。这个表中的环境变量具有在当前机器范围内有效的环境变量(前提是在实例级简要注册表中没有相冲突的设置)。三是DB2实例节点级简要注册表。在数据库应用比较复杂的环境中,往往会通过使用分布式部署环境来提高数据库的性能。当数据库分布于不同的数据库分区的系统中,这个注册表驻留在每个节点上(即每台服务器上,且包含在这服务器上存储数据的所有实例的环境变量的值。注意这个级别的设置优先性要比以上两个级别都要高,在这个级别上设置的环境变量的值将会取代在实例级别或者全局级别的对应设置。
笔者认为,在了解这些简要注册表的时候,最重要的是要了解其优先性。这就跟操作系统中环境变量一样,其有用户级、操作系统级别环境变量的限制。一般来说,其越靠近用户,其优先性越高,即采取的是就近原则。对于DB2注册表的优先性来说,也是如此。从以上的分析中可以看出,优先级最高的简要注册表是实例节点级简要注册表。其次是实例级别简要注册表。最后是全局级简要注册表。一般情况下,将一些共用的环境变量配置在级别比较低的简要注册表中,如全局级简要注册表中;或者可以将全部环境变量都配置在这全局简要注册表中,作为数据库的默认环境变量。然后在实例级别或者节点级别的配置中进行更改,采用用户个性化的设置。如此就可以减少环境变量的配置。总之,无论采取什么样的管理策略,数据库管理员必须要对这几张简要注册表的优先性有一个清晰的认识。以免在管理的时候,出现张冠李戴的现象。
二、学会使用db2set命令来修改简要注册表的值
在DB2数据库中,主要是通过db2set命令来管理简要注册表中的DB2环境变量。为此DB2数据库管理员必须数量掌握db2set命令。具体的来说,主要掌握如下内容。
一是需要掌握各个选项的含义。由于在db2数据库中有多个级别的简要注册表。这些表中的值都是通过同一个命令来完成的。那么管理员到底需要更改哪个级别中的环境变量,都是通过不同的选项来完成的。如要更改数据库系统中所有实例级别的简要注册表中的环境变量,需要使用-g选项;如果需要更该用户级别的简要注册表的话,那么就需要使用-ul选项时。切记在更改环境变量的时候,这些选项千万不能够用错。否则的话,张冠李戴就可能得到相反的结果。
二是需要注意有时候管理员可能要对环境变量的设置进行一些限制。如不能够在全局级别修改某个环境变量,而只能够在实例级别或者节点级别进行设置。此时就需要使用-null选项。这个命令的主要用途就是删除指定的环境变量,并限制通过其他级别的简要注册表来更改相关的环境变量。
三是需要注意环境变量的差异。有些环境变量可以在上面提到的各个简要注册表中进行设置。但是有些环境变量只有在特定的简要注册表中才可以进行设置。如有些环境变量只有在全局级别的简要注册表中才可以进行设置。这主要是一些共用性的环境变量。而且往往要求全部实例都采用同一的环境变量。此时通过这种限制,就可以避免每个实例或者用户设置的环境变量不同而造成的冲突。如db2system环境变量,其就只可以在全局级别的环境变量中才可以设置。其目的就是为了保证各个实例都采用相同的db2system环境变量。如果想在实例级别的注册表中修改db2system环境变量,那么数据库系统就会提示用户相关的错误信息。所以DB2数据库管理员需要了解,哪些环境变量只能够在哪些特定级别进行设置。特别是需要了解在只有在全局级别环境下才能够进行修改的环境变量。掌握了这些内容之后,在环境变量管理上,才可以少走弯路。
四是需要注意更改环境变量实需要操作系统的相关权限。虽然数据库管理员在更改简要注册表中环境变量的时候,是在数据库系统中更改的。但是这些更改最重需要反应到操作系统中。所以数据库管理员若需要更改环境变量,不仅需要数据库系统的权限,而且当前用户在操作系统中还应该有对应的权限,如操作系统管理员权限等等。如果在操作系统级别上没有权限,那么即使在数据库系统上有最高的权限也是没有用的。如在Linux操作系统中,数据库用户若想要更改实例级别的注册表的值,用户必须具有系统管理员的权限。如果想要更改全局级简要注册表中的环境变量,则这个数据库用户必须具有操作系统超级用户的权限。从这个例子中也可以看出,简要注册表仅仅只是一个帮助数据库管理员控制环境变量的一个工具。最终这些环境变量还是会更新到操作系统的相关设置中。
五是如果DB2数据库管理员不仅仅是数据库管理员,在操作系统上(特别是Linux操作系统上)也有比较特殊造诣的话,那么也可以跳过这个简要注册表,直接在操作系统层面利用export等命令来维护DB2数据库系统运行所必需的环境变量。由于现在大部分的DB2数据库都是部署在Linux或者Unix操作系统上的,所以掌握Linux等操作系统的管理技能也是DB2数据库管理员所必需要具备的。所以如果有机会,笔者认为DB2管理员去学习一下Linux等操作系统的管理也是非常有必要的。等到熟练掌握Linux等操作系统管理技巧的时候,笔者就会建议可以直接通过操作系统的环境变量来进行管理数据库运行的环境。因为在操作系统上,可以对这些环境变量的配置文件进行方便的更新、备份等等。有时候甚至比在简要注册表中更改更改的容易。故对于比较专业的DB2数据库管理员而言,必须要同时掌握通过简要注册表和操作系统命令维护环境变量的技能。有时候两者同时采用,可以起到事半功倍的效果。