通常要迁移一个数据库,我们会使用
1 冷备份,整个数据库迁移,
2 rman duplicate 功能进行复制到本机或者复制到异机,
前面两种都必须先在目标库上安装软件。这里测试另外一种方法:对于单实例数据库,复制整个oracle 10g 数据库到另一个服务器,relink 之后可以重新使用。。
查看源库数据库库文件在$ORACLE_BASE 目录下的分布:
oracle@yangDB1:/opt/oracle>ll
总计 36
drwxrwx--- 3 oracle oinstall 4096 08-06 16:22 10.2.0
drwxr-x--- 4 oracle oinstall 4096 08-17 17:10 admin
drwxrwxr-x 3 oracle oinstall 4096 08-06 15:14 extapi
drwxr-x--- 4 oracle oinstall 4096 08-17 18:32 flash_recovery_area
drwxr-x--- 4 oracle oinstall 4096 08-17 17:10 oradata
drwxrwxr-x 6 oracle oinstall 4096 08-06 16:28 oraInventory
drwxr-xr-x 2 oracle oinstall 4096 08-17 17:49 pri_arch
drwxr-xr-x 2 oracle oinstall 4096 08-11 13:27 std_arch -standby文件,不用
drwxr-xr-x 2 oracle oinstall 4096 08-17 18:31 yqldb_arch-上一个实验文件,不用
将数据库文件拷贝到目标库:记得将目标库设置和源库一样的结构,否则会报错!
oracle@yangDB1:/opt/oracle>scp -r flash_recovery_area 10.250.7.230:/opt/oracle
oracle@yangDB1:/opt/oracle>scp -r admin 10.250.7.230:/opt/oracle
oracle@yangDB1:/opt/oracle>scp -r oraInventory 10.250.7.230:/opt/oracle
oracle@yangDB1:/opt/oracle>scp -r 10.2.0 10.250.7.230:/opt/oracle
oracle@yangDB1:/opt/oracle>scp -r oradata/orcl/ 10.250.7.230:/opt/oracle/oradata/
在目标库上:
oracle@yangDB2:/opt/oracle/10.2.0/orcl/rdbms/lib>ls
bbed dmwdm.o hormc.o kciwcx.o kprnts.o ksnnni.o libodm10.a maxmem.o s0exudrv.o shou.o ssbbded.o sulmain.o xsyeolap.o
bifile.bbd dumpsga.o hormd.o kcsm.o kprwts.o ksnnt2.o libperfsrv10.a nmliblist s0impdrv.o sjsex.o sskfeded.o tg4pwd.o zsmsdrv.o
config.c env_rdbms.mk horm.o kfod.o kpucb.o ktd.olibqsmashr.a opimai.o s0kudbv.o skfedpt.o sskfoded.o tstshm.o
config.o genezi.o hormt.o kgupc.o kpudfo.o kxmnsd.o libskgxns.a osh.o s0kuzr.o skfodpt.o sskrmed.o ttcoerr.o
cursize.o genksms.o hout.o kgutc.o kpundf.o kxmwsd.o libskgxpd.a par.bbd s0kvpf.o skrmpt.o sskrned.o ttcsoi.o
dbfsize.o hoaoci.o hsxaora.o kkpoban.o ksms.o kzlnlbac.o libskgxpu.a rfscom.o s0udexp.o skrnpt.o sskrsed.o wpspldrv.o
defopt.o hoat.o ins_rdbms.mk kkxntp.o ksnkcs.o libdbtools10.a libxdb.a rfsd.o s0udimp.o skrspt.o ssoraed.o xaondy.o
dmndm.o hoax.o jox.okkxwtp.o ksnkkpo.o libdsga10.a log.bbdrfsin.o sbbdpt.o sllfls.o sstrced.o xaonsl.o
dmndmse.o homts.o joxoff.o kopc.o ksnktd.o libknlopt.a mapsga.o rfsxc.o shorm.o srfsd.o strcpt.o xsnoolap.o
先执行relink oracle,然后make -f ins_rdbms.mk install
oracle@yangDB2:/opt/oracle/10.2.0/orcl/rdbms/lib>relink oracle
oracle@yangDB2:/opt/oracle/10.2.0/orcl/rdbms/lib>make -f ins_rdbms.mk install
验证:
SQL> startup
ORACLE instance started.
Total System Global Area 1224736768 bytes
Fixed Size 384 bytes
Variable Size 318770144 bytes
Database Buffers889192448 bytes
Redo Buffers 14753792 bytes
Database mounted.
Database opened.
SQL> conn yang/yang
Connected.
SQL> col tname for a15
SQL> col tabtype for a10
SQL> select * from tab;
TNAMETABTYPE CLUSTERID
--------------- ---------- ----------
YANGBTABLE
YANGTABTABLE
YANGOBJTABLE
YANGUSER TABLE
OBJECTSTABLE
A TABLE
6 rows selected.
SQL> select instance_name from v$instance;
INSTANCE_NAME
------------------------------------
orcl
===========遇到的问题============
第一次启动的时候遇到ORA-00205:
SQL> startup pfile='/tmp/initorcl.ora';
ORACLE instance started.
Total System Global Area 1224736768 bytes
Fixed Size 384 bytes
Variable Size 318770144 bytes
Database Buffers889192448 bytes
Redo Buffers 14753792 bytes
ORA-00205: error in identifying control file, check alert log for more info
检查告警日志文件,发现如下错误:
Errors in file /opt/oracle/admin/orcl/udump/orcl_ora_705.trc:
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: '/opt/oracle/oradata/orcl/redo01.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
Sat Aug 6 16:29:12
Errors in file /opt/oracle/admin/orcl/udump/orcl_ora_705.trc:
ORA-00313: open failed for members of log group 2 of thread 1
ORA-00312: online log 2 thread 1: '/opt/oracle/oradata/orcl/redo02.log'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
提示没有对应的文件或者目录。
查看数据文件,发现拷贝的时候是拷贝到/opt/oracle/ 目录下的而不是/opt/oracle/orcl 目录下,将数据文件移动到orcl目录下
oracle@yangDB2:/opt/oracle/oradata>ls
control01.ctl control02.ctl control03.ctl example01.dbf redo01.log redo02.log redo03.log sysaux01.dbf system01.dbf temp01.dbf undotbs01.dbf users01.dbf
oracle@yangDB2:/opt/oracle/oradata>mkdir orcl
oracle@yangDB2:/opt/oracle/oradata>mv *.ctl orcl
oracle@yangDB2:/opt/oracle/oradata>mv *.dbf orcl
oracle@yangDB2:/opt/oracle/oradata>ls
orcl redo01.log redo02.log redo03.log
oracle@yangDB2:/opt/oracle/oradata>mv *.log orcl
oracle@yangDB2:/opt/oracle/oradata>cd orcl
oracle@yangDB2:/opt/oracle/oradata>ll
oracle@yangDB2:/opt/oracle/oradata/orcl>ll
总计 1541672
-rw-r----- 1 oracle oinstall 7061504 08-17 21:40 control01.ctl
-rw-r----- 1 oracle oinstall 7061504 08-17 21:40 control02.ctl
-rw-r----- 1 oracle oinstall 7061504 08-17 21:40 control03.ctl
-rw-r----- 1 oracle oinstall 104865792 08-17 21:09 example01.dbf
-rw-r----- 1 oracle oinstall 52429312 08-17 21:09 redo01.log
-rw-r----- 1 oracle oinstall 52429312 08-17 21:40 redo02.log
-rw-r----- 1 oracle oinstall 52429312 08-17 21:09 redo03.log
-rw-r----- 1 oracle oinstall 335552512 08-17 21:38 sysaux01.dbf
-rw-r----- 1 oracle oinstall 513810432 08-17 21:39 system01.dbf
-rw-r----- 1 oracle oinstall 20979712 08-17 20:59 temp01.dbf
-rw-r----- 1 oracle oinstall 41951232 08-17 21:39 undotbs01.dbf
-rw-r----- 1 oracle oinstall 381427712 08-17 21:09 users01.dbf
再次验证,ok!!
oracle@yangDB2:/opt/oracle/oradata/orcl>export ORCLE_SID=orcl
oracle@yangDB2:/opt/oracle/oradata/orcl>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Wed Aug 17 21:09:19
Copyright (c) 1982, , Oracle. All rights reserved.
SQL> conn /as sysdba
Connected.
SQL> startup
ORACLE instance started.
Total System Global Area 1224736768 bytes
Fixed Size 384 bytes
Variable Size 318770144 bytes
Database Buffers889192448 bytes
Redo Buffers 14753792 bytes
Database mounted.
Database opened.
SQL> conn yang/yang
Connected.