Uncommited transactions remain after Instance Recovery

After Instance Recovery, the database seems to contain uncommitted transactions. Please provide an explanation for the following:
create table t1
as
select *
from all_objects;
commit;
create table t2
as
select *
from all_objects;
update t2
set object_id = 1 where rownum = 1;
shutdown abort;
Neither table t2 nor the update to it were committed (right?), therefore, once the database starts up t2 should not be there. On the contrary, it is still there. In the Oracle Database Backup and Recovery Advanced Guide 10g Release 2, page 11-9, explains how the uncommitted transactions are removed (rolled back) in the Roll Backward step (transaction recovery) of the Instance recovery process.
Any insight on this is highly appreciated. Thanks.

Note also following scenario run with SYSDBA privileges:
bas002> select * from v$version;
BANNER
Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Prod
PL/SQL Release 10.2.0.2.0 - Production
CORE    10.2.0.2.0      Production
TNS for 32-bit Windows: Version 10.2.0.2.0 - Production
NLSRTL Version 10.2.0.2.0 - Production
bas002>
bas002> drop table t2;
drop table t2
ERROR at line 1:
ORA-00942: table or view does not exist
bas002> create table t2
  2  as
  3  select *
  4  from all_objects;
Table created.
bas002>
bas002> update t2
  2  set object_id = 1 where object_id=258;
1 row updated.
bas002>
bas002> shutdown abort;
ORACLE instance shut down.
bas002> startup
ORACLE instance started.
Total System Global Area  192937984 bytes
Fixed Size                  1288484 bytes
Variable Size             130025180 bytes
Database Buffers           54525952 bytes
Redo Buffers                7098368 bytes
Database mounted.
Database opened.
bas002>
bas002> select count(*) from t2 where object_id=1;
  COUNT(*)
         0
bas002>Message was edited by:
Pierre Forstmann

Similar Messages

  • Uncommitted transactions after recovery?

    Will a database have uncommitted transactions after recovery?

    Do you mean Instance Recovery? or Database Recovery?
    Database Recovery will perform full rollforward/rollback. Instance Recovery will use a Fast-Start On-Demand Rollback, which means Oracle will only do transaction recovery in a similar way consistent reads are performed, this mitigates the adverse effect of recovery process.
    Even though uncommitted transactions are present at start time, this doesn't mean you can resume dead transactions. Information will be completely rolled back by background processes afterwards.
    Ref.
    http://www.oracle.com/technology/deploy/availability/pdf/fast-start.pdf

  • Undo behavior during instance recovery

    i'm confused about 2 concepts in applying undoin the case of instance failure
    1.the common concepts of instance recovery which states :
    a) when instance crash, oracle automatically applies all redo in the redo file to roll the db forward to the last scn be4 the failure
    b) & redo data also contains the undo data, it also undo the uncommitted changes from the old valuesin the undo.
    that'sok
    2.but refereing to 10g database concepts (ch17 high availability-p317 if pdf)
    url: http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14220/high_av.htm#sthref2531
    it says:
    •With fast-start fault recovery, the Oracle database is opened for access by applications without having to wait for the undo, or rollback, phase to be completed.
    •The rollback of data locked by uncommitted transaction is done dynamically on an as needed basis.
    •If the user process encounters a row locked by a crashed transaction, then it just rolls back that row.
    •The impact of rolling back the rows requested by a query is negligible.
    •Fast-start fault recovery is very fast, because undo data is stored in the database, not in the log files.
    •Undoing a block does not require an expensive sequential scan of a log file.
    so which situation is applicable in case of instance recovery
    & do the undo behvior stated above in case of fast start fault recovery is an option or that's the default
    thnx alot

    Hi,
    Whatever changes are made to the database, are recorded in redo log buffer cache sequentially and then shifted to redo log files. Suppose redo logs recorded following changes in the database in following sequence.
    insert a row
    update a row
    commit;
    delete a row
    Now Instance crashes before these changes were written into the database (data remains in buffer cache until checkpoint)
    Now during instance recovery, data which was still in buffer cache and not written to the data files, will be applied in same sequence. All undo data for update/delete is in redo log files and will be applied in the same sequence.
    Salman

  • Instance recovery mechanism

    Hi,
    I try to understand the mechanism of instance recovery of Oracle 8i/ Oracle 9i database and I am little bit confused, since I got some opposed information about that.
    Please find below my questions:
    1. Is SCN number assigned to all transactions or ONLY to committed transactions?
    2. Is the checkpoint number the highest SCN number after an checkpoint event?
    3. After checkpoint event, dirty buffer are written to database files by DBWR. Does DBWR write only dirty buffers of committet transactions or does DBWR write out all dirty buffers in the DB buffer cache?
    Thanks in advance for your answers!
    regards
    Peter

    1. The system change number (SCN) is updated whenever there is a commit.
    2. If you are talking about the checkpoint_change# in the v$database table, yes
    3. All dirty buffers are written to disk. Data files can and do contain uncommitted data
    Justin
    Distributed Database Consulting, Inc.
    http://www.ddbcinc.com/askDDBC

  • Undo tablespace  and instance recovery

    Is UNDO tablespace is mandatory during instance recovery. ?
    Suppose my undo tablespace has some active transaction and instance crashes making undo tablespace inaccessible.
    Will database search for that undo tablespace during startup or I can simply create a new one and set as new undo tablespace ?
    With Regards
    Amt

    Hi,
    >>I am actually confused
    Keep in mind that If an Oracle instance crashes, any changes that are made in the SGA are not written to the data files. When you restart the instance, the SMON background process automatically performs instance recovery by performing the following tasks:
    • Rolling forward changes that are made in the online redo log files but not in the data files. Since all the committed transactions are written to the online redo log files, these are successfully recovered as result of rolling forward changes from the online redo log files to the data files.
    • Opening the database. After the database is opened, users can log on and access any data that is not locked by un-recovered transaction.
    • Rolling back all the uncommitted transactions.
    In resume, during database recovery, undo records are used to undo any uncommitted changes applied from the redo log to the datafiles.
    But if your UNDO tablespace crashed, then you will need recover it, using steps like
    1) shutdown abort (If the instance yet is up)
    2) cp -a /backup/undo01.dbf /u01/oradata (restore the latest recent backup file)
    3) startup mount
    4) recover database or recover datafile '/u01/oradata/undo01.dbf'
    5) alter database open;
    In some cases, re-create it, also resolve the problem:
    http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:5669213349582
    Missing UNDO tablespace in restore backup
    >>I checked in test setup and it is actually waiting for missing UNDO tablespace.
    Which exactly test you are doing?
    Cheers

  • Purpose of ONLINE REDO LOG FILES - Media or Instance recovery or BOTH ?

    Hi
    Currently studying this topic for the 1z0-031 exam and am a little confused.
    my books (from instructor led class) say
    -redo logs are a mean to provide redo transactions in the event of a DATABASE recovery
    -redo log buffer gets flushed to redo log files to provide a recovery mechanism in case of MEDIA FAILURE
    Then it says
    -Online redo log files are used in a situation such as an INSTANCE FAILURE to recover uncommitted data which has not yet been written to the data files
    - online redo log files are used for RECOVERY only.
    Am i misunderstanding? Or are redo log files for both MEDIA and INSTANCE recovery? Or just INSTANCE ?
    confused....
    Amanjit

    Online Redo Log Files are used in a sense for both Media and Instance Recovery. If your database is in NoArchive Mode then you will only be able to use the Redo Log Files for instance recover. But if you are running in Archive Log Mode then Redo Log Files are archived and will allow you to recover from media failure.

  • Oracle Concepts: Clarity required on Instance Recovery

    One of my colleague was discussing instance recovery with me.
    We discussed about checkpoint position, instance recovery phases (rolling forward & rolling back ), then he asked me whats the point of rolling forward (applying redo logs) and then rolling back (applying undo blocks), why not applying only committed transactions?
    I told him that this happens because:
    1) roll forward to recreate the scenario just before when Instance crashed
    2) roll forward/roll back is the fastest way to recover
    I am not sure from where I got this learning, may be some blog or article (probably not from Oracle Docs), but is it correct?
    Regards,
    Ankit Rathi

    OnB wrote:
    The 2nd point is completely wrong!Let me elaborate the context of 2nd point, it was mentioned in context of applying only committed transactions during recovery. As all the change vectors go in the redo log files, had there been any mechanism to identify only committed transactions, it would have taken more time (its really hypothetical as there is no mechanism exists, right?) by that mechanism to identify committted transactions (from redo logs) than simply rolling forward and rolling back.There is no context in that point, it's wrong , plain and simple!
    There is a mechanism to identify committed transactions and that's called commit . But when you are doing recovery, you are not recovering just the committed transactions but you are recreating the entire scene before the crash which means, you would be required to apply both the uncommitted and committed work/change vectors. Going by your logic, if Oracle would start searching for the committed transactions, it would have many issues. One, time taken would be more higher. Two, there may be an instance that the commit was issued but before the commit complete message could reach the user, instance got terminated so how about those blocks which may be now in data file and have got an active transaction status and are unsure whether they are committed or not. And last, the way LGWR writes is just to keep on pushing change vectors to the redo stream in the order of the SCN. So for doing a recovery, you would need to reapply all of that changed data in that same SCN ordering.
    The meaning of instance recovery is that you are not having a physical file crashed or deleted but there was a memory loss and few buffers were left out from being written to the data files and now, data files , control file and log files are not in synch.
    The second point, where you are saying its the fastest, is wrong because even for the instance recovery , it can take a very long time and it would depend on how much work was left over before the instance was crashed. Roll Forward is the way to bring the data files in synch with the redo log files and the control files. So if the data files were on Checkpoint Number 100 and the control files and redo log files recorded the number as 120, the missing 20 numbers gap would be reentered in the data files because only then, the database would be opened. Now, your friend's question that why not only committed transaction because you never say a transaction is only done when there is a commit. Whenever any DML is encountered , it's going to cause a transaction. And you do want that missing work to be recreated to ensure that if there was a commit issued before the instance was crashed , next time, Oracle would ensure that work is there and if not , it would be rolled back. And most importantly, in the redo log files all the change vectors go, not just for the committed transactions .This is fine, same understanding here.
    Bring in your own thoughts now that how much you understood from this explanation before I start to get into more technical terms.I would like to know your view about the 1st point. Suppose, something went wrong (in terms of transactions) due to which instance crashed, if it rolls forward (as it happens automatically) during next start-up, will it crash again?
    It would be rolled back in the case of the instance (next) startup. If all what you are doing is plain DML's they won't crash the instance as long as you haven't encountered any bug in the case of which, next time also the instance may crash.
    Aman....

  • Instance recovery

    SMON process perform instance recovery from online redo log files.
    does this means that data in undo segment, is not available at next instance startup, is it only available in memory?
    if undo data is available in undo tablespace, why redo log files are used to perform instance recovery?

    Tell me did you try find the answer or explanation in documentation first? I don't think so.
    Oracle is one of best documented database (IMHO) and there are still people who are omitting this good documentation (honestly I don't understand why they do that).
    Now back to your question.
    During instance recovery there are two phases:
    rollforward phase (cache recovery) - applying informations from redo logs
    rollback phase (transaction recovery) - rollback all uncommited transactions. This phase uses undo segments (if undo management = auto) or roll back segments (if undo management = manual).
    Maybe you should try read more documentation rather than books with lack explanation.

  • Instance recovery by SMON

    Hi,
    are you agree with the followings :
    Your database is running in the ARCHIVELOG mode. After an instance crash, you start up the database by issuing the STARTUP
    command. Instance recovery is initiated by the SMON background process.
    The information used for instance recovery will be derived from the control file.
    The uncommitted changes are rolled back using information in the undo segments.
    The committed and uncommitted changes stored in the online redo log are applied to the
    affected data blocks.Many thanks.

    Oracle instance recovery. I am remebering, one day i was talking with one of my the best and great oracle expert friend and i asked him; "Suppose you have got a chance to ask one question from OCM; what will you ask? He said; i will ask him explain how and when oracle perfrom instance recovery". So you can judge what is instance recovery and how much lengthy is this topic. But if i have to explain then first i will collect some notes from forum and google and the text will be as follow :
    1. The recovery is triggered by smon comparing thre control files and data file headers. If the stop scn of the datafile doesn't match with the checkpoint scn of control file, recovery is triggered(hope I remember correctly). After that recovery starts. There are changes in it from 9i but don't think its neded here. Read on the docs!
    Source:Re: instance recovery in oracle 9i
    Writer:Aman....
    Please read replies by Kamran and Pavan in the above thread.
    2. There is no Instance Recovery at the STARTUP and MOUNT phases. Instance Recovery is at the OPEN phase.
    Source:how oracle will come to know weather it is Instance recovery or Media Recovery
    Writer:Hemant K Chitale
    3. Re: crash recovery/ instance recovery
    Writer:Eduardo Legatti
    etc. etc.
    I mean if i wish to write a note on instance recovery i will collect some good and clear replies by forum experts (as i showed example above) and then will shape-up in my language and then; i will post that text in the forum; so that necessary correction too can be performed (if required).
    Regards
    Girish Sharma

  • Crash recovery/ instance recovery

    Hi,
    How do oracle identifies crash recovery/ instance recovery
    is required?
    Regards,
    Mathew

    Hi,
    >>But how do oracle identifies dabase is abnormally down and crash recovery is required?
    I think that the checkpoint information that is desynchronized in redo log files and datafiles. It is necessary understand what is a checkpoint and what the CKPT process do. A checkpoint is a moment in time when all the changes (dirty blocks) made in the database buffer cache are made to the data files. The checkpoint is performed by the CKPT process and it creates an entry in the control file to identify the point in the online redo log file from where the instance recovery should begin in case of an instance failure. One of the ways a checkpoint is initiated is by the data block writer (DBWR) process. The DBWR process initiates a checkpoint by writing all modified data blocks in the data buffers (dirty buffers) to the data files. After a checkpoint is performed, all committed transactions are written to the data files. If the instance were to crash at this point, only new transactions that occurred after this checkpoint would need to be applied to the database to enable a complete recovery. Therefore, the checkpoint process determines which transactions from the redo logs need to be applied to the database in the event of a failure and subsequent recovery.
    Cheers

  • Trail record size & check frecuency for end of uncommitted transactions

    Hi, everyone,
    Does anyone know if the trail record size can be changed from its default value of 4K?
    What about how long the data pump process delays before searching for more data to proccess in its source trail while it waits for the end of a uncommitted transaction (which is 1 second)?

    Thank you for your answer, MikeN
    The delay I'm referring to cannot be set with EofDelay or EofDelayCSecs: these parameters establish how much time the Data Pump process sleeps when it has nothing new in its source trail. The delay that bothers me seems to happen when the Data Pump has nothing new in its source trail but it is in the middle of an open transaction processing.
    I think is better explained with an example (which I think explains the goal of changing the record size too):
    This is an excerpt for the Extract process trace:
    *09:51:59.653622 write(20, "G\1\0\307H\0\0<E\4\0A\0F\5\377\2\361\361\317\21\232\265\300\0\0\0\0\0)h\20"..., 4096) = 4096* <----- Extract writes down the first 4K record of the transaction
    09:51:59.653690 time(NULL) = 1349769119
    09:51:59.653726 time(NULL) = 1349769119
    09:51:59.653763 time(NULL) = 1349769119
    09:51:59.653803 time(NULL) = 1349769119
    09:51:59.653838 time(NULL) = 1349769119
    09:51:59.653877 time(NULL) = 1349769119
    09:51:59.653913 time(NULL) = 1349769119
    09:51:59.653948 time(NULL) = 1349769119
    09:51:59.653987 time(NULL) = 1349769119
    09:51:59.654024 time(NULL) = 1349769119
    09:51:59.654058 time(NULL) = 1349769119
    09:51:59.654097 time(NULL) = 1349769119
    09:51:59.654140 time(NULL) = 1349769119
    09:51:59.654174 gettimeofday({1349769119, 654182}, NULL) = 0
    09:51:59.654207 clock_gettime(CLOCK_REALTIME, {1349769119, 654216293}) = 0
    09:51:59.654234 futex(0x9b62584, FUTEX_WAIT_PRIVATE, 957, {0, 999965707}) = 0
    09:51:59.751502 futex(0x9b62568, FUTEX_WAKE_PRIVATE, 1) = 0
    09:51:59.751554 llseek(19, 2722304, [2722304], SEEKSET) = 0
    09:51:59.751608 futex(0x9b62534, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x9b62530, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1
    09:51:59.751682 nanosleep({0, 0}, NULL) = 0
    *09:52:00.162689 write(20, "\0D\0\0O\0\0\0\30\0\0\0\0240000100050134977631"..., 2374) = 2374* <----- Extract writes down the remaining data for the transaction
    And this is an excerpt of the corresponding Data Pump process trace:
    09:51:59.653398 read(11, "F\0\4/0\0\1\3210\0\0\10GG\r\nTL\n\r1\0\0\2\0\0032\0\0\4 \0"..., 1048576) = 7604
    09:51:59.653472 stat64("/stella_dat/ggate/tlstella/tl000195", 0xbfca2a0c) = -1 ENOENT (No such file or directory)
    09:51:59.653543 nanosleep({0, 0}, NULL) = 0
    09:51:59.653651 llseek(11, 0, [0], SEEKSET) = 0
    *09:51:59.653543 nanosleep({0, 0}, NULL) = 0* <---- This is EOFDELAY: it's set to 0
    09:51:59.653651 llseek(11, 0, [0], SEEKSET) = 0
    *09:51:59.653709 read(11, "F\0\4/0\0\1\3210\0\0\10GG\r\nTL\n\r1\0\0\2\0\0032\0\0\4 \0"..., 1048576) = 11700* <----- Data Pump detects a new record in the source trail
    09:51:59.653767 read(11, "", 1048576) = 0
    09:51:59.653840 time(NULL) = 1349769119
    09:51:59.653910 time(NULL) = 1349769119
    09:51:59.653959 time(NULL) = 1349769119
    09:51:59.654014 time(NULL) = 1349769119
    09:51:59.654067 time(NULL) = 1349769119
    09:51:59.654123 time(NULL) = 1349769119
    09:51:59.654181 time(NULL) = 1349769119
    09:51:59.654232 time(NULL) = 1349769119
    09:51:59.654274 time(NULL) = 1349769119
    09:51:59.654312 time(NULL) = 1349769119
    09:51:59.654351 time(NULL) = 1349769119
    09:51:59.654389 time(NULL) = 1349769119
    09:51:59.654428 time(NULL) = 1349769119
    09:51:59.654467 time(NULL) = 1349769119
    09:51:59.654505 time(NULL) = 1349769119
    09:51:59.654543 time(NULL) = 1349769119
    09:51:59.654582 time(NULL) = 1349769119
    09:51:59.654620 time(NULL) = 1349769119
    09:51:59.654657 time(NULL) = 1349769119
    09:51:59.654695 time(NULL) = 1349769119
    09:51:59.654733 time(NULL) = 1349769119
    09:51:59.654771 time(NULL) = 1349769119
    09:51:59.654809 time(NULL) = 1349769119
    09:51:59.654844 read(11, "", 1048576) = 0
    *09:51:59.654881 nanosleep({1, 0}, NULL) = 0* <----- This is the 1 second delay that I want to get rid of
    *09:52:00.655079 read(11, "\0D\0\0O\0\0\0\30\0\0\0\0240000100050134977631"..., 1048576) = 2374* <----- Data Pump reads the second record of the transaction

  • How to query uncommited transactions

    Hi Does anyone know how to query Oracle database from SQL*Plus to view uncommitted transactions?
    Thanks

    I noticed after I posted that I had used a package I found on the web called list that includes several useful functions. So in case someone wants it, here are the package and body:
    ***PACKAGE***
    CREATE OR REPLACE PACKAGE list AUTHID CURRENT_USER IS
    -- All of these functions and procedures have the following parameters:
    -- list_in - A delimited list to be parsed.
    -- delimiter - The delimiter to be used for parsing the list. Defaults
    -- to a comma.
    -- null_item - What to do with null items in the list. A null item is created
    -- by consecutive occurances of the delimiter. Valid values are
    -- 'KEEP' to allow items in the list to be null, or 'SKIP' to ignore
    -- null items, ie. treat consecutive occurances of delimiters as a
    -- single delimiter. The default is 'KEEP'.
    -- delimiter_use - How the delimiter is to be interpreted. Valid values are
    -- 'ANY' to treat the entire delimiter string as a single occurance
    -- of a delimiter which must be matched exactly, or 'ANY' to treat
    -- the delimiter string as a set of single character delimiters, any
    -- of which is a delimiter. The default is 'ANY'.
    -- Return the first item in a list.
    FUNCTION head(
    list_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') RETURN VARCHAR2;
    PRAGMA RESTRICT_REFERENCES (head,WNDS,WNPS);
    -- Return the remainder of a list after the first item and its delimiter.
    FUNCTION tail(
    list_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') RETURN VARCHAR2;
    PRAGMA RESTRICT_REFERENCES (tail,WNDS,WNPS);
    -- Return the nth item in a list.
    -- The parameter, item_num, denotes which item to return.
    FUNCTION item(
    list_in IN VARCHAR2,
    item_num IN INTEGER DEFAULT 1,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') RETURN VARCHAR2;
    PRAGMA RESTRICT_REFERENCES (item,WNDS);
    -- Append an item to a list and return the new list.
    -- The parameter, item_in, contains the new item to append.
    FUNCTION append_item(
    list_in IN VARCHAR2,
    item_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',') RETURN VARCHAR2;
    PRAGMA RESTRICT_REFERENCES (append_item,WNDS);
    -- Return the number of items in a list.
    FUNCTION num_items(
    list_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') RETURN INTEGER;
    PRAGMA RESTRICT_REFERENCES (num_items,WNDS);
    -- Search a list for an item, and give its location in the list,
    -- or zero IF not found.
    -- The parameter, item_in, gives the item to be found in the list.
    FUNCTION in_list(
    list_in IN VARCHAR2,
    item_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') RETURN INTEGER;
    PRAGMA RESTRICT_REFERENCES (in_list,WNDS);
    -- Convert an array to a delimited list.
    -- The array to be input is a DBMS_UTILITY.uncl_array so that
    -- the LIST package is compatible with the comma_to_table and
    -- table_to_comma built ins.
    -- In this function, delimiter is always treated as a single
    -- string.
    FUNCTION array_to_list(
    array_in IN DBMS_UTILITY.UNCL_ARRAY,
    arrlen_in IN INTEGER,
    delimiter IN VARCHAR2 DEFAULT ',') RETURN VARCHAR2;
    PRAGMA RESTRICT_REFERENCES (array_to_list,WNDS,WNPS);
    -- Print a list using DBMS_OUTPUT.
    PROCEDURE print_list(
    list_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY');
    -- Convert a list to an array and return the array and its size.
    -- This is a procedure because it returns more than one value.
    -- The array to be returned is a DBMS_UTILITY.uncl_array so that
    -- the LIST package is compatible with the comma_to_table and
    -- table_to_comma built ins.
    PROCEDURE list_to_array(
    list_in IN VARCHAR2,
    arrlen OUT BINARY_INTEGER,
    array_out OUT DBMS_UTILITY.uncl_array,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY');
    -- Sort a list
    -- Null items are always skipped when sorting lists, since they would sort
    -- to the end of the list anyway. CMPFNC is the name of a function to compare
    -- two items. The default of '>' sorts in ascending order, '<' in descending order.
    -- If you write your own function to be used for sorting, it must:
    -- 1. Take two parameters of type VARCHAR2
    -- 2. Return an INTEGER
    -- 3. Return a negative number if the first item is to sort lower than
    -- the second, a zero if they are to sort as if equal, or a positive
    -- number if the first item is to sort higher than the second.
    -- 4. Be executable by the user running the sort. Normal naming rules apply.
    FUNCTION sort_list(
    list_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    cmpfnc IN VARCHAR2 DEFAULT '>',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') RETURN VARCHAR2;
    PRAGMA RESTRICT_REFERENCES (sort_list,WNDS);
    end;
    ***END PACKAGE SPEC***
    ***BEGIN BODY***
    CREATE OR REPLACE PACKAGE BODY list IS
    current_list VARCHAR2(32760) DEFAULT '';
    current_delim VARCHAR2(30) DEFAULT ',';
    TYPE list_array IS TABLE OF VARCHAR2(2000)
    INDEX BY BINARY_INTEGER;
    current_array list_array;
    current_arrlen BINARY_INTEGER DEFAULT 0;
    current_null_item VARCHAR2(4) DEFAULT '';
    current_delimiter_use VARCHAR2(3) DEFAULT '';
    -- Find the first delimiter.
    FUNCTION find_delimiter(
    list_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') RETURN BINARY_INTEGER IS
    delimiter_loc BINARY_INTEGER;
    BEGIN
    IF upper(delimiter_use) = 'ALL' THEN
    delimiter_loc := INSTR(list_in,delimiter);
    ELSIF upper(delimiter_use) = 'ANY' THEN
    delimiter_loc := INSTR(TRANSLATE(list_in,delimiter,ltrim(RPAD(' ',LENGTH(delimiter)+1,CHR(31)))),CHR(31));
    END IF;
    RETURN delimiter_loc;
    END find_delimiter;
    -- Return the first item in a list.
    FUNCTION head(
    list_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') RETURN VARCHAR2 IS
    delimiter_loc BINARY_INTEGER;
    BEGIN
    delimiter_loc := find_delimiter(list_in,delimiter,null_item,delimiter_use);
    IF delimiter_loc > 1 THEN
    RETURN SUBSTR(list_in,1,delimiter_loc-1);
    ELSIF delimiter_loc = 1 THEN
    RETURN NULL;
    ELSE
    RETURN list_in;
    END IF;
    END head;
    -- Return the remainder of a list after the first item and its delimiter.
    FUNCTION tail(
    list_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') RETURN VARCHAR2 IS
    start_ch BINARY_INTEGER;
    BEGIN
    start_ch := find_delimiter(list_in,delimiter,null_item,delimiter_use);
    IF start_ch = 0 THEN
    RETURN NULL;
    ELSE
    IF upper(delimiter_use) = 'ALL' THEN
    start_ch := start_ch + LENGTH(delimiter);
    ELSE
    start_ch := start_ch + 1;
    END IF;
    IF start_ch > LENGTH(list_in) THEN
    RETURN NULL;
    ELSE
    RETURN SUBSTR(list_in,start_ch);
    END IF;
    END IF;
    END tail;
    -- Convert a list to an array.
    PROCEDURE parse_list(
    list_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') IS
    list_to_parse VARCHAR2(32760);
    BEGIN
    IF list_in = current_list AND
    delimiter = current_delim AND
    null_item = current_null_item AND
    delimiter_use = current_delimiter_use THEN
    NULL;
    ELSE
    current_list := list_in;
    current_delim := delimiter;
    current_null_item := upper(null_item);
    current_delimiter_use := upper(delimiter_use);
    list_to_parse := list_in;
    current_arrlen := 0;
    WHILE list_to_parse IS NOT NULL LOOP
    IF current_null_item <> 'SKIP' OR
    head(list_to_parse,delimiter,null_item,delimiter_use) IS NOT NULL THEN
    current_arrlen := current_arrlen + 1;
    current_array(current_arrlen) := SUBSTR(head(list_to_parse,delimiter,null_item,delimiter_use),1,2000);
    END IF;
    list_to_parse := tail(list_to_parse, delimiter,null_item,delimiter_use);
    END LOOP;
    END IF;
    END parse_list;
    -- Convert a list to an array and return the array and its size.
    PROCEDURE list_to_array(
    list_in IN VARCHAR2,
    arrlen OUT BINARY_INTEGER,
    array_out OUT DBMS_UTILITY.uncl_array,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') IS
    BEGIN
    parse_list(list_in,delimiter,null_item,delimiter_use);
    arrlen := current_arrlen;
    FOR i IN 1..arrlen LOOP
    array_out(i) := SUBSTR(current_array(i),1,240);
    END LOOP;
    END list_to_array;
    -- Print a list using DBMS_OUTPUT.
    PROCEDURE print_list(
    list_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') IS
    BEGIN
    DBMS_OUTPUT.ENABLE(100000);
    parse_list(list_in,delimiter,null_item,delimiter_use);
    FOR i IN 1..current_arrlen LOOP
    dbms_output.put_line(SUBSTR(current_array(i),1,240));
    END LOOP;
    END print_list;
    -- Return the number of items in a list.
    FUNCTION num_items(
    list_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') RETURN INTEGER is
    BEGIN
    parse_list(list_in,delimiter,null_item,delimiter_use);
    RETURN current_arrlen;
    END num_items;
    -- Return the nth item in a list.
    FUNCTION item(
    list_in IN VARCHAR2,
    item_num IN INTEGER DEFAULT 1,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') RETURN VARCHAR2 is
    BEGIN
    parse_list(list_in,delimiter,null_item,delimiter_use);
    IF item_num NOT BETWEEN 1 AND current_arrlen THEN
    RETURN NULL;
    ELSE
    RETURN current_array(item_num);
    END IF;
    END item;
    -- Append an item to a list and return the new list.
    -- The parameter, item_in, contains the new item to append.
    FUNCTION append_item(
    list_in IN VARCHAR2,
    item_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',') RETURN VARCHAR2 IS
    BEGIN
    IF list_in IS NULL THEN
    RETURN item_in;
    ELSE
    RETURN list_in || delimiter || item_in;
    END IF;
    END append_item;
    -- Search a list for an item, and give its location in the list,
    -- or zero IF not found.
    FUNCTION in_list(
    list_in IN VARCHAR2,
    item_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    null_item IN VARCHAR2 DEFAULT 'KEEP',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') RETURN INTEGER is
    BEGIN
    parse_list(list_in,delimiter,null_item,delimiter_use);
    FOR item_num IN 1..current_arrlen LOOP
    IF current_array(item_num) = item_in THEN
    RETURN item_num;
    END IF;
    END LOOP;
    RETURN 0;
    END in_list;
    -- Convert an array to a delimited list.
    FUNCTION array_to_list(
    array_in IN DBMS_UTILITY.UNCL_ARRAY,
    arrlen_in IN INTEGER,
    delimiter IN VARCHAR2 DEFAULT ',') RETURN VARCHAR2 IS
    list_out VARCHAR2(32760):= '';
    BEGIN
    FOR item_num IN 1 .. arrlen_in LOOP
    EXIT WHEN LENGTH(list_out) +
    LENGTH(array_in(item_num)) > 32760;
    list_out := list_out||array_in(item_num);
    IF item_num < arrlen_in THEN
    list_out := list_out||delimiter;
    END IF;
    END LOOP;
    RETURN list_out;
    END array_to_list;
    -- Sort a list
    FUNCTION sort_list(
    list_in IN VARCHAR2,
    delimiter IN VARCHAR2 DEFAULT ',',
    cmpFnc IN VARCHAR2 DEFAULT '>',
    delimiter_use IN VARCHAR2 DEFAULT 'ANY') RETURN VARCHAR2 IS
    temp_array list_array;
    temp_len PLS_INTEGER := 0;
    temp_item VARCHAR2(2000);
    list_out VARCHAR2(32760);
    PROCEDURE swap (
    first_item IN OUT VARCHAR2,
    second_item IN OUT VARCHAR2) IS
    temp_item VARCHAR2(2000);
    BEGIN
    temp_item := first_item;
    first_item := second_item;
    second_item := temp_item;
    END swap;
    FUNCTION cmp (
    first_item IN VARCHAR2,
    second_item IN VARCHAR2,
    cmpfnc IN VARCHAR2 DEFAULT '=') RETURN INTEGER IS
    return_value INTEGER;
    BEGIN
    IF cmpfnc = '>' THEN
    IF first_item < second_item THEN
    return_value := -1;
    ELSIF first_item = second_item THEN
    return_value := 0;
    ELSIF first_item > second_item THEN
    return_value := 1;
    END IF;
    ELSIF cmpfnc = '<' THEN
    IF first_item > second_item THEN
    return_value := -1;
    ELSIF first_item = second_item THEN
    return_value := 0;
    ELSIF first_item < second_item THEN
    return_value := 1;
    END IF;
    ELSE
    EXECUTE IMMEDIATE 'BEGIN :I := '||cmpfnc||'(:A,:B); END;'
    USING OUT return_value, IN first_item, IN second_item;
    END IF;
    RETURN return_value;
    END cmp;
    BEGIN
    parse_list(list_in,delimiter,'SKIP',delimiter_use);
    FOR item_num IN 1..current_arrlen LOOP
    temp_item := current_array(item_num);
    FOR i IN 1..temp_len LOOP
    IF cmp(temp_array(i),temp_item,cmpfnc) > 0 THEN
    swap(temp_array(i),temp_item);
    END IF;
    END LOOP;
    temp_len := temp_len + 1;
    temp_array(temp_len) := temp_item;
    END LOOP;
    FOR item_num IN 1..temp_len LOOP
    EXIT WHEN LENGTH(list_out) +
    LENGTH(temp_array(item_num)) > 32760;
    list_out := list_out||temp_array(item_num);
    IF item_num < temp_len THEN
    list_out := list_out||delimiter;
    END IF;
    END LOOP;
    RETURN list_out;
    END sort_list;
    END;
    *** END BODY***
    Carl

  • Need Instance Recovery?

    I have a very strange situation right now:
    1) Turn on Archive log Mode
    2) Everything works fine ( both database & oracle apps)
    3) Weekly full backup successful
    4) Daily backup successful
    5) Oracle databas hangs (shutdown & startup the database, same problem)
    6) Turn off Archive log Mode
    7) delete all archive logs
    8) Everything works fine ( both database & oracle apps)
    9) Try to turn on Archive log Mode again.
    Failure: with message need to instance recovery???? How come it is? The Archive Log Mode is off and the database and oracle application works fine.
    Any ideas? Or how to fix it?
    FAN
    Message was edited by:
    user623471

    Without really knowing the time gap and transaction volumes (ie archivelog rates) at these steps, and the exact message ...... possibly speculating ....
    but I think that the most likely cause is that the ArchiveLog Destination filesystem is out of space for new archivelogs. That would cause
    a. The "hang" at step 5 {because Oracle can't archive the active/current redolog}
    b. The "hang" at startup in step 5 {because Oracle *still* cant archive ...}

  • Problem opening database after successfull recovery

    Hi All,
    Can any one please help me with below error.
    I am doing system copy from Source_SID to Target_SID taking online backup and generated offline redo log files during start of backup to end.
    We are on Windows 2003 server, DB is Oracle 10g and system is SRM 5.0. I was trying system copy backup/restore for DB and export/import for java. I have got online consistent backup along with offline redo logs of source system. Also have taken CI export.
    Here the file system directories in TARGET_SID and SOURCE_SID are different. First i have restored the online backup of Source_SID in Target_SID system (RYV). Took the trace file of Source_SID system and modified accordingly the filesystem structure directories of the TARGET SySTEM. Also renamed the TARGET_SID to SOURCE_SID.
    Now started it in nomount state with below command.
    SQL> STARTUP NOMOUNT PFILE=E:\ORACLE\RYV\102\database\initRYV.ora
    ORACLE instance started.
    Total System Global Area 2634022912 bytes
    Fixed Size                  2203184 bytes
    Variable Size            1337811408 bytes
    Database Buffers         1291845632 bytes
    Redo Buffers                2162688 bytes
    Generated the modifiled trace file script (renamed it as controlfile.sql).
    SQL>  @Controlfile.sql
    Control file created.
    SQL> alter database open;
    alter database open
    ERROR at line 1:
    ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
    SQL> alter database open resetlogs;
    alter database open resetlogs
    ERROR at line 1:
    ORA-01195: online backup of file 1 needs more recovery to be consistent
    ORA-01110: data file 1: 'K:\ORACLE\RYV\SAPDATA1\SYSTEM_1\SYSTEM.DATA1'
    Before executing the command i have places all the offline redo log files which were generated in source system during the online backup. During online backup, offline redo logs 04729 to 04732 were generated. Now i have issued below command.
    SQL> alter database recover automatic using backup controlfile until cancel;
    alter database recover automatic using backup controlfile until cancel
    ERROR at line 1:
    ORA-00279: change 112926870 generated at 09/29/2008 17:26:55 needed for thread
    1
    ORA-00289: suggestion : F:\ORACLE\RYV\ORAARCH\RYVARCHARC04733_0649429988.001
    ORA-00280: change 112926870 for thread 1 is in sequence #4733
    ORA-00278: log file 'F:\ORACLE\RYV\ORAARCH\RYVARCHARC04733_0649429988.001' no
    longer needed for this recovery
    ORA-00308: cannot open archived log
    'F:\ORACLE\RYV\ORAARCH\RYVARCHARC04733_0649429988.001'
    ORA-27041: unable to open file
    OSD-04002: unable to open file
    O/S-Error: (OS 2) The system cannot find the file specified.
    Offline Redo log files from 04729 to 04732 were applied and it was trying for 04733 which was not there. Now issued below command.
    SQL> recover cancel;
    Media recovery complete.
    Finally tried to open database with resetlogs and here i am getting problem.
    SQL> alter database open resetlogs;
    alter database open resetlogs
    ERROR at line 1:
    ORA-01092: ORACLE instance terminated. Disconnection forced
    SQL>
    Please suggest whether is there different procedure for system copy using backup/restore if file structure is different for Source_SID and Target_SID.
    Thanking you for your help.
    Regards
    Ravi

    Alert Log Details:
    Sun Oct 12 08:42:37 2008
    Starting ORACLE instance (normal)
    Sun Oct 12 08:42:37 2008
    Specified value of sga_max_size is too small, bumping to 2634022912
    LICENSE_MAX_SESSION = 0
    LICENSE_SESSIONS_WARNING = 0
    Picked latch-free SCN scheme 3
    Autotune of undo retention is turned on.
    IMODE=BR
    ILAT =10
    LICENSE_MAX_USERS = 0
    SYS auditing is disabled
    ksdpec: called for event 13740 prior to event group initialization
    Starting up ORACLE RDBMS Version: 10.2.0.1.0.
    System parameters with non-default values:
      processes                = 80
      sessions                 = 96
      event                    = 10191 trace name context forever, level 1
      sga_max_size             = 2634022912
      shared_pool_size         = 1291845632
      shared_pool_reserved_size= 127512084
      filesystemio_options     = setall
      control_files            = G:\ORACLE\RYV\ORIGLOGA\CNTRL\CNTLRRYV.DBF, F:\ORACLE\RYV\ORAARCH\CNTRL\CNTRLRYV.DBF, K:\ORACLE\RYV\SAPDATA1\CNTRL\CNTRLRYV.DBF
      control_file_record_keep_time= 30
      db_block_size            = 8192
      db_cache_size            = 1291845632
      compatible               = 10.2.0
      log_archive_dest         = F:\oracle\RYV\oraarch\RYVarch
      log_buffer               = 2097152
      log_checkpoint_interval  = 0
      db_files                 = 254
      log_checkpoints_to_alert = TRUE
      dml_locks                = 4000
      undo_management          = AUTO
      undo_tablespace          = PSAPUNDO
      undo_retention           = 43200
      recyclebin               = off
      remote_os_authent        = TRUE
      remote_login_passwordfile= EXCLUSIVE
      job_queue_processes      = 1
      background_dump_dest     = K:\ORACLE\RYV\SAPTRACE\BACKGROUND
      user_dump_dest           = K:\ORACLE\RYV\SAPTRACE\USERTRACE
      core_dump_dest           = K:\ORACLE\RYV\SAPTRACE\BACKGROUND
      optimizer_features_enable= 10.2.0.1
      sort_area_size           = 2097152
      sort_area_retained_size  = 0
      db_name                  = RYV
      open_cursors             = 800
      optimpeek_user_binds   = FALSE
      pga_aggregate_target     = 629145600
      workarea_size_policy     = AUTO
      statistics_level         = typical
    PMON started with pid=2, OS id=4600
    PSP0 started with pid=6, OS id=5228
    MMAN started with pid=10, OS id=5664
    DBW0 started with pid=14, OS id=4648
    DBW1 started with pid=18, OS id=5588
    DBW2 started with pid=22, OS id=4280
    DBW3 started with pid=26, OS id=648
    LGWR started with pid=30, OS id=4780
    CKPT started with pid=34, OS id=1348
    SMON started with pid=38, OS id=6024
    RECO started with pid=42, OS id=5208
    CJQ0 started with pid=46, OS id=1332
    MMON started with pid=50, OS id=1304
    MMNL started with pid=54, OS id=2736
    Sun Oct 12 08:42:44 2008
    CREATE CONTROLFILE REUSE SET DATABASE "RYV" RESETLOGS  ARCHIVELOG
        MAXLOGFILES 255
        MAXLOGMEMBERS 5
        MAXDATAFILES 5000
        MAXINSTANCES 50
        MAXLOGHISTORY 2629
    LOGFILE
      GROUP 1 (
        'G:\ORACLE\RYV\ORIGLOGA\LOG_G11M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGA\LOG_G11M2.DBF'
      ) SIZE 90M,
      GROUP 2 (
        'G:\ORACLE\RYV\ORIGLOGB\LOG_G12M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGB\LOG_G12M2.DBF'
      ) SIZE 90M,
      GROUP 3 (
        'G:\ORACLE\RYV\ORIGLOGA\LOG_G13M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGA\LOG_G13M2.DBF'
      ) SIZE 90M,
      GROUP 4 (
        'G:\ORACLE\RYV\ORIGLOGB\LOG_G14M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGB\LOG_G14M2.DBF'
      ) SIZE 90M,
      GROUP 5 (
        'G:\ORACLE\RYV\ORIGLOGA\LOG_G15M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGA\LOG_G15M2.DBF'
      ) SIZE 90M,
      GROUP 6 (
        'G:\ORACLE\RYV\ORIGLOGB\LOG_G16M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGB\LOG_G16M2.DBF'
      ) SIZE 90M,
      GROUP 7 (
        'G:\ORACLE\RYV\ORIGLOGA\LOG_G17M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGA\LOG_G17M2.DBF'
      ) SIZE 90M,
      GROUP 8 (
        'G:\ORACLE\RYV\ORIGLOGB\LOG_G18M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGB\LOG_G18M2.DBF'
      ) SIZE 90M
    -- STANDBY LOGFILE
    DATAFILE
      'K:\ORACLE\RYV\SAPDATA1\SYSTEM_1\SYSTEM.DATA1',
      'J:\ORACLE\RYV\SAPDATA3\UNDO_1\UNDO.DATA1',
      'K:\ORACLE\RYV\SAPDATA4\SYSAUX_1\SYSAUX.DATA1',
      'K:\ORACLE\RYV\SAPDATA1\SR3_1\SR3.DATA1',
      'K:\ORACLE\RYV\SAPDATA1\SR3_2\SR3.DATA2',
      'K:\ORACLE\RYV\SAPDATA1\SR3_3\SR3.DATA3',
      'K:\ORACLE\RYV\SAPDATA1\SR3_4\SR3.DATA4',
      'K:\ORACLE\RYV\SAPDATA1\SR3_5\SR3.DATA5',
      'K:\ORACLE\RYV\SAPDATA1\SR3_6\SR3.DATA6',
      'K:\ORACLE\RYV\SAPDATA1\SR3700_1\SR3700.DATA1',
      'K:\ORACLE\RYV\SAPDATA1\SR3700_2\SR3700.DATA2',
      'K:\ORACLE\RYV\SAPDATA1\SR3700_3\SR3700.DATA3',
      'K:\ORACLE\RYV\SAPDATA1\SR3700_4\SR3700.DATA4',
      'K:\ORACLE\RYV\SAPDATA1\SR3USR_1\SR3USR.DATA1',
      'K:\ORACLE\RYV\SAPDATA1\SR3DB_1\SR3DB.DATA1',
      'K:\ORACLE\RYV\SAPDATA1\SR3DB_2\SR3DB.DATA2',
      'K:\ORACLE\RYV\SAPDATA1\SR3DB_3\SR3DB.DATA3'
    CHARACTER SET UTF8
    Sun Oct 12 08:42:44 2008
    WARNING: Default Temporary Tablespace not specified in CREATE DATABASE command
    Default Temporary Tablespace will be necessary for a locally managed database in future release
    Setting recovery target incarnation to 1
    Sun Oct 12 08:42:45 2008
    Successful mount of redo thread 1, with mount id 157697668
    Sun Oct 12 08:42:45 2008
    Completed: CREATE CONTROLFILE REUSE SET DATABASE "RYV" RESETLOGS  ARCHIVELOG
        MAXLOGFILES 255
        MAXLOGMEMBERS 5
        MAXDATAFILES 5000
        MAXINSTANCES 50
        MAXLOGHISTORY 2629
    LOGFILE
      GROUP 1 (
        'G:\ORACLE\RYV\ORIGLOGA\LOG_G11M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGA\LOG_G11M2.DBF'
      ) SIZE 90M,
      GROUP 2 (
        'G:\ORACLE\RYV\ORIGLOGB\LOG_G12M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGB\LOG_G12M2.DBF'
      ) SIZE 90M,
      GROUP 3 (
        'G:\ORACLE\RYV\ORIGLOGA\LOG_G13M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGA\LOG_G13M2.DBF'
      ) SIZE 90M,
      GROUP 4 (
        'G:\ORACLE\RYV\ORIGLOGB\LOG_G14M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGB\LOG_G14M2.DBF'
      ) SIZE 90M,
      GROUP 5 (
        'G:\ORACLE\RYV\ORIGLOGA\LOG_G15M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGA\LOG_G15M2.DBF'
      ) SIZE 90M,
      GROUP 6 (
        'G:\ORACLE\RYV\ORIGLOGB\LOG_G16M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGB\LOG_G16M2.DBF'
      ) SIZE 90M,
      GROUP 7 (
        'G:\ORACLE\RYV\ORIGLOGA\LOG_G17M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGA\LOG_G17M2.DBF'
      ) SIZE 90M,
      GROUP 8 (
        'G:\ORACLE\RYV\ORIGLOGB\LOG_G18M1.DBF',
        'H:\ORACLE\RYV\MIRRLOGB\LOG_G18M2.DBF'
      ) SIZE 90M
    -- STANDBY LOGFILE
    DATAFILE
      'K:\ORACLE\RYV\SAPDATA1\SYSTEM_1\SYSTEM.DATA1',
      'J:\ORACLE\RYV\SAPDATA3\UNDO_1\UNDO.DATA1',
      'K:\ORACLE\RYV\SAPDATA4\SYSAUX_1\SYSAUX.DATA1',
      'K:\ORACLE\RYV\SAPDATA1\SR3_1\SR3.DATA1',
      'K:\ORACLE\RYV\SAPDATA1\SR3_2\SR3.DATA2',
      'K:\ORACLE\RYV\SAPDATA1\SR3_3\SR3.DATA3',
      'K:\ORACLE\RYV\SAPDATA1\SR3_4\SR3.DATA4',
      'K:\ORACLE\RYV\SAPDATA1\SR3_5\SR3.DATA5',
      'K:\ORACLE\RYV\SAPDATA1\SR3_6\SR3.DATA6',
      'K:\ORACLE\RYV\SAPDATA1\SR3700_1\SR3700.DATA1',
      'K:\ORACLE\RYV\SAPDATA1\SR3700_2\SR3700.DATA2',
      'K:\ORACLE\RYV\SAPDATA1\SR3700_3\SR3700.DATA3',
      'K:\ORACLE\RYV\SAPDATA1\SR3700_4\SR3700.DATA4',
      'K:\ORACLE\RYV\SAPDATA1\SR3USR_1\SR3USR.DATA1',
      'K:\ORACLE\RYV\SAPDATA1\SR3DB_1\SR3DB.DATA1',
      'K:\ORACLE\RYV\SAPDATA1\SR3DB_2\SR3DB.DATA2',
      'K:\ORACLE\RYV\SAPDATA1\SR3DB_3\SR3DB.DATA3'
    CHARACTER SET UTF8
    Sun Oct 12 08:43:43 2008
    alter database open
    Sun Oct 12 08:43:43 2008
    ORA-1589 signalled during: alter database open...
    Sun Oct 12 08:44:03 2008
    alter database open resetlogs
    Sun Oct 12 08:44:03 2008
    ORA-1195 signalled during: alter database open resetlogs...
    Sun Oct 12 08:44:42 2008
    alter database recover automatic using backup controlfile until cancel
    Sun Oct 12 08:44:42 2008
    Media Recovery Start
    parallel recovery started with 3 processes
    Sun Oct 12 08:44:43 2008
    Media Recovery Log F:\ORACLE\RYV\ORAARCH\RYVARCHARC04729_0649429988.001
    Sun Oct 12 08:44:45 2008
    Media Recovery Log F:\ORACLE\RYV\ORAARCH\RYVARCHARC04730_0649429988.001
    Sun Oct 12 08:44:46 2008
    Media Recovery Log F:\ORACLE\RYV\ORAARCH\RYVARCHARC04731_0649429988.001
    Sun Oct 12 08:44:46 2008
    Media Recovery Log F:\ORACLE\RYV\ORAARCH\RYVARCHARC04732_0649429988.001
    Sun Oct 12 08:44:46 2008
    Media Recovery Log F:\ORACLE\RYV\ORAARCH\RYVARCHARC04733_0649429988.001
    Errors with log F:\ORACLE\RYV\ORAARCH\RYVARCHARC04733_0649429988.001
    ORA-279 signalled during: alter database recover automatic using backup controlfile until cancel...
    Sun Oct 12 08:45:08 2008
    ALTER DATABASE RECOVER  cancel 
    Sun Oct 12 08:45:11 2008
    Media Recovery Canceled
    Completed: ALTER DATABASE RECOVER  cancel 
    Sun Oct 12 08:45:32 2008
    alter database open resetlogs
    Sun Oct 12 08:45:33 2008
    ARCH: Logfile 8 is wrong incarnation (0:112926871:10/10/2008 14:52:35 vs 0:1:03/15/2008 13:13:08)
    RESETLOGS after incomplete recovery UNTIL CHANGE 112926870
    Resetting resetlogs activation ID 2278245220 (0x87cb4364)
    Online log G:\ORACLE\RYV\ORIGLOGA\LOG_G11M1.DBF: Thread 1 Group 1 was previously cleared
    Online log H:\ORACLE\RYV\MIRRLOGA\LOG_G11M2.DBF: Thread 1 Group 1 was previously cleared
    Online log G:\ORACLE\RYV\ORIGLOGB\LOG_G12M1.DBF: Thread 1 Group 2 was previously cleared
    Online log H:\ORACLE\RYV\MIRRLOGB\LOG_G12M2.DBF: Thread 1 Group 2 was previously cleared
    Online log G:\ORACLE\RYV\ORIGLOGA\LOG_G13M1.DBF: Thread 1 Group 3 was previously cleared
    Online log H:\ORACLE\RYV\MIRRLOGA\LOG_G13M2.DBF: Thread 1 Group 3 was previously cleared
    Online log G:\ORACLE\RYV\ORIGLOGB\LOG_G14M1.DBF: Thread 1 Group 4 was previously cleared
    Online log H:\ORACLE\RYV\MIRRLOGB\LOG_G14M2.DBF: Thread 1 Group 4 was previously cleared
    Online log G:\ORACLE\RYV\ORIGLOGA\LOG_G15M1.DBF: Thread 1 Group 5 was previously cleared
    Online log H:\ORACLE\RYV\MIRRLOGA\LOG_G15M2.DBF: Thread 1 Group 5 was previously cleared
    Online log G:\ORACLE\RYV\ORIGLOGB\LOG_G16M1.DBF: Thread 1 Group 6 was previously cleared
    Online log H:\ORACLE\RYV\MIRRLOGB\LOG_G16M2.DBF: Thread 1 Group 6 was previously cleared
    Online log G:\ORACLE\RYV\ORIGLOGA\LOG_G17M1.DBF: Thread 1 Group 7 was previously cleared
    Online log H:\ORACLE\RYV\MIRRLOGA\LOG_G17M2.DBF: Thread 1 Group 7 was previously cleared
    Sun Oct 12 08:45:34 2008
    Setting recovery target incarnation to 2
    Sun Oct 12 08:45:34 2008
    Assigning activation ID 157697668 (0x9664684)
    LGWR: STARTING ARCH PROCESSES
    ARC0 started with pid=74, OS id=2036
    Sun Oct 12 08:45:35 2008
    ARC0: Archival started
    Sun Oct 12 08:45:35 2008
    ARC1: Archival started
    LGWR: STARTING ARCH PROCESSES COMPLETE
    Thread 1 opened at log sequence 1
      Current log# 8 seq# 1 mem# 0: G:\ORACLE\RYV\ORIGLOGB\LOG_G18M1.DBF
      Current log# 8 seq# 1 mem# 1: H:\ORACLE\RYV\MIRRLOGB\LOG_G18M2.DBF
    Sun Oct 12 08:45:35 2008
    Successful open of redo thread 1
    Sun Oct 12 08:45:35 2008
    MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
    ARC1 started with pid=3, OS id=1640
    Sun Oct 12 08:45:36 2008
    ARC0: STARTING ARCH PROCESSES
    Sun Oct 12 08:45:36 2008
    SMON: enabling cache recovery
    Sun Oct 12 08:45:36 2008
    ARC1: Becoming the 'no FAL' ARCH
    ARC1: Becoming the 'no SRL' ARCH
    Sun Oct 12 08:45:36 2008
    ARC2: Archival started
    Sun Oct 12 08:45:36 2008
    ARC0: STARTING ARCH PROCESSES COMPLETE
    ARC0: Becoming the heartbeat ARCH
    Sun Oct 12 08:45:36 2008
    Errors in file k:\oracle\ryv\saptrace\usertrace\ryv_ora_868.trc:
    ORA-00704: bootstrap process failure
    ORA-39700: database must be opened with UPGRADE option
    Sun Oct 12 08:45:36 2008
    Error 704 happened during db open, shutting down database
    USER: terminating instance due to error 704
    Sun Oct 12 08:45:36 2008
    Errors in file k:\oracle\ryv\saptrace\background\ryv_pmon_4600.trc:
    ORA-00704: bootstrap process failure
    ARC2 started with pid=4, OS id=5996
    Sun Oct 12 08:45:37 2008
    Errors in file k:\oracle\ryv\saptrace\background\ryv_reco_5208.trc:
    ORA-00704: bootstrap process failure
    Sun Oct 12 08:45:37 2008
    Errors in file k:\oracle\ryv\saptrace\background\ryv_ckpt_1348.trc:
    ORA-00704: bootstrap process failure
    Sun Oct 12 08:45:37 2008
    Errors in file k:\oracle\ryv\saptrace\background\ryv_lgwr_4780.trc:
    ORA-00704: bootstrap process failure
    Sun Oct 12 08:45:40 2008
    Errors in file k:\oracle\ryv\saptrace\background\ryv_dbw2_4280.trc:
    ORA-00704: bootstrap process failure
    Sun Oct 12 08:45:40 2008
    Errors in file k:\oracle\ryv\saptrace\background\ryv_dbw3_648.trc:
    ORA-00704: bootstrap process failure
    Sun Oct 12 08:45:40 2008
    Errors in file k:\oracle\ryv\saptrace\background\ryv_dbw0_4648.trc:
    ORA-00704: bootstrap process failure
    Sun Oct 12 08:45:40 2008
    Errors in file k:\oracle\ryv\saptrace\background\ryv_dbw1_5588.trc:
    ORA-00704: bootstrap process failure
    Sun Oct 12 08:45:40 2008
    Errors in file k:\oracle\ryv\saptrace\background\ryv_psp0_5228.trc:
    ORA-00704: bootstrap process failure
    Sun Oct 12 08:45:41 2008
    Errors in file k:\oracle\ryv\saptrace\background\ryv_mman_5664.trc:
    ORA-00704: bootstrap process failure
    Instance terminated by USER, pid = 868
    ORA-1092 signalled during: alter database open resetlogs...

  • Number of uncommited transactions to a specific table

    Hello!
    Is there a way to get the number of uncommited transactions to a specific table?
    Best regards
    Dannie

    Hello!
    The problem is that I am doing a merge from an external table, and I want to know how many rows were actually merged into the table. Before i had to merge data into the table, I could simply do a select (*) from the external table to figure out how many rows were inserted, but I dont know how to get it from a merge. It does not work to select(*) on the target table before and after the insert, as its is VERY big.
    Maybe there is a way to get a merge to tell you how many rows were affected by a merge?
    Suggestions?
    Best regards
    Dannie

Maybe you are looking for

  • How can I force Mail to ask me to choose outgoing server each time I send an email?

    I work for 3 different companies and I have 3 different mail accounts in my Mail for each of them. It happens to me very often that my email is sent from the wrong account, causing me a lot of trouble. This is of course my human mistake, but I want t

  • Please send me Extraction Methadalogy in bw7.0

    Dear Friends,    Please send  me Extraction method(from r/3 to bw)in H.R MODULE    VERSION:BIW/BW 7.0  this is very urgent    Good reply will get good points   Regards,   SridharMenda

  • Need help whit my homework.

    The text is on swedish so i hope some1 swedish post the reply. "Ett PL/SQL-block ska beräkna den totala kompensationen för ett år utgående från årslön och bonus. Använd DEFINE-kommandot i iSQL *Plus för att deklarera ersättningsvariabler för årslön o

  • Apple id changed settings

    I had a previous apple id that I used on an ipod, but all the security questions have been changed (perhaps when my young daughter had a go at updating it herself and now has no memory of any questions...).  Is there any way either: i) to cancel my o

  • How to edit the WSDL

    I noticed a few limitations of an automatically generated web service under WLS 7.0, and I am wondering if there is a way to manually edit files to overcome these limitations: - the parameter names have no meaningful names, such as string0, string1,