一、定位数据文件、控制文件、日志文件的位置
注意:后序需要用到这些文件的位置,可以在查询完毕之后先截图保存
1.以管理员身份登录数据库
sqlplus / as sysdba
2.查找数据文件位置
SELECT name FROM v$datafile;
3.查找控制文件位置
SELECT name FROM v$controlfile;
4.查找日志文件位置
select member from V$logfile;
二、创建其他目录用来放置数据文件,控制文件和日志文件
这里我们选择这些文件的上一级目录作为目录文件,可以自由选择位置
mkdir -p /u01/app/oracle/oradata/data
mkdir -p /u01/app/oracle/oradata/ctl
mkdir -p /u01/app/oracle/oradata/log
成功创建
chmod -R 775 /u01/app/oracle/oradata/data
chmod -R 775 /u01/app/oracle/oradata/ctl
chmod -R 775 /u01/app/oracle/oradata/log
chown -R oracle:oinstall /u01/app/oracle/oradata/data
chown -R oracle:oinstall /u01/app/oracle/oradata/ctl
chown -R oracle:oinstall /u01/app/oracle/oradata/log
授权,保证不在权限方面出问题
三、转移位置
1、修改控制文件位置(这里也实现了控制文件多路复用)
关闭数据库
shutdown immediate
然后我们要找到pfile的位置
切换到dbs目录下
cd $ORACLE_HOME/dbs/
我们可以看到自己的init.ora这个文件
编辑init.ora
vi init.ora
我们修改这个控制文件的位置
将这里修改为:
/u01/app/oracle/oradata/ctl/control01.ctl,/u01/app/oracle/fast_recovery_area/orcl/control02.ctl
根据我们第一步找到的控制文件的位置去寻找控制文件(这里我们只移动控制文件1做个演示,如果你想全移动也可以)
mv /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/oradata/ctl/control01.ctl
现在我们去查看文件是否转移成功
cd /u01/app/oracle/oradata/ctl
我们可以看到已经移动成功了
然后登录数据库
sqlplus / as sysdba
然后启动到mount下。这里可以能报错,不用管
STARTUP MOUNT;
ALTER SYSTEM SET CONTROL_FILES='' SCOPE=SPFILE;
再次关闭数据库
SHUTDOWN IMMEDIATE;
启动到nomount状态下
STARTUP NOMOUNT;
ALTER SYSTEM SET CONTROL_FILES='/u01/app/oracle/oradata/ctl/control01.ctl', '/u01/app/oracle/fast_recovery_area/orcl/control02.ctl' SCOPE=SPFILE;
进入mount状态
ALTER DATABASE MOUNT;
出错了,说明还没有成功生效,退出登录从新进入然后再次启动就可以成功了,如下图
查看control_files路径:
show parameter control_files;
我们可以看到控制文件路径已经修改成功了。
重启数据库一切正常,说明我们成功啦。
2、修改日志文件位置(这里也实现了日志文件多路复用)
关闭数据库
shutdown immediate
将日志文件进行拷贝:
cp /u01/app/oracle/oradata/orcl/redo03.log /u01/app/oracle/oradata/ctl/redo03.log
以管理员模式登录到数据库
sqlplus / as sysdba
启动到mount下
STARTUP MOUNT;
修改日志文件:
ALTER DATABASE RENAME FILE '/u01/app/oracle/oradata/orcl/redo03.log' TO '/u01/app/oracle/oradata/ctl/redo03.log';
启动数据库
ALTER DATABASE OPEN;
查找日志文件位置:
select member from V$logfile;
发现修改完成。
3、修改数据文件位置
关闭数据库
shutdown immediate
将数据文件进行拷贝(下面数据文件随便选一个拷贝就可以):
我这里选择的是system01.dbf和 undotbs01.dbf(注意不要选择过大的数据文件,否则拷贝时间会很久)
cp /u01/app/oracle/oradata/orcl/system01.dbf /u01/app/oracle/oradata/data/system01.dbf
cp /u01/app/oracle/oradata/orcl/undotbs01.dbf /u01/app/oracle/oradata/data/undotbs01.dbf
拷贝完成
以管理员模式登录到数据库下
sqlplus / as sysdba
启动到mount模式下
STARTUP MOUNT;
修改数据文件:
ALTER DATABASE RENAME FILE '/u01/app/oracle/oradata/orcl/undotbs01.dbf' TO '/u01/app/oracle/oradata/data/undotbs01.dbf';
ALTER DATABASE RENAME FILE '/u01/app/oracle/oradata/orcl/system01.dbf' TO '/u01/app/oracle/oradata/data/system01.dbf';
启动数据库
ALTER DATABASE OPEN;
查找数据文件位置
SELECT name FROM v$datafile;
修改成功。完结撒花