在windows遇到的 ORA-00824 以及影响的范围

1 先说一下我的环境:

    1-1 windows 2003 server

    1-2 oracle 10.2.0

    1-3 有两个db service (即创建了两个数据库实例)

2 原因

    因为长期使用导致服务器磁盘空间已满,检查db后,发现两个db的temp表空间和undo表空间占用很多空间,所以参考下文清理一下。

    http://blog.csdn.net/xys_777/article/details/7207539


    不过看到大家说清理表空间只是一时的办法,最终解决需要修改oracle的内存参数。于是就打开oracle的管理工具,没怎么仔细研究,改了两个db的sga和pga(惭愧,这两个我现在还是没搞清楚)。可是再次启动时就只能连上一个db了,另一个死活连不上。

3 调查

    因为对oracle并不是很精通,所以下手方向有些不太对。

    3-1 到windows的系统服务里将listener 和两个db的service 都重启,问题依旧。

    3-2 检查listener.ora文件,内容如下<a>。竟然没有那两个db的sid的配置,而且还都是带“1”的,到系统服务里查看,果然有两个listener的服务,当前用的是带“1”的那个。用lsnrctl status 查看监听状态,结果无法连接 。非常郁闷,网上也竟然没有搜到相关的问题。没办法,最后只好把listener1改回成listener,以为lsnrctl status这个能好用,可惜依然不行,结果如下<b>  和这个一样 http://blog.sina.com.cn/s/blog_5f597b690100vmt5.html,但是没有解决办法。

<a>

# listener.ora Network Configuration File: K:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

LISTENER1 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = server)(PORT = 1521))
    )
  )

SID_LIST_LISTENER1 =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = K:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
  )
<b>
C:\Documents and Settings\Administrator>lsnrctl status

LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 18-1月 -2012 13:5
6:33

Copyright (c) 1991, 2005, Oracle.  All rights reserved.

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=server)(PORT=1521)))に接続中
TNS-12541: TNS: リスナーがありません。
 TNS-12560: TNS: プロトコル・アダプタ・エラー
  TNS-00511: リスナーがありません。
   32-bit Windows Error: 61: Unknown error

C:\Documents and Settings\Administrator>

    3-3 一个db好用,一个不好用,怀疑是listener.ora文件配置问题,改成如下,问题依然存在。

# listener.ora Network Configuration File: K:\oracle\product\10.2.0\db_1\network\admin\listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = server)(PORT = 1521))
    )
  )

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = K:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
    (SID_DESC =

      (GLOBAL_DBNAME = dbutf8)

      (ORACLE_HOME = K:\oracle\product\10.2.0\db_1)

      (SID_NAME = dbutf8)

    )
    (SID_DESC =

      (GLOBAL_DBNAME = dbjis)

      (ORACLE_HOME = K:\oracle\product\10.2.0\db_1)

      (SID_NAME = dbjis)

    )
  )

    3-4 知道后来我要用dbca来修改它时,在看到如下错误

    ORA-00824: cannot set sga_target due to existing internal settings, see alert log for more information

     马上想到了昨天修改内存参数的事,可是参考了很多办法,都是linux系统上的。

     用conn /as sysdba 报错误 ora-12560:tns protocol adapter error。,而启动了那个有问题的服务后,可以登陆,但是会提示:已连接到空闲例程。

     执行一般命令都是如下

提示:ORA-01034: ORACLE not available
ora_27101:shared memory realm does not exist;
     我知道现在问题是spfile中的设置有问题,应该执行create spfile from pfile.可是执行显示成功,问题仍然存在。

    3-5 因为有两个db,所以找到了他们的spfile(oracle\product\10.2.0\db_1\dbs\SPFILE***.ORA'),对着好的修改一下。在执行startup

提示:ora-01565: error in identifying file 'E:\oracle\product\10.2.0\db_1\dbs\SPFILEORCL.ORA'
ora_27046: file size is not a multiple of logical block size
OSD_04012: ???????????<OS 3632>

    3-6 看了http://color-of-winds.blog.sohu.com/137692956.html这里介绍,结合本机情况,终于搞定了,步骤如下

        a 将SPFILE中的参数拷贝到init***.ora文件中,本机情况K:\oracle\product\10.2.0\db_1\database\initdbutf8.ora

原来这样

SPFILE='K:\oracle\product\10.2.0\db_1/dbs/spfiledbutf8.ora'

拷贝后

dbutf8.__java_pool_size=4194304
dbutf8.__large_pool_size=4194304
dbutf8.__shared_pool_size=268435456
dbutf8.__streams_pool_size=0
*.audit_file_dest='K:\oracle\product\10.2.0/admin/dbutf8/adump'
*.background_dump_dest='K:\oracle\product\10.2.0/admin/dbutf8/bdump'
*.compatible='10.2.0.1.0'
*.control_files='K:\oracle\product\10.2.0/oradata/dbutf8/\control01.ctl','K:\oracle\product\10.2.0/oradata/dbutf8/\control02.ctl','K:\oracle\product\10.2.0/oradata/dbutf8/\control03.ctl'
*.core_dump_dest='K:\oracle\product\10.2.0/admin/dbutf8/cdump'
*.db_block_size=8192
*.db_cache_size=0
*.db_domain=''
*.db_file_multiblock_read_count=16
*.db_name='dbutf8'
*.db_recovery_file_dest='K:\oracle\product\10.2.0/flash_recovery_area'
*.db_recovery_file_dest_size=2147483648
*.dispatchers='(PROTOCOL=TCP) (SERVICE=dbutf8XDB)'
*.java_pool_size=0
*.job_queue_processes=10
*.large_pool_size=0
*.nls_language='JAPANESE'
*.nls_territory='JAPAN'
*.open_cursors=300
*.pga_aggregate_target=203423744
*.processes=150
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=268435456
*.sga_target=611319808
*.shared_pool_size=0
*.undo_management='AUTO'
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='K:\oracle\product\10.2.0/admin/dbutf8/udump'

        b 删除DATABASE目录下的SPFILE***.ORA文件。

        c 启动数据库 (现在应该可以成功启动)

        d SQL> create spfile from pfile 生成SPFIEL

        e SPFILE生成到K:\oracle\product\10.2.0\db_1\database\目录,拷贝到dbs那个目录就ok了。



    

参考过的资料:

http://blog.csdn.net/test_me/article/details/5676410

http://color-of-winds.blog.sohu.com/137692956.html

http://www.itpub.net/thread-1450861-1-1.html 不创建任何数据库,conn | as sysdba报ora-12560错误

http://www.itpub.net/thread-897589-1-1.html 在连接到空闲例程后,能够对例程或数据库进行何种操作

http://www.database8.com/thread-63479-1-1.html

http://www.oracle.com.cn/viewthread.php?tid=60554

http://kyo11kyo.iteye.com/blog/789853

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值