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";