move rdbms from local file(no-ASM) to ASM instance
one asm instance can support multiple rdbms instances,and it is possible to run more than one asm instance to which the rdbms instance could connect,this potential many-to-many relationship btween the instance types is resolved by the cluster services.
it is possible to have more than on asm instance running on one computer,but there is no value in doing this,you should create one asm instance per computer and use it to manager all the asm disks available to that computer on behalf of all the RDBMS instance running on the computer.
[oracle@ora11 bin]$ export ORACLE_SID=+ASM [oracle@ora11 bin]$ export ORACLE_HOME=/ora10/app/oracle11/product/11.2.0/grid SQL> select NAME,STATE,FREE_MB,DATABASE_COMPATIBILITY from v$asm_diskgroup; NAME STATE FREE_MB DATABASE_COMPATIBILITY -------------------- ---------- ------------------------------ DATA MOUNTED 20352 10.1.0.0.0
my test env..
asm:11201
db:10201 single instance
Tip:
if in rdbms instance not found the asm instance,login asm instance and execute
alter system register;
–connect rdbms instance
[oracle@ora11 ~]$ . env10 [oracle@ora11 ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jul 14 23:17:21 2012 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 sys@ORA10> select name from v$datafile; NAME ---------------------------------------------------------------------------------------------------- /ora10/app/oracle/oradata/ora10/system01.dbf /ora10/app/oracle/oradata/ora10/undotbs01.dbf /ora10/app/oracle/oradata/ora10/sysaux01.dbf /ora10/app/oracle/oradata/ora10/users01.dbf sys@ORA10> select name from v$tempfile; NAME ---------------------------------------------------------------------------------------------------- /ora10/app/oracle/oradata/ora10/temp01.dbf sys@ORA10> select member from v$logfile; MEMBER ---------------------------------------------------------------------------------------------------- /ora10/app/oracle/oradata/ora10/redo03.log /ora10/app/oracle/oradata/ora10/redo02.log /ora10/app/oracle/oradata/ora10/redo01.log sys@ORA10> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /ora10/app/oracle/product/10.2 .0/db2/dbs/spfileora10.ora sys@ORA10> show parameter file_dest NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ audit_file_dest string /ora10/app/oracle/admin/ora10/ adump db_create_file_dest string db_recovery_file_dest string /ora10/app/oracle/flash_recove ry_area db_recovery_file_dest_size big integer 2G sys@ORA10> show parameter control NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ control_file_record_keep_time integer 7 control_files string /ora10/app/oracle/oradata/ora1 0/control01.ctl, /ora10/app/or acle/oradata/ora10/control02.c tl, /ora10/app/oracle/oradata/ ora10/control03.ctl sys@ORA10> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 1 Current log sequence 2 sys@ORA10> select name,free_mb,state from v$asm_diskgroup; NAME FREE_MB STATE ------------------------------ ---------- ----------- DATA 20350 MOUNTED sys@ORA10> alter system set control_files='+DATA' scope=spfile; System altered. sys@ORA10> alter system set db_create_file_dest='+DATA' scope=spfile; System altered. step 1,migrate the controle file RMAN> backup current controlfile format '/ora10/contrf.ctf' 2> ; Starting backup at 14-JUL-12 using target database control file instead of recovery catalog allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=159 devtype=DISK channel ORA_DISK_1: starting full datafile backupset channel ORA_DISK_1: specifying datafile(s) in backupset including current control file in backupset channel ORA_DISK_1: starting piece 1 at 14-JUL-12 channel ORA_DISK_1: finished piece 1 at 14-JUL-12 piece handle=/ora10/contrf.ctf tag=TAG20120714T232437 comment=NONE channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01 Finished backup at 14-JUL-12 RMAN> shutdown immediate database closed database dismounted Oracle instance shut down RMAN> startup nomount connected to target database (not started) Oracle instance started Total System Global Area 922746880 bytes Fixed Size 1222648 bytes Variable Size 234883080 bytes Database Buffers 683671552 bytes Redo Buffers 2969600 bytes RMAN> restore controlfile from '/ora10/contrf.ctf'; Starting restore at 14-JUL-12 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=156 devtype=DISK channel ORA_DISK_1: restoring control file channel ORA_DISK_1: restore complete, elapsed time: 00:00:08 output filename=+DATA/ora10/controlfile/current.256.788657129 Finished restore at 14-JUL-12 step 2,migrate the datafiles RMAN> alter database mount; database mounted released channel: ORA_DISK_1 RMAN> backup as copy database format '+DATA'; Starting backup at 14-JUL-12 Starting implicit crosscheck backup at 14-JUL-12 allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=156 devtype=DISK Crosschecked 1 objects Finished implicit crosscheck backup at 14-JUL-12 Starting implicit crosscheck copy at 14-JUL-12 using channel ORA_DISK_1 Finished implicit crosscheck copy at 14-JUL-12 searching for all files in the recovery area cataloging files... no files cataloged using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile fno=00001 name=/ora10/app/oracle/oradata/ora10/system01.dbf output filename=+DATA/ora10/datafile/system.257.788657191 tag=TAG20120714T232630 recid=1 stamp=788657229 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:46 channel ORA_DISK_1: starting datafile copy input datafile fno=00003 name=/ora10/app/oracle/oradata/ora10/sysaux01.dbf output filename=+DATA/ora10/datafile/sysaux.258.788657237 tag=TAG20120714T232630 recid=2 stamp=788657256 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:25 channel ORA_DISK_1: starting datafile copy input datafile fno=00002 name=/ora10/app/oracle/oradata/ora10/undotbs01.dbf output filename=+DATA/ora10/datafile/undotbs1.259.788657261 tag=TAG20120714T232630 recid=3 stamp=788657263 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03 channel ORA_DISK_1: starting datafile copy input datafile fno=00004 name=/ora10/app/oracle/oradata/ora10/users01.dbf output filename=+DATA/ora10/datafile/users.260.788657265 tag=TAG20120714T232630 recid=4 stamp=788657265 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:01 Finished backup at 14-JUL-12 RMAN-06497: WARNING: control file is not current, control file autobackup skipped TIP:current control file had in ASM,so the WARNING could be ignore! RMAN> report schema; RMAN-06139: WARNING: control file is not current for REPORT SCHEMA Report of database schema List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------ 1 480 SYSTEM *** /ora10/app/oracle/oradata/ora10/system01.dbf 2 25 UNDOTBS1 *** /ora10/app/oracle/oradata/ora10/undotbs01.dbf 3 240 SYSAUX *** /ora10/app/oracle/oradata/ora10/sysaux01.dbf 4 5 USERS *** /ora10/app/oracle/oradata/ora10/users01.dbf List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 20 TEMP 32767 /ora10/app/oracle/oradata/ora10/temp01.dbf RMAN> switch database to copy; datafile 1 switched to datafile copy "+DATA/ora10/datafile/system.257.788657191" datafile 2 switched to datafile copy "+DATA/ora10/datafile/undotbs1.259.788657261" datafile 3 switched to datafile copy "+DATA/ora10/datafile/sysaux.258.788657237" datafile 4 switched to datafile copy "+DATA/ora10/datafile/users.260.788657265" RMAN> report schema; RMAN-06139: WARNING: control file is not current for REPORT SCHEMA Report of database schema List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------ 1 480 SYSTEM *** +DATA/ora10/datafile/system.257.788657191 2 25 UNDOTBS1 *** +DATA/ora10/datafile/undotbs1.259.788657261 3 240 SYSAUX *** +DATA/ora10/datafile/sysaux.258.788657237 4 5 USERS *** +DATA/ora10/datafile/users.260.788657265 List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 20 TEMP 32767 /ora10/app/oracle/oradata/ora10/temp01.dbf RMAN> alter database open resetlogs; RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: failure of alter db command at 07/14/2012 23:30:34 ORA-01152: file 1 was not restored from a sufficiently old backup ORA-01110: data file 1: '+DATA/ora10/datafile/system.257.788657191' RMAN> recover database; Starting recover at 14-JUL-12 using channel ORA_DISK_1 starting media recovery archive log thread 1 sequence 2 is already on disk as file /ora10/app/oracle/oradata/ora10/redo01.log archive log filename=/ora10/app/oracle/oradata/ora10/redo01.log thread=1 sequence=2 media recovery complete, elapsed time: 00:00:02 Finished recover at 14-JUL-12 RMAN> alter database open resetlogs; database opened step 3,migrate the temp file(have tow way) sys@ORA10> select name from v$tempfile; NAME ---------------------------------------------------------------------------------------------------- /ora10/app/oracle/oradata/ora10/temp01.dbf sys@ORA10> alter database tempfile '/ora10/app/oracle/oradata/ora10/temp01.dbf' drop; Database altered. sys@ORA10> alter tablespace temp add tempfile '+DATA' size 50m; Tablespace altered. sys@ORA10> select name from v$tempfile; NAME ---------------------------------------------------------------------------------------------------- +DATA/ora10/tempfile/temp.261.788657707 *****************************second way****************** sys@ORA10> alter tablespace temp add tempfile '+DATA'; Tablespace altered. sys@ORA10> alter tablespace temp drop tempfile '+DATA/ora10/tempfile/temp.261.788657707'; Tablespace altered. sys@ORA10> select name from v$tempfile; NAME ---------------------------------------------------------------------------------------------------- +DATA/ora10/tempfile/temp.262.788657805 *****************************end************************ step 4,migrate the redo logfile sys@ORA10> col member for a60 sys@ORA10> select * from v$logfile; GROUP# STATUS TYPE MEMBER IS_ ---------- ------- ------- ------------------------------------------------------------ --- 3 ONLINE /ora10/app/oracle/oradata/ora10/redo03.log NO 2 ONLINE /ora10/app/oracle/oradata/ora10/redo02.log NO 1 ONLINE /ora10/app/oracle/oradata/ora10/redo01.log NO sys@ORA10> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- 1 1 1 52428800 1 NO CURRENT 456885 14-JUL-12 2 1 0 52428800 1 YES UNUSED 0 3 1 0 52428800 1 YES UNUSED 0 sys@ORA10> alter database drop logfile group 3; Database altered. sys@ORA10> alter database add logfile group 3 '+DATA'; Database altered. sys@ORA10> alter database add logfile group 2 '+DATA'; Database altered. sys@ORA10> ALTER system switch logfile; System altered. sys@ORA10> ALTER system switch logfile; System altered. sys@ORA10> alter system checkpoint; System altered. sys@ORA10> select * from v$log; GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- 1 1 1 52428800 1 NO INACTIVE 456885 14-JUL-12 2 1 2 104857600 1 NO INACTIVE 457320 14-JUL-12 3 1 3 104857600 1 NO CURRENT 457323 14-JUL-12 sys@ORA10> alter database drop logfile group 1; Database altered. sys@ORA10> alter database add logfile group 1 '+DATA'; Database altered. TIP:add more than one member per group ALTER database add LOGFILE member '+DATA' TO GROUP 1; sys@ORA10> select * from v$logfile; GROUP# STATUS TYPE MEMBER IS_ ---------- ------- ------- ------------------------------------------------------------ --- 3 ONLINE +DATA/ora10/onlinelog/group_3.261.788657965 NO 2 ONLINE +DATA/ora10/onlinelog/group_2.263.788658019 NO 1 ONLINE +DATA/ora10/onlinelog/group_1.264.788658075 NO step 5,migrate the spfile sys@ORA10> show parameter spfile; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string /ora10/app/oracle/product/10.2 .0/db2/dbs/spfileora10.ora sys@ORA10> create pfile from spfile; File created. sys@ORA10> create spfile='+DATA/ora10/spora10.ora' from pfile; File created. sys@ORA10> host [oracle@ora11 ~]$ cd $ORACLE_HOME/dbs [oracle@ora11 dbs]$ ls hc_+ASM.dat hc_ora10.dat initdw.ora init.ora initora10.ora lkORA10 orapwora10 snapcf_ora10.f spfileora10.ora [oracle@ora11 dbs]$ mv spfileora10.ora spfileora10.ora_bak [oracle@ora11 dbs]$ vi initora10.ora spfile='+DATA/ora10/spora10.ora' :wq sys@ORA10> shutdown immediate Database closed. Database dismounted. ORACLE instance shut down. sys@ORA10> startup ORACLE instance started. Total System Global Area 922746880 bytes Fixed Size 1222648 bytes Variable Size 239077384 bytes Database Buffers 679477248 bytes Redo Buffers 2969600 bytes Database mounted. Database opened. sys@ORA10> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string +DATA/ora10/spora10.ora sys@ORA10> show parameter spfile NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ spfile string +DATA/ora10/spora10.ora sys@ORA10> show parameter recover NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /ora10/app/oracle/flash_recove ry_area db_recovery_file_dest_size big integer 2G recovery_parallelism integer 0 sys@ORA10> alter system set db_recovery_file_dest='+DATA'; System altered. sys@ORA10> show parameter recover NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string +DATA
ok.
Note:11203 database instance can not use 11201 asm instance.
SQL> create tablespace tbs datafile '+DATA' size 3m; create tablespace tbs datafile '+DATA' size 3m * ERROR at line 1: ORA-01119: error in creating database file '+DATA' ORA-17502: ksfdcre:4 Failed to create file +DATA ORA-15001: diskgroup "DATA" does not exist or is not mounted ORA-15064: communication failure with ASM instance ORA-15295: ASM instance software version 11.2.0.1.0 less than client version 11.2.0.3.0 [oracle@ora11 ~]$ oerr ora 15295 15295, 00000, "ASM instance software version %s less than client version %s" // Cause: The ASM instance software version was less than the client version. // Action: Upgrade the ASM instance software. Check the alert log for // more information on the reason for the failure.
# Migrate datafile to ASM
RMAN> sql "alter tablespace xxx offline"; RMAN> backup as copy datafile 11 format '+DATA'; RMAN> backup as copy datafile 12 format '+DATA'; RMAN> switch datafile 11 to copy; RMAN> switch datafile 12 to copy; RMAN> sql "alter tablespace test online";
对不起,这篇文章暂时关闭评论。