AIX安装步骤详细

装完后要执行
Oracle 11G 的默认的profile 密码有效时长默认是 180 天(10G中是没有此限制),请对新装11G生产库应用账号对应的profile(默认是DEFAULT)改为不限制,否则180天后,应用账号自动锁定会导致故障!!
修改方法如下:
SQL> alter profile DEFAULT limit PASSWORD_LIFE_TIME UNLIMITED;

#ruut登陆
ssh ruut@192.192.1.26 password:ibm44ibm
#切换到root用户
su - root password:root

smit user 界面user管理,先清理 grid,oracle 用户才能删除组
smit group 界面group管理,先清理要创建的5个用户组

创建五个用户组:asmadmin,dba,asmdba,asmoper,oinstall。需保证各个节点间的gid一致。

mkgroup -‘A’ id=’1000’ adms=’root’ oinstall
mkgroup -‘A’ id=’1100’ adms=’root’ asmadmin
mkgroup -‘A’ id=’1200’ adms=’root’ dba
mkgroup -‘A’ id=’1300’ adms=’root’ asmdba
mkgroup -‘A’ id=’1301’ adms=’root’ asmoper

创建两个用户:oracle,grid。需保证各个节点间的uid一致。

mkuser id=’1100’ pgrp=’oinstall’ groups=’asmadmin,asmdba,asmoper’ home=’/home/grid’ grid
mkuser id=’1101’ pgrp=’oinstall’ groups=’dba,asmdba’ home=’/home/oracle’ oracle
passwd grid
test1234
passwd oracle
test1234

修改用户属性

chuser capabilities=CAP_BYPASS_RAC_VMM,CAP_PROPAGATE,CAP_NUMA_ATTACH oracle
chuser capabilities=CAP_BYPASS_RAC_VMM,CAP_PROPAGATE,CAP_NUMA_ATTACH grid
lsuser -a capabilities grid
lsuser -a capabilities oracle

修改/etc/hosts
vi /etc/hosts
10.154.52.93 statdb1
10.154.52.95 statdb2
10.154.52.94 statdb1-vip
10.154.52.96 statdb2-vip
192.168.52.93 statdb1-priv
192.168.52.95 statdb2-priv
10.154.52.92 statdb-scan

应用 hostname pubIP VIP priIP scanIP disk
统计DB1 statdb1 10.154.52.93 10.154.52.94 192.168.52.93 10.154.52.92 rhdiskpower0-389
统计DB2 statdb2 10.154.52.95 10.154.52.96 192.168.52.95

验证grid及oracle
节点1

su - grid

$ id
uid=1100(grid) gid=1000(oinstall) groups=1100(asmadmin),1300(asmdba),1301(asmoper)
$ exit

su - oracle

$ id
uid=1101(oracle) gid=1000(oinstall) groups=1200(dba),1300(asmdba)
节点2

su - grid

$ id
uid=1100(grid) gid=1000(oinstall) groups=1100(asmadmin),1300(asmdba),1301(asmoper)
$ exit

su - oracle

$ id
uid=1101(oracle) gid=1000(oinstall) groups=1200(dba),1300(asmdba)

内存参数设置:
vmo -p -o maxperm%=90
vmo -p -o minperm%=3
vmo -p -o maxclient%=90
vmo -p -o maxpin%=90
vmo -p -o strict_maxperm=0
vmo -p -o strict_maxclient=1
vmo -p -o lru_file_repage=0 (报错,忽略)
vmo -r -o page_steal_meth

如果没有权限修改此文件时候
su - root
chmod -R 775 /etc/rc.net

1、修改/etc/rc.net文件
if [ -f /usr/sbin/no ] ; then
/usr/sbin/no -o extendednetstats=0 >>/dev/null 2>&1
/usr/sbin/no -p -o tcp_ephemeral_low=9000
/usr/sbin/no -p -o udp_ephemeral_low=9000
/usr/sbin/no -p -o tcp_ephemeral_high=65500
/usr/sbin/no -p -o udp_ephemeral_high=65500
/usr/sbin/no -p -o udp_sendspace=65536
/usr/sbin/no -p -o udp_recvspace=655360
/usr/sbin/no -p -o tcp_sendspace=65536
/usr/sbin/no -p -o tcp_recvspace=65536
/usr/sbin/no -p -o rfc1323=1
/usr/sbin/no -p -o sb_max=4194304
/usr/sbin/no -r -o ipqmaxlen=512
fi

2、建立软链接文件
ln -s /usr/sbin/no /etc/no
ln -s /usr/sbin/lsattr /etc/lsattr

运行以下命令修改
/usr/sbin/no -p -o tcp_ephemeral_low=9000
/usr/sbin/no -p -o udp_ephemeral_low=9000
/usr/sbin/no -p -o tcp_ephemeral_high=65500
/usr/sbin/no -p -o udp_ephemeral_high=65500
/usr/sbin/no -p -o udp_sendspace=65536
/usr/sbin/no -p -o udp_recvspace=655360
/usr/sbin/no -p -o tcp_sendspace=65536
/usr/sbin/no -p -o tcp_recvspace=65536
/usr/sbin/no -p -o rfc1323=1
/usr/sbin/no -p -o sb_max=4194304
/usr/sbin/no -r -o ipqmaxlen=512

no -a|grep -E ‘udp_sendspace|udp_recvspace|tcp_sendspace|tcp_recvspace|rfc1323|sb_max|ipqmaxlen|tcp_ephemeral|udp_ephemeral’

vi /etc/security/limits
default:
fsize = -1
core = -1
cpu = -1
data = -1
rss = -1
stack = -1
nofiles = -1

oracle:
stack = -1
stack_hard = -1
grid:
stack = -1
stack_hard = -1

5、配置用户等效性
oracle:
两个节点执行
mkdir /home/oracle/.ssh
chmod 700 /home/oracle/.ssh
ssh-keygen -t dsa
ssh-keygen -t rsa
cd /home/oracle/.ssh
cat id_dsa.pub > authorized_keys
cat id_rsa.pub >> authorized_keys
在节点1执行
ssh esop_db2 cat /home/oracle/.ssh/authorized_keys >> authorized_keys
scp authorized_keys esop_db2:/home/oracle/.ssh/

grid:
在两个节点执行
mkdir /home/grid/.ssh
chmod 700 /home/grid/.ssh
ssh-keygen -t dsa
ssh-keygen -t rsa
cd /home/grid/.ssh
cat id_dsa.pub > authorized_keys
cat id_rsa.pub >> authorized_keys
在节点1执行
ssh esop_db2 cat /home/grid/.ssh/authorized_keys >> authorized_keys
scp authorized_keys esop_db2:/home/grid/.ssh/
验证ssh等效性(以oracle和grid用户分别在两个节点执行)
ssh esop_db1 date
ssh esop_db2 date
ssh esop_db1-priv date
ssh esop_db2-priv date

设置.profile
oracle用户
node1:
export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/db
export ORACLE_SID=jsljcj_db
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export NLS_DATE_FORMAT=’yyyy-mm-dd hh24:mi:ss’
export ORA_GRID_HOME=/oracle/app/11.2.0/grid
export SHLIB_PATH=$ORACLE_HOME/lib32:$SHLIB_PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORA_GRID_HOME/bin:$PATH
export LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
umask 022
export NLS_LANG=american_america.zhs16gbk
unset ORA_NLS33
unset ORA_CRS_HOME
unset CRS_HOME
unset NLS10
set -o vi
export HOST=hostname | cut -f1 -d"."
export PS1=’${HOST}:$PWD(${ORACLE_SID})$’

node2:

export ORACLE_BASE=/oracle/app/oracle
export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/db
export ORACLE_SID=esop_db2
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export NLS_DATE_FORMAT=’yyyy-mm-dd hh24:mi:ss’
export ORA_GRID_HOME=/oracle/app/11.2.0/grid
export SHLIB_PATH=$ORACLE_HOME/lib32:$SHLIB_PATH
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$ORA_GRID_HOME/bin:$PATH
export LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
umask 022
export NLS_LANG=american_america.zhs16gbk
unset ORA_NLS33
unset ORA_CRS_HOME
unset CRS_HOME
unset NLS10
set -o vi
export HOST=hostname | cut -f1 -d"."
export PS1=’${HOST}:$PWD(${ORACLE_SID})$’

grid用户:
node1:
export ORACLE_SID=+ASM1
export ORACLE_BASE=/oracle/app/grid
export ORACLE_HOME=/oracle/app/11.2.0/grid
export SHELL=/usr/bin/ksh
export ORA_NLS33=/oracle/app/11.2.0/grid/ocommon/nls/admin/data
export LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export JAVA_HOME=$ORACLE_HOME/jdk
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH:$JAVA_HOME/bin
umask 022

node2:

export ORACLE_SID=+ASM2
export ORACLE_BASE=/oracle/app/grid
export ORACLE_HOME=/oracle/app/11.2.0/grid
export SHELL=/usr/bin/ksh
export ORA_NLS33=/oracle/app/11.2.0/grid/ocommon/nls/admin/data
export LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/lib32
export JAVA_HOME=$ORACLE_HOME/jdk
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH:$JAVA_HOME/bin
umask 022

创建相应目录
mkdir -p /oracle/app/grid
mkdir -p /oracle/app/11.2.0/grid
mkdir -p /oracle/app/oracle/product/11.2.0/db
mkdir -p /oraclelog ———–新增的,没有这个目录,下面赋权的命令报错!
chown -R grid:oinstall /oracle/app/grid
chown -R grid:oinstall /oracle/app/11.2.0
chown -R oracle:oinstall /oracle/app/oracle
chown grid:oinstall /oracle
chown grid:oinstall /oracle/app
chown grid:oinstall /oraclelog
chmod -R 775 /oracle
chmod -R 775 /oraclelog

重启:
shutdown -Fr now

安装grid
grid运行
./runcluvfy.sh stage -pre crsinst -n esop_db1,esop_db2 -verbose

两个节点root用户跑runcluvfy.sh

DISPLAY=10.154.70.169:0.0; export DISPLAY
./runInstaller
./runInstaller -J-DTRACING.ENABLED=true -J-DTRACING.LEVEL=2

DISPLAY=10.154.70.166:0.0; export DISPLAY

/oracle/app/oracle/product/11.2.0/db/root.sh
安装DB软件
DISPLAY=10.154.70.169:0.0; export DISPLAY
./runInstaller

#esop_db
10.154.52.120 esop_db1
10.154.52.123 esop_db1-vip
192.168.11.120 esop_db1-priv
10.154.52.121 esop_db2
10.154.52.122 esop_db2-vip
192.168.11.121 esop_db2-priv
10.154.52.124 esopdb-scan
##These IP and hostname been used for NIM ,do not to delete them,thanks!##
192.168.3.120 p750lpm_nim
##These IP and hostname been used for NIM ,do not to delete them,thanks!##
#192.168.11.121 esop_db2-priv esop_db2
#1.1.1.121 esop_db2

/oracle/app/oraInventory/orainstRoot.sh
/oracle/app/11.2.0/grid/root.sh

创建磁盘组:
单位M
DATADG2 5713800
DATADG 8970666
OCRVOTE 57138
SYSDG 342828

打GI补丁:
su - root
/oracle/app/11.2.0/grid/bin/crsctl stop crs
/oracle/app/11.2.0/grid/bin/crsctl start crs
/oracle/app/11.2.0/grid/bin/crsctl stat res -t

停掉之后使用tar工具,以root身份备份软件。
tar cvf /oracle/oracle_soft.tar /oracle/app
备份oraInventory目录
tar cvf /oraclelog/orainventory.tar /oracle/app/oraInventory

cd /oracle/app/11.2.0/grid
mv OPatch OPatch_bak
cd /oracle/app/oracle/product/11.2.0/db
mv OPatch OPatch_bak

cd /oraclelog
cp p6880880_112000_AIX64-5L.zip /oracle/app/oracle/product/11.2.0/db
cp p6880880_112000_AIX64-5L.zip /oracle/app/11.2.0/grid

13、替换opatch
cd /oracle/app/oracle/product/11.2.0/db
rm -rf OPatch
unzip p6880880_112000_AIX64-5L.zip
chown -R oracle:oinstall OPatch
chmod -Rf 775 OPatch

cd /oracle/app/11.2.0/grid
rm -rf OPatch
unzip p6880880_112000_AIX64-5L.zip
chown -R grid:oinstall OPatch
chmod -Rf 775 OPatch

/oracle/app/oracle/product/11.2.0/db/OPatch/opatch version
/oracle/app/11.2.0/grid/OPatch/opatch version

验证oracle目录一致性
su - grid
opatch lsinventory -detail -oh $ORACLE_HOME
su - oracle
opatch lsinventory -detail -oh $ORACLE_HOME

生成参数文件
cd /oracle
mkdir ocm_file
chown -R grid:oinstall ocm_file
chmod 777 ocm_file
grid用户登录,执行如下命令生成ocm.rsp文件
$ORACLE_HOME/OPatch/ocm/bin/emocmrsp -no_banner -output /oracle/ocm_file/ocm.rsp

创建ocm.rsp文件,需要设置环境变量JAVA_HOME
JAVA_HOME=/oracle/app/11.2.0/grid/jdk; export JAVA_HOME

启动所有资源
/oracle/app/11.2.0/grid/bin/crsctl start crs
/oracle/app/11.2.0/grid/bin/crsctl stat res -t

3)安装GI补丁
安装时需要用root用户执行
/oracle/app/11.2.0/grid/OPatch/opatch auto /oraclelog/16742216 -ocmrf /oracle/ocm_file/ocm.rsp(注:使用之前生成的文件)
注:补丁失败可用/oracle/app/11.2.0/grid/OPatch/opatch auto /oraclelog/16742216 -rollback -ocmrf /oracle/ocm_file/ocm.rsp
回滚:
/oracle/app/11.2.0/grid/OPatch/opatch auto /oraclelog/16742216 -rollback -ocmrf /oracle/ocm_file/ocm.rsp

(注:打GI补丁之前一定要先装好库,因为如果没装库,database在OCR中没注册,装GI补丁只给GRID打上了补丁,DATABASE没打补丁)

ls -lrt /oracle/app/11.2.0/grid/OPatch/ocm/bin/emocmrsp

-rwxrw—- 1 grid oinstall 9063 Nov 27 2009 /oracle/app/11.2.0/grid/OPatch/ocm/bin/emocmrsp

chmod -Rf 777 /oracle/app/11.2.0/grid/OPatch

chmod -Rf 777 /oracle/app/oracle/product/11.2.0/db/OPatch

打one patch之前重新备份目录
su - root
/oracle/app/11.2.0/grid/bin/crsctl stop crs
/oracle/app/11.2.0/grid/bin/crsctl stat res -t

停掉之后使用tar工具,以root身份备份软件。
tar cvf /oracle/oracle_soft.tar /oracle/app
备份oraInventory目录
tar cvf /oraclelog/orainventory.tar /oracle/app/oraInventory

先打of_patches
在打patches_1028

1、 打小补丁前重新备份grid和db软件
2、 冲突检查
将所有需要打的oneoff patch都解压到/oraclelog/patchs目录
$ opatch prereq CheckConflictAmongPatchesWithDetail -phBaseDir /oraclelog/of_patches
$ opatch prereq CheckConflictAmongPatchesWithDetail -phBaseDir /oraclelog/patches_1028
3、 执行slibclean
##执行slibclean
slibclean
slibclean
slibclean
##以下命令判断 lib 是否被占用,需要没有返回结果

genkld |grep oracle

4、 实施打补丁
$ opatch napply /oraclelog/of_patches -skip_subset -skip_duplicate -local
##执行slibclean
slibclean
slibclean
slibclean
##以下命令判断 lib 是否被占用,需要没有返回结果

genkld |grep oracle

$ opatch napply /oraclelog/patches_1028 -skip_subset -skip_duplicate -local

SQL>alter system set cluster_database=false scope=spfile;
SQL>shutdown immediate
SQL>startup upgrade
SQL>@?/rdbms/admin/prvtstat.plb
SQL> alter system set cluster_database=true scope=spfile;
SQL>shutdown immediate
重新启动数据库
srvctl start database -d statdb

根据README执行脚本:

11072246:

    1. For RAC environment only,
       set cluster_database=false in the init.ora

    2. Startup the database in upgrade mode
       SQL> startup upgrade

    3. After the patch has been applied please reload the packages into
       the database. To do this connect as SYSDBA and execute the following;

    SQL> @?/rdbms/admin/prvtstat.plb


    5. For RAC environment only,
       set cluster_database=true in the init.ora

    6. Startup the database in normal mode

14192178:

(3) Postinstallation

cd $ORACLE_HOME/rdbms/admin
run sqlplus as sysdba
@catnomtt.sql
@catnomta.sql
@dbmsmeta.sql
@dbmsmeti.sql
@dbmsmetu.sql
@dbmsmetb.sql
@dbmsmetd.sql
@dbmsmet2.sql
@catmeta.sql

@prvtmeta.plb
@prvtmeti.plb
@prvtmetu.plb
@prvtmetb.plb
@prvtmetd.plb
@prvtmet2.plb
@catmet2.sql
– Recompile all invalid objects.
@utlrp

Note: In case of an Oracle RAC environment, reload the packages on each of the nodes.

错误:
SQL> @?/rdbms/admin/prvtstat.plb

Warning: Package Body created with compilation errors.

Errors for PACKAGE BODY DBMS_STATS:

LINE/COL ERROR


16611/7 PL/SQL: Statement ignored
16611/38 PLS-00302: component ‘GET_IDX_TABPART’ must be declared

解决办法:
运行以下脚本
@?/rdbms/admin/catalog.sql;
@?/rdbms/admin/catproc.sql;
然后在重跑失败脚本。

cd $ORACLE_HOME/rdbms/admin
sqlplus / AS SYSDBA
SQL> STARTUP
SQL> @catbundle.sql psu apply
SQL> QUIT

select * from registry$history;

@?/rdbms/admin/catbundle.sql psu apply

验证补丁
opatch lsinventory | grep “Patch “|wc -l

SQL> execute ORACLE_OCM.MGMT_CONFIG.run_now;
BEGIN ORACLE_OCM.MGMT_CONFIG.run_now; END;

*
ERROR at line 1:
ORA-12801: error signaled in parallel query server PZ99, instance statdb1:statdb1 (1)
ORA-02097: parameter cannot be modified because specified value is invalid
ORA-01031: insufficient privileges
ORA-06512: at “ORACLE_OCM.MGMT_CONFIG”, line 174
ORA-06512: at “ORACLE_OCM.MGMT_CONFIG”, line 176
ORA-06512: at “SYS.DBMS_ISCHED”, line 185
ORA-06512: at “SYS.DBMS_SCHEDULER”, line 486
ORA-06512: at “ORACLE_OCM.MGMT_CONFIG”, line 145
ORA-06512: at line 1