`

Oracle HowTo:如何在Linux上扩展SGA超过1.7G

阅读更多

今天一台Linux服务器扩展了一下内存,达到4G,开发的人自己修改了一下SGA结果数据库无法启动了.
启动不了时,出的错误是这个样子的:
[oracle@neirong oracle]$ sqlplus "/ as sysdba"
SQL*Plus: Release 9.2.0.4.0 - Production on Fri Nov 25 15:43:26 2005
Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
Connected to an idle instance.
SQL> startup
ORA-27123: unable to attach to shared memory segment
Linux Error: 22: Invalid argument
Additional information: 1
Additional information: 458753
SQL> exit
Disconnected

在32位平台上,缺省的SGA最大只能扩展到1.7G,如果需要支持更大的内存,就需要降低mapped_base,重新Link Oracle软件.
俺的平台为:

[oracle@neirong bdump]$ cat /etc/redhat-release
Red Hat Enterprise Linux AS release 3 (Taroon Update 2)


简单操作如下: cd $ORACLE_HOME/rdbms/lib
cp ksms.s ksms.s.bak ( if u have a ksms.s file)
genksms -s 0x12000000 > ksms.s
make -f ins_rdbms.mk ksms.o
make -f ins_rdbms.mk ioracle

此处先备份ksms.s文件,如果编译过程中出现错误,保证操作可以被恢复:
恢复步骤大致如下:
cd $ORACLE_HOME/rdbms/lib
cp ksms.s.bak ksms.s (if u have backup ksms.s file)
genksms > ksms.s
make -f ins_rdbms.mk ksms.o
make -f ins_rdbms.mk ioracle
以下是操作日志:

[oracle@neirong dbs]$ cd $ORACLE_HOME/rdbms/lib
[oracle@neirong lib]$ genksms -s 0x12000000 > ksms.s
[oracle@neirong lib]$ make -f ins_rdbms.mk ksms.o
[oracle@neirong lib]$ make -f ins_rdbms.mk ioracle
- Linking Oracle
rm -f /opt/oracle/product/9.2.0/rdbms/lib/oracle
gcc -o /opt/oracle/product/9.2.0/rdbms/lib/oracle -L/opt/oracle/product/9.2.0/rdbms/lib/
-L/opt/oracle/product/9.2.0/lib/ -L/opt/oracle/product/9.2.0/lib/stubs/
-Wl,-E `test -f /opt/oracle/product/9.2.0/rdbms/lib/skgaioi.o && echo
/opt/oracle/product/9.2.0/rdbms/lib/skgaioi.o` /opt/oracle/product/9.2.0/rdbms/lib/opimai.o
/opt/oracle/product/9.2.0/rdbms/lib/ssoraed.o /opt/oracle/product/9.2.0/rdbms/lib/ttcsoi.o
/opt/oracle/product/9.2.0/lib/nautab.o /opt/oracle/product/9.2.0/lib/naeet.o
/opt/oracle/product/9.2.0/lib/naect.o /opt/oracle/product/9.2.0/lib/naedhs.o
/opt/oracle/product/9.2.0/rdbms/lib/config.o -lserver9 -lodm9 -lskgxp9 -lskgxn9 -lclient9
-lvsn9 -lwtcserver9 -lcommon9 -lgeneric9 /opt/oracle/product/9.2.0/rdbms/lib/defopt.o
-lknlopt `if /usr/bin/ar tv /opt/oracle/product/9.2.0/rdbms/lib/libknlopt.a | grep
xsyeolap.o > /dev/null 2>&1 ; then echo "-loraolap9" ; fi`
-lslax9 -lpls9 -lplp9 -lserver9 -lclient9 -lvsn9 -lwtcserver9 -lcommon9 -lgeneric9
-lknlopt -lslax9 -lpls9 -lplp9 -ljox9 -lserver9 -locijdbcst9 -lwwg9
`cat /opt/oracle/product/9.2.0/lib/ldflags` -lnsslb9 -lncrypt9 -lnsgr9 -lnzjs9
-ln9 -lnl9 -lnro9 `cat /opt/oracle/product/9.2.0/lib/ldflags` -lnsslb9 -lncrypt9
......
mv -f /opt/oracle/product/9.2.0/bin/oracle /opt/oracle/product/9.2.0/bin/oracleO
mv /opt/oracle/product/9.2.0/rdbms/lib/oracle /opt/oracle/product/9.2.0/bin/oracle
chmod 6751 /opt/oracle/product/9.2.0/bin/oracle


此后数据库可以以超过1.7G的SGA区设置启动:
SQL> startup
ORACLE instance started.
Total System Global Area 2685476820 bytes
Fixed Size 454612 bytes
Variable Size 1073741824 bytes
Database Buffers 1610612736 bytes
Redo Buffers 667648 bytes
Database mounted.
Database opened.

分享到:
评论

相关推荐

    32位Windows上使用超过1.7GB SGA的方法

    通过上述步骤,可以在32位Windows操作系统上成功配置Oracle数据库,使其能够利用超过1.7GB的SGA空间。这有助于提高数据库性能,尤其是在处理大量数据或需要更高并发性的情况下。尽管32位系统的局限性仍然存在,但...

    oracle 在2003下修改使用内存大于1.7G的步骤

    由于 Windows 2003 的 32 位 CPU 在系统中给系统用 2G 给应用程序使用, Oracle 的 SGA 内存使用不能超过 1.7G,因此需要进行一些设置来扩大 SGA 内存使用。 首先,需要修改 boot.ini 文件,添加 /3GB /PAE 开关,...

    突破oracle for win2K的2G内存限制

    如何突破Oracle 在32 bit windows环境下的1.7G限制? OS:windows2003 server (entprise) ...据说Oracle在32 bit windows平台上有1.7G的限制,但是我不知道需要调整什么参数让Oracle可以使用到更大的内存。。。

    linuxVM平台扩展SGA

    本文旨在解决这些问题,并探讨如何在 Linux VM 平台上可靠地运行 Oracle 软件,重点是 SGA(共享全局区)的扩展。 #### 引言 为了实现 IA-32 架构上超过 4GB 的虚拟内存容量,必须对 Linux 的虚拟内存管理机制进行...

    WINDOWS平台上扩展SGA

    通过以上步骤,可以在 32 位 Windows 平台上成功扩展 Oracle 数据库的 SGA 大小,从而充分利用物理内存资源。需要注意的是,这些步骤仅适用于支持 AWE 的 Windows 版本,并且需要对 Oracle 数据库进行适当的配置调整...

    oracle10g_for_linux

    Oracle 10g for Linux是针对在Linux操作系统上部署和管理Oracle数据库的全面教程。Oracle数据库是世界上最流行的关系型数据库管理系统之一,而Linux作为开源且稳定的服务器操作系统,是许多企业和开发人员的选择。...

    oracle改sga导致数据库启动异常处理办法

    首先,需要在 Linux 系统中找到 PFILE 文件目录,例如 oracle_install/admin/SID/pfile/init.ora.8282011115435,然后使用 SQL 语句创建 SPFILE: SQL> create spfile from pfile='/ oracle_install/admin/SID/...

    sga调整过大oracle无法启动解决方案

    "sga调整过大oracle无法启动解决方案" SGA(System Global Area)是 Oracle...需要注意的是,在 32 位操作系统下,SGA_MAX_SIZE 有 1.7G 的限制,超过限制就会报错。因此,在设置 SGA_MAX_SIZE 时,需要注意这个限制。

    oracle 11g RAC on linux

    《Oracle 11g RAC on Linux》这本书详细地介绍了如何在Linux环境下部署和管理Oracle数据库的Real Application Clusters(RAC)系统。RAC是一种高可用性解决方案,它允许多个数据库实例同时访问同一个物理数据库,...

    Oracle 11g r2 for Linux 官方安装文档

    总之,Oracle 11g R2在Linux上的安装是一个复杂的过程,涉及多步骤的规划、配置和优化。通过阅读这份官方文档,用户可以深入了解每个环节,顺利完成数据库的部署,并为后续的管理和维护奠定基础。

    linux下oracle手动建实例

    在Linux环境中手动构建Oracle实例是一项高级且复杂的任务,通常适用于需要定制化配置或特殊需求的场景。本文档将根据给定的信息,详细介绍如何在Linux环境下手动创建Oracle实例的过程,并深入解释每个步骤中的关键...

    Oracle 9i database:advanced instance tuning

    Oracle 9i 的设计目标之一是提高系统的可扩展性和性能。为了实现这一目标,Oracle 9i 引入了许多新特性,例如 Real Application Clusters (RAC) 和 Real Application Testing (RAT)。 #### 数据库实例的组成部分 ...

    oracle11g linux 缺省软件包

    在Linux系统上安装Oracle 11g是一项技术性较强的任务,需要确保系统中拥有所有必要的软件包和支持库。"oracle11g linux 缺省软件包"是指在Linux环境下安装Oracle 11g数据库时所需的默认软件集合。这些软件包通常包括...

    oracle sga设置

    - 从Oracle 10g开始引入,通过设置SGA_TARGET,可以实现SGA的自动调整。 - Oracle会根据当前负载情况动态调整SGA的各个部分大小,使得总大小尽量接近SGA_TARGET。 - 可以在线修改SGA_TARGET的值,而不需要重启...

    更改ORACLE SGA的详细步骤

    注意:在 Oracle 11g 中,`sga_max_size` 不能大于 `memory_max_size`。 3. **重启数据库实例**: 修改参数后,需要立即关闭并重新启动数据库实例以应用更改: ``` shutdown immediate; start up; ``` 4. **...

    linux 安装oracle11g所需安装包

    以上步骤概括了在Linux上安装Oracle 11g的基本流程。在实际操作过程中,你可能需要根据具体情况进行细微调整,例如处理依赖冲突、解决权限问题等。请确保在整个过程中遵循Oracle的最佳实践,以确保系统的稳定性和...

    Oracle 9i 调整SGA性能

    Oracle 9i数据库系统是Oracle公司推出的一款重要版本,它在数据库管理、性能优化方面有着显著的提升。本文将深入探讨Oracle 9i中的System Global Area(SGA)性能调整,帮助你理解如何通过优化SGA来提升数据库的整体...

    Oracle SGA

    在Oracle 10g中,引入了动态内存分配特性,使得创建一个自调整的Oracle SGA成为可能。这一特性允许数据库根据实际的处理需求动态地调整内存区域的大小,如sort_area_size、pga_aggregate_target、large_pool_size、...

Global site tag (gtag.js) - Google Analytics