Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

35

积分

0

好友

1

主题
1#
发表于 2012-3-26 22:15:38 | 查看: 11279| 回复: 8
首先祝 Maclean 新婚快乐~~~
1.oracle是 10.2.0.1 ,  SGA_MAX 设置了 25G
系统是64位centos  6.0 .  内存有32G

2.但是现在发现 swap分区访问严重。 经常iostat 查看,负载达到80%以上。
想请问下是怎么回事?谢谢!~~



下面是 #free后的结果:

            total       used       free     shared    buffers     cached
Mem:      32949816   32854900      94916          0       3596   16273824
-/+ buffers/cache:   16577480   16372336
Swap:     33551744   15917772   17633972



下面是 cat /proc/meminfo 的结果.

cat /proc/meminfo
MemTotal:     32949816 kB
MemFree:         96996 kB
Buffers:          8028 kB
Cached:       15961380 kB
SwapCached:     473988 kB
Active:       16919388 kB
Inactive:       310016 kB
HighTotal:           0 kB
HighFree:            0 kB
LowTotal:     32949816 kB
LowFree:         96996 kB
SwapTotal:    33551744 kB
SwapFree:     17706728 kB
Dirty:              60 kB
Writeback:           0 kB
AnonPages:      986192 kB
Mapped:       15477904 kB
Slab:           206372 kB
PageTables:   15247424 kB
NFS_Unstable:        0 kB
Bounce:              0 kB
CommitLimit:  50022556 kB
Committed_AS: 36705656 kB
VmallocTotal: 34359738367 kB
VmallocUsed:    279852 kB
VmallocChunk: 34359458503 kB
HugePages_Total:     0
HugePages_Free:      0
HugePages_Rsvd:      0
Hugepagesize:     2048 kB



下面是 sysctl.conf 的结果:

# Controls the use of TCP syncookies
net.ipv4.tcp_syncookies = 1

# Controls the maximum size of a message, in bytes
kernel.msgmnb = 65536

# Controls the default maxmimum size of a mesage queue
kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes
kernel.shmmax = 68719476736

# Controls the maximum number of shared memory segments, in pages
kernel.shmall = 4294967296

kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 655000
fs.aio-max-nr=1048576
fs.file-max=6815744
2#
发表于 2012-3-27 10:00:40
通过修改lock_sga和pre_page_sga参数值为“TRUE”可以有效的将整个SGA锁定在物理内存中




show parameter lock_sga
alter system set lock_sga=true scope=spfile;


show parameter pre_page_sga
alter system set pre_page_sga=true scope=spfile;


SQL> select name,issys_modifiable from v$parameter where name like 'pre_page_sga';
NAME                                                                             ISSYS_MOD
-------------------------------------------------------------------------------- ---------
pre_page_sga                                                                     FALSE




SQL>  select name,issys_modifiable from v$parameter where name like 'lock_sga';
NAME                                                                             ISSYS_MOD
-------------------------------------------------------------------------------- ---------
lock_sga                                                                         FALSE




参数修改要重启数据库的,Windows不支持lock sga。

回复 只看该作者 道具 举报

3#
发表于 2012-3-27 10:50:22
我的是linux 64位。
1、我这个问题是因为 lock_sga 没有设置的问题?还是内存就是不够了?
2、怎么能查看oracle实际上占得内存?
3、另外,如果安装oracle 11g, lock_sga 是不是跟AMM有冲突?

[ 本帖最后由 tohjb 于 2012-3-28 21:56 编辑 ]

回复 只看该作者 道具 举报

4#
发表于 2012-3-27 13:48:33
1.                total             used                free     shared    buffers     cached
Mem:      32949816   32854900      94916          0       3596   16273824
内存也没有很大的剩余啊.
2.你查看sga,pga剩余的内存.然后减一下就知道用多少啦。
3.lock_sga和asm没啥冲突。但是不建议设置为true。当你物理内存没有25g的时候你数据库是启动不了的。

回复 只看该作者 道具 举报

5#
发表于 2012-3-28 18:10:24
cached 有16G呢。

另外,如何查看sga和pga占的实际内存? 楼上说的我不是很明白。

原帖由 vicry21 于 2012-3-27 13:48 发表
1.                total             used                free     shared    buffers     cached
Mem:      32949816   32854900      94916          0       3596   16273824
内存也没有很大的剩余啊.
2.你查看 ...

回复 只看该作者 道具 举报

6#
发表于 2012-3-28 21:55:46
http://www.dbanotes.net/database/oracle_11g_amm.html

这个里面提到:
如果初始化参数 LOCK_SGA = true ,则 AMM 是不可用的。

回复 只看该作者 道具 举报

7#
发表于 2012-3-30 08:39:28
ipcs -m 看下内存段分配情况

回复 只看该作者 道具 举报

8#
发表于 2012-3-30 09:24:27
total       used       free     shared    buffers     cached
Mem:      32949816   32854900      94916          0       3596   16273824

从这里看物理内存使用已经到了99.8%,所以要用到swap了。  

sga用了25G,pga再用一些,
一共才32G ,所以os能用的就不多了,   应该是分配给oracle的太多了,操作系统可用的太少了。

建议  查看sga的建议值 进行更改。

回复 只看该作者 道具 举报

9#
发表于 2012-3-30 20:16:52
SGA 25G , physical memory 32G ==> 78% memory


使用一下语句 ,可以大致查询Oracle Server的内存使用量:

SELECT a.SGA_MEM + b.PGA_MEM "TOTAL_MEMORY"
    FROM (SELECT SUM(current_size) / 1024 / 1024 "SGA_MEM"
            FROM v$sga_dynamic_components,
                 (SELECT SUM(pga_alloc_mem) / 1024 / 1024 "PGA_MEM"
                    FROM v$process) a
           WHERE component IN ('shared pool',
                               'large pool',
                               'java pool',
                               'streams pool',
                               'DEFAULT buffer cache')) a,
         (SELECT SUM(pga_alloc_mem) / 1024 / 1024 "PGA_MEM" FROM v$process) b;

建议:

1. 使用LOCK_SGA=TRUE 将sga pin在memory中
2. 观察sga target advice 合理设置SGA SIZE
3. 使用LARGE PAGE TECH保证SGA的shm在内存中

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-24 09:45 , Processed in 0.047351 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569