读书人

linux上oracle搭建

发布时间: 2012-10-30 16:13:36 作者: rapoo

linux下oracle搭建

一.资源需要:
至少1024?MB物理内存
1024-2048?需1.5倍的交互空间
2048-8192?需1倍的交互空间
8192-?需0.75倍的交互空间
至少400?MB?/tmp?临时目录空间
oracle软件需要1.5?GB?到?3.5?GB?磁盘空间
默认数据库需要1.2?GB

二.查看系统资源相关语句:
cat?/etc/issue
uname?-r
grep?MemTotal?/proc/meminfo
grep?SwapTotal?/proc/meminfo
grep?"model?name"?/proc/cpuinfo
free
df?-k?/tmp
df?-k
安装前的检查和准备工作:?
p4198954_21_linux.zip?在运行?runInstaller?之前打.?
rpm?-ivh?compat-oracle-rhel4-1.0-5.i386.rpm?(p4198954_21_linux.zip)
(不打PATCH也可以)
安装?libaio-0.3.102-1.i386.rpm?
libaio-devel0.3.102-1.i386.rpm
在Red?Hat?Enterprise?Linux?介质的第三张CD,以?root?用户身份运行以下命令:
rpm?-ivh?/mnt/cdrom/RedHat/RPMS/?libaio-0.3.102-1.i386.rpm

三.创建数据库安装的准备工作:?
1.创建用户和组(user/group);?
groupadd?dba?
groupadd?oinstall?
useradd?oracle?-g?oinstall?-G?dba?
passwd?oracle?
如果nobody用户不存在(id?nobody命令查看),则创建:
useradd?nobody
2.建立oracle安装文件夹(sample);?
mkdir?-p?/opt/oracle/product/10g
mkdir?/opt/oracle/database
chown?-R?oracle.oinstall?/opt/oracle
chmod?755?-R?/opt/oracle
2,?配置环境变量;?
要使用?Oracle?产品,应该或必须设置几个环境变量。如果您在同一服务器上安装了多个?Oracle?产品或数据库,则?ORACLE_HOME、 ORACLE_SID?和?PATH?变量可能会更改。ORACLE_BASE?变量不应更改,并可以在需要时在您的登录配置文件中设置它。 Oracle?提供了一个称作?oraenv?的实用程序来设置其他变量。
对于数据库服务器,建议设置以下环境变量:?
使用第一步创建的用户名Oracle登陆:?
su?oracle?
vi?~/.bash_profile?
修改以下是配置文件的内容
export?ORACLE_BASE=/opt/oracle/
export?ORACLE_HOME=/opt/oracle/product/10g
export?ORACLE_SID=ge01(可随意定义)
export?PATH=$ORACLE_HOME/bin:$PATH
ESC(退出vi的编辑环境)
:wq(退出vi应用程序并保存修改)

安装好后再取消屏蔽这些环境变量设置
#export?TNS_ADMIN=$ORACLE_HOME/network/admin
#export?NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#export?LANG=AMERICAN_AMERICA.ZHS16GBK
配置好后用?source?.bash_profile?命令使配置生效?

四.设置系统参数;
Oracle?数据库?10g?需要以下所示的内核参数设置。
其中给出的是最小值,因此如果您的系统使用的值较大,则不要更改它。
切换到root用户:
su?root?
a)?修改/etc/sysctl.conf(vi?/etc/sysctl.conf),?添加:?

kernel.shmmax?=?2147483648
kernel.shmmni?=?4096?
kernel.shmall?=?2097152?
kernel.sem?=?250?32000?100?128?
fs.file-max?=?65536?
net.ipv4.ip_local_port_range?=?1024?65000?
net.core.rmem_default=262144
net.core.rmem_max=262144
net.core.wmem_default=262144
net.core.wmem_max=262144

修改后运行"/sbin/sysctl?-p"命令使得内核改变立即生效;?

B)?设置oracle对文件的要求:?
编辑文件:vi?/etc/security/limits.conf?加入以下语句:?
oracle?soft?nproc?2047
oracle?hard?nproc?16384
oracle?soft?nofile?1024
oracle?hard?nofile?65536
编辑文件:vi?/etc/pam.d/login?加入以下语句(可能应该加在最后一条规则之前):
session?required?/lib/security/pam_limits.so

安装Oralce10G

解压缩Oracle10G的安装文件?:
1.?Oracle?
(1)?简化过程(以oracle登录,释放安装文件,使用更少的磁盘空间,速度更快)?
在/tmp下解压缩10201_database_linux32.zip:
unzip?10201_database_linux32
开始安装oracle?
(一)开始安装:?
1.以oracle用户登录系统,进行Oracle的安装:
cd?/tmp/database?(或者你解压缩安装程序包的目录)
./runInstaller
过一会儿就会出现Oracle的安装界面
注意:
1、选择advance?install
2、数据库home设置为/opt/oracle/product/10g
3、数据库全局名称设置为ge01
4、数据库字符集选Simplified?Chinese?ZHS16GBK

2.其他用默认设置!
注意:安装过程中会提示以root用户登陆执行一些脚本?,执行后再按“ok”按钮继续安装。

3、登陆并启动数据库的操作。?
[oracle@oracle?oracle]$?lsnrctl?start?
[oracle@oracle?oracle]$?sqlplus?/nolog?
SQL*Plus:?Release?9.2.0.0?-?Production?on?Sat?Mar?12?22:58:53?2005?
Copyright?(c)?1982,?2002,?Oracle?Corporation.?All?rights?reserved.?
SQL>?connect?/?as?sysdba?
Connected.?
SQL>?shutdown?immediate?关闭数据库?(OR?"dbshut"?command)
Database?closed.?
Database?dismounted.?
ORACLE?instance?shut?down.?
SQL>?startup;?启动数据库?
ORACLE?instance?started.?
Total?System?Global?Area?236000356?bytes?
Fixed?Size?451684?bytes?
Variable?Size?201326592?bytes?
Database?Buffers?33554432?bytes?
Redo?Buffers?667648?bytes?
Database?mounted.?
Database?opened.?

4,?dbstart脚本修改
数据库创建完成后,修改vi?/etc/oratab,把orcl:/opt/oracle/oracle/product/10g:N那一行最后的N改成Y,
然后执行dbstart启动数据库数据库可能无法启动,报告Can’t?find?init?file?…的错误,需要复制一个初始化文件:?
cp?/opt/oracle/admin/ge01/pfile/init.ora.*?/opt/oracle/product/10.2.0/dbs/initge01.ora?
重新执行dbstart就可以了。
修改vi?/opt/oracle/product/10g/bin/dbstart中ORACLE_HOME_LISTNER=/opt/oracle/oracle/product/10g/
vi?/etc/rc.local?加入下面一行?起动ORACLE?ON?system?boot
/opt/oracel/product/10g/bin/dbstart

5.?编写启动脚本(OPTION)
为了方便管理,可以写一个启动脚本ora10g:?
以root身份进入,编写以下脚本:?
#!/bin/bash?
#?
#?chkconfig:?2345?91?19?
#?description:?starts?the?oracle?listener?and?instance?
status()?{
pid=`ps?-ef?|?grep?ora_pmon?|?grep?-v?grep?|?awk?'{print?$8}'`
if?[?"X$pid"?=?"X"?]
then
echo?"oracle10g?is?not?running."
exit?1
else
echo?"oracle10g?is?running."
exit?0
fi
}
case?"$1"?in?
start)?
#startup?the?listener?and?instance?
echo?-n?"oracle?begin?to?startup:?"?
su?-?oracle?-c?"lsnrctl?start"?
su?-?oracle?-c?dbstart?
echo?"oracle10g?started"?
;;?
stop)?
#?stop?listener,?apache?and?database?
echo?-n?"oracle?begin?to?shutdown:"?
su?-?oracle?-c?"lsnrctl?stop"?
su?-?oracle?-c?dbshut?
echo?"oracle10g?shutdowned"?
;;?
reload|restart)?
$0?stop?
$0?start?
;;?
'status')
status
;;
*)?
echo?"Usage:?ora10g?[start|stop|reload|restart]"?
exit?1?
esac?
exit?0?
存为ora10g后,然后
chmod?a+x?ora10g
ln?-s?/opt/oracle/product/10.2.0/bin/ora10g?/etc/rc.d/init.d/
即可在以后以root身份运行/etc/rc.d/init.d/ora10g?start?|stop?来管oracle的启动和停止了。
如果要将这个脚本加入到系统中使其可开机运行,那么要运行以下命令:
chkconfig?--level?345?ora10g?on

或者可在/etc/rc.d/rc.local中加入如下:?
su?-?oracle?-c?"lsnrctl?start"?
su?-?oracle?-c?"dbstart"?

6,?关于数据库删除重新安装的问题:?
把ORACLE安装目录删除及/etc/ora*.*删除就行了?
#rm?f?/etc/ora*.*

7.修改Oracle10g数据库字符集
SQL>?connect?sys/oracle?as?sysdba
SQL>?startup?mount
SQL>?alter?session?set?sql_trace=true;
Session?altered.
SQL>?alter?system?enable?restricted?session;
System?altered.
SQL>?alter?system?set?job_queue_processes=0;
System?altered.
SQL>?alter?system?set?aq_tm_processes=0;
System?altered.
SQL>?alter?database?open;
Database?altered.
SQL>?set?linesize?120;
SQL>?alter?database?character?set?zhs16gbk;
alter?database?character?set?zhs16gbk
*
ERROR?at?line?1:
ORA-12712:?new?character?set?must?be?a?superset?of?old?character?set
SQL>?ALTER?DATABASE?character?set?INTERNAL_USE?zhs16gbk;?#?使用INTERNAL_USE可以跳过超集的检查,ALTER?DATABASE?character?set?INTERNAL_USE?
Database?altered.
SQL>?shutdown?immediate;
Database?closed.
Database?dismounted.
ORACLE?instance?shut?down.
SQL>?STARTUP
SQL>?select?name,value$?from?props$?where?name?like?'%NLS%';
NLS_CHARACTERSET
ZHS16GBK

8.?oracle?database备份
(1)vi?bachupDb.sh
#!/bin/sh
#oracle用户下
#crontab?-e?增加?"35?4?*?*?*?/home/oracle/dbbackup/backupDb.sh",保存后自动安装
#或echo?"35?4?*?*?*?/home/oracle/dbbackup/backupDb.sh"?>?backupDb.cron
#crontab?backupDb.cron
#############
#@tip?修改为本机数据库home目录
export?ORACLE_HOME=/opt/oracle/product/10g
export?PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin
#?注意字符集必须和数据库的字符集一致,以避免字符集转化失败?
export?NLS_LANG=AMERICAN_AMERICA.zhs16gbk
#@tip?125修改为要备份的oracle的ip地址的最后一段
dmpfile="`echo?~/`dbbackup/gedb_`date?+%w`.dmp"
logfile="`echo?~/`dbbackup/gedb_`date?+%w`.log"

if?[?-w?$dmpfile?]
then
echo?"rm?-f?$dmpfile"
rm?-f?"$dmpfile"
fi

#@tip?ip地址修改为要备份的oracle的主机地址
exp?USERID=gedb/gedb@10.248.1.5/ge01?file=$dmpfile?log=$logfile?owner=gedb?grants=y
(2)copy?bachupDb.sh?到slave?oracle?srever?相应目录,
chown?oracle.oinstall?bachupDb.sh
chmod?744?bachupDb.sh?
vi?bachupDb.sh?以符合安装情况
(3)以oracle?user?role
crontab?-e
35?4?*?*?*?/home/oracle/dbbackup/backupDb.sh?

9.?restore?oracle?backup
su?-?oracle
imp?USERID=gedb/gedb?file=gedb_6.dmp?log=implogfile?commit=y?grants=y?full=y

读书人网 >UNIXLINUX

热点推荐