代码改变世界

Oracle修改数据文件所在目录的挂载点小结

2024-01-25 17:09  潇湘隐者  阅读(113)  评论(0编辑  收藏  举报

如何修改Oracle数据库文件所在目录的挂载点名称。这里先简单介绍一下背景情况,这套数据库是刚搭建不久的一套Oracle 19c单机的UAT,数据库安装在/opt目录下,$ORACLE_HOME目录为/opt/oracle19c/product/19.3.0/db_1。由于前期挂盘,设置挂载点命名没有严格按规范操作,将数据文件和归档日志放置在下面目录下:

/gspdbuat      --存放数据文件等...
/gspdbloguat   --存放归档日志文件...

现在系统管理员想统一规范挂载点的命名,将这个挂载点重新命名。由于修改这些挂载点目录对数据库的影响非常大。当前环境涉及到数据文件,临时文件(temp文件),联机重做日志文件,归档日志文件等文件修改路径。当然,这里不需要拷贝移动数据文件。

具体的挂载点重命名如下所示:

/gspdbuat     修改为    /gspuatdb
/gspdbloguat  修改为    /gspuatlog

下面简单介绍修改数据库文件所在目录的挂载点名称的简单步骤。

1: 创建数据库的pfile

show parameter spfile;

create pfile from spfile;

create pfile='$ORACLE_HOME/dbs/initgsp.ora' from spfile;

2:环境检查,信息收集

检查控制文件路径/位置

select name from v$controlfile;

show parameter control_files;

检查数据库文件路径/位置

set linesize 690;
set pagesize 100;
select name from v$datafile;

检查临时文件路径/位置

set linesize 690;
set pagesize 100;
select name from v$tempfile;

检查联机重做日志路径/位置

set linesize 690;
set pagesize 100;
select member from v$logfile;

3:关闭数据库实例和监听

shutdown immediate;
lsnrctl stop gsp;

4:修改挂载点名称

/gspdbuat     修改为   /gspuatdb
/gspdbloguat  修改为   /gspuatlog

这里的工作是系统管理员处理,这里不做详细展开。

5:修改pfile中的参数

如下所示,将control_files,log_archive_dest_1等参数的值修改如下:

*.control_files='/gspuatdb/data/control01.ctl','/gspuatdb/data/control02.ctl'
*.log_archive_dest_1='LOCATION=/gspuatlog'

具体还以实际情况为准,涉及到相关目录的参数需要根据实际情况调整。例如,控制文件所在的路径没有变化的,则无需修改。

4:用pfile启动Oracle实例到mount状态

startup mount pfile='$ORACLE_HOME/dbs/initgsp.ora';

5:控制文件修改

数据文件重命名

set linesize 680;
select 'alter database rename file ''' || name || ''' to ''' || replace(name,'gspdbuat''gspuatdb') ||''';' from v$datafile;

执行上面脚本生成的脚本,重定向数据库的所有数据文件.

重做日志文件重命名

select 'alter database rename file ''' || member || ''' to ''' || replace(member,'gspdbuat''gspuatdb') ||''';' from v$logfile;

执行上面脚本生成的脚本,重定向数据库的redo文件.

临时文件(temp file)重命名

select 'alter database rename file ''' || name || ''' to ''' || replace(name,'gspdbuat''gspuatdb') ||''';' from v$tempfile;

执行上面脚本生成的脚本,重定向数据库的临时文件.

6:启动数据库到OPEN状态

alter databae open;

7:检查告警日志,检查数据文件,联机重做日志等文件路径

检查数据库文件路径/位置

set linesize 690;
set pagesize 100;
select name from v$datafile;

检查临时文件路径/位置

set linesize 690;
set pagesize 100;
select name from v$tempfile;

检查联机重做日志路径/位置

set linesize 690;
set pagesize 100;
select member from v$logfile;

8:重新生成spfile,然后重新启动数据库实例。

--执行前先备份旧的spfile。
create spfile form pfile='$ORACLE_HOME/dbs/initgsp.ora'

shutdown immediate;
startup;