Ora-27100错误解决办法

来源:互联网 发布:步兵番号 知乎 编辑:程序博客网 时间:2024/05/16 04:31

 已经碰到过两次这个问题了,上次碰到是一个月前,网上搜罗一下,解决了,这次又碰到了,搞了半天在create spfile from pfile的 过程中一直提示内部错误,头都晕了,后来灵机一动,先把spfile 删除,再create,ok了,拨开云雾见晴日。

 

问题分析:这个问题一般是由于spfile参数文件损坏或者参数值不当而引起,解决办法就是将spfile重启设置并创建一下即可。

基本步骤如下:

1、sqlplus /nolog
3、connect / as sysdba
4、create pfile from spfile
5、修改pfile[initsid.ora]文件中的内存参数-减小到默认状态,这一步很重要,我是使用一个运行正常的sid参数来配置的
6、create spfile from pfile   ,注意要先把老的 spfile备份起来,然后删除掉,否则会报内部错误
7、shutdown abort
8、关闭Window服务管理器中的Oracle相关服务。
9、重新启动服务器即可

注:如需要,则可以在Oracle成功启动后,重新扩大内存参数

附1: 我使用的参数参考
*.aq_tm_processes=1
*.background_dump_dest='D:/oracle/admin/NODMDB/bdump'
*.compatible='9.2.0.0.0'
*.control_files='D:/oracle/oradata/NODMDB/CONTROL01.CTL','D:/oracle/oradata/NODMDB/CONTROL02.CTL','D:/oracle/oradata/NODMDB/CONTROL03.CTL'
*.core_dump_dest='D:/oracle/admin/NODMDB/cdump'
*.db_block_size=8192
*.db_cache_size=1048576000
*.db_domain=''
*.db_file_multiblock_read_count=32
*.db_name='NODMDB'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=NODMDBXDB)'
*.fast_start_mttr_target=300
*.hash_area_size=1048576
*.hash_join_enabled=TRUE
*.instance_name='NODMDB'
*.java_pool_size=33554432
*.job_queue_processes=10
*.large_pool_size=8388608
*.max_dump_file_size='500000'
*.open_cursors=300
*.pga_aggregate_target=524288000
*.processes=150
*.query_rewrite_enabled='TRUE'
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_max_size=188743680
*.shared_pool_size=50331648
*.sort_area_size=1048576
*.star_transformation_enabled='FALSE'
*.timed_statistics=TRUE
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
*.user_dump_dest='D:/oracle/admin/NODMDB/udump'

 

附2:pfile和spfile说明
Pfile(Parameter File)文件是基于文本格式的参数文件,含有数据库的配置参数。
    Oracle 9i在安装时为每个数据库建立了一个Pfile,默认的名称为“init+例程名.ora”,这是一个文本文件,可以用任何文本编辑工具打开。
 数据库的初始化参数文件分析

内容

说明

# Copyright (c) 1991, 2001 by Oracle Corporation

Oracle公司版权标识

# MTS

多线程服务器配置标识,在Oracle 9i里称为共享服务器配置

dispatchers="(PROTOCOL=TCP)(SER=MODOSE)", "(PROTOCOL=TCP)(PRE=oracle.aurora.server.GiopServer)", "(PROTOCOL=TCP)(PRE=oracle.aurora.server.SGiopServer)"

多线程服务器配置

# 其他

配置其他参数

compatible=9.0.0

兼容版本9.0.0

db_name=myoracle

数据库名称为myoracle

# 分布式, 复制和快照

配置分布式、复制和快照参数

db_domain=mynet

数据库域名为mynet,加上数据库名称db_name构成全局数据库名称

remote_login_passwordfile=EXCLUSIVE

指定操作系统或口令文件是否具有检查用户口令的权限。设置为EXCLUSIVE, 将使用数据库的口令文件对每个具有权限的用户进行验证。

# 排序, 散列联接, 位图索引

配置排序、散列联接、位图索引参数

sort_area_size=524288

指定排序区使用的最大内存量为512KB。排序完成后, 各行将返回, 并且内存将释放。增大该值可以提高大型排序的效率。

# 文件配置

文件配置参数

control_files=("C:/oracle/oradata/myoracle/CONTROL01.CTL", "C:/oracle/oradata/myoracle/CONTROL02.CTL", "C:/oracle/oradata/myoracle/CONTROL03.CTL")

指定控制文件的路径及文件名

#

内存配置参数

Java_pool_size=33554432

指定Java存储池的大小为32MB,用于存储 Java 的方法、类定义和Java对象。

large_pool_size=1048576

指定大型池的大小为1MB 用于共享服务器的会话内存、并行执行的消息缓冲区以及RMAN备份和恢复的磁盘 I/O 缓冲区。

shared_pool_size=33554432

指定共享池的大小为32MB,用于存储共享游标、存储的过程、控制结构和并行执行消息缓冲区等对象。较大的值能改善多用户系统的性能

# 游标和库高速缓存

配置游标和高速缓存参数

open_cursors=300

指定一个会话一次可以打开的游标的最大数量为300,应将该值设置得足够高,这样才能防止应用程序耗尽打开的游标

# 系统管理的撤消和回退段

配置系统管理撤消和回滚段参数

undo_management=AUTO

指定系统使用的撤消空间管理方式为SMU 方式,在SMU方式下, 撤消空间会像撤消表空间一样在外部分配

undo_tablespace=UNDOTBS

指定回滚表空间为UNDOTBS

# 网络注册

配置网络注册参数

instance_name=myoracle

例程名称为myoracle

# 诊断和统计

配置诊断和统计参数

background_dump_dest=C:/oracle/admin/myoracle/bdump

后台进程跟踪文件目录

core_dump_dest=C:/oracle/admin/myoracle/cdump

核心转储跟踪文件目录

timed_statistics=TRUE

收集操作系统的计时信息,这些信息可被用来优化数据库和 SQL 语句

user_dump_dest=C:/oracle/admin/myoracle/udump

用户进程跟踪文件目录

# 进程和会话

配置进程和会话信息

processes=150

指定可同时连接到一个Oracle Server上的操作系统用户进程的最大数量为150

# 重做日志和恢复

重做日志和恢复参数设置

Fast_start_mttr_target=300

指定从单个数据库例程崩溃中恢复所需的时间为300

# 高速缓存和 I/O

配置高速缓存和I/O参数

db_block_size=4096

指定数据块大小为4KB

db_cache_size=33554432

指定数据缓冲区为32MB,该值越大,可以减少对数据库文件的I/O次数,提高效率

SPfile文件
     SPfileServer Parameter File,服务器参数文件)是基于二进制格式的参数文件,含有数据库及例程的参数和数值,但不能用文本编辑工具打开。
下面对两种初始化参数文件进行比较

Spfile和Pfile文件的比较

比较内容

SPfile

Pfile

格式

二进制格式

文本格式

编辑方式

1)利用企业管理器对Pfile进行修改,然后转换为Spfile 2)在SQL Plus里使用ALTER SYSTEM语句进行修改

1)利用文本工具直接进行修改 2)在企业管理器里修改配置后导出形成

默认名称

SPfile+例程名.ora

Init+例程名.ora 实际参数文件Init.ora

默认路径

Oracle/ora90/database/

Oracle/ora90/database/ Init.ora位于Oracle/admin/数据库例程名/pfile/

启动次序

SPfile优先于Pfile

Pfile低于Spfile