Oracle修改数据文件所在目录的挂载点小结
如何修改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;