最近在64位 linux 上安装了一个oracle 10g数据库,最大的感受是:
1、所有问题都在网上能查到,离开互联网恐怕就完蛋了
2、安装前一定要看官方文档,切记!切记!否则如入地狱般
由于服务器配置是4C 16G内存,所以得安装64位操作系统才能充分使用硬件。
介质下载
需要64位linux,找了找redhat不能随便下了,看了看oracle的 unbreakable linux,可能是账号有问题,也下不了。没办法想起了CentOS 6,找了几个能下的网站,在客户那以5M/s的速度一会就下完了,真快。
官方安装前检查文档,一定先看几遍!
Requirements For Installing Oracle10gR2 On RHEL 5_OEL 5 (x86_64) [ID 421308.1]
服务器型号是 浪潮机架式双路英信NF8560。
安装CentOS 6着实让人不省心,虽然安装步骤简易很多,难在最后安装类型和rpm包的选择,弄不好没KDE,开机后进入命令行界面,或者执行startx后没有任务条且没终端窗口,无法退出!有时不知道选中了哪几个包,进入的图形界面跟windows xp很像,但是图形界面不支持网卡,习惯图形的我没招了。太灵活的选择,让普通用户无所适从,这就是linux这么多年一直干不过windows的原因。
安装时选择中文界面方便。每回选的rpm包数都不一样,经过几番折腾终于能自动启动到图形界面了,上面熟悉的任务条,有管理工具、注销等下拉菜单,有终端就ok了。
为安装oracle 10g,检查并设置服务器环境
$ uname -a Linux dbserver 2.6.32-71.el6.x86_64 #1 SMP Fri May 20 03:51:51 BST 2011 x86_64 x86_64 x86_64 GNU/Linux
[root@dbserver ~]# dmidecode|grep 'Product' Product Name: NF8560 Product Name: NF8560
[root@dbserver ~]# lsb_release -a LSB Version: :core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch Distributor ID: CentOS Description: CentOS Linux release 6.0 (Final) Release: 6.0 Codename: Final
[root@dbserver ~]# getconf LONG_BIT 64
[root@dbserver ~]# cat /proc/meminfo MemTotal: 16318780 kB MemFree: 2072120 kB Buffers: 76556 kB Cached: 12791640 kB SwapCached: 0 kB Active: 3002100 kB Inactive: 10165604 kB Active(anon): 802752 kB Inactive(anon): 2071656 kB Active(file): 2199348 kB Inactive(file): 8093948 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 18563064 kB SwapFree: 18562336 kB Dirty: 16 kB Writeback: 0 kB AnonPages: 299720 kB Mapped: 2025564 kB Shmem: 2574760 kB Slab: 886836 kB SReclaimable: 512008 kB SUnreclaim: 374828 kB KernelStack: 7440 kB PageTables: 75272 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 26722452 kB Committed_AS: 13524232 kB VmallocTotal: 34359738367 kB VmallocUsed: 318936 kB VmallocChunk: 34349587660 kB HardwareCorrupted: 0 kB AnonHugePages: 55296 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 5376 kB DirectMap2M: 2082816 kB DirectMap1G: 14680064 kB
cpu型号 [root@dbserver ~]# cat /proc/cpuinfo |grep name|cut -f2 -d:|uniq -c 48 Intel(R) Xeon(R) CPU E7- 4807 @ 1.87GHz
修改网络配置
vi /etc/hosts 增加
192.168.1.2 dbserver
禁用防火墙
禁用selinux
网卡信息 [root@dbserver ~]# dmesg |grep -i eth Intel(R) Gigabit Ethernet Network Driver - version 2.1.0-k2 igb 0000:02:00.0: Intel(R) Gigabit Ethernet Network Connection igb 0000:02:00.0: eth0: (PCIe:2.5Gb/s:Width x1) 00:1b:21:af:cf:40 igb 0000:02:00.0: eth0: PBA No: fafa03-0d6 igb 0000:02:00.1: Intel(R) Gigabit Ethernet Network Connection igb 0000:02:00.1: eth1: (PCIe:2.5Gb/s:Width x1) 00:1b:21:af:cf:41 igb 0000:02:00.1: eth1: PBA No: fafa03-0d6 igb 0000:06:00.0: Intel(R) Gigabit Ethernet Network Connection igb 0000:06:00.0: eth2: (PCIe:2.5Gb/s:Width x4) 00:30:48:ff:93:2c igb 0000:06:00.0: eth2: PBA No: ffffff-0ff igb 0000:06:00.1: Intel(R) Gigabit Ethernet Network Connection igb 0000:06:00.1: eth3: (PCIe:2.5Gb/s:Width x4) 00:30:48:ff:93:2d igb 0000:06:00.1: eth3: PBA No: ffffff-0ff igb: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX ADDRCONF(NETDEV_UP): eth1: link is not ready ADDRCONF(NETDEV_UP): eth2: link is not ready ADDRCONF(NETDEV_UP): eth3: link is not ready eth0: no IPv6 routers present
[root@dbserver ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:1B:21:AF:CF:40 inet addr:192.168.1.2 Bcast:10.255.255.255 Mask:255.255.255.0 inet6 addr: fe80::21b:21ff:feaf:cf40/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:453718 errors:0 dropped:0 overruns:1 frame:0 TX packets:155515 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:151155641 (144.1 MiB) TX bytes:29829009 (28.4 MiB) Memory:faee0000-faf00000
eth1 Link encap:Ethernet HWaddr 00:1B:21:AF:CF:41 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Memory:f9fe0000-fa000000
eth2 Link encap:Ethernet HWaddr 00:30:48:FF:93:2C UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Memory:fafe0000-fb000000
eth3 Link encap:Ethernet HWaddr 00:30:48:FF:93:2D UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Memory:faf60000-faf80000
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:12250 errors:0 dropped:0 overruns:0 frame:0 TX packets:12250 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:736370 (719.1 KiB) TX bytes:736370 (719.1 KiB)
操作系统信息 root@dbserver ~]# cat /etc/issue CentOS Linux release 6.0 (Final)
内存信息 [root@dbserver ~]# grep tal /proc/meminfo MemTotal: 16318780 kB SwapTotal: 18563064 kB VmallocTotal: 34359738367 kB HugePages_Total: 0 [root@dbserver ~]# free -mt total used free shared buffers cached Mem: 15936 13919 2016 0 75 12495 -/+ buffers/cache: 1348 14587 Swap: 18127 0 18127 Total: 34064 13920 20143
内核参数
[root@dbserver ~]# vi /etc/sysctl.conf 增加
kernel.shmall = 8388608 kernel.shmmax = 17179869184 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 1048576 net.core.rmem_max = 1048576 net.core.wmem_default = 262144 net.core.wmem_max = 262144
修改系统限制 [root@dbserver ~]# vi /etc/security/limits.conf
增加 oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536
[root@dbserver ~]# vi /etc/pam.d/login
增加
session required pam_limits.so
查看限制 [root@dbserver ~]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 127375 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 10240 cpu time (seconds, -t) unlimited max user processes (-u) 1024 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
profile文件 [root@dbserver ~]# cat /home/oracle/.bash_profile # .bash_profile
# Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export ORACLE_BASE=/home/app/oracle export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export ORACLE_OWNER=oracle export ORACLE_SID=orcl export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_TERM=xterm export PATH=/usr/sbin:$PATH export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin/ export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib #ulimit -u 16384 -n 65536 umask 022
if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi
[oracle@dbserver ~]$ date 2011年 09月 24日 星期六 11:49:52 CST
以oracle用户登录,通过U盘将10g安装介质拷贝到/home/app下,解包
$ gzip -dc 10201_database_linux_x86_64.cpio.gz | cpio -idm
$ gunzip p6810189_10204_Linux-x86-64.zip
$ cd database
$./runInstaller –ignoreSysPrereqs
根据提示选择定制安装,然后通过系统检查后,选择只安装软件,在安装过程中可能会提示ins_emdb.mk编译错误:

忽略,继续安装。后面安装补丁10.2.0.4,编译时就不会再出现错误了,全部OK。
建库后调整:
- alter database datafile 1 resize 600m;
- alter database datafile 3 resize 400m;
- alter database datafile 2 resize 4000m;
- alter database tempfile 1 resize 4000m;
- alter tablespace undotbs1 add datafile '/app/oradata/orcl/undotbs02.dbf' size 4g;
- alter database datafile 4 autoextend off;
建库后,进行简单的测试,发现磁盘写性能相当强悍,由于是RAID10,添加undo文件时的top中看到写入速度能达到1000M/s!难道我看错了:

不过通过insert table t1 select * from t1; 测试填充数据时,速度也能达到200M/s:
比RAID5的40M/s 强多了。
为了定期备份数据库,增加了一个计划任务,定期执行expdb.sh脚本:
# backup database export ORACLE_BASE=/u01 export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1 export ORACLE_OWNER=oracle export ORACLE_SID=abc export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export ORACLE_TERM=xterm export PATH=/usr/sbin:$PATH export PATH=$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH=$ORACLE_HOME/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin/ export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export time=`date +%Y%m%d`
find /bak -name a*.dmp -mtime +15 -exec rm {} \;
exp xxx/xxx file=/bak/a$time.dmp log=/bak/a$time.log
遇到的一些问题及解决办法
--------------------------------------------
简化并启用dbshut dbstart脚本
为了便于后期管理,调整dbstart、dbshut脚本,都在$ORACLE_HOME/bin 目录下
查找:
ORACLE_HOME_LISTNER
将其改为: ORACLE_HOME_LISTNER=$ORACLE_HOME
修改/etc/oratab,将最后一行的N 改为Y
例如 orcl:/u01/product/10.2.0/db_1:Y
顺便说一句,dbstart里面有启动侦听的命令,无须再执行lsnrctl start了。
--------------------------------------------
调大sga后,启动时报错 ORA-27125:unable to create shared memory segment
1.确定安装oracle所使用的用户组 在oracle用户下执行命令id
可以看到oracle组dba id 501
2.修改内核参数 echo 501 >/proc/sys/vm/hugetlb_shm_group
再启动不报错了。
将上述命令加入到启动中 vi /etc/rc.local
--------------------------------------------
安装过程出现报错
./oracle/product/10.2/ctx/lib/ins_ctx.mk'
glibc-devel需要32位的包,详细信息参考metalink文档ID 786995.1 需要注意,安装这个包后,要退出安装界面,而不要点CONTINUE,否则在ins_ctx.mk可以编译成功,虽然的包仍然会报错。
看看,还是rpm包的问题。
--------------------------------------------
关于telnet的中文乱码 装了简体中文版的RHEL5,系统显示中文都没问题,但是telnet远程登录过来就有中文乱码。 上网搜索,很多人说修改/etc/profile ,或者/etc/sysconfig/i18n。众说纷纭,都试了,都不好使。要么系统下变乱码,要么telnet下变乱码,中文文件名更是乱码。
后来仔细思考,在系统配置上下工夫估计是错误的方向。难道是选用的telnet客户端不支持系统使用的编码?于是命令行下输入locale,查看系统编码,显示zh_CN.UTF-8。(如果
安装简体中文的RHEL5,则系统默认使用zh_CN.UTF-8编码。如果是英文,默认是zh_US.UTF-8编码。) 而之前选用的netterm根本不支持utf-8编码。(据说最新的netterm支持utf-8了,但是没找到破解的,汗。。。) 于是找其他的telnet客户端软件,后来找到了putty,那叫一个字,好!绿色免费又开源,好多人都用,相比收费的netterm,还支持UTF-8编码。 官网地址: http://www.chiark.greenend.org.uk/~sgtatham/putty/,点击download可以下载。 putty使用方法: 1.打开putty.exe,主界面中输入Host Name(主机名)和Port(端口号),Connection type选择telnet。
2.如果远程主机使用utf-8编码,这里需要修改utf-8编码:
在软件界面的左边树形菜单中,选择Window下的Translation,在出现的下拉菜单Receive data assumed
to be in which charecter set中,选择UTF-8编码。
3.回到session界面,可以保存本次设置,以后登录时可以使用此设置。
4.单击open,即可telnet到远程主机。中文不乱码了。
还是putty好使啊
--------------------------------------------
ftp上来显示的时间与系统时间不一致,是因为默认情况下,vsftpd 是用GMT做为它的时间的,所以和系统的时间可能会不一致。修改也很简单: # vi /etc/vsftpd/vsftpd.conf
在最后加入一行: use_localtime=YES
存盘后,重启vsftpd: # service vsftpd restart
-------------------------------------------- 重建em 参考本博客或metalink文档ID278100.1
--------------------------------------------
缺少rpm包时,如果有条件上互联网可以执行 #yum install glibc
或
#yum install libXo.so.2
它会自己下载去找相关的rpm包,省心多了.
还可以:
yum install -y binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel glibc glibc-common glibc-devel gcc gcc-c++ libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel libXp
--------------------------------------------
vsftp 服务设置问题 ftp 192.168.1.2时提示
500 OOPS: cannot change directory:/home/oracle,目录权限没有问题。最后找到一个解决办法: # service vsftpd stop
# setsebool -P ftpd_disable_trans 1 # service vsftpd restart
如果出现: Could not change active booleans: Invalid boolean 再执行:
# setsebool -P ftp_home_dir=1
当然还得再重启vsftp服务
# service vsftpd restart
--------------------------------------------
修复乱码问题(未验证)
在网上下载zysong.ttf
修改java环境设置
cd $ORACLE_HOME/jdk/jre/lib
mv font.properties font.properties.bak
cp font.properties.zh_CN.Redhat font.properties cd $ORACLE_HOME/jre/1.4.2/lib
mv font.properties font.properties.bak
cp font.properties.zh_CN.Redhat font.properties
复制新的字体文件
mkdir -p /usr/share/fonts/zh_CN/TrueType/
cp ~/zysong.ttf /usr/share/fonts/zh_CN/TrueType/
清空缓存
rm $ORACLE_HOME/oc4j/j2ee/oc4j_applications/applications/em/em/cabo/images/cache/zhs/*.gif
提醒:以上修复乱码的方法从网上找的,未验证,我的解决方法是
$ export LANG=C
$ firefox
|