Oracle 8.1.7 - Instance terminated due to error 221

Posted on 2004-11-16
Last Modified: 2008-01-09
Hi there,

I'm using a very old version of Oracle (8.1.7) on a Windows 2000 Server with SP4.

Every day, early in the morning our instances are being terminated.

The NT Services are running only the instances of the DB's are down.
In the morning around 7:00 AM we run a script to shutdown the DB's, since they're not
fully down and to run a recovery and a startup.

The question is how can we stop / fix the instance termination so that we do not have to run the
startup script every morning manually???

Startup script over SVRMGRL:
connect internal
shutdown abort
startup mount

Tue Nov 16 00:49:59 2004
Errors in file E:\oracle\admin\QUTM\bdump\qutmCKPT.TRC:
ORA-00206: error in writing (block 3, # blocks 1) of controlfile
ORA-00202: controlfile: 'E:\ORACLE\ORADATA\QUTM\CONTROL02.CTL'
ORA-27072: skgfdisp: I/O error
OSD-04008: WriteFile() failure, unable to write to file
O/S-Error: (OS 33) The process cannot access the file because another process has locked a portion of the file.

Tue Nov 16 00:49:59 2004
CKPT: terminating instance due to error 221
Instance terminated by CKPT, pid = 2616
Dump file E:\oracle\admin\QUTM\bdump\qutmALRT.LOG
Tue Nov 16 07:01:05 2004
ORACLE V8. - Production vsnsta=0
vsnsql=e vsnxtr=3
Windows 2000 Version 5.0 Service Pack 4, CPU type 586
Starting up ORACLE RDBMS Version:
System parameters with non-default values:
  processes                = 165
  shared_pool_size         = 671088640
  large_pool_size          = 20971520
  java_pool_size           = 32768
  control_files            = E:\oracle\oradata\QUTM\control02.ctl, E:\oracle\oradata\QUTM\control01.ctl, E:\oracle\oradata\QUTM\control03.ctl
  db_block_buffers         = 132825
  db_block_size            = 8192
  compatible               = 8.1.0
  log_archive_start        = TRUE
  log_archive_dest_1       = location=D:\oracle\oradata\QUTM\archive
  log_archive_format       = %%ORACLE_SID%%T%TS%S.ARC
  log_buffer               = 32768
  log_checkpoint_interval  = 10000
  log_checkpoint_timeout   = 1800
  db_files                 = 1024
  db_file_multiblock_read_count= 8
  max_enabled_roles        = 30
  remote_login_passwordfile= EXCLUSIVE
  global_names             = TRUE
  distributed_transactions = 10
  instance_name            = QUTM
  service_names            = QUTM
  mts_dispatchers          = (protocol=TCP)
  sort_area_size           = 65536
  sort_area_retained_size  = 65536
  db_name                  = QUTM
  open_cursors             = 300
  os_authent_prefix        =
  parallel_max_servers     = 16
  background_dump_dest     = E:\oracle\admin\QUTM\bdump
  user_dump_dest           = E:\oracle\admin\QUTM\udump
  max_dump_file_size       = 10240
PMON started with pid=2
DBW0 started with pid=3
LGWR started with pid=4
CKPT started with pid=5
SMON started with pid=6
RECO started with pid=7
Tue Nov 16 07:01:07 2004
starting up 1 shared server(s) ...
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
ARC0 started with pid=10
Tue Nov 16 07:01:08 2004
Tue Nov 16 07:01:08 2004
ARC0: Archival started
Tue Nov 16 07:01:09 2004
Tue Nov 16 07:01:15 2004
Successful mount of redo thread 1, with mount id 3559626235.
Tue Nov 16 07:01:15 2004
Database mounted in Exclusive Mode.
Completed: /* OracleOEM */ ALTER DATABASE MOUNT
Tue Nov 16 07:01:15 2004
Beginning crash recovery of 1 threads
Tue Nov 16 07:01:15 2004
Thread recovery: start rolling forward thread 1
Recovery of Online Redo Log: Thread 1 Group 2 Seq 2171 Reading mem 0
Tue Nov 16 07:01:15 2004
Thread recovery: finish rolling forward thread 1
Thread recovery: 0 data blocks read, 0 data blocks written, 0 redo blocks read
Crash recovery completed successfully
Tue Nov 16 07:01:15 2004
Thread 1 advanced to log sequence 2172
Thread 1 opened at log sequence 2172
  Current log# 3 seq# 2172 mem# 0: D:\ORACLE\ORADATA\QUTM\REDO03.LOG
Successful open of redo thread 1.
Tue Nov 16 07:01:15 2004
SMON: enabling cache recovery
Tue Nov 16 07:01:15 2004
ARC0: Beginning to archive log# 2 seq# 2171
ARC0: Completed archiving log# 2 seq# 2171
Tue Nov 16 07:01:16 2004
SMON: enabling tx recovery
Tue Nov 16 07:01:17 2004
Completed: /* OracleOEM */ ALTER DATABASE OPEN
Question by:Don-Acme
    LVL 22

    Expert Comment

    I have found this Note:228155.1 on MetaLink, I hope it will help you:

    Doc ID:       Note:228155.1
    Subject:       Database Crashes with OS-Error OS 1453
    Type:       PROBLEM
    Status:       PUBLISHED
    Content Type:       TEXT/X-HTML
    Creation Date:       03-JAN-2003
    Last Revision Date:       05-MAY-2004

        * fact: Oracle Server - Enterprise Edition
        * fact: MS WINDOWS 2000
        * symptom: Database crashes
        * symptom: ORA-00206: error in writing (block %s, # blocks %s) of controlfile
        * symptom: ORA-00202: controlfile: '%s'
        * symptom: ORA-27072: skgfdisp: I/O error
        * symptom: OSD-04008: WriteFile() failure, unable to write to file
        * symptom: O/S-Error: (OS 1453) Insufficient quota to complete the requested service.
        * symptom: CKPT: terminating instance due to error 221
        * cause: The OS is unable to complete the write request from Oracle due to a quota being enforced at the OS level. This is basically raised by the OS and it is a Windows 2000 problem.


    1. Check the properties of the drives used by Oracle (for holding the software and the datafiles) under the quota tab and make sure you have quotas disabled by clearing the 'Enable Quota Management' check box and apply.

    2. If the above doesn't help then add more RAM.

    Author Comment

    hmmm I don't know are 8GB not enough? And I have about 160 GB free on the HDs ???

    The Quota Tab is cleared by default.

    Could it have something to do with the Backup???

    I also have another DB running on the same server... could this be the problem???
    LVL 22

    Accepted Solution

    Yes, it can be caused by backup. You can see this discussion on Metalink:

    control file locked

    hey pros,

    Recently our DB has been crashing because of the error message below.We use veritas 9 to backup on tapes and this is primarily where the db has been crashing lately, when the backup starts.There's usually no one using the system during backup. The error is the following:

    Errors in file d:\oracle\admin\ptprod\bdump\ptprodCKPT.TRC:
    ORA-00206: error in writing (block 3, # blocks 1) of controlfile
    ORA-00202: controlfile: 'E:\ORACLE\ORADATA\PTPROD\CONTROL03.CTL'
    ORA-27072: skgfdisp: I/O error
    OSD-04008: WriteFile() failure, unable to write to file
    O/S-Error: (OS 33) The process cannot access the file because another process has locked a portion of the file.

    CKPT: terminating instance due to error 221
    Instance terminated by CKPT, pid = 2652
    Dump file d:\oracle\admin\ptprod\bdump\ptprodALRT.LOG

    Can anyone please give us a hand



    Is Oracle running during the backup? Yep. And there is the problem.
    Oracle instance is using the files. It is the Oracle instance's files. And then some other silly process has the damn nerve to lock these files and prevent the instance access to it's own darn files...!?

    Of course it will be very unhappy. Of course it will crash. Of course this is not how to do a hot backup and of course you guys did not RTFM the Oracle backup manual.
    LVL 22

    Expert Comment

    ... or maybe there is some job running and also backup there ...

    Author Comment

    Ciao Henka,

    I've just contacted our Backup Guru Bimbo.

    Yep, we are running Veritas Hot Backup over the whole server.

    Told him to remove the Server from the daily backup task...

    Thanks for the help :))

    Write Comment

    Please enter a first name

    Please enter a last name

    We will never share this with anyone.

    Featured Post

    PRTG Network Monitor: Intuitive Network Monitoring

    Network Monitoring is essential to ensure that computer systems and network devices are running. Use PRTG to monitor LANs, servers, websites, applications and devices, bandwidth, virtual environments, remote systems, IoT, and many more. PRTG is easy to set up & use.

    This article started out as an Experts-Exchange question, which then grew into a quick tip to go along with an IOUG presentation for the Collaborate confernce and then later grew again into a full blown article with expanded functionality and legacy…
    I remember the day when someone asked me to create a user for an application developement. The user should be able to create views and materialized views and, so, I used the following syntax: (CODE) This way, I guessed, I would ensure that use…
    This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
    Via a live example, show how to restore a database from backup after a simulated disk failure using RMAN.

    737 members asked questions and received personalized solutions in the past 7 days.

    Join the community of 500,000 technology professionals and ask your questions.

    Join & Ask a Question

    Need Help in Real-Time?

    Connect with top rated Experts

    22 Experts available now in Live!

    Get 1:1 Help Now