赞
踩
1. 概述
在oracle数据库的维护过程中,经常涉及换主机什么的,在这种情况下,最好,最简单的办法就是将数据库相关的文件拷贝到另外一台主机,然后启起来。
数据库文件迁移,必须要求迁移后的新主机oracle软件版本和老的一样。
2. 数据库启动步骤和相关模式
要做数据库迁移,必须知道数据库启动的步骤和相关的模式。
数据库启动分为三步:加载初始化文件<SID>ini.ora,加载控制文件,加载数据库文件和打开数据库。
第一步:加载初始化文件
oracle9i以后,数据库默会读取spfile<SID>.ora,这儿文件是一个二进制文件。我们可以在输入启动命令的时候,指定初始化文件的路径,如startup pfile="pfilesid.ora"或者startup spfile='spfilesid.ora'。但是二进制文件spfile只能通过alter system set paraname=paravalue来修改,而二进制文件,我们可以直接编辑。所以为了迁移的方便性,我们一般把pfile作为初始化文件迁移到新主机上。然后执行startup pfile='pfilesid.ora' nomount来启动数据库。初始化过程只需要pfile正确既可,如果提示了什么错误,可以编辑pfile,然后重新startup就可以了。
第二步:加载控制文件
控制文件的位置,是在初始化文件中定义的,加载初始化文件之后,可以通过alter systen set 来修改,也可以打开pfile直接修改。控制文件一般有三个,具体路径可以通过命令来查看show parameter control_files;如果路径不对,就用alter system set来修改,控制文件路径没问题之后,就可以加载控制文件了。命令是alter database mount。这样就加在控制文件了。
加载完控制文件之后,就可以通过一些命令来修改控制文件的参数,然数据库能正确地载入对应的数据文件。
第三步:加载数据库
加载控制文件之后,修改好数据文件路径,之后就可以执行命令alter database open来开启数据库了。
这样整个数据库启动过程完成了。
启动数据库三步对应的命令是:
初始化:startup pfile='pfilesid.ora' nomount。
加载控制文件:alter database mount。
加载数据库文件(完全启动数据库):alter database open。
后面用一个示例来讲解一下。
3. 示例
环境描述,Oracle版本9i,主机环境red hat linux9,数据库实例名linuxdb。
第一步:初始化数据库
先后从老主机上把初始化文件的pfile取到本地,获取pfilelinuxdb.ora放到$ORACLE_HOME/dbs目录。
打开pfilelinuxdb.ora文件,
修改*.background_dump_dest='/home/oracle/ora9/admin/linuxdb/bdump'指向的路径,并创建对应路径上的目录。
也可以修改控制文件的路径,但是我想用alter system命令来修改。
下面执行命令实例,加载初始化文件完成。
如果有错误,可以根据提示的错误信息,打开pfilelinuxdb.ora,修改对应的参数再重新加载。
加载成功以后,先创建一个spfile二进制文件,这样今后alter system 修改的参数就可以直接写到二进制文件中。
SQL> create spfile from pfile='/home/oracle/ora9/oracle/dbs/pfilelinuxdb.ora';
注意由于不是从spfile启动的,所以还要重新送spfile启动,执行上面这个文件才能成功。
这样控制文件的路径信息就写到了spfile中了,由于只在spfile生效,所以还得重新启动才行。
重新启动之后,就可以正确加载控制文件了。
第二步:加载控制文件
由于需要加载控制文件,如上命令的几个控制文件都必须从来主机上取到当前主机的对应目录。
由于上面已经加载了初始化文件,重新加载需要先关闭数据库。
顺序执行的命令是shutdown,startup nomount,alter database mount。示例如下:
出错了,根据上面的错误信息,可以看出,是缺少密码文件。那么我们就创建密码认证文件吧,命令如下:
$cd $ORACLE_HOME/dbs
$orapwd password=chenli file=orapwlinuxdb
然后在执行alter database mount。这样加载控制文件就成功了。
后面我们还需要修改数据文件路径,然后加载数据文件。
第三步:加载数据文件
先看一下数据文件都是那些。
看到了,有11个数据文件。
然后,我们都把这些文件取过来到当前库的目录/home/oracle/ora9/oradata/linuxdb。
下面修改这些数据文件路径为新主机上的路径,命令如下。
现在可以加载数据文件了吧,先试一下。
又报错了,根据错误信息我们可以知道,dump参数和重做日志参数值不对,下面我们查看dump参数信息。
我们先后修改dump参数,修改前,我们先看一下dump参数,那些不正确。
看到了,有两个不正确,修改吧。
现在dump参数修改成功了,接着处理重做日志文件的问题。
重做日志提示的问题是,重做日志文件爱你路径不对。
先后看一下重做日志文件的路径。
我们先把重做日志文件取到指定的目录/home/oracle/ora9/oradata/linuxdb,然后修改参数。
修改成功了,现在可以加载数据库文件了。
现在数据库启动成功了,通过命令查看数据库中的表数据正确,数据库迁移成功。
4. 修改监听文件
虽然数据库迁移成功了,但是我们还需要启动监听才能让其他主机的用户连接到新的数据库。
打开$ORACLE_HOME/network/admin/listener.ora文件,内容如下:
修改之后的文件内容如下:
保存好之后,执行lsnrctl start结果如下:
根据上面打印出来的信息,监听启动成功了。
现在测试一下监听是否可以用。
在本地的tnsnames.ora中加入一个别名定义,内容如下:
然后在命令行中进行对tns进行测试,也测试监听配置是正确。
根据上面的结果看得出,tns连接也会没问题的。
那么登录看一看呢。
成功,所有的都已经ok。
5. 总结
物理迁移数据库还必须一步一步得进行,其实要完成真个动作,可以分为4步骤。
1.修改初始化文件,初始化数据库,startup nomount。保证nomount成功。
2.载入控制文件,alter database open,保证在初始化文件中,控制文件的路径正确。
3.加载数据文件,包括重做日志文件,alter database open,需要保证所有的数据文件路由正确并且有效。
4.修改监听文件,开启监听。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。