SAP使用表空間傳輸異構系統遷移

                       SAP使用表空間傳輸異構系統遷移

此文檔乃原創總結,僅適用於oracle數據庫。此方法特點,速度快、停機時間短,配合RMAN使用甚至可以做到不停機、在線遷移並可以支持裸設備和ASM。以次方法做遷移,在實際測試中,從Solaris sparc遷移到Solaris X86的停機時間根據硬件配置不同大概爲:離線冷備時間+1個小時左右。CPU越高,時間越短。
方法如下:

1.       在目標機全新安裝同版本SAP系統。

2.       在源系統做一次備份。(可選,推薦做)

3.       在源系統執行exp.sh腳本分別導出PSAPSR3PSAPSR37**PSAPSR3usr。(exp.sh腳本參考附件一,此腳本非通用形腳本,需要根據自身情況修改)

4.       使用sqlDevelopoer將源系統視圖創建命令導出。

5.       exp.sh命令導出的文件以及導出的創建視圖腳本傳到目標機。

6.       DROP掉目標機PSAPSR3,PSAPSR37**,PSAPSR3usr3個表空間及其數據文件。

7.       RMAN中使用convert命令將數據文件轉換至目標平臺。

8.       根據需要,將數據文件按照sap的數據文件存放方式,移動到各自目錄(可選,可自己寫腳本完成)。

9.       使用imp腳本將表空間PSAPSR3,PSAPSR37**,PSAPSR3usr導入目標數據庫。(命令參考附件二)

10.   PSAPSR3PSAPSR37**,PSAPSR3usr3個表空間設置爲可讀寫,再執行創建視圖的腳本。

11.   啓動SAP,完成SystemCopy後的後續操作。如SE06等,具體參考James Yan的文檔:

12.   大功告成!

附件一:exp.sh腳本,(此腳本僅供參考,如需直接使用建立對應目錄)
#!/bin/bash
 
echo -n "Enter tablespace name:"
read TABLESPACE

echo Transport tablespace $TABLESPACE Begin time:`date +%Y/%m/%d' '%H:%M:%S` >> /sappool/exp/exp_ts_$TABLESPACE.log

#
 
VALUE=`sqlplus -S /nolog <<EOF
set heading off
set echo off
set line 200
set pages 0
connect / as sysdba
alter tablespace $TABLESPACE read only;
exit;
EOF`

if [ "$VALUE" = "`echo -e '\nTablespace altered.'`" ]; then

   echo Alter tablespace $TABLESPACE read only SUCCESS;

else

   echo Alter tablespace $TABLESPACE read only Failed;

   echo "ERROR message is:"

   echo "$VALUE"

fi
 

echo exp tablespace $TABLESPACE Begin time:`date +%Y/%m/%d' '%H:%M:%S` >> /sappool/exp/exp_ts_$TABLESPACE.log

 

exp tablespaces=$TABLESPACE transport_tablespace=y file=/sappool/exp/exp_ts_$TABLESPACE.dmp log=/sappool/exp/log/exp_ts_$TABLESPACE.log

 

echo exp tablespace $TABLESPACE finish time:`date +%Y/%m/%d' '%H:%M:%S` >> /sappool/exp/exp_ts_$TABLESPACE.log

 
VALUE=`sqlplus -S /nolog <<EOF
set heading off
set echo off
set line 200
set pages 0
set feed off
connect / as sysdba

select file_name from dba_data_files where tablespace_name=upper('$TABLESPACE');

exit;
EOF`
 

echo copy tablespace "$TABLESPACE"\'s datafie finish time :`date +%Y/%m/%d' '%H:%M:%S` >> /sappool/exp/exp_ts_$TABLESPACE.log

 
mkdir -p /sappool/exp/datafile_$TABLESPACE
chmod -R 777 /sappool/exp/datafile_$TABLESPACE
 
cp -p $VALUE /sappool/exp/datafile_$TABLESPACE/
echo copy tablespace begin

echo copy tablespace "$TABLESPACE"\'s datafie finish time :`date +%Y/%m/%d' '%H:%M:%S` >> /sappool/exp/exp_ts_$TABLESPACE.log

 
VALUE=`sqlplus -S /nolog <<EOF
set heading off
set echo off
set line 200
set pages 0
connect / as sysdba
alter tablespace $TABLESPACE read write;
exit;
EOF`

if [ "$VALUE" = "`echo -e '\nTablespace altered.'`" ]; then

   echo Alter tablespace $TABLESPACE read write SUCCESS;

   exit 0
else

   echo Alter tablespace $TABLESPACE read write Failed;

   echo "ERROR message is:"

   echo "$VALUE"

fi

echo Transport tablespace $TABLESPACE Finish time:`date +%Y/%m/%d' '%H:%M:%S` >> /sappool/exp/exp_ts_$TABLESPACE.log

cat /sappool/exp/exp_ts_$TABLESPACE.log >> /sappool/exp/log/exp_ts_$TABLESPACE.log && rm -f /sappool/exp/exp_ts_$TABLESPACE.log

附件二:imp腳本和命令(PSAPSR3700表空間爲例,其他表空間參考)

date >> /oracle/imp/log/imp_ts_psapsr3700.log.time && \

imp tablespaces=PSAPSR3700 \
transport_tablespace=y \
file='/oracle/exp_ts_psapsr3700.dmp'\
 datafiles='/oracle/PRD/sapdata1/sr3700_5/sr3700.data5',\
'/oracle/PRD/sapdata1/sr3700_1/sr3700.data1',\
'/oracle/PRD/sapdata1/sr3700_9/sr3700.data9',\
'/oracle/PRD/sapdata1/sr3700_13/sr3700.data13',\
'/oracle/PRD/sapdata2/sr3700_2/sr3700.data2',\
'/oracle/PRD/sapdata2/sr3700_6/sr3700.data6',\
'/oracle/PRD/sapdata2/sr3700_10/sr3700.data10',\
'/oracle/PRD/sapdata2/sr3700_14/sr3700.data14',\
'/oracle/PRD/sapdata3/sr3700_7/sr3700.data7',\
'/oracle/PRD/sapdata3/sr3700_11/sr3700.data11',\
'/oracle/PRD/sapdata3/sr3700_15/sr3700.data15',\
'/oracle/PRD/sapdata3/sr3700_3/sr3700.data3',\
'/oracle/PRD/sapdata4/sr3700_16/sr3700.data16',\
'/oracle/PRD/sapdata4/sr3700_8/sr3700.data8',\
'/oracle/PRD/sapdata4/sr3700_12/sr3700.data12',\
'/oracle/PRD/sapdata4/sr3700_4/sr3700.data4'\
log=/oracle/imp/log/imp_ts_psapsr3700.log\

 && date >> /oracle/imp/log/imp_ts_psapsr3700.log.time

附件三:rman conver命令。

CONVERT DATAFILE '/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data1'

,'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data2',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data3',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data4',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data5',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data6',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data7',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data8',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data9',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data10',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data11',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data12',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data13',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data14',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data15',
'/sapbackup/hhdbackup/exp/datafile_psapsr3700/sr3700.data16'

 FROM PLATFORM="Solaris[tm] OE (64-bit)"

 DB_FILE_NAME_CONVERT= "/sapbackup/hhdbackup/exp/datafile_psapsr3700/" "/oracle/convert/sapdata3/";

附件四:以SAP習慣移動數據文件。
#!/bin/bash
for((i=1;i<=16;i++));
do
c=$(($i%4));
if ((c==0))
then
mkdir -p /oracle/QAS/sapdata4/sr3700.data$i/

cp -p ./sr3700.data$i /oracle/QAS/sapdata4/sr3700_$i/

else
mkdir -p /oracle/QAS/sapdata$c/sr3700_$i/

cp -p ./sr3700.data$i /oracle/QAS/sapdata$c/sr3700_$i/

fi
done
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章