需求:
需要将A数据库迁移到B数据库中。
A数据库SID ORCL
B数据库SID:HN
且AB数据库的数据存放目录不一致。
A:/oradata
B:/u01/app/oracle/ordata/
1、将A数据库的日志归档模式修改成飞归档模式。
sqlplus>shutdown immediate sqlplus>startup mount; sqlplus>alter database noarchivelog;
查看归档模式
sqlplus>archive log list;
2、备份A控制文件及生成参数文件。
sqlplus>alter database backup controlfile to trace; sqlplus>show parameter spfile; sqlplus>create pfile from spfile;
3、查看备份A的控制文件信息
#tail -f /u01/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/alert_orcl.log
#cat /u01/oracle/app/oracle/diag/rdbms/orcl/orcl/trace/xxx.trc
3、关闭A数据库
sqlplus>shutdown immediate
4、将A数据文件及日志文件复制到B数据库中
#scp -r oradata/* oracle@xxxx:/u01/app/oracle/oradata/
5、在B数据库中备份参数信息、控制信息
sqlplus>alter database backup controlfile to trace; sqlplus>create pfile from spfile;
6、修改B数据库inithn.ora文件,删除*.control_files对应的字串
#vi $ORACLE_HOME/dbs/inithn.ora
*.control_files=\'/u01/app/oracle/oradata/hnwifidb/control01.ctl\',\'/u01/app/oracle/fast_recovery_area/hnwifidb/control02.ctl\'
更改成
*.control_files=\'\'
7、B数据库启动挂在模式
sqlplus>startup nomount;
8、删除控制文件
#rm -f /u01/app/oracle/oradata/hn/control01.ctl #rm -f /u01/app/oracle/fast_recovery_area/hn/control02.ctl\'
8、重新生成控制文件
sqlplus>startup nomount; sqlplus>CREATE CONTROLFILE SET DATABASE "HN" RESETLOGS NOARCHIVELOG MAXLOGFILES 16 MAXLOGMEMBERS 3 MAXDATAFILES 100 MAXINSTANCES 8 MAXLOGHISTORY 292 LOGFILE GROUP 1 \'/u01/app/oracle/oradata/hn/redo01.log\' SIZE 50M, GROUP 2 \'/u01/app/oracle/oradata/hn/redo02.log\' SIZE 50M, GROUP 3 \'/u01/app/oracle/oradata/hn/redo03.log\' SIZE 50M -- STANDBY LOGFILE DATAFILE \'/u01/app/oracle/oradata/hn/system01.dbf\', \'/u01/app/oracle/oradata/hn/undotbs01.dbf\', \'/u01/app/oracle/oradata/hn/sysaux01.dbf\', \'/u01/app/oracle/oradata/hn/users01.dbf\', \'/u01/app/oracle/oradata/hn/stone01.dbf\', \'/u01/app/oracle/oradata/hn/ts1.1\', \'/u01/app/oracle/oradata/hn/big01.dbf\', \'/u01/app/oracle/oradata/hn/t4k.4\', \'/u01/app/oracle/oradata/hn/tnolog.dbf\', \'/u01/app/oracle/oradata/hn/ts3.dbf\', \'/u01/app/oracle/oradata/hn/ts4.dbf\', \'/u01/app/oracle/oradata/hn/undo2.dbf\', \'/u01/app/oracle/oradata/hn/tm2.dbf\' CHARACTER SET ZHS16GBK;
9、关闭B数据库
sqlplus>shutdown immediate
10、修改B数据库参数文件inithn.ora
#*.control_files=\'\'
更改成
*.control_files=\'/u01/app/oracle/oradata/hnwifidb/control01.ctl\',\'/u01/app/oracle/fast_recovery_area/hnwifidb/control02.ctl\'
11、复制参数文件
#cp /u01/app/oracle/fast_recovery_area/hnwifidb/controlxxx.ctl /u01/app/oracle/oradata/hnwifidb/control01.ctl #cp /u01/app/oracle/fast_recovery_area/hnwifidb/controlxxx.ctl /u01/app/oracle/fast_recovery_area/hnwifidb/control02.ctl\'
12、通过参数文件启动数据库
sqlplus>startup pfile="x:\oracle\product\11.2.0\db_1\database\inithn.ora";
数据库启动报错
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
sqlplus> alter database open resetlogs; sqlplus> create spfile from pfile; sqlplus>select * from dbo.users; user_name ----------------------------------- zhanghong
数据库冷备份迁移完毕