Oracle修改SGA_TARGET后启动失败

来源:互联网 发布:python post本地文件 编辑:程序博客网 时间:2024/06/07 02:46

最近在学习Oracle数据库,使用的时候发现这样一个问题:

修改默认SGA_TARGET值后,尝试重启数据库,提示错误:

startupORA-01078: failure in processing system parametersORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 1036M

由于此时数据库已经关闭,无法重新修改SGA_TARGET的值。

我在网上搜索了一下解决办法,需要修改启动配置文件pfile和spfile。但是我尝试使用如下方法之后,并没有成功启动:

 create pfile from spfile;//利用spfile文件创建pfile 手动修改pfile(initXE.ora)将SGA\_TARGET那一行删掉 create spfile from pfile;//再使用pfile创建新的 ``` >注:我的数据库默认SPFILEXE.ora文件位于"D:\oraclexe\app\oracle\product\11.2.0\server\database" 我使用的数据库版本是Oracle 11g XE,错误就出在第二步: 无论我怎么create,创建的ora文件里面都只有一行指向"D:\oraclexe\app\oracle\product\11.2.0\server\dbs\spfile.ora"的内容,而不是我想要的启动配置文件。 继续在网上搜索之后,一篇文章给了我提示:[oracle11g pfile 与spfile](http://blog.sina.com.cn/s/blog_69fa6cc70101dscf.html),文中的解决办法是创建一个新的数据库,使用新数据库的pfile文件生成spfile文件,然后对其中部分参数进行更改。 >init.ora即为pfile文件

//文章作者的pfile文件内容
mydb.__db_cache_size=373293056
mydb.__java_pool_size=4194304
mydb.__large_pool_size=4194304
mydb.__oracle_base=’D:\oracle\app\Administrator’#ORACLE_BASE set from environment
mydb.__pga_aggregate_target=398458880
mydb.__sga_target=591396864
mydb.__shared_io_pool_size=0
mydb.__shared_pool_size=201326592
mydb.__streams_pool_size=0
*.audit_file_dest=’D:\oracle\app\Administrator\admin\mydb\adump’
*.audit_trail=’db’
*.compatible=’11.2.0.0.0’
*.control_files=’D:\oracle\app\Administrator\oradata\mydb\control01.ctl’,’D:\oracle\app\Administrator\oradata\mydb\control02.ctl’
*.db_block_size=8192
*.db_domain=”
*.db_name=’mydb’
*.diagnostic_dest=’D:\oracle\app\Administrator’
*.dispatchers=’(PROTOCOL=TCP) (SERVICE=mydbXDB)’
*.local_listener=’LISTENER_MYDB’
*.memory_target=988807168
*.nls_language=’SIMPLIFIED CHINESE’
*.nls_territory=’CHINA’
*.open_cursors=300
*.processes=150
*.remote_login_passwordfile=’EXCLUSIVE’
*.undo_tablespace=’UNDOTBS1’

“`
我尝试create database,然而数据库服务器已经关闭,又不清楚其它的方式创建。

琢磨一会后,我发现”D:\oraclexe\app\oracle\product\11.2.0\server\dbs”目录下的SPFILEXE.ora文件中除了乱码,还包含有类似于上面贴出的pfile内容。

“`
C”   +    ? 杢W9 C C”  5 xe.__db_cache_size=243269632
xe.__java_pool_size=4194304
xe.__large_pool_size=4194304
xe.__oracle_base=’D:\oraclexe\app\oracle’#ORACLE_BASE set from environment
xe.__pga_aggregate_target=432013312
xe.__sga_target=641728512
xe.__shared_io_pool_size=0
xe.__shared_pool_size=377487360
xe.__streams_pool_size=0
*.audit_file_dest=’D:\oraclexe\app\oracle\admin\XE\adump’
*.compatible=’11.2.0.0.0’
*.control_files=’D:\oraclexe\app\oracle\oradata\XE\control.dbf’
*.db_name=’XE’
*.DB_RECOVERY_FILEC C”  
_DEST_SIZE=10G
*.DB_RECOVERY_FILE_DEST=’D:\oraclexe\app\oracle\fast_recovery_area’
*.diagnostic_dest=’D:\oraclexe\app\oracle.’
*.dispatchers=’(PROTOCOL=TCP) (SERVICE=XEXDB)’
*.job_queue_processes=4
*.memory_target=1024M
*.open_cursors=300
*.query_rewrite_enabled=’TRUE’
*.remote_login_passwordfile=’EXCLUSIVE’
*.sessions=20
*.sga_target=1073741824 //这一行是罪魁祸首,删除之
*.shared_servers=4
*.undo_management=’AUTO’
*.undo_tablespace=’UNDOTBS1’

“`

对比之后发现基本一致,于是删除了不必要的代码后我把这里面的内容复制到server\database\下的initXE.ora文件中。继而使用这个pfile创建spfile,最后成功启动数据库。

原创粉丝点击