注意,本文档针对初级DBA
==============1、准备环境
>上传安装包,注意安装包位数,权限
>挂载ISO镜像,安装软件包
gcc*
gcc-c++*
glibc*
glibc-common*
glibc-devel*
glibc-headers*
libstdc++*
libaio*
sysstat
libcap
make-3.81-3.el5
binutils-2.17.50.0.6-12.el5
compat-libstdc++*
elfutils-libelf*
libgcc*
unixODBC*
unixODBC-devel*
ksh*
pdksh
compat-libstdc++-33
compat-libcap1
图形化包 xorg-x11-apps
根据环境预检查时提示缺少的软件包进行安装
>确定好IP地址,pub+priv+vip+scan,双节点7个ip
>ntp时间配置一致或者手动修改为一致,使用CTSS
>关闭sendmail,(主要是会影响系统性能)
service sendmail stop
然后执行
chkconfig sendmail off
chkconfig --list sendmail
得到结果全为off就OK
>修改/dev/shm共享内存大小,默认是内存一半,一般修改为内存的80%
1)查看大小
df -h /dev/shm
2)修改大小
vi /etc/fstab
tmpfs /dev/shm tmpfs defaults,size=4096M 0 0
[root@ASM_ora ~]# umount /dev/shm
umount: /dev/shm: device is busy
umount: /dev/shm: device is busy
fuser -km /dev/shm
3)重新挂载
umount /dev/shm
mount /dev/shm
4)查看修改后的大小
df -h /dev/shm
5)开机启动
>配置好共享磁盘及裸设备
虚拟化本地硬盘要分区
linux6.4
[root@node1 ~]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules
linux5.4
[root@node1 ~]# vi /etc/udev/rules.d/60-raw.rules
增加如下内容:
ACTION=="add", KERNEL=="/dev/sdb1",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="17",RUN+="/bin/raw /dev/raw/raw1 %M %m"
ACTION=="add", KERNEL=="/dev/sdc1",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="33",RUN+="/bin/raw /dev/raw/raw2 %M %m"
ACTION=="add", KERNEL=="/dev/sdd1",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="49",RUN+="/bin/raw /dev/raw/raw3 %M %m"
ACTION=="add", KERNEL=="/dev/sde1",RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", ENV{MAJOR}=="8",ENV{MINOR}=="65",RUN+="/bin/raw /dev/raw/raw4 %M %m"
KERNEL=="raw[1-4]", OWNER="oracle", GROUP="oinstall", MODE="770"
[root@rac1 ~]# start_udev
聚合存储修改查看/dev/dm-*所属用户、属组、权限和/dev/mapper/*设备
使用udev规则修改设备读写权限
vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="dm-0", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="dm-1", OWNER="oracle", GROUP="oinstall", MODE="0660"
KERNEL=="dm-2", OWNER="oracle", GROUP="oinstall", MODE="0660"
KERNEL=="dm-3", OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="dm-4", OWNER="oracle", GROUP="oinstall", MODE="0660"
KERNEL=="dm-5", OWNER="oracle", GROUP="oinstall", MODE="0660"
注意:
虽然ASM中使用的/dev/mapper/下的设备,但是这些设备最终还是连接到/dev/dm-*这些设备。所以如果需要使用/dev/mapper/下的设备,必须udev修改/dev/dm-*这些设备读写权限。虽然/dev/dm-*这些设备读写权限能够通过chmod更改,但是一定重启存储或者重启服务器之后之前更改的权限又变回来了。所以必须使用udev修改这些设备权限。
/dev/目录下有多少个dm-*就写多少个,OWNER和asmadmin可以不用这么严格,但是MODE权限必须设置成0660。比如dm-1现在对应的是data11这个设备,但是如果其中一台存储宕机,dm-1对应的一定不是data11了。
===============2、前期系统配置
>设置内核参数和其他参数:
vi /etc/sysctl.conf
kernel.core_uses_pid = 1
kernel.shmall = 2097152
kernel.shmmax = 68718476736
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default = 1048576
net.core.wmem_default = 262144
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
sysctl -p
>修改用户资源限制
vi /etc/security/limits.conf
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
>修改用户登陆限制
vi /etc/pam.d/login
session required /lib64/security/pam_limits.so
session required pam_limits.so
vi /etc/profile
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
if [ $USER = "grid" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
执行source /etc/profile命令使配置生效
>配置/etc/hosts文件
vi /etc/hosts
#public ip
192.168.0.11 rac1
192.168.0.12 rac2
#priv ip
10.0.0.11 rac1-priv
10.0.0.12 rac2-priv
#virtual ip
192.168.0.111 rac1-vip
192.168.0.112 rac2-vip
#scan ip
192.168.0.110 racscan
>创建用户及目录
groupadd -g 501 oinstall
groupadd -g 502 dba
groupadd -g 503 oper
groupadd -g 504 asmadmin
groupadd -g 505 asmoper
groupadd -g 506 asmdba
useradd -g oinstall -G dba,asmdba,oper,root oracle -m
useradd -g oinstall -G asmadmin,asmdba,asmoper,oper,dba grid -m
mkdir -p /u01/app/11.2.0/
chown -R grid:oinstall /u01/app/11.2.0/
mkdir -p /u01/app/oraInventory/
chown -R grid:oinstall /u01/app/oraInventory/
mkdir -p /u01/app/grid/
mkdir -p /u01/app/oracle/
chown -R grid:oinstall /u01/app/grid/
chown -R oracle:oinstall /u01/app/oracle/
chmod -R 775 /u01/app/
>设置用户密码
passwd oracle
passwd grid
>设置用户环境变量
su - oracle
vi .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=orcl1
export ORACLE_TERM=xterm
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_DATE_FORMAT="yyyy-mm-dd hh24:mi:ss"
export PATH=$ORACLE_HOME/bin:$BASE_PATH:$PATH:$HOME/bin
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
umask 022
#export ORA_CRS_HOME=$ORACLE_BASE/product/10.2.0/crs_1(10g)
文件生效 source .bash_profile
su - grid
vi .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/11.2.0/grid
export ORACLE_SID=+ASM1
export ORACLE_TERM=xterm
export PATH=$ORACLE_HOME/bin:$BASE_PATH:$PATH:$HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
umask 022
文件生效 source .bash_profile
>配置用户ssh信任关系
grid用户使用grid目录里的文件执行
./sshUserSetup.sh -user grid -hosts "rac1 rac2" -advanced -noPromptPassphrase
oracle用户使用database目录里的文件执行
./sshUserSetup.sh -user oracle -hosts "rac1 rac2" -advanced -noPromptPassphrase
>前期环境检查,如有问题,继续修复
./runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
./runInstaller -ignoreSysPrereqs(10g)
===============3、安装grid集群软件
./runInstaller
===============4、添加磁盘组,DATA,ARCH
asmca
注意磁盘组模式
===============5、安装oracle软件
./runInstaller
===============6、创建oracle数据库库
dbca
注意
processes修改为最佳大小
内存为80%
字符集为中文
安装最后修改redo日志大小
安装完毕每个节点再添加两组redo日志
>修改local_listener,以便让scan ip可用(每个节点都做一次)
orcl1
SQL> show parameter local_listener;
NAME TYPE VALUE------------------------------------ ----------- ------------------------------
local_listener string (DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=rac-
orcl01)(PORT=1521))))
SQL> alter system set local_listener='(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.5.103)(PORT=1521))))' scope=both sid='orcl1';
System altered.
=============== 7、重新安装需要删除的目录
rm -rf /u01/app/11.2.0.2/grid/*
rm -rf /u01/app/grid/*
rm -rf /u01/11.2.0/grid/*
rm -rf /u01/app/oraInventory/*
rm -rf /var/opt/ora*
rm -rf /etc/init.d/init.ohasd /etc/init.d/ohasd
rm -rf /u01/app/oracle/product除外的其它
rm -rf /tmp/*
rm -rf /etc/ora*
>执行脚本2时报错,重新执行脚本前
$ORACLE_HOME/crs/install/roothas.pl -delete -force -verbose
>复制虚拟机后记得修改主机名
>发现不到磁盘,执行
chmod 6755 $ORACLE_HOME/bin/oracle
>清空裸设备文件内容
当时试过没有使用带参数的可以生效
dd if=/dev/zero of=/dev/raw/raw3
这样也行
dd if=/dev/zero of=/dev/sdb
===============8、修改redo日志
alter database datafile '+DATA/aams/datafile/system.260.839517123' resize 20G;
alter database datafile '+DATA/aams/datafile/sysaux.261.839517125' resize 20G;
alter database datafile '+DATA/aams/datafile/undotbs1.262.839517129' resize 20G;
alter database tempfile '+DATA/aams/tempfile/temp.263.839517129' resize 20G;
select group#,thread#,bytes/1024/1024 "MB",members,status from v$log;
select member from v$logfile;
alter database add logfile thread 1 group 5('+DATA') size 512M;
alter database add logfile thread 1 group 6('+DATA') size 512M;
alter database add logfile thread 2 group 7('+DATA') size 512M;
alter database add logfile thread 2 group 8('+DATA') size 512M;
alter database drop logfile group 1;
alter database drop logfile group 2;
alter database drop logfile group 3;
alter database drop logfile group 4;