| Миграция на Database 10g към ASM |
| Понеделник, 07 Септември 2009 08:37 |
|
В този пример ще покажем как да мигрираме стъпка по стъпка Oracle Database 10g Release 2 база от файлова система към Automatic Storage Management. Конфигурация В примера ще използваме инсталирана 10.2.0.1 база данни, която работи върху Enterprise Linux 5. Базата се намира в /u01/app/oracle/product/10.2.0/db_orcl, собственикът на инсталация е потребител oracle, а inventory групата е oinstall. Базата работи в ARCHIVELOG режим и нейният SID е orcl. Току що сме добавили два допълнителни SCSI диска (по 20GB всеки). Ще ползваме въпросните дискове за ASM дискова група наречена DATA, върху която ще преместим текущата база данни. Настройване на дисковете Да предположим, че двата нови диска се виждат като /dev/sdb и /dev/sdc. [root@el5 ~]# ll /dev/sd*
brw-r----- 1 root disk 8, 0 Aug 24 07:43 /dev/sda brw-r----- 1 root disk 8, 1 Aug 24 07:43 /dev/sda1 brw-r----- 1 root disk 8, 2 Aug 24 07:43 /dev/sda2 brw-r----- 1 root disk 8, 16 Aug 24 07:43 /dev/sdb brw-r----- 1 root disk 8, 32 Aug 24 07:43 /dev/sdc [root@el5 ~]# Първата стъпка е да създадем дялове на двата диска, като използваме fdisk. Започваме с /dev/sdb. [root@el5 ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. The number of cylinders for this disk is set to 2610. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-2610, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610): Using default value 2610 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@el5 ~]# Повтаряме процедурата и за /dev/sdc. [root@el5 ~]# fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. The number of cylinders for this disk is set to 2610. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-2610, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-2610, default 2610): Using default value 2610 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@el5 ~]# След като сме готови, можем да използваме опцията -l, за да потвърдим, че дяловете са създадени коректно. [root@el5 ~]# fdisk -l
Disk /dev/sda: 8589 MB, 8589934592 bytes 255 heads, 63 sectors/track, 1044 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 1044 8281507+ 8e Linux LVM Disk /dev/sdb: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdb1 1 2610 20964793+ 83 Linux Disk /dev/sdc: 21.4 GB, 21474836480 bytes 255 heads, 63 sectors/track, 2610 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sdc1 1 2610 20964793+ 83 Linux [root@el5 ~]# Инсталация на ASM За да инсталираме ASM ще трябва да свалим и добавим три допълнителни пакета към операционната система. Oracle разработва специфични версии на пакетите за различните операционни системи. Нужните за Enterprise Linux 5 пакети можем да вземем от OTN. Пакетите зависят също и от версията на Linux ядрото, което операционната система ползва. За да видим точната му версия използваме командата uname. [root@el5 ~]# uname -r -p -i
2.6.18-92.el5 i686 i386 [root@el5 ~]# Съгласно горната информация, пакетите които са ни нужни са: oracleasm-support-2.1.3-1.el4.i386.rpm oracleasmlib-2.0.4-1.el4.i386.rpm oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm Сваляме ги чрез командата wget. [root@el5 ~]# wget http://oss.oracle.com/projects/oracleasm-support/dist/files/RPMS/rhel5/x86/2.1.3/oracleasm-support-2.1.3-1.el5.i386.rpm
http://otn.oracle.com/software/tech/linux/asmlib/files/RPMS/rhel5/x86/2.0.4/oracleasmlib-2.0.4-1.el5.i386.rpm http://oss.oracle.com/projects/oracleasm/dist/files/RPMS/rhel5/x86/2.0.5/2.6.18-92.el5/oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm --07:58:36-- http://oss.oracle.com/projects/oracleasm-support/dist/files/RPMS/rhel5/x86/2.1.3/oracleasm-support-2.1.3-1.el5.i386.rpm Resolving oss.oracle.com... 141.146.12.120 Connecting to oss.oracle.com|141.146.12.120|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 85222 (83K) [application/x-rpm] Saving to: `oracleasm-support-2.1.3-1.el5.i386.rpm' 100%[=======================================>] 85,222 65.3K/s in 1.3s 07:58:38 (65.3 KB/s) - `oracleasm-support-2.1.3-1.el5.i386.rpm' saved [85222/85222] --07:58:38-- http://otn.oracle.com/software/tech/linux/asmlib/files/RPMS/rhel5/x86/2.0.4/oracleasmlib-2.0.4-1.el5.i386.rpm Resolving otn.oracle.com... 141.146.9.91 Connecting to otn.oracle.com|141.146.9.91|:80... connected. HTTP request sent, awaiting response... 301 Moved Permanently Location: http://www.oracle.com/technology/software/tech/linux/asmlib/files/RPMS/rhel5/x86/2.0.4/oracleasmlib-2.0.4-1.el5.i386.rpm [following] --07:58:39-- http://www.oracle.com/technology/software/tech/linux/asmlib/files/RPMS/rhel5/x86/2.0.4/oracleasmlib-2.0.4-1.el5.i386.rpm Resolving www.oracle.com... 141.146.9.91 Reusing existing connection to otn.oracle.com:80. HTTP request sent, awaiting response... 200 OK Length: 13769 (13K) [application/x-rpm] Saving to: `oracleasmlib-2.0.4-1.el5.i386.rpm' 100%[=======================================>] 13,769 41.1K/s in 0.3s 07:58:40 (41.1 KB/s) - `oracleasmlib-2.0.4-1.el5.i386.rpm' saved [13769/13769] --07:58:40-- http://oss.oracle.com/projects/oracleasm/dist/files/RPMS/rhel5/x86/2.0.5/2.6.18-92.el5/oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm Connecting to oss.oracle.com|141.146.12.120|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 128494 (125K) [application/x-rpm] Saving to: `oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm' 100%[=======================================>] 128,494 65.9K/s in 1.9s 07:58:42 (65.9 KB/s) - `oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm' saved [128494/128494] FINISHED --07:58:42-- Downloaded: 3 files, 222K in 3.5s (63.4 KB/s) [root@el5 ~]# Така свалените пакети инсталираме с командата rpm. [root@el5 ~]# rpm -Uvh oracleasm-2.6.18-92.el5-2.0.5-1.el5.i686.rpm oracleasmlib-2.0.4-1.el5.i386.rpm oracleasm-support-2.1.3-1.el5.i386.rpm
Preparing... ########################################### [100%] 1:oracleasm-support ########################################### [ 33%] 2:oracleasm-2.6.18-92.el5########################################### [ 67%] 3:oracleasmlib ########################################### [100%] [root@el5 ~]# След като ASM е инсталиран трябва да го конфигурираме, за да стартира автоматично при рестарт и да сканира за достъпни ASM дискове. [root@el5 ~]# /etc/init.d/oracleasm configure
Configuring the Oracle ASM library driver. This will configure the on-boot properties of the Oracle ASM library driver. The following questions will determine whether the driver is loaded on boot and what permissions it will have. The current values will be shown in brackets ('[]'). Hitting answer will keep that current value. Ctrl-C will abort. Default user to own the driver interface []: oracle Default group to own the driver interface []: oinstall Start Oracle ASM library driver on boot (y/n) [n]: y Scan for Oracle ASM disks on boot (y/n) [y]: y Writing Oracle ASM library driver configuration: done Initializing the Oracle ASMLib driver: [ OK ] Scanning the system for Oracle ASMLib disks: [ OK ] [root@el5 ~]# Следващата стъпка от конфигурацията е да създадем дисковете, които ще формират ASM дисковата група. За целта ще ползваме двата създадени дяла /dev/sdb1 и /sdc1. Именуваме ги съответно VOL1 и VOL2. [root@el5 ~]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdb1
Marking disk "VOL1" as an ASM disk: [ OK ] [root@el5 ~]# /etc/init.d/oracleasm createdisk VOL2 /dev/sdc1 Marking disk "VOL2" as an ASM disk: [ OK ] Можем да проверим дали новосъздадените дискове са видими и достъпни за ASM. [root@el5 ~]# /etc/init.d/oracleasm listdisks
VOL1 VOL2 [root@el5 ~]# Създаване на ASM инстанцията За да можем ръчно да създадем ASM инстанция трябва предварително да конфигурираме Oracle Cluster Synchronization Services (CSS). За целта използваме командата localconfig с опция add, която добавя първончална CSS конфигурация. [root@el5 ~]# /u01/app/oracle/product/10.2.0/db_orcl/bin/localconfig add
/etc/oracle does not exist. Creating it now. Successfully accumulated necessary OCR keys. Creating OCR keys for user 'root', privgrp 'root'.. Operation successful. Configuration for local CSS has been initialized Adding to inittab Startup will be queued to init within 90 seconds. Checking the status of new Oracle init process... Expecting the CRS daemons to be up within 600 seconds. CSS is active on these nodes. el5 CSS is active on all nodes. Oracle CSS service is installed and running under init(1M) [root@el5 ~]# След като CSS е стартиран успешно можем да използваме Database Configuration Assistant. Чрез него ще създадем и стартираме нашата ASM инстанция. [oracle@el5 ~]$ dbca
![]() След като DBCA зареди ни показва приветстващия си екран. Избираме Next. ![]() Тук маркираме последната опция – "Configure Automatic Storage Management". ![]() В екрана Create Instance задаваме парола за SYS акаунта на ASM. Можем също да променим някои от параметрите на инстанцията, но за целите на примера ще оставим всичко по подразбиране. ![]() DBCA ни предупреждава, че започва създаването на инстанцията. ![]() След като процеса завърши успешно ще видим екрана за създаване и избор на дискови групи. ![]() Тук създаваме дисковата група чрез бутона Create New. ![]() Задаваме името на групата - DATA, избираме желаното ниво на надеждност и маркираме двата видими диска - VOL1 и VOL2 като нейни членове. ![]() DBCA създава групата и показва нейния статус и капацитет. ![]() След като се уверим, че групата е създадена и монтирана избираме Finish, за да приключим работа с assistant-а. Мигриране на данните Преди да започнем миграцията трябва да видим какви временни файлове са създадени в базата. Тъй като RMAN не взема предвид такива файлове при изпълнението на командата BACKUP AS COPY, ще трябва да се погрижим за тях ръчно. Свързваме се към базата и поглеждаме изгледа V$TEMPFILE. SQL> select name,bytes from v$tempfile;
NAME BYTES ------------------------------------------------------------------ ---------- /u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/temp01.dbf 20971520 SQL> Няме нужда от повече информация, така че започваме процеса на миграция. Първо използваме RMAN, за да се свържем към базата. [oracle@el5 ~]$ rman target orcl
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Aug 25 07:56:32 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. target database Password: connected to target database: ORCL (DBID=1205885619) RMAN> Изпълняваме командата BACKUP AS COPY като не забравяме, че базата работи в ARCHIVELOG. В противен случай би трябвало да я изгасим, да я стартираме в състояние MOUNTED и чак тогава да извършим архивирането. RMAN> backup as copy incremental level 0 database format '+DATA' tag 'ASM_MIGRATION';
Starting backup at 25-AUG-09 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=154 devtype=DISK channel ORA_DISK_1: starting datafile copy input datafile fno=00001 name=/u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/system01.dbf output filename=+DATA/orcl/datafile/system.257.695808003 tag=ASM_MIGRATION recid=2 stamp=695808034 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:45 channel ORA_DISK_1: starting datafile copy input datafile fno=00003 name=/u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/sysaux01.dbf output filename=+DATA/orcl/datafile/sysaux.258.695808041 tag=ASM_MIGRATION recid=3 stamp=695808056 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25 channel ORA_DISK_1: starting datafile copy input datafile fno=00002 name=/u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/undotbs01.dbf output filename=+DATA/orcl/datafile/undotbs1.259.695808065 tag=ASM_MIGRATION recid=4 stamp=695808067 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03 channel ORA_DISK_1: starting datafile copy input datafile fno=00004 name=/u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/users01.dbf output filename=+DATA/orcl/datafile/users.260.695808069 tag=ASM_MIGRATION recid=5 stamp=695808069 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 channel ORA_DISK_1: starting datafile copy copying current control file output filename=+DATA/orcl/controlfile/backup.261.695808071 tag=ASM_MIGRATION recid=6 stamp=695808070 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 channel ORA_DISK_1: starting incremental level 0 datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset including current SPFILE in backupset channel ORA_DISK_1: starting piece 1 at 25-AUG-09 channel ORA_DISK_1: finished piece 1 at 25-AUG-09 piece handle=+DATA/orcl/backupset/2009_08_25/nnsnn0_asm_migration_0.262.695808071 tag=ASM_MIGRATION comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 25-AUG-09 RMAN> За да бъде бекъпа консистентен, трябва да архивираме и текущите REDO логове. Това разбира се няма да се налага, ако базата не работи в ARCHIVELOG. RMAN> sql 'alter system archive log current';
sql statement: alter system archive log current RMAN> Следващата стъпка е да направим архивно копие на SPFILE-а и да го възстановим върху ASM групата. RMAN> run {
2> backup as backupset spfile; 3> restore spfile to "+DATA/spfile"; 4> } Starting backup at 25-AUG-09 using channel ORA_DISK_1 channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset including current SPFILE in backupset channel ORA_DISK_1: starting piece 1 at 25-AUG-09 channel ORA_DISK_1: finished piece 1 at 25-AUG-09 piece handle=/u01/app/oracle/product/10.2.0/db_orcl/flash_recovery_area/ORCL/backupset/2009_08_25/o1_mf_nnsnf_TAG20090825T080732_596wdnps_.bkp tag=TAG20090825T080732 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 25-AUG-09 Starting restore at 25-AUG-09 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile backupset restore channel ORA_DISK_1: restoring SPFILE output filename=+DATA/spfile channel ORA_DISK_1: reading from backup piece /u01/app/oracle/product/10.2.0/db_orcl/flash_recovery_area/ORCL/backupset/2009_08_25/o1_mf_nnsnf_TAG20090825T080732_596wdnps_.bkp channel ORA_DISK_1: restored backup piece 1 piece handle=/u01/app/oracle/product/10.2.0/db_orcl/flash_recovery_area/ORCL/backupset/2009_08_25/o1_mf_nnsnf_TAG20090825T080732_596wdnps_.bkp tag=TAG20090825T080732 channel ORA_DISK_1: restore complete, elapsed time: 00:00:03 Finished restore at 25-AUG-09 RMAN> След като SPFILE е достъпен от ASM групата, създаваме нов PFILE, който сочи към него. [root@el5 ~]# cat >> /tmp/pfile.ora << EOF
SPFILE=+DATA/spfile EOF Свързваме се към базата, изключваме я и я стартираме с новосъздадения PFILE. [oracle@el5 ~]$ sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Aug 25 09:08:51 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options SQL> shutdown immediate ORA-01109: database not open Database dismounted. ORACLE instance shut down. SQL> startup nomount PFILE="/tmp/pfile.ora"; ORACLE instance started. Total System Global Area 285212672 bytes Fixed Size 1218992 bytes Variable Size 96470608 bytes Database Buffers 184549376 bytes Redo Buffers 2973696 bytes SQL> Нека погледнем какви контролни файлове използва базата в момента. SQL> show parameter control_files
NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_files string /u01/app/oracle/product/10.2.0 /db_orcl/oradata/orcl/control0 1.ctl, /u01/app/oracle/product /10.2.0/db_orcl/oradata/orcl/c ontrol02.ctl, /u01/app/oracle/ product/10.2.0/db_orcl/oradata /orcl/control03.ctl SQL> Изпълняваме ALTER SYSTEM команда като променяме CONTROL_FILES параметъра така, че да сочи към файлове в ASM групата, а не към тези във файловата система. SQL> alter system set control_files='+DATA/control01.ctl','+DATA/control02.ctl','+DATA/control03.ctl' scope=spfile sid='*';
System altered. SQL> Извършваме аналогична промяна и за FLASH RECOVERY областта. SQL> alter system set DB_RECOVERY_FILE_DEST='+DATA' sid='*';
System altered. SQL> Трябва да рестартираме базата тъй като CONTROL_FILES е статичен параметър. Използваме RMAN за целта, като чрез него стартираме базата в NOMOUNT състояние. [oracle@el5 ~]$ rman target orcl
Recovery Manager: Release 10.2.0.1.0 - Production on Tue Aug 25 09:19:07 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. target database Password: connected to target database: orcl (not mounted) RMAN> shutdown immediate using target database control file instead of recovery catalog Oracle instance shut down RMAN> startup nomount pfile='/tmp/pfile.ora'; connected to target database (not started) Oracle instance started Total System Global Area 285212672 bytes Fixed Size 1218992 bytes Variable Size 96470608 bytes Database Buffers 184549376 bytes Redo Buffers 2973696 bytes RMAN> Копираме оригиналните контролни файлове на новото място в ASM групата. RMAN> restore controlfile from '/u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/control01.ctl';
Starting restore at 25-AUG-09 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=156 devtype=DISK channel ORA_DISK_1: copied control file copy output filename=+DATA/control01.ctl output filename=+DATA/control02.ctl output filename=+DATA/control03.ctl Finished restore at 25-AUG-09 RMAN> Монтираме базата и я превключваме към наличното в ASM копие. RMAN> alter database mount;
database mounted released channel: ORA_DISK_1 RMAN> switch database to copy; datafile 1 switched to datafile copy "+DATA/orcl/datafile/system.257.695808003" datafile 2 switched to datafile copy "+DATA/orcl/datafile/undotbs1.259.695808065" datafile 3 switched to datafile copy "+DATA/orcl/datafile/sysaux.258.695808041" datafile 4 switched to datafile copy "+DATA/orcl/datafile/users.260.695808069" Възстановяваме базата, в случай че след архивирането са правени някакви промени в нея. RMAN> recover database;
Starting recover at 25-AUG-09 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=156 devtype=DISK starting media recovery media recovery complete, elapsed time: 00:00:06 Finished recover at 25-AUG-09 RMAN> Сега трябва да се погрижим и за временните файлове. Ще използваме командата SET NEWNAME за всеки временен файл, като ще го пренасочваме към групата DATA. След това използваме командата SWITCH, за да влязат промените в сила. Тъй като имаме само един файл, изпълняваме процедурата само веднъж. RMAN> run {
2> set newname for tempfile 1 to '+DАТА'; 3> switch tempfile all; 4> } executing command: SET NEWNAME using target database control file instead of recovery catalog renamed temporary file 1 to +DАТА in control file RMAN> Сега вече можем да отворим базата. RMAN> alter database open;
database opened RMAN> Последната ни задача е мигрирането на REDO лог файловете. Ако се свържем към отворената база чрез SQL*Plus и погледнем в изгледа V$LOGFILE ще видим, че старите лог файлове още са в сила. SQL> select member from v$logfile;
MEMBER -------------------------------------------------------------------------------- /u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/redo03.log /u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/redo02.log /u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/redo01.log SQL> Ще използваме PL/SQL скрипт взет от документацията на Oracle (и по-конкретно Oracle Database Backup and Recovery Advanced User's Guide), за да добавим нови REDO лог файлове и да премахнем старите. SQL> declare
cursor rlc is
select group# grp, thread# thr, bytes/1024 bytes_k, 'NO' srl
from v$log
union
select group# grp, thread# thr, bytes/1024 bytes_k, 'YES' srl
from v$standby_log
order by 1;
stmt varchar2(2048);
swtstmt varchar2(1024) := 'alter system switch logfile';
ckpstmt varchar2(1024) := 'alter system checkpoint global';
begin
for rlcRec in rlc loop
if (rlcRec.srl = 'YES') then
stmt := 'alter database add standby logfile thread ' ||
rlcRec.thr || ' size ' ||
rlcRec.bytes_k || 'K';
execute immediate stmt;
stmt := 'alter database drop standby logfile group ' || rlcRec.grp;
execute immediate stmt;
else
stmt := 'alter database add logfile thread ' ||
rlcRec.thr || ' size ' ||
rlcRec.bytes_k || 'K';
execute immediate stmt;
begin
stmt := 'alter database drop logfile group ' || rlcRec.grp;
dbms_output.put_line(stmt);
execute immediate stmt;
exception
when others then
execute immediate swtstmt;
execute immediate ckpstmt;
execute immediate stmt;
end;
end if;
end loop;
end; 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
29 30 31 32 33 34 35 36 37 38 39 /
PL/SQL procedure successfully completed.
SQL>
Ако сега погледнем V$LOGFILE ще видим, че наличните REDO лог файлове вече са рапзолжени в групата DATA. SQL> select member from v$logfile;
MEMBER -------------------------------------------------------------------------------- +DATA/orcl/onlinelog/group_2.269.695979311 +DATA/orcl/onlinelog/group_1.268.695979309 +DATA/orcl/onlinelog/group_4.267.695979307 SQL> На финала създаваме нов SPFILE, за да не се налага всеки път явно да цитираме PFILE-а при стартиране. SQL> create spfile from pfile;
File created. SQL> Задачи след миграцията Вече можем да изтрием старата база, за да освободим дисково пространство. Използваме RMAN, за да изпълним командата DELETE COPY. RMAN> run {
2> delete copy of database; 3> } released channel: ORA_DISK_1 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=156 devtype=DISK List of Datafile Copies Key File S Completion Time Ckp SCN Ckp Time Name ------- ---- - --------------- ---------- --------------- ---- 7 1 A 27-AUG-09 502307 27-AUG-09 /u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/system01.dbf 8 2 A 27-AUG-09 502307 27-AUG-09 /u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/undotbs01.dbf 9 3 A 27-AUG-09 502307 27-AUG-09 /u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/sysaux01.dbf 10 4 A 27-AUG-09 502307 27-AUG-09 /u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/users01.dbf Do you really want to delete the above objects (enter YES or NO)? YES deleted datafile copy datafile copy filename=/u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/system01.dbf recid=7 stamp=695979133 deleted datafile copy datafile copy filename=/u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/undotbs01.dbf recid=8 stamp=695979133 deleted datafile copy datafile copy filename=/u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/sysaux01.dbf recid=9 stamp=695979133 deleted datafile copy datafile copy filename=/u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/users01.dbf recid=10 stamp=695979133 Deleted 4 objects RMAN> RMAN не изтрива REDO лог файловете, така че за тях трябва да се погрижим ръчно. [oracle@el5 ~]$ rm /u01/app/oracle/product/10.2.0/db_orcl/oradata/orcl/redo*.log
[oracle@el5 ~]$ Тази финална стъпка завършва и цялата миграция. Ако искаме да се уверим, че всичко е конфигурирано коректно и базата вече стартира така по подразбиране, можем да я рестартираме без да цитираме PFILE-а и в последствие да погледнем V$DATAFILE изгледа, за да се уверим, че нейните файлове са разположени в ASM. [oracle@el5 ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Thu Aug 27 07:47:34 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options SQL> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 285212672 bytes Fixed Size 1218992 bytes Variable Size 96470608 bytes Database Buffers 184549376 bytes Redo Buffers 2973696 bytes Database mounted. Database opened. SQL> SQL> select name from v$datafile; NAME -------------------------------------------------------------------------------- +DATA/orcl/datafile/system.257.695978541 +DATA/orcl/datafile/undotbs1.259.695978593 +DATA/orcl/datafile/sysaux.258.695978577 +DATA/orcl/datafile/users.260.695978597 SQL> |











Коментари