由于数据文件平时在数据库运行的时候处于使用状态,故当数据库处于打开状态时,管理员是无法重命名数据文件名字的。那么一定要更改这个数据文件的名字时,他该如何处理这个“顽疾”呢?
一、 数据库启动分三步走。
启动一个Oracle数据库时,都需要经过三个步骤。每完成一个步骤,数据库就进入一个特定的模式,以便保证数据库处于某种一致性的操作状态。管理员可以通过在启动命令中加入参数的方式,来控制数据库的启动步骤。有时候出于管理方面的需要,数据库的启动过程经常需要分布来完成。如数据库管理员进行日常的维护工作,很多都只需要启动第一步或者第二步即可。
第一步:启动例程。
每一个启动的数据库至少要对应一个例程。例程是Oracle用来管理数据库的一个实体。它是由一组逻辑内存结构和一系列后台服务进程所组成。当启动数据库时,这些内存结构以及服务进程得到分配、初始化和启动,以便用户能够与数据库进行通信。
但是,此时启动的数据库例程还没有跟任何数据库进行关联。换句话说,即使数据库不存在也可以启动例程。启动例程主要是跟初始化参数有关,主要是用来初始化数据库的运行环境。如果数据库的初始化参数文件损坏的话,那么就无法正常启动数据库例程了。也就是说,数据库例程主要牵涉到的是内存中的东西,如分配逻辑内存结构,在内存中驻扎一些必要的程序等等。如果数据库只完成了第一步即指启动例程的话,那么数据库管理员可以维护的工作是非常少的。如数据库管理员此时需要更改数据文件的名字,也是不行的。因为此时数据库历程还没有装载数据库,没有对应到具体的数据文件,故此时管理员还无法访问数据文件,对其进行维护。
若数据库管理员出于管理方面的需要,只要求启动第一个步骤的话,那么可以通过参数来进行控制。只要在启动数据库时,输入startup nomount命令即可。此时数据库只启动例程,而不装载数据库。Oracle数据库系统只会读取参数文件中的内容,只是为历程创建各种逻辑内存结构和后台服务进程。此时数据库管理员还不能够使用数据库中的任何文件。
第二步:装载数据库。
在启动例程时所用到的参数文件中,记载了数据库控制文件的存储位置与相关信息。当数据库在启动过程中企图装载数据库时,数据库系统会根据初始化参数文件中记载的控制文件信息去找到这个控制文件,并打开它。在这个控制文件中则记录着数据库的名称、数据文件的位置名称等关于数据库物理结构方面的信息。这里要注意,此时数据库系统会去读取这些信息,但是不并会去代开这些数据文件。只是为下一步打开数据库做好准备。
在装载数据库时,系统不会去读取数据文件和重做日志文件的内容。也就是说,此时数据库仍然是出于关闭状态的。用户无法与数据库建立连接,无法访问数据库并对数据库进行更改。显然,如果只是装载数据库而没有打开数据库的话,对于普通用户来说是没有多大作用的。但是对于数据库管理员来说此时他发展的舞台就很大了。因为只装载数据库而没有打开它,数据库管理员已经可以通过命令来维护数据库。例如,装载数据库但是还没有打开数据文件的状态下修改数据文件的名字。
如果管理员需要装载数据库而不打开数据库,则可以利用startup mount命令。这个命令主要来告诉数据库系统,启动历程并装载数据库,但是不打开数据库。此时数据库系统会打开控制文件并读取数据库名称、数据文件的位置和名称以及其他的一些相关信息。在这个模式下,数据库管理员已经可以对数据库进行一些维护。而且值得注意的是,有些工作只有在这种状态下才能够进行。通常情况下,若只是装载数据库而没有启动数据库的情况下,可以进行如下的日常维护工作。一是上面提到的对数据库的数据文件进行重命名;二是维护重做日志,如添加、删除日志文件或者更改重做日志文件的名字;三是执行数据库的完全恢复操作;四是改变数据库的归档模式等等。
第三步:打开数据库。
通常情况下,只装载数据库但是还没有打开数据库的情况下,应用程序时无法连接到数据库系统的。只有利用Open选项将数据库设置为打开状态后,应用程序才能够正常访问后台数据库系统。用户才能够查询、更改数据库中的记录。在打开数据库的过程中,例程将会根据控制文件中的信息找到对应的重做日志文件、数据文件等等。也就是说,第一步启动的例程会打开所有联机状态的数据文件和重做日志文件。这里要注意,只要控制文件中列出的任何一个重做日志文件或者数据文件损坏无法正常打开的话,则数据库也将无法正常 打开。此时数据库管理员需要进行数据库恢复才能够让数据库重新运转。
从这里也可以看出,如果数据库系统可以正常装载数据库并不一定表示数据文件与重做日志文件是正常的。因为在装载数据库的过程中,只读取了这些文件到存储位置与名字等等,并不会去判断这些文件是否可以使用。只有在试图打开数据库的时候,系统才会去判断这些文件的可用性。此时数据文件、日志文件等等以处于打开状态,故管理员是无法在此时对这些文件进行维护操作的,如位置移动、删除、重新能命名等等。