ORACLE调优之 内存结构调优(摘自文平书)
从AIX 角度,我们可以在下面三个角度衡量内存使用的合理性
1>减少页面交换操作
当操作系统需要更多内存页以支持其他应用运行时,操作系统将依据某种算法(LRU算法)把当前驻留在内存中的某些
数据页"Page Out",也就是把内存中的数据页从内存段转移到物理磁盘。显然,这种类型的操作会影响整个系统的运行性能。
对于数据库这种内存敏感类型的应用系统来说,这点尤为重要。因为数据库需要把数据放在内存中操作,这部分内存区域
称为“数据高速缓存”。
因此,一般在系统设计时,我们往往将数据库安装在一台服务器上,独占这台服务器的所有资源,避免页交换的产生。
在数据库配置时,也避免过度地将内存结构分配给数据库,人为造成操作系统空余内存的紧张。
2>SGA应宿主在物理内存中
分配SGA的目的就是为了快速地将数据存储在内存中,因为内存速率和硬盘速率相比,差别至少在4个数量级以上。如果
SGA对应的虚拟内存页被交换到换页空间(磁盘)上,那么SGA也就没有意义了。
我们可以通过 show sga命令查看系统全局区当前的分配情况:
SQL>show sga
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 75499088 bytes
Database Buffers 205520896 bytes
Redo Buffers 2973696 bytes
从上面的结果可以看出,本Oracle 实例SGA总体为 285212672bytes(285MB),其中,Oracle启动固定内存1218992bytes(1.2MB)
,可变内存75499088bytes(75M),数据缓存205520896bytes(205M),日志缓存2973696bytes(2.9MB)
为用户连接准备充分的内存资源
SGA将占据数据库服务器中庞大的内存资源。除此之外,我们还需要为在系统上运行的服务器进程(Server Process,也就是
PGA)以及其他任务留下足够的内存。
Oracle启动后,其内存分配理论上依赖于应用的使用特征。如果由于内存的分配导致了I/O操作的减少,并因此优化了应用
的I/O性能,则我们认为内存使用恰当。
||
相关文档:
sql server和oracle行转列的一种典型方法
前言:网上有不少文章是讲行转列的,但是大部分都是直接贴代码,忽视了中间过程,本人自己思考了下为什么要这样实现,并且做了如下的笔记,对有些懂的人来说可能没有价值,希望对还不懂的人有一点借鉴意义。
对于有些业务来说,数据在表中的存储和其最终的Grid表现恰好相当于把� ......
在Stand alone的环境中创建Oracle data source供测试使用:
OracleDataSource dataSource = new OracleDataSource();
dataSource.setDriverType("oracle.jdbc.driver.OracleDriver");
dataSource.setURL("jdbc:oracle:thin:@localhost:1521:ORCL");
  ......
Can you connect to an Oracle database with a 64-bit Oracle client?
Technote (FAQ)
Question
You are unable to connect to an Oracle database with a 64-bit Oracle client. Does Lotus Enterprise Integrator (LEI), Lotus Domino Enterprise Connection Services (DECS), or LSX ......
select sid,
p1,
p1raw,
p2,
p2raw,
p3,
p3raw,
&n ......
SGA 中的另外一个重要结构是共享池。共享池存储了应用执行需要的PL/SQL块结构,SQL语句的文本、SQL编译后的可
执行代码、系统数据字典等。
恰当的共享池尺寸设置将减少系统各种资源的使用。首先,对于SQL、PL/SQL 来说,共享池提供了运行状态下的临时
存储点,后续执行的SQL和PL/SQL将� ......