Undo Recovery Clean Shutdown 1

Embed Size (px)

Citation preview

  • 7/26/2019 Undo Recovery Clean Shutdown 1

    1/8

    .

    1) ..................................................................... 2

    2) .......................................................................... 2

    3) , . .............................................. 3

    4) . ........................................................ 4

    5) ........................................... 5

    ) . ........................................................................................................................

    ) , . .......................................

    ) . .............................................................................................

    ) . .....................................................................................................

  • 7/26/2019 Undo Recovery Clean Shutdown 1

    2/8

  • 7/26/2019 Undo Recovery Clean Shutdown 1

    3/8

    .

    ) ,

    .

    SQL> startup

    ORACLE instance started.

    Total System Global Area 368263168 bytes

    Fixed Size 1374668 bytes

    Variable Size 209716788 bytes

    Database Buffers 150994944 bytes

    Redo Buffers 6176768 bytes

    Database mounted.

    ORA-01157: cannot identify/lock data file 3 - see DBWR trace file

    ORA-01110: data file 3: 'C:\ORACLE\ORADATA\D041\UNDOTBS01.DBF'

    SQL> select NAME,OPEN_MODE,LOG_MODE from v$database;

    NAME OPEN_MODE LOG_MODE---------- -------------------- ------------

    D041 MOUNTED NOARCHIVELOG

    Whenever DB shuts cleanly, CHECKPOINT_CHANGE# and LAST_CHANGE# must always be sync else they

    need to do crash/media recovery, as below

    SQL> set line 200

    col LAST_TIME for a25

    col name for a45

    select NAME,STATUS,CHECKPOINT_CHANGE#,LAST_CHANGE#,to_char(LAST_TIME,'DD-MON-YYYY HH24:MI:SS')

    LAST_TIME from v$datafile;

    NAME STATUS CHECKPOINT_CHANGE# LAST_CHANGE# LAST_TIME

    --------------------------------------------- ------- ------------------ ------------ ---------------------

    C:\ORACLE\ORADATA\D041\SYSTEM01.DBF SYSTEM 1080041 1080041 29-DEC-2013 10:58:30

    C:\ORACLE\ORADATA\D041\SYSAUX01.DBF ONLINE 1080041 1080041 29-DEC-2013 10:58:30

    C:\ORACLE\ORADATA\D041\UNDOTBS01.DBF ONLINE 1080041 1080041 29-DEC-2013 10:58:30

    C:\ORACLE\ORADATA\D041\USERS01.DBF ONLINE 1080041 1080041 29-DEC-2013 10:58:30

    C:\ORACLE\ORADATA\D041\EXAMPLE01.DBF ONLINE 1080041 1080041 29-DEC-2013 10:58:30

    SQL> recover database;

    ORA-00283: recovery session canceled due to errors

    ORA-01110: data file 3: 'C:\ORACLE\ORADATA\D041\UNDOTBS01.DBF'

    ORA-01157: cannot identify/lock data file 3 - see DBWR trace file

    ORA-01110: data file 3: 'C:\ORACLE\ORADATA\D041\UNDOTBS01.DBF'

    SQL> set line 200

    col error for a20

    select * from v$recover_file;

    FILE# ONLINE ONLINE_ ERROR CHANGE# TIME

    --------- ------- ------- -------------------- ---------- ---------

    3 ONLINE ONLINE FILE NOT FOUND 0

  • 7/26/2019 Undo Recovery Clean Shutdown 1

    4/8

    .

    )

    .

    SQL> alter database datafile 3 offline; (Use this for Archive Log Mode)

    alter database datafile 3 offline

    *

    ERROR at line 1:

    ORA-01145: offline immediate disallowed unless media recovery enabled

    http://docs.oracle.com/cd/B28359_01/server.111/b28310/dfiles004.htm#ADMIN11429

    SQL> alter database datafile 3 offline for drop; (Use this for NOArchive Log Mode)

    Database altered.

    SQL> alter database open;

    Database altered.

    SQL> select name,open_mode from v$database;

    NAME OPEN_MODE

    --------------- --------------------

    D041 READ WRITE

    SQL> select * from v$recover_file;

    FILE# ONLINE ONLINE_ ERROR CHANGE# TIME

    ---------- ------- ------- -------------------- ---------- ---------

    3 OFFLINE OFFLINE FILE NOT FOUND 0

    SQL> col name for a45

    set line 200

    select name,status from v$datafile;

    NAME STATUS

    ------------------------------------------------------------ -------

    C:\ORACLE\ORADATA\D041\SYSTEM01.DBF SYSTEM

    C:\ORACLE\ORADATA\D041\SYSAUX01.DBF ONLINE

    C:\ORACLE\ORADATA\D041\UNDOTBS01.DBF OFFLINE

    C:\ORACLE\ORADATA\D041\USERS01.DBF ONLINE

    C:\ORACLE\ORADATA\D041\EXAMPLE01.DBF ONLINE

    SQL> drop tablespace undotbs1 including contents and datafiles;

    drop tablespace undotbs1 including contents and datafiles

    *

    ERROR at line 1:

    ORA-30013: undo tablespace 'UNDOTBS1' is currently in use

    On checking parameter undo_management found to beAUTO as below, so it is not all

    allowing to Drop.

    SQL> show parameter undo

    NAME TYPE VALUE

    ------------------------------------ -------------------------------- -------------

    undo_management string AUTO

  • 7/26/2019 Undo Recovery Clean Shutdown 1

    5/8

    .

    undo_tablespace string UNDOTBS1

    SQL> show parameter rollback_segments

    NAME TYPE VALUE

    ------------------------------------ -------------------------------- -------------

    rollback_segments string

    )

    SQL> alter system set undo_management='MANUAL'scope=spfile;

    System altered.

    SQL> alter system set rollback_segments=SYSTEMscope=spfile;

    System altered.

    SQL> shut immediate;

    Database closed.

    Database dismounted.

    ORACLE instance shut down.

    SQL> Startup

    ORACLE instance started.

    Total System Global Area 368263168 bytes

    Fixed Size 1374668 bytes

    Variable Size 209716788 bytes

    Database Buffers 150994944 bytes

    Redo Buffers 6176768 bytes

    Database mounted.

    Database opened.

    SQL> select * from v$recover_file;

    FILE# ONLINE ONLINE_ ERROR CHANGE# TIME

    ---------- ------- ------- --------------- ---------- ---------

    3 OFFLINE OFFLINE FILE NOT FOUND 0

    SQL> select name,status from v$datafile;

    NAME STATUS

    --------------------------------------------- -------

    C:\ORACLE\ORADATA\D041\SYSTEM01.DBF SYSTEM

    C:\ORACLE\ORADATA\D041\SYSAUX01.DBF ONLINE

    C:\ORACLE\ORADATA\D041\UNDOTBS01.DBF OFFLINE

    C:\ORACLE\ORADATA\D041\USERS01.DBF ONLINE

    C:\ORACLE\ORADATA\D041\EXAMPLE01.DBF ONLINE

    SQL> SELECT SEGMENT_NAME, XACTS ACTIVE_TX, V.STATUS

    FROM V$ROLLSTAT V, DBA_ROLLBACK_SEGS

    WHERE TABLESPACE_NAME = 'UNDOTBS1' AND SEGMENT_ID = USN;

    no rows selected

  • 7/26/2019 Undo Recovery Clean Shutdown 1

    6/8

    .

    ) .

    SQL> droptablespace undotbs1 including contents and datafiles;

    Tablespace dropped.

    SQL> select * from v$rollname ;

    USN NAME

    ---------- ---------------------------------------------

    0 SYSTEM

    SQL> select SEGMENT_NAME,SEGMENT_ID,status,tablespace_name from dba_rollback_segs ;

    SEGMENT_NAME SEGMENT_ID STATUS TABLESPACE_NAME

    ------------------------------ ---------- ---------------- ------------------------

    SYSTEM 0 ONLINE SYSTEM

    ) ,

    .

    SQL> select * from v$tablespace;

    TS# NAME INC BIG FLA ENC

    ---------- --------------------------------------------- --- --- --- ---

    0 SYSTEM YES NO YES

    1 SYSAUX YES NO YES

    4 USERS YES NO YES

    3 TEMP NO NO YES

    6 EXAMPLE YES NO YES

    SQL> create undo tablespace UNDOTBS1 datafile

    'C:\ORACLE\ORADATA\D041\UNDOTBS01.DBF' size 20M reuse;

    Tablespace created.

    SQL> Alter System set undo_management=AUTO scope=spfile;

    System altered.

    SQL> Alter System Reset rollback_segments;

    System altered.

    SQL> show parameter undo

    NAME TYPE VALUE

    ------------------- ---------- -------------

    undo_management string MANUAL

    undo_retention integer 900

    undo_tablespace string UNDOTBS1

    SQL> shut immediate;

    Database closed.

    Database dismounted.

  • 7/26/2019 Undo Recovery Clean Shutdown 1

    7/8

    .

    ORACLE instance shut down.

    SQL> startup

    ORACLE instance started.

    Total System Global Area 368263168 bytes

    Fixed Size 1374668 bytesVariable Size 209716788 bytes

    Database Buffers 150994944 bytes

    Redo Buffers 6176768 bytes

    Database mounted.

    Database opened.

    )

    SQL> show parameter rollback_segments

    NAME TYPE VALUE

    ------------------------------------ -------------------------------- ------------

    rollback_segments string

    SQL> show parameter undo

    NAME TYPE VALUE

    ------------------------------------ -------------------------------- ------------

    undo_management string AUTO

    undo_retention integer 900

    undo_tablespace string UNDOTBS1

    SQL> select SEGMENT_NAME,SEGMENT_ID,status,tablespace_name from dba_rollback_segs ;

    SEGMENT_NAME SEGMENT_ID STATUS TABLESPACE_NAME

    ------------------------------ ---------- ---------------- ------------------------

    SYSTEM 0 ONLINE SYSTEM

    _SYSSMU20_2357329706$ 20 ONLINE UNDOTBS1

    _SYSSMU19_3758938093$ 19 ONLINE UNDOTBS1

    _SYSSMU18_3208537726$ 18 ONLINE UNDOTBS1

    _SYSSMU17_4050930344$ 17 ONLINE UNDOTBS1

    _SYSSMU16_4130629382$ 16 ONLINE UNDOTBS1

    _SYSSMU15_282708105$ 15 ONLINE UNDOTBS1

    _SYSSMU14_222891688$ 14 ONLINE UNDOTBS1

    _SYSSMU13_2419240782$ 13 ONLINE UNDOTBS1

    _SYSSMU12_1069090612$ 12 ONLINE UNDOTBS1

    _SYSSMU11_2414251578$ 11 ONLINE UNDOTBS1

    11 rows selected.

    SQL> SELECT SEGMENT_NAME, XACTS ACTIVE_TX, V.STATUS

    FROM V$ROLLSTAT V, DBA_ROLLBACK_SEGS

    WHERE TABLESPACE_NAME = 'UNDOTBS1' AND SEGMENT_ID = USN;

    SEGMENT_NAME ACTIVE_TX STATUS

    ------------------------------ ---------- ---------

    _SYSSMU11_2414251578$ 0 ONLINE

    _SYSSMU12_1069090612$ 0 ONLINE

    _SYSSMU13_2419240782$ 0 ONLINE

    _SYSSMU14_222891688$ 0 ONLINE_SYSSMU15_282708105$ 0 ONLINE

  • 7/26/2019 Undo Recovery Clean Shutdown 1

    8/8

    .

    _SYSSMU16_4130629382$ 0 ONLINE

    _SYSSMU17_4050930344$ 0 ONLINE

    _SYSSMU18_3208537726$ 0 ONLINE

    _SYSSMU19_3758938093$ 0 ONLINE

    _SYSSMU20_2357329706$ 0 ONLINE

    10 rows selected.

    ) .

    SQL> conn scott/tiger

    Connected.

    SQL> set line 200

    select * from emp;

    EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO

    ---------- ---------- --------- ---------- --------- ---------- ---------- ----------

    7369 SMITH CLERK 7902 17-DEC-80 800 20

    7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30

    7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30

    7566 JONES MANAGER 7839 02-APR-81 2975 20

    7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30

    7698 BLAKE MANAGER 7839 01-MAY-81 2850 30

    7782 CLARK MANAGER 7839 09-JUN-81 2450 10

    7788 SCOTT ANALYST 7566 19-APR-87 3000 20

    7839 KING PRESIDENT 17-NOV-81 5000 10

    7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30

    7876 ADAMS CLERK 7788 23-MAY-87 1100 20

    7900 JAMES CLERK 7698 03-DEC-81 950 30

    7902 FORD ANALYST 7566 03-DEC-81 3000 20

    7934 MILLER CLERK 7782 23-JAN-82 1300 10

    14 rows selected.

    SQL> col name for a45

    select name,status from v$datafile;

    NAME STATUS

    --------------------------------------------- -------

    C:\ORACLE\ORADATA\D041\SYSTEM01.DBF SYSTEM

    C:\ORACLE\ORADATA\D041\SYSAUX01.DBF ONLINE

    C:\ORACLE\ORADATA\D041\UNDOTBS01.DBF ONLINE

    C:\ORACLE\ORADATA\D041\USERS01.DBF ONLINE

    C:\ORACLE\ORADATA\D041\EXAMPLE01.DBF ONLINE

    SQL> select * from v$recover_file;

    no rows selected