为了改善oracle性能,尝试修改某些参数,结果修改sga_max_size=2G后数据库启动失败(后来才知道最大值不能超过1.7G),再启动的时候报:
ORA-27123: unable to attach to shared memory segment
Linux Error: 22: Invalid argument
这时候用sysdba登录,已经不能修改参数了。经过疯狂Google后,用以下方法解决:
1、用另外的pflie启动数据库
startup pfile='${ORACLE_BASE}/admin/***(sid)/pfile/init***(sid).ora'
pfile文件去上面那个目录找找,一般会有,没有的话去别的机器上面拷一个回来,没有,我就不知道该怎么搞了,你也别看下去了。
2、生成spfile。这个时候数据库是正常跑起来了,但是还改不了参数的,会报一下错误:
ORA-32001: write to SPFILE requested but no SPFILE specified at startup
正常用startup启动也还是不行的,所以要先生成spfile。用这个命令:
create spfile from pfile='${ORACLE_BASE}/admin/***(sid)/pfile/init***(sid).ora'
3、关掉它,再起来。这步不知道是不是一定要的,习惯性喜欢重启(最有效的排障手段呀)。
shutdown immediate;
startup;
4、现在正常了,改改参数吧,这次可别改错了。
alter system set sga_max_size=1500M scope=spfile;
没问题,数据库可以继续跑。有问题只能说各有各的不幸,慢慢Google吧。
据说pfile是不能直接编辑的,我编辑过没跑起来,当然我不确定是因为我编辑过所以不行了,但是推荐还是别改它了。
搞数据库的新手,郁闷得很,但是这次还是学到一点点东西:
1、数据库可以在startup的时候指定一个pfile(其实我不是很明白pfile是什么来的,不过我知道它很重要,下次一定备份一个能用的).
2、pfile可以通过spfile建一个。用下面的命令(路径自己指定):
create pfile='/opt/oracle/init.ora' from spfile;
3、通过指定pfile启动数据库后,要切到spfile(不然你每次指定pfile启动吧,不过其实spfile是什么?)。用下面的命令:
create spfile from pfile='${ORACLE_BASE}/admin/***(sid)/pfile/init***(sid).ora'
分享到:
相关推荐
- `SGA_MAX_SIZE`:设置SGA的最大大小,包括共享池、数据缓冲区高速缓存、重做日志缓冲区和Java池。 - `SHARED_POOL_SIZE`:分配给共享池的内存,存储PL/SQL代码、SQL语句解析信息等。 - `DB_CACHE_SIZE`:数据...
这一特性允许数据库根据实际的处理需求动态地调整内存区域的大小,如sort_area_size、pga_aggregate_target、large_pool_size、sga_max_size和db_cache_size。这些内存区域分别服务于排序操作、PL/SQL程序执行、大...
例如,当系统内存为1GB时,SGA_MAX_SIZE建议设置为400-500MB,随着系统内存的增加,SGA_MAX_SIZE的推荐值也相应增大。 SGA的实际大小可以通过一个公式来估算,该公式涵盖了诸如数据库缓冲区(Database Buffers)、...
3. 如果需要更改SGA_MAX_SIZE,这需要重启实例才能生效: ```sql SQL> ALTER SYSTEM SET SGA_MAX_SIZE=1000M SCOPE=SPFILE; ``` 4. 增大Shared Pool大小时,如果SGA中没有足够的空闲内存,需要先减小其他组件的...
从Oracle 9i开始,可以在运行时动态修改SGA参数,而在Oracle 10g及更高版本中,可以直接修改SGA的当前内存值。 了解和正确管理SGA对于优化Oracle数据库的性能至关重要。通过监控SGA的使用情况,适时调整相关参数,...
Oracle9i数据库系统引入了动态SGA(System Global Area)和PGA(Program Global Area)的特性,这使得数据库实例能够更有效地管理和优化内存资源。在Oracle9i之前,SGA和PGA的配置往往需要手动调整,以适应不同工作...
但需要注意,如果未设置SGA_MAX_SIZE或设置值小于SGA_TARGET,SGA_MAX_SIZE将默认等于SGA_TARGET。同时,SGA_TARGET的值不能超过SGA_MAX_SIZE,以防止内存过度分配。 PGA是每个服务进程的私有内存区域,包含了服务...
为了调整Buffer Cache的大小,可以先设置SGA的最大大小`sga_max_size`,然后再设置目标大小`sga_target`。例如,可以执行如下SQL命令: ```sql alter system set sga_max_size = 24G scope = both; alter system set...
- `SGA_MAX_SIZE`: 设置系统全局区域的最大大小,用于存储数据缓冲区、重做日志缓冲区、共享SQL区等。 - `DB_CACHE_SIZE`: 数据缓冲区缓存的大小,用于缓存经常访问的数据块。 - `SHARED_POOL_SIZE`: 共享池的...
例如,`SGA_MAX_SIZE` 参数定义了 SGA 占用的最大内存空间。为了确保数据库的高效运行,应尽可能将此参数设置得足够大,但需注意不要超过实际物理内存的大小,以免导致性能下降。 ### 结论 理解和掌握 Oracle 9i ...
SGA_MAX_SIZE和SGA_TARGET是两个重要的参数,SGA_MAX_SIZE指定了SGA可以使用的最大内存大小,而SGA_TARGET指定了SGA可以使用的最大内存大小,并可以自动调节各个区域的大小,使之达到系统性能最佳状态的最合理大小。...
SGA_MAX_SIZE=0 DB_BLOCK_SIZE=8192 DATABASE_NAME=orcl DB_DOMAIN=mycompany.com SYSTEM_PASSWORD=<your_password> SYSMAN_PASSWORD=<your_password> ORACLE_PWD=<your_password> ``` 四、安装步骤 1. 使用响应...
- 可以通过修改初始化参数如`SGA_MAX_SIZE`、`PGA_AGGREGATE_TARGET`等动态调整SGA大小,但需要数据库实例重启后才生效。 4. **本地管理表空间(LMT)**: - LMT是Oracle 9i中提升表空间管理效率的一个特性,它自动...
`sga_target`用于自动管理SGA各个组件的大小,而`sga_max_size`限制了SGA的总大小。如果`sga_target`设置为0,意味着自动管理功能未启用,SGA大小由手动配置的各组件大小决定,如`db_cache_size`、`java_pool_size`...
*.sga_max_size=200000000 *.shared_pool_size=31457280 *.timed_statistics=TRUE *.undo_management='AUTO' *.undo_retention=10800 *.session_cached_cursors=200 *.cluster_database=TRUE *.cluster_...
### ORACLE9i_优化设计与系统调整 #### ORACLE9i系统优化基本知识 **1.1 Oracle数据库结构** - **1.1.1 Oracle数据字典**: 数据字典是Oracle数据库的核心组件之一,存储了数据库元数据,即关于数据库的数据。它...
spfile是Oracle 9i引入的新特性,它解决了pfile在多节点环境中管理混乱的问题,所有参数变更都会记录在spfile中,而且某些参数可以在不重启数据库的情况下在线修改。如果参数设置错误导致数据库无法启动,可以在...
- **SGA_MAX_SIZE 参数**:在初始化参数文件中可以设置 SGA 的最大内存占用量 (SGA_MAX_SIZE)。为了确保最佳性能,应尽可能地增大这个值,但也要避免超过物理内存的总容量,以免触发虚拟内存机制导致性能下降。 ###...