分步启动数据库以重命名数据文件
作者:佚名 来源:IT专家网 发布时间:2009-03-25 12:33:00
由于数据文件平时在数据库运行的时候处于使用状态,故当数据库处于打开状态时,管理员是无法重命名数据文件名字的。那么一定要更改这个数据文件的名字时,他该如何处理这个“顽疾”呢?
一、 数据库启动分三步走。
启动一个Oracle数据库时,都需要经过三个步骤。每完成一个步骤,数据库就进入一个特定的模式,以便保证数据库处于某种一致性的操作状态。管理员可以通过在启动命令中加入参数的方式,来控制数据库的启动步骤。有时候出于管理方面的需要,数据库的启动过程经常需要分布来完成。如数据库管理员进行日常的维护工作,很多都只需要启动第一步或者第二步即可。
第一步:启动例程。
每一个启动的数据库至少要对应一个例程。例程是Oracle用来管理数据库的一个实体。它是由一组逻辑内存结构和一系列后台服务进程所组成。当启动数据库时,这些内存结构以及服务进程得到分配、初始化和启动,以便用户能够与数据库进行通信。
但是,此时启动的数据库例程还没有跟任何数据库进行关联。换句话说,即使数据库不存在也可以启动例程。启动例程主要是跟初始化参数有关,主要是用来初始化数据库的运行环境。如果数据库的初始化参数文件损坏的话,那么就无法正常启动数据库例程了。也就是说,数据库例程主要牵涉到的是内存中的东西,如分配逻辑内存结构,在内存中驻扎一些必要的程序等等。如果数据库只完成了第一步即指启动例程的话,那么数据库管理员可以维护的工作是非常少的。如数据库管理员此时需要更改数据文件的名字,也是不行的。因为此时数据库历程还没有装载数据库,没有对应到具体的数据文件,故此时管理员还无法访问数据文件,对其进行维护。
若数据库管理员出于管理方面的需要,只要求启动第一个步骤的话,那么可以通过参数来进行控制。只要在启动数据库时,输入startup nomount命令即可。此时数据库只启动例程,而不装载数据库。Oracle数据库系统只会读取参数文件中的内容,只是为历程创建各种逻辑内存结构和后台服务进程。此时数据库管理员还不能够使用数据库中的任何文件。
第二步:装载数据库。
在启动例程时所用到的参数文件中,记载了数据库控制文件的存储位置与相关信息。当数据库在启动过程中企图装载数据库时,数据库系统会根据初始化参数文件中记载的控制文件信息去找到这个控制文件,并打开它。在这个控制文件中则记录着数据库的名称、数据文件的位置名称等关于数据库物理结构方面的信息。这里要注意,此时数据库系统会去读取这些信息,但是不并会去代开这些数据文件。只是为下一步打开数据库做好准备。
在装载数据库时,系统不会去读取数据文件和重做日志文件的内容。也就是说,此时数据库仍然是出于关闭状态的。用户无法与数据库建立连接,无法访问数据库并对数据库进行更改。显然,如果只是装载数据库而没有打开数据库的话,对于普通用户来说是没有多大作用的。但是对于数据库管理员来说此时他发展的舞台就很大了。因为只装载数据库而没有打开它,数据库管理员已经可以通过命令来维护数据库。例如,装载数据库但是还没有打开数据文件的状态下修改数据文件的名字。
如果管理员需要装载数据库而不打开数据库,则可以利用startup mount命令。这个命令主要来告诉数据库系统,启动历程并装载数据库,但是不打开数据库。此时数据库系统会打开控制文件并读取数据库名称、数据文件的位置和名称以及其他的一些相关信息。在这个模式下,数据库管理员已经可以对数据库进行一些维护。而且值得注意的是,有些工作只有在这种状态下才能够进行。通常情况下,若只是装载数据库而没有启动数据库的情况下,可以进行如下的日常维护工作。一是上面提到的对数据库的数据文件进行重命名;二是维护重做日志,如添加、删除日志文件或者更改重做日志文件的名字;三是执行数据库的完全恢复操作;四是改变数据库的归档模式等等。
第三步:打开数据库。
通常情况下,只装载数据库但是还没有打开数据库的情况下,应用程序时无法连接到数据库系统的。只有利用Open选项将数据库设置为打开状态后,应用程序才能够正常访问后台数据库系统。用户才能够查询、更改数据库中的记录。在打开数据库的过程中,例程将会根据控制文件中的信息找到对应的重做日志文件、数据文件等等。也就是说,第一步启动的例程会打开所有联机状态的数据文件和重做日志文件。这里要注意,只要控制文件中列出的任何一个重做日志文件或者数据文件损坏无法正常打开的话,则数据库也将无法正常 打开。此时数据库管理员需要进行数据库恢复才能够让数据库重新运转。
从这里也可以看出,如果数据库系统可以正常装载数据库并不一定表示数据文件与重做日志文件是正常的。因为在装载数据库的过程中,只读取了这些文件到存储位置与名字等等,并不会去判断这些文件是否可以使用。只有在试图打开数据库的时候,系统才会去判断这些文件的可用性。此时数据文件、日志文件等等以处于打开状态,故管理员是无法在此时对这些文件进行维护操作的,如位置移动、删除、重新能命名等等。
猜你喜欢
- 最近心情非常差,而且还没有触底的样子,哎~~~总是会忍不住叹气~~~前些日子在Twitter上叨唠说“不在乎IE8什么时候推出,只在乎IE6
- 当你使用Lumigent log Explorer连接服务器后,选择具体的数据库实例时报错,提示 &nbs
- 这是经常用的一个分页存储过程 希望大家指点不足 代码如下:USE [a6756475746] GO /****** Object
- meta是用来在HTML文档中模拟HTTP协议的响应头报文。meta 标签用于网页的<head>与</head&
- 我们在浏览网页的时候偶尔会遇到一些陌生的网页交互行为,通常情况下它们并不会影响你的正常使用,之所以出现情况往往是因为,设计师在设计某个交互方
- 一个不错的绿色下划线的简洁CSS导航代码,纯css不用图片,效果图如下:<html> <head> <meta
- 代码如下: 代码如下:<% '用ASP获取远程目标网页指定内容On Error Resume Next Server.Scri
- CSS是众所周知且应用广泛的网站样式语言,在它的版本三(CSS3)计划中,新增了一些能够节省时间的特性。尽管只有当前最新了浏览器
- 这是一段点击复制的代码,现在我的页面里不仅有1个链接需要用到这段代码。请哪位好心人指教一下应该怎么用ID对应的方式来改写这段js,使它实现一
- 代码如下:'个人代码风格注释(变量名中第一个小写字母表表示变量类型) 'i:为Integer型; 's:为Strin
- 当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度。笔者做了一个简单的尝试,1亿条数据,分100张表。具体实现过程如下。首先
- 影响 JavaScript性能的另外一个杀手就是递归,在上一节中提到采用memoization技术可以优化计算数值的递归函数,但memoiz
- 有些时候(如开发聊天程序),我们需要将将滚动条(scrollbar)保持在最底部,比如聊天窗口,最新发出和收到的信息要显示在最下方,如果要看
- 1 新建类库MyTestDLL2 右击项目“MyTestDLL”-》属性-》生成-》勾选“为COM互操作注册”3 打开 AssemblyIn
- 在SQL Server Management Studio 用WINDOWS连接的情况下改实列的“属性&rdqu
- var fso = new ActiveXObject("Scripting.
- 系列目录:1. 服务器XMLHTTP(Server XMLHTTP in ASP)基础2. 
- 虽然以前我写过IE6、IE7、IE8共存的解决方案,但是看到IETester这个软件以后那些都已经没有意义了(那些办法副作用比较大,而且实现
- 如果你是一位ASP爱好者,你一定想过ASP的执行效率如何?大家都知道ASP效率和CGI的比,在访问量少的时候,它们是不相上下的,有时可能CG
- 第一章:日志管理 1.forcing log switchessql> alter system switch logfile;2.f