操作系统: 64位系统,RedHat.Enterprise.Linux.Server-v6.3-x86_x64.ISO
Oracle版本: Linux_x64_Oracle_11gR2_v11.2.0.1.0
安装过程主要分为以下3步:
PS:在本教程中,所有方框均代表在Linux系统的终端进行操作,其中:
蓝色字体:终端命令代码;
红色字体:新增或修改的参数。
在本章节中主要完成Oracle安装前的系统参数配置工作。若无特殊说明,均为以root身份在终端上进行操作。
需设置主机名和固定IP,以便oracle监听程序的建立。
[root@rhel6 ~]# vim /etc/sysconfig/network NETWORKING=yes HOSTNAME= rhel6.localdomain |
HOSTNAME(主机名)请根据个人喜好进行设置。
[root@rhel6 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" ONBOOT="yes" BOOTPROTO=static IPADDR=192.168.18.101 NETMASK=255.255.255.0 GATEWAY=192.168.18.2 DNS1=192.168.18.2 |
IPADDR(IP地址)、NETMASK(子网掩码)、GATEWAY(默认网关)、DNS1(主DNS)请根据实际网络环境进行设置。
在文件【/etc/hosts】最后追加以下内容:
[root@rhel6 ~]# vim /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.18.101 oracle oracle.localdomain rhel6.localdomain |
注意:必须将主机名对应到主机真实ip地址,否则oracle有可能将监听程序仅仅建立在127.0.0.1上。主机名可根据个人喜好进行设置。
[root@rhel6 ~]# reboot |
使用RedHat.Enterprise.Linux.Server-v6.3-x86_x64-DVD.iso做yum源安装依赖软件包。
[root@rhel6 ~]# mkdir /media/rhel6_dvd |
[root@rhel6 ~]# mount /dev/cdrom /media/rhel6_dvd |
[root@rhel6 ~]# cd /etc/yum.repos.d/ [root@rhel6 yum.repos.d]# vim rhel6.repo [rhel6] name=rhel6 baseurl=file:///media/rhel6_dvd enabled=1 gpgcheck=0 |
[root@rhel6 yum.repos.d]# yum clean all |
[root@rhel6 yum.repos.d]# yum update |
[root@rhel6 yum.repos.d]# yum install binutils-2.* compat-libstdc++-33* elfutils-libelf-0.* elfutils-libelf-devel-* gcc-4.* gcc-c++-4.* glibc-2.* glibc-common-2.* glibc-devel-2.* glibc-headers-2.* ksh-2* libaio-0.* libaio-devel-0.* libgcc-4.* libstdc++-4.* libstdc++-devel-4.* make-3.* sysstat-7.* unixODBC-2.* unixODBC-devel-2.* pdksh* [root@rhel6 yum.repos.d]# cd |
因为版本不同,在 第2章软件安装及数据库配置过程,可能会提示缺少依赖包,忽略后可以正常安装使用 Oracle。
在文件【/etc/sysctl.conf】中追加以下内容:
[root@rhel6 ~]# vim /etc/sysctl.conf kernel.sem = 250 32000 100 128 kernel.shmall = 2097152 kernel.shmmax = 1073741824 kernel.shmmni = 4096 fs.aio-max-nr = 1048576 fs.file-max = 6815744 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 net.ipv4.ip_local_port_range = 9000 65500 |
注意: kernel.shmmax 的值是物理内存的一半。 我的是2G内存,所以是1073741824。
参数说明: kernel.shmmni:整个系统共享内存段的最大数目
fs.file-max:系统中所允许的文件句柄最大数目
net.core.rmem_default:套接字接收缓冲区大小的缺省值
net.core.rmem_max:套接字接收缓冲区大小的最大值
net.core.wmem_default:套接字发送缓冲区大小的缺省值
net.core.wmem_max:套接字发送缓冲区大小的最大值
net.ipv4.ip_local_port_range:应用程序可使用的IPv4端口范围
[root@rhel6 ~]# sysctl -p |
如果有如下提示错误,忽略,因为即使未修改参数也提示有这个错误:
error: "net.bridge.bridge-nf-call-ip6tables" is an unknown key
error: "net.bridge.bridge-nf-call-iptables" is an unknown key
error: "net.bridge.bridge-nf-call-arptables" is an unknown key
[root@rhel6 ~]# groupadd dba [root@rhel6 ~]# groupadd oinstall [root@rhel6 ~]# useradd -g oinstall -G dba oracle [root@rhel6 ~]# passwd oracle |
在文件【/etc/security/limits.conf】最后添加以下内容:
[root@rhel6 ~]# vim /etc/security/limits.conf oracle soft nproc 2047 oracle hard nproc 16384 oracle soft nofile 1024 oracle hard nofile 65536 |
在文件【/etc/pam.d/login】最后添加以下内容:
[root@rhel6 ~]# vim /etc/pam.d/login session required pam_limits.so |
在文件【/etc/profile】最后添加以下内容:
[root@rhel6 ~]# vim /etc/profile if [ $USER = "oracle" ]; then |
本文将Oracle安装在目录【/home/app/oracle】中,若需安装在其他位置,请自行修改。
[root@rhel6 ~]# mkdir -p /home/app/oracle [root@rhel6 ~]# mkdir -p /home/app/oraInventory |
[root@rhel6 ~]# chown -R oracle:oinstall /home/app/oracle [root@rhel6 ~]# chown -R oracle:oinstall /home/app/oraInventory [root@rhel6 ~]# chmod -R 775 /home/app |
在终端上切换到oracle用户,在文件【/home/oracle/.bash_profile】最后添加以下内容:其中ORACLE_SID的值可自己定,这里设为orcl,在第2章安装时的ORACLE_SID也应设置为orcl:
[root@rhel6 ~]# su - oracle [oracle@rhel6 ~]# vim .bash_profile TMP=/tmp; export TMP |
[oracle@rhel6 ~]# source ~/.bash_profile |
在文件【/etc/sysconfig/iptables】内增加以下内容:
[oracle @rhel6 ~]# su - root [root@rhel6 ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 1158 -j ACCEPT |
Oracle远程访问端口默认是1521,OEM端口1158,若自定义新端口,请开放相应端口。
注意:新开放端口的配置必须紧跟着放在端口22的配置后面。
[root@rhel6 ~]# service iptables restart
iptables: Flushing firewall rules: [ OK ] iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: [ OK ] |
[root@rhel6 ~]# service iptables status Table: filter Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:1521 6 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT) num target prot opt source destination |
可从Oracle官网下载安装文件:linux.x64_11gR2_database_1of2.zip和linux.x64_11gR2_database_2of2.zip。
并上传到RHEL6系统中的【home/oracle】,具体上传方法此处不再赘述,请各位童鞋自己查阅相关资料。本文采用的是SSH Secure Shell的File Transfer Client进行上传。
切换到oracle用户,GNOME图形界面登录,然后进行解压。
[oracle@rhel6 ~]# cd /home/oracle [oracle@rhel6 oracle]# unzip linux.x64_11gR2_database_1of2.zip && unzip linux.x64_11gR2_database_2of2.zip |
[oracle@rhel6 ~]# cd /home/oracle/database [oracle@rhel6 database]# ./runInstaller Starting Oracle Universal Installer... Checking Temp space: must be greater than 120 MB. Actual 35279 MB Passed Checking swap space: must be greater than 150 MB. Actual 4095 MB Passed Checking monitor: must be configured to display at least 256 colors. Actual 16777216 Passed Preparing to launch Oracle Universal Installer from /tmp/OraInstall2013-11-03_05-54-11PM. Please wait ... |
待安装文件检查结束后,即出现图形界面。
取消勾选,不接收安全更新,然后点击【Next】,弹出提示窗口,选择【Yes】
包含3个安装选项:
这里我们选择【创建和配置数据库】,然后点击【Next】:
包含2个选项:
为了能使用更多高级配置选项,我们选择【服务器类】,然后点击【Next】:
包含2个选项:
选择【单实例数据库安装】,然后点击【Next】:
包含2个选项:
选择【高级安装】,然后点击【Next】:
默认已添加了【English】,在左侧语言列表中找到简体中文【Simplified Chinese】,并添加到右侧,然后点击【Next】:
包含3个选项:
选择【企业版】,然后点击【Next】:
设置Oracle基目录为1.5.1中新建的目录:/home/app/oracle,则软件位置会自动为:/home/app/oracle/product/11.2.0/dbhome_1,然后点击【Next】:
设置Oracle清单目录为1.5.1中新建的目录:/home/app/ oraInventory,选择组"oinstall",然后点击【Next】:
包含2个选项:
这里我选择【一般用途/事务处理】,然后点击【Next】:
指定Oracel全局数据库名和服务标识符为:orcl(在第1.5.3节提到),然后点击【Next】:
在【内存】页中勾选【启用自动内存管理】,在【字符集】页中选择【使用Unicode】,然后点击【Next】:
选择【使用Database Control管理数据库】,然后点击【Next】:
选择【文件系统】,并设置路径为:/home/app/oracle/oradata,然后点击【Next】:
选择【不启用自动备份】,然后点击【Next】:
这里我选择【对所有账户使用相同口令】,然后输入密码,当然你也可以为不同用户设置不同密码。然后点击【Next】:
设置数据库管理员组为【dba】,数据库操作者组为【oinstall】。然后点击【Next】:
若提示有程序包不存在,是因为1.2节的yum源安装软件包的版本不一样,所有可选择【忽略全部】,然后点击【Next】:
查看安装概要,若无问题,则可点击【Finish】结束配置,开始进行安装:
软件及数据库配置完成后,需要运行配置脚本:
打开命令终端,切换到root用户,并执行脚本:
[oracle@rhel6 ~]# su - root Password: [root@rhel6 ~]# /home/app/oraInventory/orainstRoot.sh Changing permissions of /home/app/oraInventory. Adding read,write permissions for group. Removing read,write,execute permissions for world. Changing groupname of /home/app/oraInventory to oinstall. The execution of the script is complete. [root@rhel6 ~]# /home/app/oracle/product/11.2.0/dbhome_1/root.sh Running Oracle 11g root.sh script... The following environment variables are set as: ORACLE_OWNER= oracle ORACLE_HOME= /home/app/oracle/product/11.2.0/dbhome_1 Enter the full pathname of the local bin directory: [/usr/local/bin]: /usr/local/bin Copying dbhome to /usr/local/bin ... Copying oraenv to /usr/local/bin ... Copying coraenv to /usr/local/bin ... Creating /etc/oratab file... Entries will be added to the /etc/oratab file as needed by Database Configuration Assistant when a database is created Finished running generic part of root.sh script. Now product-specific root actions will be performed. Finished product-specific root actions. |
执行完成后,切换到图形安装界面,点击【OK】
到此,Oracle11g数据库软件和配置数据库已完成。并显示了Oracle企业管理器(OEM)的URL:https://oracle:1158/em,使用方法请看第3章。
本小节以root身份进行操作。
[root@rhel6 ~]# vim /etc/oratab orcl:/home/app/oracle/product/11.2.0/dbhome_1:Y (将N改为Y) |
[root@rhel6 ~]# cd /home/app/oracle/product/11.2.0/dbhome_1/bin [root@rhel6 bin]# vim dbstart ORACLE_HOME_LISTNER=$ORACLE_HOME (将$1改为$ORACLE_HOME) [root@rhel6 bin]# vim dbshut ORACLE_HOME_LISTNER=$ORACLE_HOME (将$1改为$ORACLE_HOME) |
[root@rhel6 bin]# cd [root@rhel6 ~]# vim /etc/rc.d/init.d/oracle #!/bin/bash |
[root@rhel6 ~]# chmod 755 /etc/rc.d/init.d/oracle |
[root@rhel6 ~]# chkconfig --add oracle [root@rhel6 ~]# chkconfig oracle on |
本小节以oracle身份进行操作。
[oracle@rhel6 ~]# sqlplus "/as sysdba" SQL*Plus: Release 11.2.0.1.0 Production on Sun Nov 10 16:20:48 2013 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 -64bit Production SQL> startup ORA-01081: cannot start already-running ORACLE -shut it down first |
在3.1.5中已启动Oracle服务,会自动启动数据库,故这里提示不能启动已运行的ORACLE。
[oracle@rhel6 ~]# emctl start dbconsole Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0 Copyright (c) 1996, 2009 Oracle Corporation. All rights reserved. https://oracle:1158/em/console/aboutApplication -An instance of Oracle Enterprise Manager 11g Database Control is already running. |
在3.1.5中已启动Oracle服务,会自动启动OEM,故这里OEM实例已运行。
打开系统的FireFox浏览器,并输入OEM的URL:https://oracle:1158/em,输入sys用户和密码,以SYSDBA身份登录:
登录成功后,即可看到详细页面:
因我们在1.6.1中已开放了OEM的外部访问端口1158,因此也可以从其他可访问本数据库服务器的机器中访问OEM。因我们安装Oracle时安装了简体中文语言包,所以在我的中文Windows系统中访问OEM时,是中文界面:
到这里,在Redhat.Enterprise.Linux_v6.3_x64位系统中安装和配置Oracle_11gR2_v11.2.0.1.0已经全部完成。但这只是安装了数据库,而要进行数据库开发,还得有相应的开发工具,这里推荐使用PL/SQL Developer,目前最新版本是10.0,具体的安装文件请各位自己网上找,下载好后进行安装,需要强调一点:安装路径中不能有括号,不要安装在C:/Program Files (x86)目录下面。
客户机上用PL/SQL Developer连接Oracle数据库,需要oci,有2种方式:
下载地址:http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html,点击连接会进入下载页面,选择Instant Client for Microsoft Windows (32-bit)进行下载。
下载之后将其解压,不需要进行安装,我这里将其解压到D:/Oracle/App/product/11.2.0目录下,然后在instantclient_11_2目录下新建两层文件夹/NETWORK/ADMIN,再在ADMIN文件夹下面新建个文本文件,改名为tnsnames.ora,并向文件中添加如下内容:
ORCL_101 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.101)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
连接名orcl_101可以自定义。
当然以上的内容也可以从前面安装Oracle数据库的RedHat Linux服务器内的文件中拷贝:/home/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora。
安装PL/SQL Developer完成之后运行,此时出现的登录窗体不进行登录,点击Calcel按钮,这时会在无登录状态下进入,依次选择Tools ——> Preferences,会打开配置界面,左侧选择Connection,在右侧红框内设置instantclient_11_2目录:
重新启动PL/SQL Developer,并进行登录(scott/tiger):
登录成功后,写一条Sql语句进行验证,查询可以看到下面的效果,说明连接成功。