安装环境:
操作系统:CentOS6.5_x64
主机名:Oracle
内存:2G(官方最低要求1G)
硬盘:500G(企业版安装所需4.29G和1.7G数据文件)
安装centos的时候要注意,swap交换分区的大小最好为物理内存的两倍,网络最好配置静态ip,还有安装时把开发工具装上,因为Linux Oracle的安装依赖于gcc,make等开发包。当然x系统也是必须安装的,因为OUI是基于图形界面的嘛。centos安装成功后,我们可以修改一下/etc/initab文件,这样下次启动时,就不会启动图形系统,可以节省不少的内存。
安装前系统准备:
设置操作系统
系统支持Red Hat Enterprise Linux 6,CentOS 6其实就是RHEL6,如果Oracle不认,可以改一下。CentOS6.5 Oracle11gR2不需要修改。
老版本的Oracle需要修改这里
vim /etc/redhat-release
#CentOS release 6.3 (Final) 这行注释掉,加上下面的
Red Hat Enterprise Linux 6
1.安装必需的包
安装所需要的依赖包:
binutils-2.17.50.0.6-2.el5
compat-libstdc++-33-3.2.3-61
elfutils-libelf-0.125-3.el5
elfutils-libelf-devel-0.125
gcc-4.1.1-52
gcc-c++-4.1.1-52
glibc-2.5-12
glibc-common-2.5-12
glibc-devel-2.5-12
glibc-headers-2.5-12
libaio-0.3.106
libaio-devel-0.3.106
libgcc-4.1.1-52
libstdc++-4.1.1
libstdc++-devel-4.1.1-52.e15
make-3.81-1.1
sysstat-7.0.0
unixODBC-2.2.11
unixODBC-devel-2.2.11
挂载安装盘用rpm一个个安装,或者在安装盘中找到以上文件的64位版本并复制到linux系统中指定的目录下,用rpm *命令同时安装。
以下是安装图形界面,已经是图形界面的,不需要安装
yum -y groupinstall "Java Development"
yum -y groupinstall "X Window System"
yum -y groupinstall "GNOME Desktop Environment"
yum -y install vnc-server
2.修改主机名
特别注意 /etc/sysconfig/network中的hostname要与/etc/hosts中的一致
vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=oracle
3.设置IP 添加主机名与IP对应记录
vi /etc/hosts
127.0.0.1 localhost
::1 localhost
192.168.231.100 oracle
#其中192.168.231.100 oracle 很重要,如果不配置,会出错.
4.关闭Selinux
vi /etc/selinux/config
SELINUX=disabled
5、创建用户和组
[[email protected] ~]# sysctl -p
[[email protected] ~]# groupadd -g oinstall
[[email protected] ~]# groupadd -g dba
[[email protected] ~]# useradd -m -g oinstall -G dba oracle
[[email protected] ~]# passwd oracle
[[email protected] ~]# id oracle #查看oracle用户信息
6、修改内核参数
[[email protected] ~]# vi/etc/sysctl.conf #末尾添加如下
fs.file-max = 6815744
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=4194304
net.core.wmem_max=1048576
net.ipv4.ip_local_port_range = 1024 65535
fs.aio-max-nr = 1048576
以上参数的含义解释如下:
fs.file-max 该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量
kernel.shmmni 该参数是共享内存段的最大数量。shmmni缺省值4096,一般肯定是够用了。
kernel.sem以kernel.sem = 250 32000 100 128为例:
250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。
32000是参数semmns的值,表示系统内可允许的信号量最大数目。
100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量
128是参数semmni的值,表示系统信号量集合总数。
net.core.rmem_default 表示套接字接收缓冲区大小的缺省值。
net.core.wmem_default 表示套接字发送缓冲区大小的缺省值。
net.core.rmem_max该参数指定了接收套接字缓冲区大小的最大值(以字节为单位)
net.core.wmem_max该参数指定了发送套接字缓冲区大小的最大值(以字节为单位)
net.ipv4.ip_local_port_range = 1024 65535系统对本地端口范围限制设置为1024~65000之间
fs.aio-max-nr此参数限制并发未完成的请求,应该设置避免I/O子系统故障。
7、修改系统资源限制
[[email protected] ~]# vi/etc/security/limits.conf #末尾添加如下
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
出于性能上的考虑,还需要需要进行以上设定,以便改进Oracle用户的有关 nofile(可打开的文件描述符的最大数)和nproc(单个用户可用
的最大进程数量)
soft是软限制 ,用户可以超过这个设置的值,但一定不能超过hard 的值 。一般soft比hard小。hard是硬限制
vi /etc/pam.d/login
session required pam_namespace.so #下面添加一条pam_limits.so
session required /lib64/security/pam_limits.so
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
如果用户为oracle,用户shell="/bin/ksh"
ulimit –p 16384限制管道缓冲区的大小为16384
ulimit –n 65536表示可以打开最大文件描述符的数量为65536
ulimit – u 16384;限制用户最多可以使用16384个进程
8、创建安装目录及设置权限
[[email protected] ~]# mkdir -p /hywl/oracle/app/product/11.1.1/db_1
[[email protected] ~]# mkdir /hywl/oracle/oradata/
[[email protected] ~]# chmod 755 /hywl/oracle/
[[email protected] ~]# chmod 775 /hywl/oracle/app/
[[email protected] ~]# chown oracle.oinstall -R /hywl/oracle
9、设置oracle环境变量
[[email protected] ~]$ vi ~/.bash_profile
unset USERNAME
export ORACLE_BASE=/hywl/oracle/app
export ORACLE_HOME=/hywl/oracle/app/product/11.1.1/db_1
export ORACLE_SID=hywl
export PATH=/hywl/oracle/app/product/11.1.1/db_1/bin:/bin:/usr/bin:/usr/sbin:/usr/local/bin
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export LD_LIBRARY_PATH=/hywl/oracle/app/product/11.1.1/db_1/lib:/usr/lib
#export ORACLE_HOME_LISTNER=$ORACLE_HOME # Oracle安装完成后再打开Listener
umask 022
[[email protected] ~]$ source .bash_profile #立即生效
10、安装oracle
下载并解压:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
[[email protected]~]# unzip /media/linux.x64_11gR2_database_1of2.zip
[[email protected]~]# unzip /media/linux.x64_11gR2_database_2of2.zip
[[email protected]~]# xhost + #使所有用户都能访问图形桌面
[[email protected]~]# su – oracle
打开linux终端,进去解压后的目录
[[email protected]~]$ cd /database
为了防止oracle安装过程中的中文乱码问题,设置语言为英文
[[email protected]]$
[[email protected]]$ sh runInstaller
[[email protected]~]#./media/database/runInstaller
#输入接受一些安全问题的邮件地址(什么也不输入)
# 选择安装数据库软件并创建数据,也可以选择第二项仅安装数据库软件
#选择服务器版本
#单实例数据库
#高级模式安装
#添加支持的语言
#选择要安装的版本
#安装数据库目录
Oracle Base: /hywl/oracle/app
Sofeware Location: /hywl/oracle/app/product/11.1.1/db_1
#数据库用途
#数据库名及服务名:都为hywl
#开启自动内存管理
#设置默认编码为UTF8
#启用Oracle企业管理控制台OEM
#选择数据库文件目录
#自动备份设置:不启用
#设置数据库用户名和密码(oracleroot)
#授权的组
#检查Oracle一些安装要求,包都已经安装,直接忽略
#开始安装
#安装即将完成
#解锁用户SCOTT, SCOTT的默认口令为tiger。
#弹出“执行配置脚本”对对话框
安装完成后,会出来一个对话框,如上图,提示使用root用户执行这两个脚本
[[email protected]~]$ /hywl/oracle/app/oraInventory/orainstRoot.sh
[[email protected]~]$ /hywl/oracle/app/product/11.2.0/dbhome_1/root.sh
#启动数据库错误:
错误是由于/dev/shm小于MEMORY_TARGET的大小,或者是/dev/shm根本就没有挂载,如果同时设置了MEMORY_TARGET和MENORY_MAX_TARGET,那么/dev/shm至少必须和MEMORY_MAX_TARGET的大小一致。
解决办法:
vi /etc/fstab
修改如下行的设置
tmpfs /dev/shm tmpfs defaults 0 0
改成
tmpfs /dev/shm tmpfs defaults,size=2G 0 0
保存退出
重新mount下shm使其生效
mount -o remount /dev/shm
然后查看内存使用情况:df -h
在umount时,可能会出现device is busy。比较简单的办法可以重启电脑。
$sqlplus / as sysdba
$startup 启动成功了
查看memory_target的大小
SQL> show parameter memory;
11.Oracle常用命令
[[email protected] ~]# su – oracle
[[email protected] ~]# sqlplus / as sysdba
SQL> startup #启动数据库实例
SQL> shutdown immediate #关闭数据库实例
SQL> select * from tab; #查看所有表
SQL> select name from v$datafile #查看数据库存放目录
SQL> show parameter service #查看服务名
SQL> select * from v$instance; #查看实例名
SQL> select name from v$database; #查看数据库名
SQL> select * fromdba_users; #查看所有用户信息
SQL> select username,password from dba_users; #只查询用户和密码
SQL> select * from v$pwfile_users; #查看具有sysdba权限的用户
SQL> select * from dba_ustats; #查看当前用户信息
SQL> select * from user_sys_privs #查看当前用户系统权限
SQL> select * fromuser_role_privs #查看当前用户角色
SQL> select * fromdba_sys_privs #查看指定用户所具有的系统权限
SQL> select * from v$version #查看oracle版本
SQL> select * fromuser_views #查看视图信息
[[email protected] ~]# lsnrctl start #开启远程监听端口