2009-08-24 15:32:55 来源:IT专家网
控制文件中存储着Oracle数据库的组织结构等重要的信息。做一个形象的比喻,控制文件就好像是Windows操作系统中的注册表。如果这个控制文件损坏或者丢失的话,那么Oracle数据库将无法正常启动。所以说保障控制文件的安全性就显得尤其重要。笔者这里就给介绍一些常用的提高控制文件安全性的一些方法。
一、做好控制文件的备份工作。
要提高控制文件的安全,最有效的方法就是要做好控制文件的备份。因为控制文件比较小,一般都只有2M左右,所以要做好其备份工作也比较简单。现在麻烦的是,当数据库物理结构发生变化的时候,这个控制文件也会进行更新。如将某个数据文件脱机或者将某个表空间设置为只读的时候,又或者某个检查点发生的时候,都会更新控制文件中的相关信息。可见,这个控制文件中的信息也是在动态表更的,所以要对其进行手工备份会比较麻烦。笔者的建议是,利用操作系统提供的工具,如任务计划等工具,对备份文件进行半个小时或则一个小时一次的备份。因为这个文件比较小,所以即使备份频率很高,对数据库的性能也不会影响。而且即使在数据库使用的过程中,也可以进行备份。所以不会对用户的正常使用产生不利的影响。
除了需要提高控制文件备份的频率之外,还需要选择备份的格式。对于Oracle数据库来说,其控制文件的备份方式主要有两种,一是将控制文件备份为二进制文件,二是将控制文件备份为文本格式的文件。这两个备份文件的用途是不同的。如备份为二进制文件的话,那么当数据库故障的时候,这个备份文件可以直接拿来使用。而文本格式的控制文件备份文件,主要是用来重新创建控制文件的。但是因为利用这个文本格式的备份文件来重新创建控制文件,由于需要进行大量的编辑工作,所以并不是一种很好的手段。总之,数据库管理员需要根据自己的需要,来选择合适的备份文件的格式。一般来说,只需要将控制文件备份为二进制文件即可。除非有特殊的需要,如手工建立控制文件的需要,才将文件备份为文本格式的文件。
如需要将控制文件备份为二进制文件,可以采用如下的命令:
Alter database backup controlfile to ‘控制文件的备份目录与名字’。由于备份文件的格式是二进制文件,所以无法通过文本工具查看其中的内容。
如果要将控制文件备份为文本格式的文件,可以采用如下的命令:
Alter database backup controlfile to trace。
从以上两条命令的对比来看,主要的差异在于后面的目录上。采用二进制格式的备份文件,需要在后面直接加上备份文件的路径。而如果要采用文本格式的备份文件按,则需要采用trace关键字。一般情况下,如果采用文本格式的备份文件,数据库系统会将备份文件存放在一个特定的目录中。这个目录主要有参数user_dumb_dest决定。如果数据库管理员不知道这个目录在哪里,可以通过命令show parameter user_dump_dest来查看。找到目录后,就可以查看这个文件的内容。由于这个备份文件是文本文件,直接可以通过文本浏览器来查看这个文件。不过如果想要看这个控制文件的内容,笔者不建议通过这种文本文件的形式来查看,因为其查看起来比较麻烦,不够明朗。笔者在日常工作中,如果需要查看控制文件的内容,则会借助于Oracle数据库系统的动态视图。为了让数据库管理员能够实时的了解控制文件中的内容,数据库提供了一张叫作 V$CONTROLFILE_RECORD_SECTION的动态视图。在这种视图中,存放着控制文件记录文档段的信息。控制文件按照一定的格式,被分割成许多部分,分别记录各种类型的信息。每一类信息被称为一个记录文档段。其中各个记录文档段的大小是固定的。其实,简单的来说,我们可以把一个记录文档段当作一条记录来对待。那么通过数据库来查询相关的记录信息,就会非常的方便。而且看起来会更加的明了。
二、做好控制文件的multiplexing。
除了要做好控制文件的日常备份外,最好还需要借助控制文件的multiplexing(多路复用技术)。简单的说,就是在数据库服务器上创建多个控制文件。当某个控制文件损坏的时候,则还可以使用其它的控制文件来启动数据库。默认情况下,Oracle数据库会自动启用多路复用技术。如按照默认设置来安装数据库后,会有三个控制文件。不过这往往不符合数据库管理员的要求。因为根据多路复用的原则,最好是将控制文件保存在不同的硬盘上。如此的话,当某一个硬盘出现损坏的话,仍然可以通过另一块硬盘上的控制文件来启动数据库系统。所以,有时候在数据库安装完成后,还需要修改控制文件的存储位置,或者在其他硬盘上增加一个控制文件。笔者就给大家介绍一下增加一个控制文件的方法。
假设数据库装完之后,会在数据库安装目录中产生三个控制文件(按照默认的设置)。现在数据库管理需要在另外一块硬盘上添加一个控制文件,以实现多路复用技术。同时在原有的安装目录中,要取消一个控制文件。即最后控制文件的总数仍然为三个。这主要是因为Oracle数据库启动的时候,只从一个控制文件中读取数据,但是在更新的时候需要同时更新三个控制文件。为此如果控制文件的数量比较多,则会影响数据库的性能。而且在同一块硬盘上存放多个控制文件,没有多少的必要。为此在其他硬盘上添加控制文件的时候,最好同时减少相同硬盘上控制文件的数量。要在其它硬盘上增加控制文件,一般需要通过如下的五个步骤。
第一步:更改系统中的control_files参数。
在数据库中,主要是利用control_files参数来表示控制文件的存储位置。如果需要在其他硬盘上增加控制文件或者删除某个控制文件,主要是利用这个参数来控制的。现在减少D盘上的一个控制文件,然后在E盘上增加一个控制文件,可以通过如下的命令来实现:
alter system set control_files=
'D:ORACLEPRODUCT10.1.0ORADATADTM123CONTROL01.CTL',
'D:ORACLEPRODUCT10.1.0ORADATADTM123CONTROL02.CTL',
'E :ORACLECONTROL03.CTL' scope=spfile
在使用以上命令更改控制文件时,需要注意如下几点。一是需要注意在更改这个控制文件的参数时,不仅需要写上想增加的控制文件的名称,而且还需要写上原先的控制文件名字。如果原先存在的控制文件名字不写的话,那么数据库系统会认为你不需要使用原先的控制文件的。如上面的命令中,本来D盘有三个控制文件。笔者现在要取消其中的一个,所以在这里命令中只写上两个控制文件的名字。最后在数据库服务器中就有三个控制文件,第一块硬盘的D盘中两个,第二块硬盘的E盘中一个。其次在更改的时候需要采用scope=spfile选项。这表示只更改服务器参数文件中的设置,而不更改内存中的控制文件参数的值。这主要是因为这个参数是一个静态的参数,需要重新启动数据库后才会生效。
第二步:关闭数据库以及相关的服务。
由于控制文件会动态更新,为此需要先将数据库关闭,然数据库系统将最新的信息写入到控制文件中去。如此才能够保证得到一个完整的控制文件镜像。在数据库没有重新启动之前,控制文件参数的变更不会生效。如利用动态视图v$controlfiles来查询控制文件的话,显示的还是原先的那些控制文件。这主要是因为需要重新启动数据库后配置才会生效。
第三步:复制控制文件到指定的位置。
为了得到一个控制文件的完整印象,在关闭数据库以及相关的服务后,需要将控制文件复制到对应的目录中。这一步非常的重要。如果上面参数更改了,而对应目录中没有相关的控制文件,则数据库启动的时候就会错误,用户将无法连接到数据库系统中。为此在数据库重新启动之前一定要确保在对应的目录中已经存在与上面参数设置处相同的控制文件名字。只有如此,数据库才能够正常启动。
第四步:重新启动相关的服务并启动数据库。
当控制文件已经复制到指定的位置后,就可以启动数据库服务,并重新启动数据库了。此时再查看动态视图v$controlfiles,就发现新的控制文件已经启用了。
总之,多路复用技术虽然操作起来比较麻烦,但是是一种最常见、最有效的提高控制文件安全的方法。因为一般情况下,两块硬盘同时损坏的几率很小,除非数据库服务器被偷。在有必要的情况下,结合控制文件的备份策略,将控制文件在远程服务器上留有一个备份。结合这两种策略,控制文件的安全可以说是万无一失了。
免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。