我们在Solaris上运行Oracle,默认情况下shell是csh.所以登录脚本也在csh中设置oracle_home,oracle_sid.但是我不喜欢csh而且想用bash来完成我的工作.那么如何在bash中获取csh登录脚本呢?
例如,以下是.cshrc文件中的内容.当使用bash时,我想使用这些变量.一种方法是再次复制变量并使用bash命令,例如export ORACLE_SID = TEST.但这样做需要我们维护两份文件.当我们更改数据库名称或升级数据库时,我需要单独维护bash登录文件.只是使用像这样的东西真好
在bash中使用.cshr,但它不起作用.
setenv ORACLE_SID TEST setenv ORACLE_HOME /oracle/TEST/home/products/10204 setenv EPC_DISABLED TRUE setenv MANPATH /usr/local/man:/usr/share/man setenv EDITOR vi setenv LD_LIBRARY_PATH $ORACLE_HOME/lib:/usr/sfw/lib/64 setenv NLS_LANG AMERICAN_AMERICA.UTF8 setenv NLS_DATE_FORMAT "DD-MON-RR"
以下是结果在Solaris上运行后,它显示有两个堆,但在我的理解,一个过程,只有一个堆这是一个大的连续内存,并且可以通过BRK进行管理,以扩大或缩小规模.对于anon内存,进程可以有许多anon内存,可以由mmap/munmap管理.我的理解是否正确?或者我错误地读了pmap的结果?
sol9 #pmap -sx pgrep testprog
... 00022000 3960 3960 3960 - 8K rwx-- [堆]
00400000 131072 131072 131072 - 4M rwx-- [堆]
...... FF390000 8 8 - - 8K rx-- libc_psr.so.1
FF3B0000 8 8 8 - 8K rwx-- [匿名]
...
总Kb 135968 135944 135112 -
在以下链接中
http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_flush_method
它说:这个变量的不同值可以对InnoDB性能产生显着影响.例如,在InnoDB数据和日志文件位于SAN上的某些系统上,已发现将innodb_flush_method设置为O_DIRECT会使简单SELECT语句的性能降低三倍.
为什么O_DIRECT会降低select语句的速度?
我正在阅读囤积内存分配器的源代码,并在gnuwrapper.cpp的文件中,有以下代码
#define CUSTOM_MALLOC(x) CUSTOM_PREFIX(malloc)(x)
Run Code Online (Sandbox Code Playgroud)
这是什么意思CUSTOM_PREFIX(malloc)(x)?是 CUSTOM_PREFIX一个功能?但作为一个功能,它没有在任何地方定义.如果它是可变的,那么我们如何才能使用变量var(malloc)(x)?
更多代码:
#ifndef __GNUC__
#error "This file requires the GNU compiler."
#endif
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>
#ifndef CUSTOM_PREFIX ==> here looks like it's a variable, so if it doesn't define, then define here.
#define CUSTOM_PREFIX
#endif
#define CUSTOM_MALLOC(x) CUSTOM_PREFIX(malloc)(x) ===> what's the meaning of this?
#define CUSTOM_FREE(x) CUSTOM_PREFIX(free)(x)
#define CUSTOM_REALLOC(x,y) CUSTOM_PREFIX(realloc)(x,y)
#define CUSTOM_MEMALIGN(x,y) CUSTOM_PREFIX(memalign)(x,y)
Run Code Online (Sandbox Code Playgroud) 我跟踪了一个oracle进程,发现它首先打开一个文件/etc/netconfig作为文件句柄11,然后256通过调用fcntl参数复制它F_DUPFD,然后close是原始文件句柄11.后来它使用文件句柄读取256.那么复制文件句柄有什么意义呢?为什么不只是处理原始文件句柄?
12931: 0.0006 open("/etc/netconfig", O_RDONLY|O_LARGEFILE) = 11
12931: 0.0002 fcntl(11, F_DUPFD, 0x00000100) = 256
12931: 0.0001 close(11) = 0
12931: 0.0002 read(256, " # p r a g m a i d e n".., 1024) = 1024
12931: 0.0003 read(256, " t s t p i _ c".., 1024) = 215
12931: 0.0002 read(256, 0x106957054, 1024) = 0
12931: 0.0001 lseek(256, 0, SEEK_SET) = …Run Code Online (Sandbox Code Playgroud) 当使用mmap分配一些匿名mem时,我们经常将起始地址设置为0/null,因此mmap将自己计算出起始地址.并且为了获得起始地址,它会工作以为整个虚拟存储空间找到一个可以分配mem的chuck的空洞.我想这是用户cpu而不是sys cpu计算的.如果虚拟内存是碎片化的,那么找到起始地址的时间会使用更多的用户cpu,是我理解正确的