I will take a stab at the Prashant's question.
Most V$ views work by selecting information from the corresponding GV$ view with a predicate "where instance_id = <that instance>". So V$SESSION in Instance 1 is actually "SELECT * FROM GV$INSTANCE WHERE INST_ID = 1". On a three node RAC database, if you select from v$session, you get sessions from that instance only. Selecting from GV$SESSION creates parallel query slaves on the other instances and gets the information back to your session.
This works fine in almost all cases. There are few exceptions: in case of redo logs, the RAC instance must see all the redo logs of other instances as they become important for its recovery. Therefore, V$LOG actually shows all the redo logs, of all the instances, not just of its own. Contrast this with V$SESSION, which shows only sessions of that instance, not all. So, if there are 3 log file groups per instance (actually, per "thread") and there are 3 instances, V$LOG on any instance will show all 9 logfile groups, not 3.
When you select form GV$LOG, remember, the session gets the information from other instances as well. Unfortunately, the PQ servers on those instances also get 9 records each, since they also see the same information seen by the first instance. On a three instance RAC, you will get 3X9 = 27 records in GV$LOG!
The same explanation applies to GV$LOGFILE as well as GV$THREAD.
In your case, you have 2 instances and there are 2 groups in each instance, so you have 4 groups in all. When you select from GV$LOG, the output shows all groups against all instances. Note your output:
INST_ID GROUP# THREAD# SEQUENCE# BYTES MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
1 1 1 17 52428800 1 NO CURRENT 951208 31-DEC-06
1 2 1 15 52428800 1 YES INACTIVE 940808 31-DEC-06
1 4 2 13 52428800 1 YES INACTIVE 948841 31-DEC-06
This shows thread# 1 and 2 both under instance# 1. This is obviously incorrect.
To avoid this:
(1) Always select from V$LOG, V$LOGFILE and V$THREAD in a RAC instance. GV$ views are misleading.
OR
(2) add a predicate to match THREAD# with INST_ID. (Beware: thread numbers are by default the same as the instance_id; but you may have defined a different thread number while creating the database):
SELECT * FROM GV$LOG WHERE INST_ID = THREAD#
But I see no advantage in doing so. Your best bet is to use V$LOG.