G2BH8060, odsz10g sid: hd02ntlf g4as8031, od1ntlf ,sid:d1ntlf
1.源端做convert database shut immediate startup mount alter database open read only;
set serveroutput on declare db_ready boolean; begin db_ready := dbms_tdb.check_db('Solaris[tm] OE (64-bit)',dbms_tdb.skip_readonly); end; /
set serveroutput on declare external boolean; begin external := dbms_tdb.check_external; end; / rman target / << EOF >/paic/hd02ntlf/datatmp/fwy/fwy.log 2>&1 CONVERT DATABASE NEW DATABASE 'newdb' to platform 'Solaris[tm] OE (64-bit)' db_file_name_convert '/paic/g2bh8060/dev/xqd/oradata/hd02ntlf/' '/paic/hd02ntlf/datatmp/fwy/' ; EOF
中途报错,是因为undo表空间有坏块。
这里得出的结论是,做rman convert前可以先全部dbv检查一下。 --dbv.sh-- select 'dbv file='''||file_name||''' feedback=1000000 ' from dba_data_files; nohup sh dbv.sh>dbv.out 2>&1 &
2.目标端克隆软件102056
vi install.sh $ORACLE_HOME/oui/bin/runInstaller -invPtrLoc /paic/d1ntlf/rdbms/oracle/product/10.2.0/oraInst.loc \ -silent -clone ORACLE_HOME="/paic/d1ntlf/rdbms/oracle/product/10.2.0" \ ORACLE_HOME_NAME="home102041"
select 'alter database rename file '||chr(39)||file_name||chr(39)||' to '||chr(39)||substr(file_name,instr(file_name,'/',-1,1))||chr(39) from dba_data_files;
将数据文件都传到目标端,控制文件传一个就可以。临时文件不用传,redo log可以传可以不传,传就方便点,不传的话,后期要创建新的redo log 文件。
--因为 数据库是nomount状态,不能configure channel来配置并行,所以要在转换的临时分配channel 既然convert database因不明原因失败,我就将dbf文件都传到临时卷上。 再将临时卷挂到目标端,然后convert datafile。此时要用root修改属主与权限。 --因为数据库是nomount状态,不能configure channel来配置并行,所以要在转换的临时分配channel
数据库启动到nomount状态
--1.sh-- rman target / <