Linux 系统(X64)安装Oracle11g完整安装图文教程另附基本操作
因项目需求,需要在 64 位 linux 系统中安装 Oracle 11g ,在网上查了很多内容,结合自己的实际经验,终于安装成功,记录下来
一、修改操作系统核心参数
在 Root 用户下执行以下步骤:
1 )修改用户的 SHELL 的限制,修改 /etc/security/limits.conf 文件
输入命令: vi /etc/security/limits.conf ,按 i 键进入编辑模式,将下列内容加入该文件。
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
编辑完成后按 Esc 键,输入 “:wq” 存盘退出
2 )修改 /etc/pam.d/login 文件,输入命令: vi /etc/pam.d/login ,按 i 键进入编辑模式,将下列内容加入该文件。
session required /lib/security/pam_limits.so
session required pam_limits.so
编辑完成后按 Esc 键,输入 “:wq” 存盘退出
3 )修改 linux 内核,修改 /etc/sysctl.conf 文件,输入命令 : vi /etc/sysctl.conf ,按 i 键进入编辑模式,将下列内容加入该文件
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
编辑完成后按 Esc 键,输入 “:wq” 存盘退出
4 )要使 /etc/sysctl.conf 更改立即生效,执行以下命令。 输入: sysctl -p 显示如下:
linux:~ # sysctl -p
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.rp_filter = 1
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
5 )编辑 /etc/profile ,输入命令: vi /etc/profile ,按 i 键进入编辑模式,将下列内容加入该文件。
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
编辑完成后按 Esc 键,输入 “:wq” 存盘退出
6 )创建相关用户和组,作为软件安装和支持组的拥有者。
创建 Oracle 用户和密码 , 输入命令:
需要创建一个 oralce 用户,并创建两个组 dba , oinstall ,且将 oralce 添加至组 oinstall 和附加到 dba 组,具体命令如下:
/usr/sbin/groupadd oinstall
/usr/sbin/groupadd dba
/usr/sbin/useradd -m -g oinstall -G dba oracle
passwd oracle
注意,这里的 useradd – g: 新账户主组的名称或 ID,-G: 新账户的附加组列表 ,-m: 创建用户的主目录。
/* 若上面方法执行生效后这段可忽略 */
创建用户后若无法跳转则删除用户重建
vi /etc/shadow :删除 oracle 相关信息
cat /etc/passwd
vi /etc/passwd : 删除 oracle 相关信息
oracle: 对应目录一并删除
useradd -g oinstall -g dba -m oracle
passwd oracle
然后会让你输入密码,密码任意输入 2 次,但必须保持一致,回车确认。
7 )创建数据库软件目录和数据文件存放目录,目录的位置,根据自己的情况来定,注意磁盘空间即可,这里我把其放到 oracle 用户下 , 例如:
输入命令:
mkdir /home/oracle/app
mkdir /home/oracle/app/oracle
mkdir /home/oracle/app/oradata
mkdir /home/oracle/app/oracle/product
8) 更改目录属主为 Oracle 用户所有,输入命令:
chown -R oracle:oinstall /home/oracle/app
9) 配置 oracle 用户的环境变量,首先,切换到新创建的 oracle 用户下 ,
输入: su – oracle ,然后直接在输入 : vi .bash_profile
按 i 编辑 .bash_profile, 进入编辑模式,增加以下内容:
更换 ORACLE_BASE 、ORACLE_HOME 为本机路径即可 if判断必须添加
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
ORACLE_SID=orcl;
export ORACLE_SID
ORACLE_BASE=/home/oracle/app; export ORACLE_BASE
ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1; export ORACLE_HOME
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
THREADS_FLAG=native; export THREADS_FLAG
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
export TERM=xterm
编辑完成后按 Esc 键,输入 “:wq” 存盘退出
二、安装过程
1 )当上述系统要求操作全部完成后,注销系统,在图形界面以 Oracle 用户登陆。首先将下载的 Oracle 安装包复制到 linux 中,用 SSH 其他 ftp 工具拷贝。
打开一个终端,运行 unzip 命令解压 oracle 安装文件,如:
输入命令:
unzip linux.x64_11gR2_database_1of2.zip
unzip linux.x64_11gR2_database_2of2.zip
如若unzip命令不能识别采用如下命令:
如果你如法使用unzip命令解压.zip文件,可能是你没有安装unzip软件,下面是安装方法
命令: yum list | grep zip/unzip #获取安装列表
安装命令: yum install zip #提示输入时,请输入y;
安装命令:yum install unzip #提示输入时,请输入y;
然后就可以解决无法使用unzip命令问题:
Xstart 连接远程桌面
打开Xstart,填写主机IP(即你需要远程连接的桌面地址),协议选择SSH,填写用户名,身份认证选择password,命令里面填写/etc/gdm/Xsession,点击运行

解压完成后 cd 进入其解压后的目录 database
输入命令:
cd database
使用 ls 命令可以查看解压后 database 所包含的文件,如下图:
Starting Oracle Universal Installer...
正在启动Oracle Universal安装程序。。。
Checking Temp space: must be greater than 120 MB. Actual 47653 MB Passed
正在检查临时空间:必须大于120 MB。实际通过47653 MB
Checking swap space: must be greater than 150 MB. Actual 32255 MB Passed
正在检查交换空间:必须大于150 MB。实际通过32255MB
Checking monitor: must be configured to display at least 256 colors
检查监视器:必须配置为至少显示256色
>>> Could not execute auto check for display colors using command /usr/bin/xdpyinfo. Check if the DISPLAY variable is set. Failed <<<<
>>> 无法使用命令/usr/bin/xdpyinfo执行显示颜色的自动检查。检查是否设置了显示变量。失败的<<<<
Some requirement checks failed. You must fulfill these requirements before
一些需求检查失败。你必须先满足这些要求
continuing with the installation,
继续安装,
2 )执行安装,输入命令: ./runInstaller
Linux 服务器图形化界面安装:
点击下一步

下一步

实际开发中,服务器没有图形界面,我们选择服务类安装,下一步

不需要集群,选择单实例安装,下一步

点击下一步

选择语言,下一步

下一步




下一步

设置密码


这时候打开一个终端,以root身份登录,安装依赖包
yum install binutils compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel gcc gcc-c++ glibc-2.5 glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
再次检查
检查缺包:
rpm -q --queryformat %-{name}-%{version}-%{release}-%{arch}"\n" \ compat-libstdc++-33 glibc-kernheaders glibc-headers libaio libgcc glibc-devel xorg-x11-deprecated-libs
这时候打开一个终端,以 root 身份登录,安装依赖包
yum install binutils compat-libstdc++- 33 elfutils-libelf elfutils-libelf-devel gcc gcc -c++ glibc- 2.5 glibc-common glibc-devel glibc-headers ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel

finish配置完成
接下来就是等待安装了。

安装成功之后,会弹出这个界面:

执行脚本:
[root@localhost myos]su root [root@localhost myos]# cd /home/myos/application/oracle/oraInventory [root@localhost oraInventory]# sh orainstRoot.sh[root@localhost oraInventory]# cd /home/myos/application/oracle/oracle/product/11.2.0/dbhome_1 [root@localhost dbhome_1]# sh root.sh
安装完成
上面安装成功之后,服务监听和本地网络服务应该是就配置好了,我实际安装的过程中都会提示服务名称已经存在。如果没有的话,我们可以按照下面的步骤进行配置。
打开终端,输入: [root@localhost dbhome_1]# netca Oracle Net Services Configuration:



配置本地网络服务名(充当 oracle 客户端,连接别的 oracle 服务器)





我填的是自己服务器的名称,不知道填其他服务器的ip可不可以

进行连接测试


连接成功



到此就配置完毕了。
[myos@localhost ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 05-APR-2018 18:06:52Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER------------------------Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production Start Date 05-APR-2018 17:41:44Uptime 0 days 0 hr. 25 min. 8 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /home/myos/application/oracle/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora Listener Log File home/myos/application/oracle/oracle/diag/tnslsnr/localhost/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) Services Summary... Service "orcl" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... Service "orclXDB" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... The command completed successfully
其中:
1、Linux oracle数据库listener.ora存放路径/home/myos/application/oracle/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora2、Linux oracle数据库tnsnames.ora存放路径/home/myos/application/oracle/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora3、ORACLE启动监听器 (1)切换至普通安装用户(我的是myos)su - myos (2)启动监听器 lsnrctl start (3)停止监听器 lsnrctl stop
[myos@localhost ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on Thu Apr 5 18:12:26 2018Copyright (c) 1982, 2009, Oracle. All rights reserved. SQL>
症状:
(1)TCP/IP
连接是通的。可以用
ping
命令测试。
(2)
服务器上
Oracle Listener
已经启动。
lsnrctl status
查看
listener
状态
lsnrctl start
启动
Oracle listener
(3)
客户端得到的错误信息通常是:
ORA-12170
:
TNS:
连接超时
这时,我们基本可以肯定是服务器没有开放1521
端口(假设你用默认设置)
可配置防火墙开放1521 端口:
[myos@localhost ~]$ vi /etc/sysconfig/iptables
添加如下内容
-A INPUT -m state --state NEW -m tcp -p tcp --dport 1521 -j ACCEPT
重启防火墙
[root@localhost myos]# service iptables restart
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
iptables: Applying firewall rules: [ OK ]
本地连接测试通过
接下来就可以创建用户进行操作了。
就是在已有的数据库实例上创建一个新的帐号,访问一些新的表
操作步骤如下:
(1)
登录
linux
,以
oracle
用户登录(如果是
root
用户登录的,登录后用
su - oracle
命令切换成
oracle
用户)
(2)
以
sysdba
方式来打开
sqlplus
,命令如下:
sqlplus "/as sysdba"
(3)
查看我们常规将用户表空间放置位置:执行如下
sql
:
select name from v$datafile
(4)
创建用户表空间:
CREATE TABLESPACE NOTIFYDB DATAFILE '/home/oracle/app/oradata/orcl/scsdb.dbf' SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
(5)
创建用户,指定密码和上边创建的用户表空间
CREATE USER scs IDENTIFIED BY scs DEFAULT TABLESPACE NOTIFYDB;
(6)
赋予权限
grant connect,resource to scs;
grant unlimited tablespace to scs;
grant create database link to scs;
grant select any sequence,create materialized view to scs;
--
经过以上操作,我们就可以使用
scs/scs
登录指定的实例,创建我们自己的表了
重启了服务器之后,查看监听状态,发现数据库实例没有启动
执行如下命令就可以启动了。
[myos@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Fri Apr 6 04:08:29 2018 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to an idle instance. SQL> startup ORACLE instance started. Total System Global Area 776646656 bytes Fixed Size 2217384 bytes Variable Size 473959000 bytes Database Buffers 293601280 bytes Redo Buffers 6868992 bytes Database mounted. Database opened.
以下部分可供参考
装到这一步,可以看到,可以查看到有很多的 rpm 包没有,我们可以从安装 linux 的光盘或 ISO 中(或去 D:\linux_oracle11g_Package )查找所缺的包,使用 ftp 上传到 linux 中,然后使用 rpm –ivh xxx.rpm --nodeps –force 来进行安装(其中加上 --nodeps -- force 代表强制安装,是在直接使用 rpm –ivh xxx.rpm 安装不成功的情况下用的)等到把包全部都安装好的情况下,再次在 oracle 图形界面中,执行安装过程 2 ,下来在环境检查过程中,就通过了。
安装过程中 86% 可能会遇到报错如出错问题( error in invoking target 'mkldflags ntcontab.o nnfgt.o' of makefile )按照如下步骤顺序执行。
上传安装镜像 rhel-server-6.1-x86_64-dvd.iso ,
然后将镜像文件挂,如 /mnt
# mount -o loop rhel-server-6.1-x86_64-dvd.iso /mnt
# cd /mnt/Packages
# rpm -ivh glibc-common-2.12-1.25.el6.x86_64.rpm
# rpm -ivh kernel-headers-2.6.32-131.0.15.el6.x86_64.rpm
# rpm -ivh libgcc-4.4.5-6.el6.x86_64.rpm
# rpm -ivh glibc-2.12-1.25.el6.x86_64.rpm
# rpm -ivh libgomp-4.4.5-6.el6.x86_64.rpm
# rpm -ivh nscd-2.12-1.25.el6.x86_64.rpm
# rpm -ivh glibc-headers-2.12-1.25.el6.x86_64.rpm
# rpm -ivh glibc-devel-2.12-1.25.el6.x86_64.rpm
# rpm -ivh mpfr-2.4.1-6.el6.x86_64.rpm
# rpm -ivh ppl-0.10.2-11.el6.x86_64.rpm
# rpm -ivh cloog-ppl-0.15.7-1.2.el6.x86_64.rpm
# rpm -ivh cpp-4.4.5-6.el6.x86_64.rpm
# rpm -ivh gcc-4.4.5-6.el6.x86_64.rpm
注:以上是安装 gcc ,软件安装顺序不能错。
******************************************
# rpm -ivh libstdc++-4.4.5-6.el6.x86_64.rpm
# rpm -ivh libstdc++-devel-4.4.5-6.el6.x86_64.rpm
# rpm -ivh gcc-c++-4.4.5-6.el6.x86_64.rpm
注:以上是安装 gcc-c++
根据这个方法解决了错误。
安装完成后,系统会提示你需要用 root 权限执行 2 个 shell 脚本。按照其提示的路径,找到其所在的位置,如:我的就在 /home/oracle/app/oracle/product/11.2.0/dbhome_1/root.sh
和 /home/oracle/oraInventory/orainstRoot.sh 新开启一个终端,输入命令:
su – root
cd /home/oracle/app/oracle/product/11.2.0/dbhome_1
sh root.sh
cd /home/oracle/oraInventory
sh orainstRoot.sh
三、数据库建库
1 ) 还是在 oracle 用户的图形界面 oracle 用户中,新开启一个终端,直接输入命令 dbca 会弹出如下界面。我们这里采用定制数据库。
经过漫长的等待,当看到此界面,说明 oracle 建库完成
四、配置监听及本地网络服务
1 )在 oracle 用户的图形界面 oracle 用户中,新开启一个终端,输入命令 netca 会弹出如下界面。
2 )创建监听服务(充当 oracle 服务器,让别的 oracle 客户端连接本 oracle 服务器)
3 ) 配置本地网络服务名(充当 oracle 客户端,连接别的 oracle 服务器)
输入连接的 oracle 服务器的数据库的实例名
输入 oracle 服务器的 ip 地址
选中 YES 测试
点击 change Login 输入所连接 oracle 服务器的其中某一个用户名和密码(用户名 oracle 和设置的密码),点击 OK
看到此界面说明测试成功(如果不成功,请查看网络是否畅通,所连接的 oracle 服务器是否启动,监听是否启动等原因 )
为你所设置的本地网络服务名起个名字
这样 oracle 服务器安装配置基本就完成了
注意:
1 、 Linux oracle 数据库 listener.ora 存放路径
cd /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
2 、 Linux oracle 数据库 tnsnames.ora 存放路径
cd /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
3
、
ORACLE
启动监听器
(1)
切换至
oracle
安装用户(一般为
oracle
)
su - oracle
(2)
启动监听器
lsnrctl start
(3)
停止监听器
lsnrctl stop
4
、启动测试
oracle
:
[oracle@oracle ~]$ sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on Fri Jul 27 02:12:12 2012
Copyright (c) 1982, 2009, Oracle. All rights reserved.
SQL> quit
测试的另一种方法:找一台
windows
平台电脑,
telnet oracle
主机
IP
地址:
1521
,通的话,会出现一个黑屏,光标一闪一闪。
5 、 Linux 开放 1521 端口允许网络连接 Oracle Listener
症状:
(1)TCP/IP
连接是通的。可以用
ping
命令测试。
(2)
服务器上
Oracle Listener
已经启动。
lsnrctl status
查看
listener
状态
lsnrctl start
启动
Oracle listener
(3)
客户端得到的错误信息通常是:
ORA-12170
:
TNS:
连接超时
这时,我们基本可以肯定是服务器没有开放
1521
端口(假设你用默认设置)
解决方法:
(1)
假如你是在一个局域网环境,配置了防火墙。那么可以关闭
Linux
的防火墙。
sudo service iptables stop
(2)
编辑
iptables,
开放
1521
端口:
sudo vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1521 -j ACCEPT
:wq
重启防火墙
sudo service iptables restart
保存配置,以便
linux
重启后依然有效
sudo service iptables save
查看防火墙规则:
sudo iptables -L –n
6 、 linux 下创建 oracle 用户表空间
就是在已有的数据库实例上创建一个新的帐号,访问一些新的表
操作步骤如下:
(1)
登录
linux
,以
oracle
用户登录(如果是
root
用户登录的,登录后用
su - oracle
命令切换成
oracle
用户)
(2)
以
sysdba
方式来打开
sqlplus
,命令如下:
sqlplus "/as sysdba"
(3)
查看我们常规将用户表空间放置位置:执行如下
sql
:
select name from v$datafile
(4)
创建用户表空间:
CREATE TABLESPACE NOTIFYDB DATAFILE '/home/oracle/app/oradata/orcl/scsdb.dbf' SIZE 200M AUTOEXTEND ON EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
(5)
创建用户,指定密码和上边创建的用户表空间
CREATE USER scs IDENTIFIED BY scs DEFAULT TABLESPACE NOTIFYDB;
(6)
赋予权限
grant connect,resource to scs;
grant unlimited tablespace to scs;
grant create database link to scs;
grant select any sequence,create materialized view to scs;
--
经过以上操作,我们就可以使用
scs/scs
登录指定的实例,创建我们自己的表了
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69942301/viewspace-2681608/ ,如需转载,请注明出处,否则将追究法律责任。