OS OpenSUSE-11.4
DB版本 Oracle 11g R2
先说卸载:
1、rm /etc/oratab
2、rm -rf /$ORACLE_BASE
3、rm -rf oraInventory
再说安装:
1)检查基本需求
内存大小
grep MemTotal /proc/meminfo
交换分区大小
如果交换分区太小可以增加,用如下命令:
grep SwapTotal /proc/meminfo
增加交换分区
创建/home/swap这么一个分区文件。文件的大小是5120000个block,一般情况下1个block为1K,所以这里空间是5G。
dd if=/dev/zero of=/home/swap bs=1024 count=5120000
接着再把这个分区变成swap分区。
mkswap /home/swap
然后把它加到fstab里面
echo "/home/swap swap swap defaults 0 0" >> /etc/fstab 2)检查软件需求,看有没有没install的
这个可以根据官方的文档,我的系统是64位的,所以在11g Release 2 (11.2) for Linux E10840-05 第50页找到相关说明。用如下命令慢慢查看
rpm -qa | grep unixODBC-devel
rpm -q binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers ksh libaio-devel libaio libgcc libstdc++ libstdc++-devel make numactl-devel sysstat unixODBC unixODBC-devel pdksh 根据提示,有11个包没有安装,在opensuse的盘中将这些一一找出,然后利用flashxp上传到centos中 安装3)配置内核。
vi /etc/sysctl.conf
将以下内容添加至文件
# Kernel paramaters required by Oracle 11gR2
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
net.ipv4.tcp_wmem = 262144 262144 262144
net.ipv4.tcp_rmem = 4194304 4194304 4194304
4)要使 /etc/sysctl.conf 更改立即生效,执行以下命令。
sysctl -p
5)vi /etc/security/limits.conf
添加以下行:
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle hard stack 102406) vi /etc/pam.d/login
添加以下行:
session required /lib/security/pam_limits.so
session required pam_limits.so
7)vi /etc/profile
添加以下行: if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi 8) 创建操作系统用户,作为软件安装和支持组的拥有者。
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba -m oracle
默认目录为/home/oracle
passwd oracle设置用户密码
9) 创建软件安装目录。
mkdir -p /home/oraclex
chown -R oracle:oinstall /home/oraclex
chmod -R 755 /home/oraclex

可以用oracle用户登录
10) vi /home/oracle/.profile
export ORACLE_BASE=/home/oraclex
export ORACLE_HOME=$ORACLE_BASE/product/OraHome
export ORACLE_SID=orcl
export ORACLE_OWNER=oracle
export ORACLE_TERN=vt100
export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin
export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/Apache/Apache/bin:$PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
CLASSPATH=$CLASSPATH:$ORACLE_HOME/network/jlib
export CLASSPATH
ORA_NLS33=$ORACLE_HOME/nls/admin/data里面的SID在安装数据库时候如果修改了,安装完后需要回来重新修改SID。
修改完用“source .profile”使其生效。

11)解压oracle 11 r2 到opensuse中
oracle11gR2有两个zip包,分别解压后,将第二个包里面的Component的内容移到第一个包的Component里面(BC比较后发现没有重复),否则安装过程中会提示无法打开一些文件
12) 以root身份打开另一个终端窗口
--这步至关重要,不执行这步在以oracle用户运行 # ./runInstaller时会启动不了图型安装界面
#xhost +
#xhost + localhost
12)安装数据库
#su - oracle
cd database/
./runInstaller为避免仍然存在DISPLAY问题无法启动安装界面,需要切换到oracle用户的桌面环境,再从Terminal执行oracle安装脚本:runInstaller
安装完后先配置监听
netca
然后安装全局数据库
dbca
Oh, it's so easy!
Good lucks!1)在建立用户的时候可能遇到下面的问题
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
原因:
系统添加用户的标准步骤
1.编辑/etc/passwd与/etc/group
2.创建用户主目录
3.从/etc/skel拷贝文件与目录
4.让新用户获得其主目录与文件的拥有权限
5.给新用户一个密码
<!--[if !ppt]--><!--[endif]-->

解决办法:
依旧使用上面的脚本建用户,然后手动拷贝配置文件(3个)到/home/oracle下。如:
root@linux-cfua:~ # cp /etc/skel/.bash_profile /home/oracle
或者删掉用户 重新建立
useerdel Cr 这样就可以将家目录等和用户相关的信息全部删掉
2)可能会遇到下面的错误
cannot restore segment prot after reloc: Permission denied
编辑/etc/sysconfig/selinux,找到:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing
如果SELINUX已经是 SELINUX=disabled,那么就不用改了,否则就把SELINUX=enforcing 注释掉,新加一行:
SELINUX=disabled
3)可能会遇到下面的错误:
could not open parameter file '/home/app/oracle/product/11.2.0/db_1/dbs/initorcl.ora
这是因为在oracle9i和oracle10g中,数据库默认将使用spfile启动数据库,如果spfile不存在,则就会出现上述错误。
解决方法:
将$ORACLE_BASE/admin/数据库名称/pfile目录下的init.ora.012009233838形式的文件copy到$ORACLE_HOME/dbs目录下initorcl.ora即可。(注:initorcl.ora中的oracle为你的实例名 ORACLE_SID
Startup mount pfile=’ $ORACLE_HOME/dbs/initorcl.ora’
创建一个实例进行最后测试
注意:在数据库操作中都是用oracle用户执行命令. 输入oracle@linux-cfua:~ $ sqlplus /nolog SQL*Plus: Release 11.1.0.6.0 - Production on Tue Dec 11 15:32:23 2007 Copyright (c) 1982, 2007, Oracle. All rights reserved. SQL> conn / as sysdba
Connected.
SQL> create table orcl(id integer); Table created. 一、sql*plus方式: 用sql*plus来连接到Oracle

Sqlplus /nolog 是以不连接数据库的方式启动sql*plus

Connect /as sysdba 是以DBA身份连接到oracle

Startup就可以启动了。

不过oracle启动模式有3种:

l Startup nomount (nomount模式)启动实例不加载数据库。

l Startup mount (mount模式)启动实例加载数据库但不打开数据库

l Startup (open 模式)启动实例加载并打开数据库,就是我们上面所用的命令

Nomount模式中oracle仅为实例创建各种内存结构和服务进程,不会打开任何数据库文件,

所以说:

1) 创建新数据库

2) 重建控制文件

这2种操作都必须在这个模式下进行。

Mount模式中oracle只装载数据库但不打开数据库,所以说:

1) 重命名数据文件

2) 添加、删除和重命名重做日子文件

3) 执行数据库完全恢复操作

4) 改变数据库的归档模式

这4种操作都必须在这个模式下进行

Open模式(就是我们上面的startup不带任何参数的)正常启动。

当然这3种模式之间可以转换:

Alter database mount(nomount模式)―〉alter database open(mount 模式)―〉(open模式)

当然还有其它一些情况,在我们open模式下可以将数据库设置为非受限状态和受限状态

在受限状态下,只有DBA才能访问数据库,所以说:

1) 执行数据导入导出

2) 使用sql*loader提取外部数据

3) 需要暂时拒绝普通用户访问数据库

4) 进行数据库移植或者升级操作
这4种操作都必须在这个状态下进行
在打开数据库时使用startup restrict命令即进入受限状态。
使用alter system disable restricted session命令即可以将受限状态改变为非受限状态。
使用alter system enable restricted session命令可以将非受限状态变为受限状态

使用alter database open read only可以使数据库进入只读状态。
使用alter database open read write 可以使数据库进入读写状态。

当然在某些情况下可能是用上述各种启动方式都无法成功启动数据库,这个时候就要使用startup force命令来强行启动数据库。当然谁都不想碰到这种情况:)

c.关闭数据库
1)正常关闭 shutdown
2) 立即关闭 shutdown immediate
3) 关闭事务 shutdown transactional
4) 强行关闭 shutdown abort,当然谁都不想碰到这种情况。


二、OEM为例

Oracle Enterprise Management(OEM),

跟第一小节讲的Sqlplus /nolog ,Connect /as sysdba 这2个命令差不多的操作如图:

按照上面的一步步操作就能够连接到数据库。

下面是如何启动和关闭数据库:

点击我们前几章创建的ORADB01这个数据库树中的配置选项,这个里面的:

1)已启动 对应 Nomount模式

2)已转载 对应 mount模式

3)打开 对应 open模式

当你点击应有按钮之后就会进入如下对话框

1)正常 对应 正常关闭 shutdown

   2) 立即 对应 立即关闭 shutdown immediate

   3) 事务处理 对应 关闭事务 shutdown transactional

   4) 中止 对应 强行关闭 shutdown abort

确定之后出现如下对话框

限制对数据库访问 对应 alter system disable restricted session

alter system enable restricted session

只读模式 对应  alter database open read only

alter database open read write

简单吧,sql*plus的一大堆命令到OEM中变成了几个按钮罢了。

Windows里面oracle相关进程说明::

oracle ************Agent 用于OEM管理结构
oracle************HTTPSERVER  oracle Web服务器
oracle ************ManagementServer 用于OEM管理结构
oracle ************ TNSListener oracle网络结构的服务器端进程
oracle ************OEMREP 资料档案库文件
oracle ************ORADB001 用户创建的数据库
我一般都把所有的服务全部选成手动启动,如果全开,内存要用掉700M..............