本帖最后由 lujiaguai 于 2016-12-14 09:28 编辑
唐老师,我检查了操作系统,发现是limits.conf没有做,不知道我有没有看错,这个参数在安装的时候会有提示执行一个脚本的,怎么可能忽略?
是这个参数导致了process问题吗?
下面是课堂上要求我们变更的LIMITS.CONF参数:
echo "oracle soft nproc 2047" >>/etc/security/limits.conf
echo "oracle hard nproc 16384" >>/etc/security/limits.conf
echo "oracle soft nofile 1024" >>/etc/security/limits.conf
echo "oracle hard nofile 65536" >>/etc/security/limits.conf
echo 'if [ $USER = "oracle" ]; then' >> /etc/profile
echo ' if [ $SHELL = "/bin/ksh" ]; then' >> /etc/profile
echo ' ulimit -p 16384' >> /etc/profile
echo ' ulimit -n 65536' >> /etc/profile
echo ' else' >> /etc/profile
echo ' ulimit -u 16384 -n 65536' >> /etc/profile
echo ' fi' >> /etc/profile
echo 'fi' >> /etc/profile
最后这几行/etc/profile是什么意思,也是必须要执行的吗?
下面是机器上cat /etc/security/limits.conf 的结果,全文如下,这里是空的。是我看错了吗?还是确实如此?
另外/etc/profile文件里没有上述的配置信息
/etc/sysctl.conf的参数核对过,是正确的,今天是想修改sem从32000改到320000,顺便核对其他几个文件,才发现limits.conf和profile缺了内容。
缺内容的这2个文件增加内容后可以立即生效吗,还是需要其他命令来让他生效?
[oracle@OADB1 ~]$ cat /etc/security/limits.conf
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - an user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
#
#<domain> <type> <item> <value>
#
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file
出现这样的问题,我甚至担心这台机器那些操作系统的依赖包也是没有完整,直接忽略了部分,进行下一步安装了。
这些依赖包有没有办法可以检查,也就是调出安装数据软件时候的那个检查过程?还是说只能通过官方文档去一个个比对?
我感觉更换新的操作系统跟数据库还是可以解决问题的,只要按照唐SIR上课的步骤来做,不会出现这些莫名其妙的问题。
我也核对了另一个切换日志比这个更频繁的数据库,每分钟3次左右的切换,是MTTR值为0,同样也有增量检查点,也是出现大量的checkpoint not complete
但是那个库的limits.conf和profile里面的内容都是正确的,也没有出现process died的问题
“不是的,在它下面有一段距离后你会看到“Completed checkpoint up to RBA“
上课时讲过:所有fast_start_mttr_target增量检查点,都是延迟登记的。启动该检查点的SCN时,内存中还有比这个SCN更老的脏块未写。如果很多的话当然会经常看到“Checkpoint not complete”,下一个或下下一个检查点事件去“Completed checkpoint up to RBA“
查下fast_start_mttr_target不要是0”
关于这个问题,实际数据库中MTTR=0的,也有增量检查点,这与有mttr值,在checkpoint not complete上什么区别吗?
从上面提到的另一个切换日志更频繁的数据库来看,那个库MTTR=0,日志里面也是大量连续不断的checkpoint not complete,但似乎跑的好好的,没有问题。
关于db_write_process参数的问题,这个我记得上课的说过,是oracle数据库自己定的,默认是CPU/8, 8核心及以下的CPU该值默认都是1。
但是课堂上修改过这个值,为了演示,当时记得至少增加到4还是8,我记不清了。
这个值在8核CPU以下的时候,生产环境中真的可以修改到2吗?
limits.conf文件,我看到文档中有stack segment,但是课堂的脚本里没有,只有nofile,nproc,这里需要补上吗?
Resource Shell Limit Resource Soft Limit Hard Limit
Open file descriptors
nofile
at least 1024
at least 65536
Number of processes available to a single user
nproc
at least 2047
at least 16384
Size of the stack segment of the process
stack
at least 10240 KB
at least 10240 KB, and at most 32768 KB
|