
本教程开篇从搭建学习环境开始,逐步展开。0基础的同学可以跟着一步一步学习,BTW,已经具备相应能力的同学可以略过或者提出不同见解。

搭建学习环境
学习环境:linux +VMware Workstation+grid +oracle database + 常用工具
linux:redhat 5.8 64-bit
vmware:10.0.1
下载Oracle安装包:Oracle Database 11g Release 2 (11.2.0.1.0) for Linux x86-64
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip
下载grid安装包:Oracle Grid Infrastructure 11g Release 2 (11.2.0.1.0) for Linux x86-64
linux.x64_11gR2_grid.zip
开始实施
准备: 下载安装介质
准备: 磁盘空间 大于50G
内存:物理机内存>=4G
参考文档:说明书(手册)
Oracle官网下载页面--->Documentation--->View Oracle Database, 11g Release 2 (11.2)
E11882-01 zip (825.70 MB)
找安装说明:Database Installation Guide for Linux
下载地址:http://www.oracle.com/technetwork/indexes/documentation/index.html
安装前必须完成下面任务:
1. 确认Linux系统安装ssh
检查命令:# rpm -qa |grep ssh
tips:putty、SecureCRT、xmanger协议都是ssh,用户远程管理服务器,所以你的linux一定装ssh。
2. 服务器配置静态地址(192.168.3.1/24)
命令:#vim etc/sysconfig/network-scripts/ifcfg-eth0
输入" i "编辑文件
修改内容:
BOOTPROTO=static
IPADDR=192.168.3.1
NETMASK=255.255.255.0
:wq保存退出
读取配置,须重启服务,使用命令:
#ifdown eth0
#ifup eth0
或者
#service network restart
3. 配置维护终端
发现增加了网卡vmnet1、vmnet8
虚拟机网卡配置方法:虚拟机的设置-->编辑-->虚拟网路编辑器
选项说明:
1. 桥接-->物理网卡
2. host-only-->vmnet1 仅主机模式 (虚拟机和物理通讯)
3. NAT-->vmnet8
4. 自定义
配置vmnet1网卡地址: 192.168.3.123/24
最后测试:ping 192.168.3.1
4. 使用工具xmanager其中的Xshell连接管理虚拟机服务器。
登录虚拟机服务器,用root用户登录去完成安装前的准备工作,安装的时候用的软件的拥有者去装。
检查安装软件用的oui 图像界面:
# xhost +
# xclock
Error: Can't open display:
解决步骤:
1 打开xmanger-passive( 图像是否可以显示就看这个)
2 显示环境变量,告诉系统图像显示到哪里:
# export DISPLAY=ip地址(终端地址):0.0
# export DISPLAY=192.168.3.123:0.0
3 授权
# xhost +
测试
# xlock
切换账户,必须重新设置
su - oracle
export DISPLAY=192.168.3.123:0.0
xhost +
xlock
安装虚拟服务器的需求空间:
/boot 100M
swap 4G
/tmp 4G
/ 15G
/u01 剩下全部给oracle软件安装用
安装好系统后,关闭防火墙
selinux 关闭
为了以后数据库启动快设置:# chkconfig sendmail off
把192.168.3.1 oracleEDU 加入到/etc/hosts命令:
vim etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
192.168.3.1 oracleEDU
:wq 保存
注意:127.0.0.1 localhost.localdomain localhost 记录不允许修改

Oracle安装系统硬件需求
最小内存:1 GB of RAM (建议2 GB of RAM or more)
查看RAM的大小命令:
# grep MemTotal proc/meminfo
swap空间需求:
内存决定你的swap大小:
内存:Between 1 GB and 2 GB swap: 1.5 times the size of the RAM
内存:Between 2 GB and 16 GB swap:Equal to the size of the RAM
内存:More than 16 GB swap: 16 GB
例:我的物理内存2G,那么swap设置多大?
>= 3G
查看swap空间大小命令:
# grep SwapTotal proc/meminfo
查看系统可用的RAM和swap空间命令:
# free
查看shared memory(共享内存)大小命令:
# df -h dev/shm/
tips:Oracle从11g开始,AMM自动内存管理需要更多的共享内存,共享内存必须大于MEMORY_MAX_TARGET和MEMORY_TARGET参数的值,如果Linux中/dev/shm设置太小,在数据库启动时候会报ORA-00845的错误。
参考手册-->Master Book List -->Reference (记录所有的参数的含义)
例:
你的服务器shared memory值是1GB,但是你的MEMORY_TARGET设置是2GB,数据库启动时候就会报错:
ORA-00845: MEMORY_TARGET not supported on this system
ORA-01078: Failure in processing system parameters
解决办法:扩大shared memory
# mount -t tmpfs shmfs -o size=4g dev/shm
查看系统是否能运行需要安装的数据库版本命令:
# uname -m
x86_64
需要至少1GB的 tmp空间,查看命令:
# df -h tmp
我们设置为4GB
安装Oracle 11g Enterprise Edition 至少需要 4.35G
检查操作系统版本:
# lsb_release -id
Distributor ID: RedHatEnterpriseServer
Description: Red Hat Enterprise Linux Server release 5.8 (Tikanga)
内核需要在2.6.32及以上,检查内核命令:
# uname -r
检查安装软件需要的包:
我们安装的是11.2.0.1 所以下表中32位必须安装:
binutils-2.17.50.0.6
compat-libstdc++-33-3.2.3
compat-libstdc++-33-3.2.3 (32 bit)
elfutils-libelf-0.125
elfutils-libelf-devel-0.125
gcc-4.1.2
gcc-c++-4.1.2
glibc-2.5-24
glibc-2.5-24 (32 bit)
glibc-common-2.5
glibc-devel-2.5
glibc-devel-2.5 (32 bit)
glibc-headers-2.5
ksh-20060214
libaio-0.3.106
libaio-0.3.106 (32 bit)
libaio-devel-0.3.106
libaio-devel-0.3.106 (32 bit)
libgcc-4.1.2
libgcc-4.1.2 (32 bit)
libstdc++-4.1.2
libstdc++-4.1.2 (32 bit)
libstdc++-devel 4.1.2
make-3.81
sysstat-7.0.2
使用如下命令检查包是否安装:
# rpm -q package_name
扩展:rpm -qa |grep 包名(模糊查找)
没有安装的包使用如下命令安装:
# rpm -ivh 包名
或
# yum -y install 包名
解决包依赖问题,使用yum安装。
配置yum源:
1. 挂载光盘(系统盘)
# mount dev/cdrom mnt
2. 设置yum源
# cd etc/yum.repos.d/
# cp rhel-debuginfo.repo rhel-debuginfo.repo.bak
# vim rhel-debuginfo.repo 修改以下内容:
[rhel-debuginfo]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug
baseurl=file:///mnt/Server
enabled=1
gpgcheck=0
# yum clean all 清除缓存
# yum list 测试
安装缺少的包:
# yum -y install unixODBC
# yum -y install unixODBC-devel

网络规划
设备 | Ip地址 | 子网 |
Eth0 | 192.168.3.108 | 255.255.255.0 |
客户端vmare 1 | 192.168.3.123 | 255.255.255.0 |

创建操作系统Oracle安装组和用户
组 | 组 | 用户 |
oinstall | dba | oracle |
oper | ||
asmadmin | grid | |
asmdba | ||
asmoper |
配置组、用户
# usr/sbin/groupadd -g 501 oinstall
# usr/sbin/groupadd -g 502 dba
# usr/sbin/groupadd -g 503 oper
# usr/sbin/groupadd -g 504 asmadmin
# usr/sbin/groupadd-g 506 asmdba
# usr/sbin/groupadd -g 505 asmoper
建立oracle用户:
# /usr/sbin/useradd -u 502 -g oinstall -G dba,oper,asmdba oracle
# passwd oracle
建立grid用户:
# usr/sbin/useradd -u 503 -g oinstall -G asmadmin,asmdba,asmoper,dbagrid
# passwd grid
验证:
# id oracle
uid=502(oracle) gid=501(oinstall)groups=501(oinstall),502(dba),503(oper),506(asmdba)
# id grid
uid=503(grid) gid=501(oinstall)groups=501(oinstall),502(dba),504(asmadmin),506(asmdba),505(asmoper)

检查数据库软件安装资源限制
# vi/etc/security/limits.conf
#for oracle
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
#for grid
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
grid soft stack 10240

配置内核参数
# vi etc/sysctl.conf
#for oracle
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
:wq 保存
#/sbin/sysctl –p 使新配置生效

创建软件目录
oracle软件安装列表 | /u01/app/oraInventory |
oracle安装目录 | /u01/app/oracle |
grid安目录 | /u01/app/grid |
# mkdir -p/u01/app/oraInventory 建立oraInventory目录
# mkdir -p u01/app/grid 建立grid目录
# mkdir -p u01/app/oracle 建立oracle目录
# chown -R grid:oinstall u01/app/
# chown -R oracle:oinstall/u01/app/oracle
# chmod -R 775 u01
检查用户对目录的权限
[root@OracleEDU ]# ll -d/u01/app/grid
drwxrwxr-x 2 gridoinstall 4096 Jul 14 10:11 u01/app/grid
[root@OracleEDU ]# ll -d/u01/app/oracle
drwxrwxr-x 2 oracle oinstall 4096 Jul 14 10:10 u01/app/oracle
Tips:查看服务器上装了哪些软件,安装顺序,安装目录:
# cat u01/app/oraInventory/ContentsXML/inventory.xml

配置环境变量
配置grid环境变量
# su – grid
# vi home/grid/.bash_profile (编辑加入以下内容)
exportORACLE_BASE=/u01/app/grid
export ORACLE_SID=+ASM
exportORACLE_HOME=$ORACLE_BASE/product/11.2.0/grid
# source .bash_profile
配置oracle环境变量
# su – oracle
# vi home/oracle/.bash_profile (编辑加入以下内容)
export ORACLE_BASE=/u01/app/oracle
export ORACLE_SID=orcl
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1
# source .bash_profile
Tips:检查变量是否生效:# echo $变量名 或者 # env|grep 变量名

安装ASM
ASM磁盘空间规划
存储数据 High redundancy | data | DATA1 | 20G |
DATA2 | 20G | ||
DATA3 | 20G | ||
存储恢复数据文件 Normal redundancy | fra | FRA1 | 20G |
FRA2 | 20G |
确定服务器内核版本
# uname –rm
2.6.18-308.el5 x86_64
根据内核版本下载匹配驱动,下载地址:
http://www.oracle.com/technetwork/topics/linux/asmlib/index-101839.html
下载以下三个包:
oracleasm-2.6.18-308.el5-2.0.5-1.el5.x86_64.rpm |
oracleasmlib-2.0.4-1.el5.x86_64.rpm |
oracleasm-support-2.1.8-1.el5.x86_64.rpm |
上传到安装服务器 /disk
安装:
# cd disk
# rpm –ivh *.rpm
检查包是否安装正确:
# rpm -qa|grep oracleasm
oracleasmlib-2.0.4-1.el5
oracleasm-support-2.1.8-1.el5
oracleasm-2.6.18-308.el5xen-2.0.5-1.el5
配置ASM驱动
[root@oracleEDU disk]#/etc/init.d/oracleasm configure
Configuring the Oracle ASM librarydriver.
This will configure the on-bootproperties of the Oracle ASM library
driver. The following questions will determinewhether the driver is
loaded on boot and whatpermissions it will have. The currentvalues
will be shown in brackets('[]'). Hitting <ENTER> withouttyping an
answer will keep that currentvalue. Ctrl-C will abort.
Default user to own the driverinterface [grid]: grid
Default group to own the driverinterface [asmadmin]: asmadmin
Start Oracle ASM library driver onboot (y/n) [y]: y
Scan for Oracle ASM disks on boot(y/n) [y]: y
Writing Oracle ASM library driverconfiguration: done
Initializing the Oracle ASMLibdriver: [ OK ]
Scanning the system for Oracle ASMLib disks:[ OK ]
检查ASM状态
[root@oracleEDU disk]#/etc/init.d/oracleasm status
Checking if ASM is loaded: yes
Checking if dev/oracleasm ismounted: yes
关闭虚拟机添加5块硬盘
检查硬盘分区:
# fdisk –l
磁盘分区(5个盘分别按如下方式执行分区)
# fdisk dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK(1-2610, default 2610):
Using default value 2610
Command(m for help): w
# partprobe dev/sdb
把新增的5个盘变为ASM磁盘:
[root@oracleEDU~]# etc/init.d/oracleasm createdisk DATA1 dev/sdb1
Markingdisk "DATA1" as an ASM disk: [ OK ]
[root@oracleEDU~]# etc/init.d/oracleasm creatediskDATA2 dev/sdc1
Markingdisk "DATA2" as an ASM disk: [ OK ]
[root@oracleEDU~]# etc/init.d/oracleasm createdisk DATA3 dev/sdd1
Markingdisk "DATA3" as an ASM disk: [ OK ]
[root@oracleEDU~]# etc/init.d/oracleasm creatediskFRA1 dev/sde1
Markingdisk "FRA1" as an ASM disk: [ OK ]
[root@oracleEDU~]# etc/init.d/oracleasm createdisk FRA2 dev/sdf1
Marking disk"FRA2" as an ASM disk: [ OK ]
检查ASM磁盘:
[root@yutianedu~]# etc/init.d/oracleasm listdisks
DATA1
DATA2
DATA3
FRA1
FRA2
Tips:oracleasm其他命令
# etc/init.d/oracleasm restart (ASM重启动)
# /etc/init.d/oracleasm querydisk/dev/sdb1 (检查磁盘是否被使用)
# /etc/init.d/oracleasm deletedisk DISK1 (删除磁盘)
# /usr/sbin/oracleasm scandisks 扫描磁盘
[root@oracleEDU~]# vi /etc/scsi_id.config
# somelibata drives require vpd page 0x80
vendor="ATA",options=-p0x80
options=-g
[root@oracleEDU~]# vi /etc/udev/rules.d/99-oracle-asmdevices.rules
KERNEL=="sdb1",BUS=="scsi", PROGRAM=="/sbin/scsi_id",
RESULT=="14f70656e66696c00000000",OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdc1",BUS=="scsi", PROGRAM=="/sbin/scsi_id",
RESULT=="14f70656e66696c00000000",OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdd1",BUS=="scsi", PROGRAM=="/sbin/scsi_id",
RESULT=="14f70656e66696c00000000",OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sde1",BUS=="scsi", PROGRAM=="/sbin/scsi_id",
RESULT=="14f70656e66696c00000000",OWNER="grid", GROUP="asmadmin", MODE="0660"
KERNEL=="sdf1",BUS=="scsi", PROGRAM=="/sbin/scsi_id",
RESULT=="14f70656e66696c00000000",OWNER="grid", GROUP="asmadmin", MODE="0660"
[root@oracleEDU~]# /sbin/udevcontrol reload_rules
[root@oracleEDU~]# /sbin/start_udev
Starting udev: [ OK ]

安装grid软件
上传Grid软件包到安装服务器 /disk
解压文件及安装环境设置
# su – grid
# cd /disk
# unzip linux.x64_11gR2_grid.zip
# cd grid
打开xamnager-passive
# export DISPLAY=192.168.1.123:0.0
# xhost +
# ./runInstaller
Step 1 of 8 选择独立服务器
Step 2 of 8 语言选择English
Step 3 of 10 建立磁盘组 DATA 冗余 high 添加3块磁盘
Step 4 of 10 输入SYS的密码oracle
为了方便,这里选择为所有用户设置同样的密码Oracle
Step 5 of 10 选择操作系统组(默认)
Step 6 of 10 安装路径
Oracle base :/u01/app/grid
software location :/u01/app/grid/product/11.2.0/grid
Step 7 of 10 安装目录文件(默认)
Step 8 of 10 NEXT
Step 8 of 10 概要文件(NEXT)
Step 10 of 10 安装
安装到最后提示用root身份执行两个脚本:
[root@OracleEDU ~]# cd/u01/app/oraInventory/
[root@OracleEDUoraInventory]# ./orainstRoot.sh
Changing permissions of/u01/app/oraInventory.
Addingread,write permissions for group.
Removing read,write,executepermissions for world.
Changinggroupname of /u01/app/oraInventory to oinstall.
The executionof the script is complete.
[root@OracleED UoraInventory]# cd /u01/app/grid/product/11.2.0/grid/
[root@OracleEDU grid]# ./root.sh
RunningOracle 11g root.sh script...
...
The inventory is located at/u01/app/oraInventory
'UpdateNodeList' was successful.
点OK。
Step 11 of 11 等待安装完毕。
检查grid是否安装正确:
# cat /u01/app/oraInventory/ContentsXML/inventory.xml
or
# cat /etc/oratab

ASMCA创建FRA磁盘组
[root@OracleEDU~]# su - grid
[grid@OracleEDU~]$ vi .bash_profile
PATH=$ORACLE_HOME/bin:$PATH (加入这条)
[grid@OracleEDU~]$ source .bash_profile
[grid@OracleEDU ~]$ echo $PATH
/u01/app/grid/product/11.2.0/grid/bin:/bin:/usr/lib64/qt-3.3/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin
[grid@OracleEDU bin]$ asmca
选择 create
输入磁盘组名字 FRA,选择normal,选择两个磁盘。
点 OK,开始创建FRA磁盘组。

安装Oracle database软件
上传Oracledatabase软件到 /disk
[root@OracleEDU ~]# su -oracle
[oracle@OracleEDU ~]$ cd/disk/
[oracle@OracleEDU disk]$unzip linux.x64_11gR2_database_1of2.zip
[oracle@OracleEDU disk]$unzip linux.x64_11gR2_database_2of2.zip
打开Xmanager-passive
[oracle@OracleEDU disk]$ cd database/
[oracle@OracleEDU database]$export DISPLAY=192.168.1.123:0.0
[oracle@OracleEDU database$ xhost +
[oracle@OracleEDU database]$ ./database/runInstaller
Step 1 of 9 提示输入support账户,点YES忽略。
Step 2 of 9 只安装数据库软件
Step 3 of 9 单实例
Step 4 of 11 选择english
Step 5 of 11 选择企业版
Step 6 of 11 指定安装目录
Oracle base:/ou1/app/oracle
sorftware location: /u01/app/oracle/product/11.2.0/de_home11
Step 7 of 11 用户组(默认)
NEXT
安装设置概览
Step 10 of 11 按finish开始安装数据库
Step 11 of 11 弹出框让用root运行脚本
[root@OracleEDU dbhome_1]# ./root.sh
Running Oracle 11g root.sh script...
Finishedrunning generic part of root.sh script.
Nowproduct-specific root actions will be performed.
Finishedproduct-specific root actions.
数据库软件安装完成。

创建数据库
数据库信息
数据库服务名:orcl.example.com
实例名:orcl
字符集:zhs16gbk
内存:自动内存管理 512M
数据:+data
快速回复数据:+fra
不开启归档 (建库的时候默认归档标准块大小8K,建立后不允许修改)
使用dbca建库:
# su -oracle
[oracle@yutianedu~]$ vi .bash_profile
exportPATH=$ORACLE_HOME/bin:$PATH (修改环境变量)
[oracle@yutianedu~]$ source .bash_profile
[oracle@yutianedu~]$ export DISPLAY=192.168.1.123:0.0
[oracle@yutianedu~]$ xhost +
accesscontrol disabled, clients can connect from any host
[oracle@yutianedu ~]$ dbca
Step 1 of 12 选择创建数据库
Step 2 of 12 选择第一项:通用
Step 3 of 12 填入数据库服务名和实例名
Step 4 of 12 默认next
Step 5 of 12 设置用户账户和密码
密码设置为oracle,提示不符合规范的密码,忽略,点YES
Step 6 of 12 存储类型选ASM,选择数据文件 +DATA,设置ASMSNMP密码oracle
Step 7 of 11 选择快速恢复存储+FRA
Step 8 of 11 设置内存512M
Step 9 of 11 选择字符集ZHS16GBK
Step 10 of 11 next
Step 11 of 11 创建数据库,finish。
创建完成,exit。
至此,数据库创建完成,学习环境搭建完成,可以使用快照功能对当前系统做备份,方便以后学习。






