在root用户下创建三个目录存放数据文件
mkdir -p /u01/oracle/data
mkdir -p /u01/oracle/control
mkdir -p /u01/oracle/archive
在vi $ORACLE_HOME/dbs/目录下打开init.ora
vi init.ora
配置以下内容:
control_files = (/u01/oracle/control/control01.ctl, /u01/oracle/control/control02.ctl)
db_create_file_dest = /u01/oracle/data
log_archive_dest_1 = location=/u01/oracle/archive
复制控制文件到新的存储路径:
可在Oracle中查看控制文件的路径:
SQL>show parameter control_files;
cp /u01/oracle/app/oradata/orcl/control01.ctl /u01/oracle/control
cp /u01/oracle/app/oradata/orcl/control02.ctl /u01/oracle/control
修改Linux操作系统中的文件夹权限,确保Oracle用户有读写权限:
chmod -R 775 /u01/oracle/data
chmod -R 775 /u01/oracle/control
chmod -R 775 /u01/oracle/archive
chown -R oracle:oinstall /u01/oracle/data
chown -R oracle:oinstall /u01/oracle/control
chown -R oracle:oinstall /u01/oracle/archive
打开sqlplus工具,以sysdba权限登录到Oracle实例中
sqlplus / as sysdba
卸载旧的控制文件:
STARTUP MOUNT;
ALTER SYSTEM SET CONTROL_FILES='' SCOPE=SPFILE;
SHUTDOWN IMMEDIATE;
使用新的控制文件重新启动实例:
STARTUP NOMOUNT;
ALTER SYSTEM SET CONTROL_FILES='/u01/oracle/control/control01.ctl', '/u01/oracle/control/control02.ctl' SCOPE=SPFILE;
ALTER DATABASE MOUNT;
能成功则不用下面的重新进入
(退出数据库重新进入sqlplus / as sysdba
startup mount)
查看control_files路径:
show parameter control_files;
看是否成功
配置归档日志目标:
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=/u01/oracle/archive' SCOPE=BOTH;
ALTER SYSTEM SWITCH LOGFILE;
如果报错:ora01109
shutdown immediate
如果不行直接shutdown abort
startup mount
alter database open;
再执行ALTER SYSTEM SWITCH LOGFILE;
确认数据库正常运行:
SELECT STATUS FROM V$INSTANCE;
如果输出结果为OPEN,则表示数据库正常运行,且数据文件、控制文件和日志文件已经分别存在不同的目录下。