Red Hat as 下ORACLEg的安装及配置
注意可以从 OTN 下载 Oracle 数据库 gOracle 提供了一个免费的开发和测试许可
但不提供支持且该许可不允许用于生产目的
资源需要
至少 MB物理内存
- 需倍的交互空间
- 需倍的交互空间
- 需倍的交互空间
至少 MB /tmp 临时目录空间
oracle软件需要 GB 到 GB 磁盘空间
默认数据库需要 GB
查看系统资源相关语句
cat /etc/issue
uname r
grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo
grep model name /proc/cpuinfo
free
df h /tmp
df h
安装前的检查和准备工作
禁用selinux和iptables
chkconfig level pcmcia off
chkconfig level kudzu off
chkconfig level isdn off
chkconfig level sendmail off
chkconfig level rhnsd off
chkconfig level cups off
chkconfig level cupsconfigdaemon off
chkconfig level cpuspeed off
chkconfig level gpm off
chkconfig level apmd off
chkconfig level lm_sensors off
chkconfig level mdmonitor off
chkconfig level nfs off
chkconfig level nfslock off
chkconfig level iiim off
chkconfig level canna off
chkconfig level portmap off
rpm Uvh libaioirpm
[linux as ]
chkconfig level rhnsd off
chkconfig level isdn off
chkconfig level avahidaemon off
chkconfig level avahidnsconfd off
chkconfig level bluetooth off
chkconfig level cpuspeed off
chkconfig level hidd off
chkconfig level iptables off
chkconfig level mcstrans off
chkconfig level pcscd off
chkconfig level netfs off
chkconfig level yumupdatesd off
chkconfig level restorecond off
chkconfig level setroubleshoot off
chkconfig level yumupdatesd off
chkconfig level libvirtd off
chkconfig level xendomains off
chkconfig level xend off
chkconfig level iptables off
chkconfig level sendmail off
chkconfig level cups off
install the following packages:
# From RedHat AS Disk
cd /media/cdrom/Server
rpm Uvh setarch*
rpm Uvh make*
rpm Uvh glibc*
rpm Uvh libaio*
cd /
eject
# From RedHat AS Disk
cd /media/cdrom/Server
rpm Uvh compatlibstdc++*
rpm Uvh compatgcc*
rpm Uvh compatgccc++*
rpm Uvh gcc*
rpm Uvh libXp* (一定要装!)
cd /
eject
# From RedHat AS Disk
cd /media/cdrom/Server
rpm Uvh openmotif*
rpm Uvh compatdb*
cd /
eject
vi /etc/redhatrelease
replacing the current release information:
Red Hat Enterprise Linux Server release (Tikanga)
with the following: redhat
安装完成后复原
配置XDMCP服务
) 对于XDM服务配置
修改服务运行级别为
打开/etc/inittab文件配置服务初始化运行级别为如下
id::initdefault:
) 配置XDMCP服务自启动
For GDM:
打开/etc/gdm/nf文件查找[xdmcp]选项并设置Enable值为如下
[xdmcp]
Enable=
For KDM:
打开/usr/share/config/kdm/Xaccess文件并删除下述内容前面的#
修改前
#* #any host can get a login window ==>
修改后
* #any host can get a login window
打开/usr/share/config/kdm/kdmrc文件查找[xdmcp]选项并设置Enable值为true如下
[xdmcp]
Enable=true
)配置防火墙增加端口(/UDP)端口到防火墙
)至此已经完成XDMCP服务的配置之后重器服务器启动XDMCP服务
)下载并安装客户端(Xmanager xx)并在客户机上运行Xmanager输入所需要管理的服务器的IP地址用户名及密码即可对服务器进行远程管理
vnc server配置
使用root用户启动系统的vncserver服务
#service vncserver start
然后切换到登陆用户下面我这里假设要使用oracle系统帐户进行远程登陆
#su oracle
使用oracle用户输入以下命令
$vncserver
如果是第一次运行则系统会出现提示信息提示你输入密码这是通过终端进行登陆时需要输入的
另外还有一个数字信息这个也是需要在终端登陆时输入的即冒号后面跟着的一个数字如 等等需要记住
在windows客户端使用vncviewer输入如下xxxxxxxxxxxx: 或者xxxxxxxxxxxx:等后面的数字需要和服务器端的对应才行xxx是你服务器的ip地址了
[linux as ]
软件要求
其他所需程序包的版本(或更高版本)
gcc
make
binutils
openmotif
glibc
要查看系统上安装了这些程序包的哪些版本运行以下命令
rpm q gcc make binutils openmotif glibc setarch
p__linuxzip 在运行 runInstaller 之前打
rpm ivh compatoraclerhelirpm (p__linuxzip)
(不打PATH也可以)
安装 libaioirpm 和libaiodevelirpm
在Red Hat Enterprise Linux 介质的第三张 CD
以 root 用户身份运行以下命令
rpm ivh /mnt/cdrom/RedHat/RPMS/ libaioirpm
创建数据库安装的准备工作:
创建user/group
groupadd dba
groupadd oinstall
useradd oracle g oinstall G dba
passwd oracle
如果nobody用户不存在(id nobody命令查看)则创建
useradd nobody
建立oracle安装文件夹(sample)
mkdir p /opt/oracle/ /opt/oracle/oradata /opt/oracle/archivelog
chown R oracleoinstall /opt/oracle
chmod R /opt/oracle
配置环境变量
要使用 Oracle 产品应该或必须设置几个环境变量
如果您在同一服务器上安装了多个 Oracle 产品或数据库则 ORACLE_HOMEORACLE_SID 和 PATH 变量可能会更改
ORACLE_BASE 变量不应更改并可以在需要时在您的登录配置文件中设置它Oracle 提供了一个称作 oraenv 的实用程序来设置其他变量
对于数据库服务器建议设置以下环境变量
使用root用户:
vi /home/oracle/bash_profile
以下是配置文件的内容
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/
ORACLE_SID=ge
PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$PATH
TNS_ADMIN=$ORACLE_HOME/network/admin
NLS_LANG=AMERICAN_AMERICAZHSGBK
LANG=AMERICAN_AMERICAZHSGBK
export PATH ORACLE_BASE ORACLE_HOME ORACLE_SID TNS_ADMIN NLS_LANG LANG
设置系统参数
Oracle 数据库 g 需要以下所示的内核参数设置
一般情况下可以设置最大共享内存为物理内存的一半如果物理内存是 G则可以设置最大共享内存为
如上如物理内存是 G则可以设置最大共享内存为 * * = 以此类推在redhat上最大共享内存不建议超过
***=
切换到root用户:
su root
修改vi /etc/nf 添加
kernelshmmax =
kernelshmmni =
kernelshmall =
kernelsem =
fsfilemax =
netipvip_local_port_range =
rermem_default=
rermem_max=
rewmem_default=
rewmem_max=
修改后运行/sbin/sysctl p命令使得内核改变立即生效
B) 设置oracle对文件的要求
编辑文件vi /etc/security/nf 加入以下语句
oracle soft nproc
oracle hard nproc
oracle soft nofile
oracle hard nofile
编辑文件vi /etc/pamd/login 加入以下语句(可能应该加在最后一条规则之前):
session required /lib/security/pam_limitsso
设置oraInstloc文件
[root@enterprice ~]#vi /etc/oraInstloc
inventory_loc=/opt/oracle/oraInventory
inst_group=oinstall
[root@enterprice ~]#chown oracleoinstall /etc/oraInstloc
确保/etc/oraInstloc中包含上面的信息且Oracle包含访问权限
解压缩OracleG的安装文件
使用Oracle用户登陆:
su oracle
在/home/oracle 上传和解压缩_database_linuxzip:
unzip _database_linux
开始安装oracle
L i n u x 命令行环境下安装(也可以在图形界面下安装)
使用Oracle用户登陆:
su oracle
根据希望安装的数据库版本类型选择Silent安装模式的response_file文件的类似比如enterpriserspstandardrsp还是customrsp
这里选择enterpisersp类型安装盘中的database/response目录下对应的response文件拷贝出来根据文件里面的提示对输入值进行修改
比如这个例子中对如下的参数进行设置
UNIX_GROUP_NAME=oinstall
FROM_LOCATION=/home/oracle/database/stage/productsxml
ORACLE_BASE=/opt/oracle
ORACLE_HOME=/opt/oracle/
ORACLE_HOME_NAME=OraDbHome
SHOW_INSTALL_PROGRESS_PAGE= true
SHOW_END_OF_INSTALL_MSGS= true
COMPONENT_LANGUAGES={zh_CN}
s_nameForDBAGrp= dba
s_nameForOPERGrp=dba
INSTALL_TYPE=EE
n_configurationOption=
RESTART_SYSTEM=false
RESTART_REMOTE_SYSTEM=false
注意所有的字符串需要放在双引号中注意大小写数字和布尔变量直接写就可以
由于这里没有选择建立数据库而只安装软件因此没有设置数据库相关的配置参数
[oracle@enterprice data]$ chmod enterprisersp
面可以开始SILENT安装了
注意响应文件需要使用绝对路径
cd /home/oracle/database
[oracle@enterprice database]$ /runInstaller silent responseFile /home/oracle/enterprisersp
用root执行如下脚本
/opt/oracle//oraInventory/orainstRootsh
/opt/oracle//rootsh
不过这里Oracle存在一个bug在rootsh脚本中自动将OUI_SILENT参数设置为TRUE而后的检查中
如果发现这个值为TRUE那么这个脚本运行会自动退出了这里需要手工将其修改为false
最后使用root执行一下$ORACLE_HOME/rootsh脚本就可以了
根据提示按 Enter 就可以了
这样就在字符下成功安装了
通过SILENT模式安装数据库之后下面继续使用SILENT模式进行数据库的建立
仍然是拷贝安装目录下的/home/oracle/database/response/dbcarsp到安装目录并进行编译
根据数据库建立方式的不同编辑不同的数据库库选项
比如在本次安装过程中设置了下列参数
RESPONSEFILE_VERSION =
OPERATION_TYPE = createDatabase
GDBNAME = ge
SID = ge
TEMPLATENAME = New_Databasedbt
SYSPASSWORD = georacle
SYSTEMPASSWORD = georacle
DATAFILEDESTINATION =/opt/oracle/oradata/
RECOVERYAREADESTINATION=/opt/oracle/flash_recovery_area
STORAGETYPE=FS
CHARACTERSET = ZHSGBK
MEMORYPERCENTAGE =
SCRIPTDESTINATION =/opt/oracle/admin/orag/scripts
EMCONFIGURATION=LOCAL
SYSMANPASSWORD = georacle
DBSNMPPASSWORD = georacle
其中最后项不是必须的这个的目的是在建立数据库的同时生成脚本
下面就可以开始SILENT模式的数据库创建了
[oracle@enterprice database]$ dbca silent responseFile /home/oracle/dbcarsp
用root执行如下脚本
/opt/oracle//oraInventory/orainstRootsh
最后可以利用netca来SILENT方式设置网络部分同样的方法设置netcarsp
RESPONSEFILE_VERSION=
CREATE_TYPE= CUSTOM
SHOW_GUI=false
LOG_FILE=/opt/oracle//network/tools/log/netcalog
INSTALLED_COMPONENTS={servernetjavavm}
INSTALL_TYPE=typical
LISTENER_NUMBER=
LISTENER_NAMES={LISTENER}
LISTENER_PROTOCOLS={TCP;}
LISTENER_START=LISTENER
NAMING_METHODS={TNSNAMESONAMESHOSTNAME}
设置的参数包括上面的部分然后就可以使用netca启动silent配置
[oracle@enterprice database]$ netca /silent /responsefile /home/oracle/netcarsp
静默卸载Oracle数据库ge
dbca silent deleteDatabase sourceDB <source database sid> [sysDBAUserName <user name with SYSDBA privileges> sysDBAPassword <password for sysDBAUserName user name>]
例如dbca silent deleteDatabase sourceDB ge sysDBAUserName sys sysDBAPassword georacle
静默卸载Oracle数据库软件
执行以下命令静默卸载Oracle数据库软件
$/runInstaller silent deinstall removeallfiles removeAllPatches REMOVE_HOMES={$ORACLE_HOME} responseFile ~/enterprisersp
(一)图形界面开始安装
以oracle用户登录XWINDOWS系统进行Oracle的安装(远程安装需打开XDM)
[ linux }
export DISPLAY=
cd /opt/database (或者你解压缩安装程序包的目录)
/runInstaller 或者/runInstaller ignoreSysPrereqs
过一会儿就会出现Oracle的X安装界面
注意
选择advance install
数据库home设置为/opt/oracle/
数据库全局名称设置为ge
数据库字符集选Simplified Chinese ZHSGBK
其他用默认设置!
注意安装过程中会提示以root用户登陆执行一些脚本 执行后再按ok按钮继续安装
登陆并启动数据库的操作
su oracle
[oracle@oracle oracle]$ lsnrctl start
[oracle@oracle oracle]$ sqlplus /nolog
SQL*Plus: Release Production on Sat Mar ::
Copyright (c) Oracle Corporation All rights reserved
SQL> connect / as sysdba
Connected
SQL> startup; 启动数据库
ORACLE instance started
Total System Global Area bytes
Fixed Size bytes
Variable Size bytes
Database Buffers bytes
Redo Buffers bytes
Database mounted
Database opened
SQL> shutdown immediate ;关闭数据库 (OR dbshut command)
Database closed
Database dismounted
ORACLE instance shut down
dbstart脚本修改
数据库创建完成后修改vi /etc/oratab把ge:/opt/oracle/:N那一行最后的N改成Y
修改vi /opt/oracle//bin/dbstart中ORACLE_HOME_LISTNER=/opt/oracle/
然后执行dbstart启动数据库数据库可能无法启动报告Cant find init file …的错误需要复制一个初始化文件:
cp /opt/oracle/admin/ge/pfile/initora* /opt/oracle//dbs/initgeora
重新执行dbstart就可以了
可以执行dbshut 停止ORACLE
vi /etc/rclocal 加入下面一行 起动ORACLE ON system boot
su oracle c lsnrctl start
su oracle c dbstart
为了root方便管理可以写一个启动脚本
vi /etc/initd/orag
#!/bin/bash
#
# chkconfig:
# description: starts the oracle listener and instance
status() {
pid=`ps ef | grep ora_pmon | grep v grep | awk {print $}`
if [ X$pid = X ]
then
echo oracleg is not running
exit
else
echo oracleg is running
exit
fi
}
case $ in
start)
#startup the listener and instance
echo n oracle begin to startup:
su oracle c lsnrctl start
su oracle c dbstart
echo oracleg started
;;
stop)
# stop listener apache and database
echo n oracle begin to shutdown:
su oracle c lsnrctl stop
su oracle c dbshut
echo oracleg shutdowned
;;
reload|restart)
$ stop
$ start
;;
status)
status
;;
*)
echo Usage: orag [start|stop|reload|restart]
exit
esac
exit
存为orag后然后
chmod a+x /etc/initd/orag
即可在以后以root身份运行/etc/rcd/initd/orag start |stop 来管oracle的启动和停止了
如果要将这个脚本加入到系统中使其可开机运行那么要运行以下命令
chkconfig level orag on
关于数据库删除重新安装的问题:
去除 /usr/local/bin 目录 下的 coraenv dbhome oraenv
去除 /etc/oratab /etc/oracle
去掉安装 目录 /opt/oracle 目录下的 product admin oradata oralnventor 目录
# userdel r oracle
# groupdel dba oinstall
rm rf /tmp/ora*
rm rf /opt/oracle/*
rm rf /opt/ORCLfmap
rm f /etc/ora*
rm f /usr/local/bin/oraenv
rm f /usr/local/bin/coraenv
rm f /usr/local/bin/dbhome
修改Oracleg数据库字符集
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=;
System altered
SQL> alter system set aq_tm_processes=;
System altered
SQL> alter database open;
Database altered
SQL> set linesize ;
SQL> alter database character set zhsgbk;
alter database character set zhsgbk
*
ERROR at line :
ORA: new character set must be a superset of old character set
SQL> ALTER DATABASE character set INTERNAL_USE zhsgbk; # 使用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 namevalue$ from props$ where name like %NLS%;
NLS_CHARACTERSET
ZHSGBK
oracle database异机备份脚本
su oracle
mkdir /home/oracle/dbbackup
()vi /home/oracle/dbbackup/bachupdbsh
#!/bin/bash
#As oracle user chmod /home/oracle/dbbackup/DBbackuprecoversh
#crontab e * * * /home/oracle/dbbackup/DBbackuprecoversh >/dev/null >&
#@tip: modify local databases home directory
#@tip <ip> is remote database ip address
export ORACLE_HOME=/opt/oracle/
export PATH=$ORACLE_HOME/bin:$PATH:
export NLS_LANG=AMERICAN_AMERICAzhsgbk
export LANG=AMERICAN_AMERICAZHSGBK
export ORACLE_SID=ge
dmpfile=gedb_`date +%F`dmp
logfile=gedb_`date +%F`log
restoredblog=restoredb_`date +%F`log
WORK_DIR=~/dbbackup
cd $WORK_DIR
exp USERID=gedb/gegedb@<ip>/ge file=$dmpfile log=$logfile owner=gedb
if [ eq $? ]
then
sqlplus / as sysdba @usersql
imp USERID=gedb/gegedb file=$dmpfile log=/$restoredblog fromuser=gedb touser=gedb
find /*dmp type f mtime + exec rm {} \;
find /*log type f mtime + exec rm {} \;
exit
else
echo backup errorquit! > $logfile
exit
fi
#@tip ip地址修改为要备份的oracle的主机地址
exp USERID=gedb/gedb@/ge file=$dmpfile log=$logfile owner=gedb direct=y
()更改脚本权限
chown oracleoinstall backupdbsh
chmod backupdbsh
()以oracle user role
crontab e
* * * /home/oracle/dbbackup/backupdbsh
restore oracle backup
() 先创建gedb用户和授权
su oracle
sqlplus / as sysdba @createUsersql
()imp USERID=gedb/gegedb file=dmp fromuser=gedb touser=gedb
如果要第二次IMP操作要先删除用户gedb再新建用户gedb这样imp才不会出错
DROP USER gedb CASCADE;
CREATE USER gedb IDENTIFIED BY gegedb;
GRANT UNLIMITED TABLESPACE TO gedb;
GRANT CONNECT TO gedb;
GRANT RESOURCE TO gedb;
GRANT DBA TO gedb;
oracle优化
SQL> alter system set _kgl_large_heap_warning_threshold= scope=spfile ; (ONLY FOR )
SQL> shutdown immediate
SQL> startup
BUG FIX
()g EM乱码之快速解决
[oracle@danaly ~]$ cd $ORACLE_HOME/jdk/jre/lib
[oracle@danaly lib]$ ls font*zh_CN*
fontpropertieszh_CNRedhat fontpropertieszh_CNRedhat
fontpropertieszh_CNSun fontpropertieszh_CN_UTFSun
[oracle@danaly lib]$ cd $ORACLE_HOME/jre//lib/
[oracle@danaly lib]$ ls font*zh_CN*
fontpropertieszh_CNRedhat fontpropertieszh_CNRedhat
fontpropertieszh_CNSun fontpropertieszh_CN_UTFSun
我们只要用合适的中文字符集文件替换缺省文件即可我选择使用fontpropertieszh_CNRedhat来替换缺省字体定义文件:
[oracle@danaly lib]$ cp fontpropertieszh_CNRedhat fontproperties
替换之后需要清理一下Cache重启EM即可
Cache路径通常位于:
$ORACLE_HOME/ocj/jee/ocj_applications/applications/em/em/cabo/images/cache/zhs
清除所有gif文件即可然后重新启动EM
()上一个严重的BUG
环境 AIX
但据ORACLE解释在任何操作系统版本都有此问题
现象监听器启动后隔一段时间(长短不定)就会出现无法
连接 若是用版本的SQLPLUS则会出现 NO LISTENER
版本的SQLPLUS则会出现没反应HANG住
原因 版本上的一个BUG其会自动创建一个子
监听器当出现此情况时监听器将会挂起
/opt/oracle/product/g/network/log/listenerlog有如下语句:
WARNING: Subscription for node down event still pending
检查是否真因为此BUG造成此现象
$ ps ef | grep tnslsnr
orag Sep ? : /u/GHOME/DBHOME/bin/tnslsnr sales inherit
orag :: ? : /u/GHOME/DBHOME/bin/tnslsnr sales –inherit
正常情况只有一个监听器而此BUG则会出现两个监听器
解决方法
打补丁
或者在listenerora 文件里加入
SUBSCRIBE_FOR_NODE_DOWN_EVENT_<listener_name>=OFF
其中<listener_name> 是数据库的监听器的名称如
默认情况下监听器名为LISTENER 则语句就是
SUBSCRIBE_FOR_NODE_DOWN_EVENT_LISTENER=OFF
同时
cd $ORACLE_HOME/opmn/conf
mv nfig nfigorig
重启监听程序:
lsnrctl stop
lncrctl start