November 17, 2005
Oracle初学者入门指南-什么是DSI?
作者:eygle
出处:http://blog.eygle.com
很多初学Oralce的朋友经常会问到一系列基础的问题,这些问题有的浅显,有的也许并不为众人周知,但是都曾经困扰过一群求知的朋友们.
从今天起,决定写一些浅显的基础的东西,一方面偷点懒,一方面可以为初学Oracle的朋友提供一些快速入门或粗略了解Oracle的便捷之路.
希望自己可以坚持下去.这个系列都将以:Oracle初学者入门指南为名.
新建立了一个分类,就叫做:Beginner.
我自己也正是这样一个Beginner.
开始这个题目是因为今天MSN上有一个朋友问到,什么是DSI?.
就把这做为第一个题目.
DSI是Data Server Internals的缩写,是Oracle公司内部用来培训Oracle售后工程师使用的教材.
这样的文档上通常都印着:Oracle Confidential:For internal Use Only.
所以传播这类文档通常是为Oracle所禁止的,但是因为一些特殊的原因,这些文档在民间也多有流传.
你可以从Google找到一些相关信息.但是关于任何DSI教材的交流,索取都是相当敏感的.
很多人因为文档机密所以趋之若鹜,这也许是不适当的.
对于初学者,这些文档是不适宜的,因为从这里开始相对艰深,这些教材需要阅读者具有相当深厚的技术基础;初学者应该从基础学起,当你打好基础之后,也学有一天,你就可以来阅读这些文档.
Posted by eygle at 10:02 PM | Comments (7)
Linux上shmmax参数的设置及含义
作者:eygle
出处:http://blog.eygle.com
shmmax内核参数定义单个共享内存段的最大值,如果该参数设置小于Oracle SGA设置,那么SGA就会被分配多个共享内存段。这在繁忙的系统中可能成为性能负担,带来系统问题。Linux上该参数的缺省值通常为32M。
[root@neirong root]# more /proc/sys/kernel/shmmax 33554432 |
可以通过ipcs命令查看此设置下共享内存的分配,我们可以看到Oracle分配了多个共享内存段以满足SGA设置的需要:
[root@neirong root]# ipcs -sa ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 884736 oracle 640 4194304 14 0x00000000 917505 oracle 640 33554432 14 0x00000000 950274 oracle 640 33554432 14 0x00000000 983043 oracle 640 33554432 14 0x00000000 1015812 oracle 640 33554432 14 0x00000000 1048581 oracle 640 33554432 14 0x00000000 1081350 oracle 640 33554432 14 0x00000000 1114119 oracle 640 33554432 14 0x00000000 1146888 oracle 640 33554432 14 0x00000000 1179657 oracle 640 33554432 14 0x00000000 1212426 oracle 640 33554432 14 0x00000000 1245195 oracle 640 33554432 14 0x00000000 1277964 oracle 640 33554432 14 0x00000000 1310733 oracle 640 33554432 14 0x00000000 1343502 oracle 640 33554432 14 0x00000000 1376271 oracle 640 33554432 14 0x00000000 1409040 oracle 640 33554432 14 0x00000000 1441809 oracle 640 33554432 14 0x00000000 1474578 oracle 640 33554432 14 0x00000000 1507347 oracle 640 33554432 14 0x00000000 1540116 oracle 640 33554432 14 0x00000000 1572885 oracle 640 33554432 14 0x00000000 1605654 oracle 640 33554432 14 0x00000000 1638423 oracle 640 33554432 14 0x00000000 1671192 oracle 640 33554432 14 0x00000000 1703961 oracle 640 33554432 14 0x7a9c9900 1736730 oracle 640 4194304 56 ------ Semaphore Arrays -------- key semid owner perms nsems 0xfcf02e10 229376 oracle 640 154 ------ Message Queues -------- key msqid owner perms used-bytes messages |
使用pmap我们可以看到每个共享内存段的地址空间
[root@neirong root]# ps -ef|grep 3102 oracle 3102 1 0 09:27 ? 00:00:26 ora_dbw0_hsmkt root 3447 3397 0 10:39 pts/4 00:00:00 grep 3102 [root@neirong root]# pmap 3102 ora_dbw0_hsmkt[3102] 08048000 (37308 KB) r-xp (68:06 1525072) /opt/oracle/product/9.2.0/bin/oracle 0a4b7000 (8804 KB) rw-p (68:06 1525072) /opt/oracle/product/9.2.0/bin/oracle 0ad50000 (380 KB) rw-p (00:00 0) 50000000 (4096 KB) rw-s (00:04 884736) /SYSV00000000 51000000 (32768 KB) rw-s (00:04 917505) /SYSV00000000 53000000 (32768 KB) rw-s (00:04 950274) /SYSV00000000 55000000 (32768 KB) rw-s (00:04 983043) /SYSV00000000 57000000 (32768 KB) rw-s (00:04 1015812) /SYSV00000000 59000000 (32768 KB) rw-s (00:04 1048581) /SYSV00000000 5b000000 (32768 KB) rw-s (00:04 1081350) /SYSV00000000 5d000000 (32768 KB) rw-s (00:04 1114119) /SYSV00000000 5f000000 (32768 KB) rw-s (00:04 1146888) /SYSV00000000 61000000 (32768 KB) rw-s (00:04 1179657) /SYSV00000000 63000000 (32768 KB) rw-s (00:04 1212426) /SYSV00000000 65000000 (32768 KB) rw-s (00:04 1245195) /SYSV00000000 67000000 (32768 KB) rw-s (00:04 1277964) /SYSV00000000 69000000 (32768 KB) rw-s (00:04 1310733) /SYSV00000000 6b000000 (32768 KB) rw-s (00:04 1343502) /SYSV00000000 6d000000 (32768 KB) rw-s (00:04 1376271) /SYSV00000000 6f000000 (32768 KB) rw-s (00:04 1409040) /SYSV00000000 71000000 (32768 KB) rw-s (00:04 1441809) /SYSV00000000 73000000 (32768 KB) rw-s (00:04 1474578) /SYSV00000000 75000000 (32768 KB) rw-s (00:04 1507347) /SYSV00000000 77000000 (32768 KB) rw-s (00:04 1540116) /SYSV00000000 79000000 (32768 KB) rw-s (00:04 1572885) /SYSV00000000 7b000000 (32768 KB) rw-s (00:04 1605654) /SYSV00000000 7d000000 (32768 KB) rw-s (00:04 1638423) /SYSV00000000 7f000000 (32768 KB) rw-s (00:04 1671192) /SYSV00000000 81000000 (32768 KB) rw-s (00:04 1703961) /SYSV00000000 83000000 (4 KB) r--s (00:04 1736730) /SYSV7a9c9900 83001000 (644 KB) rw-s (00:04 1736730) /SYSV7a9c9900 830a2000 (4 KB) r--s (00:04 1736730) /SYSV7a9c9900 830a3000 (3444 KB) rw-s (00:04 1736730) /SYSV7a9c9900 b6ec2000 (44 KB) r-xp (68:03 32811) /lib/libnss_files-2.3.2.so b6ecd000 (4 KB) rw-p (68:03 32811) /lib/libnss_files-2.3.2.so b6ece000 (512 KB) rw-p (68:03 40360) /dev/zero b6f4e000 (1140 KB) rw-p (00:00 0) b706b000 (1224 KB) r-xp (68:03 114692) /lib/tls/libc-2.3.2.so b719d000 (12 KB) rw-p (68:03 114692) /lib/tls/libc-2.3.2.so b71a0000 (12 KB) rw-p (00:00 0) b71a3000 (72 KB) r-xp (68:03 32795) /lib/libnsl-2.3.2.so b71b5000 (4 KB) rw-p (68:03 32795) /lib/libnsl-2.3.2.so b71b6000 (8 KB) rw-p (00:00 0) b71b8000 (52 KB) r-xp (68:03 114696) /lib/tls/libpthread-0.60.so b71c5000 (4 KB) rw-p (68:03 114696) /lib/tls/libpthread-0.60.so b71c6000 (8 KB) rw-p (00:00 0) b71c8000 (132 KB) r-xp (68:03 114694) /lib/tls/libm-2.3.2.so b71e9000 (4 KB) rw-p (68:03 114694) /lib/tls/libm-2.3.2.so b71ea000 (8 KB) r-xp (68:03 32791) /lib/libdl-2.3.2.so b71ec000 (4 KB) rw-p (68:03 32791) /lib/libdl-2.3.2.so b71ed000 (2940 KB) r-xp (68:06 491677) /opt/oracle/product/9.2.0/lib/libjox9.so b74cc000 (1088 KB) rw-p (68:06 491677) /opt/oracle/product/9.2.0/lib/libjox9.so b75dc000 (12 KB) rw-p (00:00 0) b75df000 (4 KB) r-xp (68:06 491685) /opt/oracle/product/9.2.0/lib/libskgxn9.so b75e0000 (8 KB) rw-p (68:06 491685) /opt/oracle/product/9.2.0/lib/libskgxn9.so b75e2000 (4 KB) r-xp (68:06 491567) /opt/oracle/product/9.2.0/lib/libskgxp9.so b75e3000 (4 KB) ---p (68:06 491567) /opt/oracle/product/9.2.0/lib/libskgxp9.so b75e4000 (4 KB) rw-p (68:06 491567) /opt/oracle/product/9.2.0/lib/libskgxp9.so b75e5000 (4 KB) r-xp (68:06 491688) /opt/oracle/product/9.2.0/lib/libodmd9.so b75e6000 (4 KB) rw-p (68:06 491688) /opt/oracle/product/9.2.0/lib/libodmd9.so b75e7000 (4 KB) r-xp (68:03 101245) /etc/libcwait.so b75e8000 (4 KB) rw-p (68:03 101245) /etc/libcwait.so b75ea000 (4 KB) rw-p (00:00 0) b75eb000 (84 KB) r-xp (68:03 32778) /lib/ld-2.3.2.so b7600000 (4 KB) rw-p (68:03 32778) /lib/ld-2.3.2.so bfff8000 (32 KB) rwxp (00:00 0) mapped: 881332 KB writable/private: 12056 KB shared: 827392 KB |
为了避免多个共享内存段,我们可以修改shmmax内核参数,使SGA存在于一个共享内存段中。
通过修改/proc/sys/kernel/shmmax参数可以达到此目的。
[root@neirong root]# echo 1073741824 > /proc/sys/kernel/shmmax [root@neirong root]# more /proc/sys/kernel/shmmax 1073741824 |
这里设为1G。
对于shmmax文件的修改,系统重新启动后会复位。可以通过修改 /etc/sysctl.conf 使更改永久化。
在该文件内添加以下一行
这个更改在系统重新启动后生效
kernel.shmmax = 1073741824
重起数据库使更改生效:
SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> ! [oracle@neirong oracle]$ ipcs -sa ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status ------ Semaphore Arrays -------- key semid owner perms nsems ------ Message Queues -------- key msqid owner perms used-bytes messages [oracle@neirong oracle]$ exit exit SQL> startup ORACLE instance started. Total System Global Area 839980852 bytes Fixed Size 452404 bytes Variable Size 201326592 bytes Database Buffers 637534208 bytes Redo Buffers 667648 bytes Database mounted. Database opened. SQL> ! ipcs -sa ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x7a9c9900 1769472 oracle 640 859832320 35 ------ Semaphore Arrays -------- key semid owner perms nsems 0xfcf02e10 360448 oracle 640 154 ------ Message Queues -------- key msqid owner perms used-bytes messages |
此时进程的pmap映射显示为:
[oracle@neirong bdump]$ pmap 4178 ora_lgwr_hsmkt[4178] 08048000 (37308 KB) r-xp (68:06 1525072) /opt/oracle/product/9.2.0/bin/oracle 0a4b7000 (8804 KB) rw-p (68:06 1525072) /opt/oracle/product/9.2.0/bin/oracle 0ad50000 (3320 KB) rw-p (00:00 0) 50000000 (835584 KB) rw-s (00:04 1835008) /SYSV7a9c9900 83000000 (4 KB) r--s (00:04 1835008) /SYSV7a9c9900 83001000 (644 KB) rw-s (00:04 1835008) /SYSV7a9c9900 830a2000 (4 KB) r--s (00:04 1835008) /SYSV7a9c9900 830a3000 (3444 KB) rw-s (00:04 1835008) /SYSV7a9c9900 b6bb7000 (4112 KB) rw-p (00:00 0) b6fbb000 (44 KB) r-xp (68:03 32811) /lib/libnss_files-2.3.2.so b6fc6000 (4 KB) rw-p (68:03 32811) /lib/libnss_files-2.3.2.so b6fc7000 (512 KB) rw-p (68:03 40360) /dev/zero b7047000 (144 KB) rw-p (00:00 0) b706b000 (1224 KB) r-xp (68:03 114692) /lib/tls/libc-2.3.2.so b719d000 (12 KB) rw-p (68:03 114692) /lib/tls/libc-2.3.2.so b71a0000 (12 KB) rw-p (00:00 0) b71a3000 (72 KB) r-xp (68:03 32795) /lib/libnsl-2.3.2.so b71b5000 (4 KB) rw-p (68:03 32795) /lib/libnsl-2.3.2.so b71b6000 (8 KB) rw-p (00:00 0) b71b8000 (52 KB) r-xp (68:03 114696) /lib/tls/libpthread-0.60.so b71c5000 (4 KB) rw-p (68:03 114696) /lib/tls/libpthread-0.60.so b71c6000 (8 KB) rw-p (00:00 0) b71c8000 (132 KB) r-xp (68:03 114694) /lib/tls/libm-2.3.2.so b71e9000 (4 KB) rw-p (68:03 114694) /lib/tls/libm-2.3.2.so b71ea000 (8 KB) r-xp (68:03 32791) /lib/libdl-2.3.2.so b71ec000 (4 KB) rw-p (68:03 32791) /lib/libdl-2.3.2.so b71ed000 (2940 KB) r-xp (68:06 491677) /opt/oracle/product/9.2.0/lib/libjox9.so b74cc000 (1088 KB) rw-p (68:06 491677) /opt/oracle/product/9.2.0/lib/libjox9.so b75dc000 (12 KB) rw-p (00:00 0) b75df000 (4 KB) r-xp (68:06 491685) /opt/oracle/product/9.2.0/lib/libskgxn9.so b75e0000 (8 KB) rw-p (68:06 491685) /opt/oracle/product/9.2.0/lib/libskgxn9.so b75e2000 (4 KB) r-xp (68:06 491567) /opt/oracle/product/9.2.0/lib/libskgxp9.so b75e3000 (4 KB) ---p (68:06 491567) /opt/oracle/product/9.2.0/lib/libskgxp9.so b75e4000 (4 KB) rw-p (68:06 491567) /opt/oracle/product/9.2.0/lib/libskgxp9.so b75e5000 (4 KB) r-xp (68:06 491688) /opt/oracle/product/9.2.0/lib/libodmd9.so b75e6000 (4 KB) rw-p (68:06 491688) /opt/oracle/product/9.2.0/lib/libodmd9.so b75e7000 (4 KB) r-xp (68:03 101245) /etc/libcwait.so b75e8000 (4 KB) rw-p (68:03 101245) /etc/libcwait.so b75ea000 (4 KB) rw-p (00:00 0) b75eb000 (84 KB) r-xp (68:03 32778) /lib/ld-2.3.2.so b7600000 (4 KB) rw-p (68:03 32778) /lib/ld-2.3.2.so bfffc000 (16 KB) rwxp (00:00 0) mapped: 899660 KB writable/private: 18096 KB shared: 839680 KB |
实际上,如果没有修改shmmax参数,Oracle在启动过程中就会报出以下错误:
Starting ORACLE instance (normal) Thu Nov 17 09:27:29 2005 WARNING: EINVAL creating segment of size 0x0000000033400000 fix shm parameters in /etc/system or equivalent |
Posted by eygle at 6:34 PM | Comments (7)
再招一名DBA
作者:eygle
出处:http://blog.eygle.com
最近事情越来越多,数据库方面感觉人手紧张,决定再招一名DBA.
要求:
1.熟悉Linux/Solaris操作系统,具有简单的Shell脚本编写能力
2.熟悉Oracle数据库原理,备份恢复,SQL优化等
3.有高级复制、DataGuard维护经验者优先
4.工作积极主动,具有良好的沟通能力、学习钻研能力和团队合作精神。
公司网址:http://www.hurray.com.cn
有意者请发简历至: eygle.com@gmail.com
注:11月23日前,一直接受简历.楼下有朋友混淆视听,不要误解:D人还没招到呢.
Posted by eygle at 10:32 AM | Comments (31)
