由于服务器更换,或者硬盘损坏等问题,在有些场景下,我们需要对数据库进行迁移。
Oracle 数据库有多种备份方式,如果可以停机,建议最好使用冷备的方式,直接迁移数据文件,这样效率会比较高。
由于两台主机都是Windows server,为了方便直接使用复制文件的方式,由于特殊原因,迁移前的数据目录和迁移后的数据目录是不一致的。
SQL> startup ORACLE 例程已经启动。 Total System Global Area 1071333376 bytes Fixed Size 1334380 bytes Variable Size 301990804 bytes Database Buffers 754974720 bytes Redo Buffers 13033472 bytes 数据库装载完毕。 ORA-01157: 无法标识/锁定数据文件 1 - 请参阅 DBWR 跟踪文件 ORA-01110: 数据文件 1: ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSTEM01.DBF‘
查看文件路径:
SQL> select name from v$controlfile;
NAME --------------------------------------------------------- F:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL01.CTL F:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL02.CTL F:\APP\ADMINISTRATOR\ORADATA\AGRISK\CONTROL03.CTL
SQL> select name from v$datafile;
NAME --------------------------------------------------------- D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSTEM01.DBF D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSAUX01.DBF D:\APP\ADMINISTRATOR\ORADATA\AGRISK\UNDOTBS01.DBF D:\APP\ADMINISTRATOR\ORADATA\AGRISK\USERS01.DBF D:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK.DBF
SQL> select name from v$tempfile;
NAME --------------------------------------------------------- D:\APP\ADMINISTRATOR\ORADATA\AGRISK\TEMP01.DBF D:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK_TEMP.DBF
SQL> select member from v$logfile;
MEMBER --------------------------------------------------------- D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO03.LOG D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO02.LOG D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO01.LOG
除了控制文件的路径是正常的,其他的文件路径都需要修改,将原来的D盘改为F盘:
SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSTEM01.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSTEM01.DBF‘; 数据库已更改。 SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSAUX01.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\SYSAUX01.DBF‘; 数据库已更改。 SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\UNDOTBS01.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\UNDOTBS01.DBF‘; 数据库已更改。 SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\USERS01.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\USERS01.DBF‘; 数据库已更改。 SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK.DBF‘; 数据库已更改。 SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\TEMP01.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\TEMP01.DBF‘; 数据库已更改。 SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK_TEMP.DBF‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\AGRISK_TEMP.DBF‘; 数据库已更改。 SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO01.LOG‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO01.LOG‘; 数据库已更改。 SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO02.LOG‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO02.LOG‘; 数据库已更改。 SQL> alter database rename file ‘D:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO03.LOG‘ to ‘F:\APP\ADMINISTRATOR\ORADATA\AGRISK\REDO03.LOG‘; 数据库已更改。
确认修改成功后,启动数据库:
SQL> alter database open; 数据库已更改。
重启数据库:
SQL> shutdown immediate; 数据库已经关闭。 已经卸载数据库。 ORACLE 例程已经关闭。
SQL> startup ORACLE 例程已经启动。 Total System Global Area 1071333376 bytes Fixed Size 1334380 bytes Variable Size 301990804 bytes Database Buffers 754974720 bytes Redo Buffers 13033472 bytes 数据库装载完毕。 数据库已经打开。
时间: 2024-10-13 10:48:35