1.1 下载并安装RHEL5.5
系统下载地址:http://rhel.ieesee.net/uingei/
RHEL5.5的安装,在此不再详述,下面是几点需要注意的问题:
a、 完全安装开发包
b、 规划好分区(oracle对swap,tmp有要求,需要引起注意)
c、 建议安装时设置好主机名和IP
d、 安装时去除不必要的应用程序
系统启动级别,建议设置为3,需要使用xWindow时再考虑启动
[root@]#vi /etc/inittab
Id:3:initialization
1.2 下载oracle 11g R2安装包
Oracle下载地址:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/
下载的安装包为两个文件
linux.x64_11gR2_database_1of2.zip
linux.x64_11gR2_database_2of2.zip
将以上两个文件传到服务器上,可以使用ftp
2 安装前的配置
2.1 以root用户登录系统
2.2 检测硬件需求
2.2.1 内存需求
a、 至少4G RAM
键入以下命令查看内存大小
[root@]# grep MemTotal /proc/meminfo
如果不够4G,建议你添加内存到4G,然后在继续安装,这是oracle的建议,我个人装的时候,内存为2G
b、 下面的表是oracle官方的建议
Available RAM | Swap Space Required |
---|---|
Between 4 GB and 8 GB | 2 times the size of RAM |
Between 8 GB and 32 GB | 1.5 times the size of RAM |
More than 32 GB | 32 GB |
c、 自动内存管理
Oracle 11g 提供了一个新特性,内存的自动化管理,但是要求更大的共享内存(/dev/shm)和文件描述符,对与每一个数据库实例,/dev/shm的大小至少要为MEMORY_MAX_TARGET 和MEMORY_TARGET中较大者
查看/dev/shm的大小
[root@]#df –h /dev/shm
编辑/etc/fstab文件,修改/dev/shm的大小,红色部分设为你要指定的大小
tmpfs /dev/shm tmpfs defaults,size=1024M 0 0
重新挂载/dev/shm
[root@]#mount –o remount /dev/shm
2.2.2 系统架构
检查系统架构,确保oracle可以运行
[root@]# uname –m
2.2.3 磁盘空间需求
a、 /tmp至少1G 空间
检查/tmp空间命令
[root@]#df –h /tmp
如果/tmp空间不满足需求,可以配置TMP 和 TMPDIR两个环境变量来指定一个满足要求的目录
b、 检查磁盘空间
[root@]# df –h
下面的表是安装空间的需求
Installation Type | Requirement for Software Files (GB) |
---|---|
Enterprise Edition | 4.35 |
Standard Edition | 3.73 |
Installation Type | Requirement for Data Files (GB) |
---|---|
Enterprise Edition | 1.68 |
Standard Edition | 1.48 |
c、 如果你配置了自动备份的话,oracle自动存储管理还需要额外的磁盘空间
2.3 检测软件需求
2.3.1 操作系统需求
a、 以下系统可以安装oracle 11g R2
Asianux Server 3 SP2
Oracle Linux 4 Update 7
Oracle Linux 5 Update 2
Oracle Linux 5 Update 5 (only if using Oracle Unbreakable Enterprise Kernel)
Red Hat Enterprise Linux 4 Update 7
Red Hat Enterprise Linux 5 Update 2
Red Hat Enterprise Linux 5 Update 5 (only if using Red Hat compatible kernel)
SUSE Linux Enterprise Server 10 SP2
SUSE Linux Enterprise Server 11
b、 检查系统版本
[root@]# cat /proc/version
2.3.2 内核需求
a、 以下是内核需求列表
对于 Oracle Linux 4 和 Red Hat Enterprise Linux 4:
2.6.9 或者更高
对于 Asianux 3, Oracle Linux 5 Update 2, 和 Red Hat Enterprise Linux 5 Update 2:
2.6.18 或者更高
对于 Oracle Linux 5 Update 5 和 Red Hat Enterprise Linux 5 Update 5:
- The Unbreakable Enterprise Kernel based on the 2.6.32 stable kernel
- The Red Hat compatible kernel for strict Red Hat compatibility
对于SUSE Linux Enterprise Server 10:
2.6.16.21 或者更高
对于SUSE Linux Enterprise Server 11:
2.6.27.19 或者更高
b、 检查内核版本
[root@]# uname –m
2.3.3 软件包需求
a、 需要的RPM包
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
numactl-devel-0.9.8.x86_64
sysstat-7.0.2
b、 查询是否安装
[root@]# rpm –qa|grep 包名称
查询到未安装的软件包,可以从系统的安装镜像中获取,然后安装到系统中
安装命令
[root@]# rpm –ivh 包名称
小技巧:
可以将所有需要的RPM包放置在一个文件夹中,然后使用命令rpm –ivh *.rpm安装
2.3.4 编译器需求
见软件包需求中
2.3.5 额外软件需求
ODBC驱动,同样可以在系统安装镜像文件中找到
On Asianux Server 3, Oracle Linux 5, and Red Hat Enterprise Linux 5:
unixODBC-2.2.11 (32-bit) or later
unixODBC-devel-2.2.11 (64-bit) or later
unixODBC-2.2.11 (64-bit) or later
2.4 创建用户和组
依次键入以下命令,创建oracle用户、组等
[root@]# groupadd oinstall
[root@]# groupadd dba
[root@]# mkdir –p /u01/app
[root@]# useradd –m -g oinstall -G dba –d /u01/app/oracle oracle
[root@]# passwd oracle
Changing password for user oracle.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@]# chown -R oracle:oinstall /u01
[root@]# chmod -R 775 /u01
2.5 配置内核参数
2.5.1 内核检查及配置
如果没有相应的参数就添加,如果相应参数值比下面给出的值大,就不要修改了,检查当前配置使用命令
[root@]# sysctl –a |grep 参数名称
[root@]# vi /etc/sysctl.conf
内容如下:
# For Oracle
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 536870912
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 = 1048586
运行sysctl -p命令使内核参数生效
[root@]# sysctl -p
2.5.2 资源限制检查及配置
将下面的几项添加文件/etc/security/limits.conf的结尾处
[root@]# 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
2.5.3 用户登录限制配置
检查文件/etc/pam.d/login,如果没有下面几项,那么添加到文件结尾处
[root@]# vi /etc/pam.d/login
内容如下:
# For Oracle
session requried /lib64/security/pam_limits.so
session requried pam_limits.so
注意,64位机器上要使用64位的库,否则登录会出现问题
2.5.4 全局环境变量配置
检查文件/etc/profile,将以下内容添加到文件结尾处
[root@]# vi /etc/profile
内容如下:
# For Oracle
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
2.6 Oracle用户环境变量配置
切换到oracle用户下,检查文件~/.bash_profile,将以下内容添加到文件结尾处
[root@]#su – oracle
[oracle@=]$ vi .bash_profile
内容如下:
# For Oracle
ORACLE_BASE=/u01/app
ORACLE_HOME=$ORACLE_BASE/oracle
ORACLE_SID=orcl
PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
export EDITOR=vi
export NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1
#以下命令为了删除控制字符,以便SQLPLUS中可以正常使用退格键等,在你的系统
#上可能为^H、^h或者^?,请自行设置,输入方式位ctrl+v+字符
stty erase ^?
准备工作到此结束
3 安装步骤
3.1 启动安装
将oracle安装包移动到/u01目录下并解压,解压后产生一个database目录
[root@]# cd /u01
[root@]# unzip linux.x64_11gR2_database_1of2.zip
[root@]# unzip linux.x64_11gR2_database_2of2.zip
重新确认用户组及权限
[root@]# chown –R oracle:oinstall /u01
[root@]# chmod –R 775 /u01
切换到oracle用户,并启动xWindow,然后进入安装目录,执行安装
[root@]# su – oracle
[oracle@=]$ startx
[oracle@=]$ cd /u01/database
[oracle@=]$ ./runInstaller
3.2 安装oracle软件
接下来进入界面安装步骤,根据界面提示,选择安装数据库即可,其中的目录都可以使用默认的,一步一步安装
需要注意的几个问题
a、 只安装数据库软件
b、 选择企业版
c、 如果不满足先决条件检查,请仔细检查原因
3.3 配置网络
[oracle@=]$ netca
进入界面形式,默认就可以,配置网络,首先配置网络,可以避免下一步创建数据库的警告
配置完成,监听器即会自动开启
3.4 创建Oracle数据库
[oracle@=]$ dbca
接下来进入界面安装步骤,根据界面提示,选择安装数据库即可,其中的目录都可以使用默认的,一步一步安装
需要注意的几个问题
a、 注意字符集的选择
b、 设置口令为tdr123
c、 自动内存管理会要求/dev/shm大小,如果报错请检查设置
4 数据库设置
4.1 设置数据库为归档模式
SQL> shutdown immediate;
SQL> startup restrict;
SQL> shutdown;
SQL> startup mount;
SQL> alter database archivelog;
SQL>alter database open;
确定oracle数据库运行在archive模式
确认方法:
sqlplus /nolog
SQL>Conn / as sysdba
SQL>Archive log list
4.2 设置oracle数据库随机启动
a、 修改/etc/oratab文件
[oracle@=]$ #vi /etc/oratab
找到orcl:/u01/app/oracle:N这一行
改为:
orcl:/u01/app/oracle:Y
b、 修改ORACLE自带的启动与关闭脚本
分别是dbstart和 dbshut。执行这两个脚本就可以实现ORACLE脚本的启动与关闭。在oracle账户下修改$ORACLE_HOME/bin/dbstart文件
[root@]# su -oracle
[oracle@=]$ cd $ORACLE_HOME/bin
[oracle@=]$ vi dbstart
找到ORACLE_HOME_LISTNER=$1这一行
改为:ORACLE_HOME_LISTNER=$ORACLE_HOME
[oracle@=]$ vi dbshut
找到ORACLE_HOME_LISTNER=$1这一行
改为:ORACLE_HOME_LISTNER=$ORACLE_HOME
c、 在/etc/init.d目录下创建文件oracle
[root@]# vi /etc/init.d/oracle
内容如下:
#!/bin/sh
# chkconfig: 345 61 61
# description: Oracle 11g AutoRun Services
# /etc/init.d/oracle
#
# Run-level Startup script for the Oracle Instance, Listener, and
# Web Interface
export ORACLE_BASE=/u01/app
export ORACLE_HOME=$ORACLE_BASE/oracle
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbstart
touch /var/lock/subsys/oracle
echo "Oracle Start Succesful!OK."
;;
stop)
# Oracle listener and instance shutdown
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbshut
rm -f /var/lock/subsys/oracle
echo "Oracle Stop Succesful!OK."
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo $"Usage: `basename $0` {start|stop|reload|reload}"
exit 1
esac
exit 0
编辑完成并保存
d、 权限、链接及服务
赋予执行权
[root@]# chmod 750 /etc/init.d/oracle
链接
[root@]# ln –s /etc/init.d/oracle /etc/rc1.d/K61oracle
[root@]# ln –s /etc/init.d/oracle /etc/rc3.d/S61oracle
添加服务
[root@]# chkconfig --devel 345 /etc/init.d/oracle on
[root@]# chkconfig --add /etc/init.d/oracle
4.3 密码过期问题
查看用户的proifle是哪个,一般是default:
SQL>SELECT username,PROFILE FROM dba_users;
查看指定概要文件(如default)的密码有效期设置:
SQL>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
将密码有效期由默认的180天修改成“无限制”:
SQL>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改之后不需要重启动数据库,会立即生效。
4.4 账户锁定问题
查看用户的proifle是哪个,一般是default:
SQL>SELECT username,PROFILE FROM dba_users;
查看指定概要文件(如default)的密码有效期设置:
SQL>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='FAILED_LOGIN_ATTEMPTS';
将尝试登录失败次数由默认的10次修改成“无限制”:
SQL>ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
修改之后不需要重启动数据库,会立即生效。
4.5 字符集的修改
SQL>conn / as sysdba;
若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器,然后执行以下命令:
SQL>STARTUP MOUNT;
SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION;
SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0;
SQL>ALTER DATABASE OPEN;
SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE WE8ISO8859P1
4.6 RMAN数据库备份
一周备份计划
周日 0全备
周一 2
周二 2
周三 1
周四 2
周五 2
周六 2
首先,确定四个脚本:
建立存放备份目录
[oracle@=]$ mkdir –p /u01/app/oracle/backup
建立存放脚本目录
[root@]# mkdir –p / u01/app/oracle/tryrman
drwxr-xr-x root root tryrman
在/u01/app/oracle/tryrman目录下创建4个脚本
-rwxr-xr-x oracle root rman_back0.sh
-rwxr-xr-x oracle root rman_back1.sh
-rwxr-xr-x oracle root rman_back2.sh
-rwxr-xr-x oracle root rman_restore.sh
0级备份脚本(rman_back0.sh)
#! /bin/bash
ss=`date +%Y%m%d%H%M%S`
source $ORACLE_HOME/.bash_profile
cd $ORACLE_HOME/bin
./rman target / msglog=$ORACLE_HOME/log/rman_bk_L0_"$ss".log<<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 0 tag 'db0' format '$ORACLE_HOME/backup/db0%u_%s_%p' database skip readonly;
sql 'alter system archive log current';
backup filesperset 3 format '$ORACLE_HOME/backup/arch%u_%s_%p' archivelog all delete input;
release channel c1;
release channel c2;
release channel c3;
}
list backup;
EOF
1级备份脚本(rman_back1.sh)
#! /bin/bash
ss=`date +%Y%m%d%H%M%S`
source $ORACLE_HOME/.bash_profile
cd $ORACLE_HOME/bin
./rman target / msglog=$ORACLE_HOME/log/rman_bk_L1_"$ss".log<<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 1 tag 'db1' format '$ORACLE_HOME/backup/db1%u_%s_%p' database skip readonly;
sql 'alter system archive log current';
backup filesperset 3 format '$ORACLE_HOME/backup/arch%u_%s_%p' archivelog all delete input;
release channel c1;
release channel c2;
release channel c3;
}
list backup;
EOF
2级备份脚本(rman_back2.sh)
#! /bin/bash
ss=`date +%Y%m%d%H%M%S`
source $ORACLE_HOME/.bash_profile
cd $ORACLE_HOME/bin
./rman target / msglog=$ORACLE_HOME/log/rman_bk_L2_"$ss".log<<EOF
run{
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level 2 tag 'db2' format '$ORACLE_HOME/backup/db2%u_%s_%p' database skip readonly;
sql 'alter system archive log current';
backup filesperset 3 format '$ORACLE_HOME/backup/arch%u_%s_%p' archivelog all delete input;
release channel c1;
release channel c2;
release channel c3;
}
list backup;
EOF
恢复脚本(rman_restore.sh)
#! /bin/bash
ss=`date +%Y%m%d%H%M%S`
source $ORACLE_HOME/.bash_profile
cd $ORACLE_HOME/bin
./rman target / msglog=$ORACLE_HOME/log/rman_restore_"$ss".log<<EOF
set dbid=$1;
startup nomount;
restore controlfile from '$ORACLE_HOME/backup/controlfile/c-$1-$2';
alter database mount;
restore database;
recover database;
sql 'alter database open resetlogs';
exit
EOF
做linux计划
oracle 用户下:
crontab –e
00 01 * * 0 /home/tryrman/rman_back0.sh
00 02 * * 3 /home/tryrman/rman_back1.sh
00 02 * * 1-2,4-6 /home/tryrman/rman_back2.sh
修改服务器IP
5 数据库使用
5.1 创建表空间
[oracle@=]$ sqlplus system/123456
SQL>create bigfile tablespace TESTSPACE
logging
datafile ‘/u01/app/oradata/orcl/TESTSPACE.dbf’ Size 2000m
autoextend on next 2000m maxsize unlimited;
SQL>create bigfile temporary tablespace tdrtemp
tempfile ‘/u01/app/oradata/orcl/testtemp.dbf’ size 1024m
autoextend on next 1024m maxsize unlimited;
SQL>create user test identified by 888888
default tablespace TESTSPACE
quota unlimited on TESTSPACE
temporary tablespace testtemp;
SQL>grant sysdba to test;
注意:指定bigfile属性,可以避免表空间不足的问题