赞
踩
一、Oracle数据库文件路径变更
方案一:只是部分普通数据文件迁移,只在线进行操作
1.1.将对应表空间offline,移动数据文件到新路径
1.2.数据文件alter database rename file '' to '';
1.3.再将表空间online
二、所有数据文件迁移
操作步骤:
2.1、查看当前数据库的数据文件,临时文件,日志文件,控制文件,参数文件等信息。
通过sqlplus / as sysdba进入oracle sql命令行界面:
select name from v$datafile;
select name from v$tempfile;
select member from v$logfile;
select name from v$controlfile;
show parameter pfile
2.2、根据当前spfile创建pfile文件,正常关闭数据库,移动源数据库文件到新的存储路径。
根据当前spfile创建pfile文件,正常关闭数据库:
create pfile from spfile;
shutdown immediate;
移动源数据库文件到新的存储路径:
先确认新数据存储文件目录,建立相关路径,授权oracle用户权限:
mkdir /home/oracle/oradata
chown -R oracle:oinstall /home/oracle
切换到oracle用户:
cp /db/app/oracle/oradata/orcl/* /home/oracle/oradata/
2.3、修改数据库参数文件,更改控制文件路径为新的存储路径,用改好的pfile文件启动数据库到mount状态。
cd $ORACLE_HOME/dbs
more initORCL.ora
SQL> startup pfile='$ORACLE_HOME/dbs/initORCL.ora' nomount
SQL> alter database mount;
2.4、重定向数据库的所有数据文件、日志文件路径,然后正常打开数据库。
SQL>alter database rename file '/db/app/oracle/oradata/orcl/system01.dbf' to '/home/oracle/oradata/system01.dbf';
SQL>alter database rename file '/db/app/oracle/oradata/orcl/sysaux01.dbf' to '/home/oracle/oradata/sysaux01.dbf';
SQL>alter database rename file '/db/app/oracle/oradata/orcl/undotbs01.dbf' to '/home/oracle/oradata/undotbs01.dbf';
SQL>alter database rename file '/db/app/oracle/oradata/orcl/temp01.dbf' to '/home/oracle/oradata/temp01.dbf';
SQL>alter database rename file '/db/app/oracle/oradata/orcl/users01.dbf' to '/home/oracle/oradata/users01.dbf';
SQL>alter database rename file '/db/app/oracle/oradata/orcl/redo01.log' to '/home/oracle/oradata/redo01.log';
SQL>alter database rename file '/db/app/oracle/oradata/orcl/redo02.log' to '/home/oracle/oradata/redo02.log';
SQL>alter database rename file '/db/app/oracle/oradata/orcl/redo03.log' to '/home/oracle/oradata/redo03.log';
SQL> alter database open;
2.5、核查各文件路径没有问题,根据当前pfile创建spfile,重启数据库实例。
SQL> select name from v$datafile;
SQL> select name from v$tempfile;
SQL> select member from v$logfile;
SQL> select name from v$controlfile;
SQL> show parameter pfile
SQL> create spfile from pfile;
SQL> shutdown immediate;
SQL> startup
其中:碰到的问题:
show parameter pfile显示结果为空,则无法通过pfile(初始化参数文件)及spfile(服务器参数文件)来将文件启动数据库到mount状态,修复方法为:将步骤2.2中create pfile from spfile步骤去掉,2.3步骤更换为:startup mount;再进行修改文件存储路径,将数据库打开,使用: alter database open;命令,再查看数据库实例状态以及存储路径select status from v$instance;
三、停止监听后监听状态异常问题记录
一个非常费解,但是又烧脑的事故问题:
在操作之前,无意中关闭了监听,由于该数据库是很早以前的破解版oracle的原因,很多文件会出现缺失的情况,发现关闭监听后,重启监听,出现实例状态为UKNOWN状态:
Service "orcl" has 1 instance(s).
Instance "ORCL", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
经过几个小时反复折腾,终于查看到之前未关闭监听时的监听日志和关闭监听后重启监听的监听日志是一模一样的,就这样启动所有系统相关服务,准备第二天使用系统查看系统所有功能是否正常(注:当时使用远程连接数据库一直报错,无法连接)。
终于,熬过了一大晚上,怀着焦急的心情第二天早上到来了,发现系统各类服务一切正常,终于放下心来,于是复盘了下前一天晚上的处理的问题,发现数据库连上了,是由于之前连接数据库的时候,ip地址后面忘记添加/orcl实例名了,瞬间觉得专业能力受到了质疑。。。。至此,总结下结论:
1、变更老系统数据库存储路径,最好不要数据库监听服务进行启停
2、若对监听状态进行了停止重启,若发现监听状态异常,首先先检查监听日志,是否和停止之前的日志有差异,若无差异,则检查监听端口是否启动,远程连接数据库查看是否能连上,连接的时候,注意检查是否端口号以及实例名是否填写完整。若有差异,则百度或者谷歌搜索,按照网上的办法进行操作,在此过程中,需要注意:尽量避免重新注册实例,即: alter system register;,因为这有可能导致重新注册后数据丢失的情况,已经在测试环境测试过会丢失。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。