写在前面:
环境建议:VM 15.5,因为15.5修复了诸多bug,可以在安装过程中省去不少麻烦
添加新的虚拟机安装redhat7.7
准备redhat7.7的安装包...百度云不让上传噢噢噢噢,这里放上iso的名字:rhel-server-7.7-x86_64-dvd.iso
redhat安装完毕可能是没有图像界面的,这是因为VM自动选择了简易安装,安装图形界面的方法参考:
https://www.cnblogs.com/renzmin/p/12057667.html
配置好linux虚拟机了,接下来就可以开始安装ORACLE了.....
(1)首先,你得有ORACLE的安装包,这里附上linux oracle 64位的百度云链接
链接:https://pan.baidu.com/s/1bIR9R-JWVDhs2xXR2umZbg
提取码:8bzf
链接:https://pan.baidu.com/s/1vTabCeNGdLVwOgzyr0v-2A
提取码:82bx
(2)配置yum源
因为后边安装oracle过程中,需要导入相应的依赖包。yum是基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装.
这里主要配置163yum源和epel源。完成后,后续可以通过yum install 命令安装依赖
a:配置163yum源
- 进入源管理目录 cd /etc/yum.repos.d
- 新建一个163.repo文件 vim 163.repo
- 163.repo文件内容如下
[]
name=
baseurl=http://mirrors.163.com/centos/7/os/x86_64/
gpgcheck=
enabled=
这里要注意的是,baseurl这一项,你要到http://mirrors.163.com/centos这里,去找到你对应的redhat版本的目录,然后点os、再点x86_64(一般都有),然后用你地址栏上显示的网址替换上面的baseurl就行了
b:配置epel源
运行 rpm -vih https://dl.fedoraproject.org/pub/epel/7Server/x86_64/Packages/e/epel-release-7-12.noarch.rpm
注意,我的redhat是7server,所以如果你的版本不是7server,那你要到http://dl.fedoraproject.org/pub/epel找到你对应版本的rpm包,然后用上面的命令下载,这条命令的作用就是在/etc/yum.repos.d目录下生成epel源。
(3)关闭防火墙
//临时关闭防火墙,重启后会重新自动打开
systemctl restart firewalld
//检查防火墙状态
firewall-cmd --state
firewall-cmd --list-all
//Disable firewall
systemctl stop firewalld.service
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
//Enable firewall
systemctl enable firewalld
systemctl start firewalld
systemctl status firewalld
建议直接关闭,否则在oracle执行到95%时会卡死
============================================================================================================================================================================
下面正式开始安装ORACLE:
(一):依赖库安装
yum install -y compat-libstdc++- elfutils-libelf-devel gcc gcc-c++ glibc-devel
yum install -y ksh libaio-devel numactl-devel
yum install -y unixODBC unixODBC-devel oracleasm oracleasmlib oracleasm-support
安装完成执行以下,以检查所需的软件包是否都安装完毕:
rpm -q binutils compat-libstdc++- elfutils-libelf elfutils-libelf-devel
rpm -q gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers
rpm -q ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel make numactl-devel sysstat
如有提示XXXX not install
以package compat-libstdc++-33 is not installed为例
执行 yum list | grep compat-libstdc
执行 yum install compat-libstdc++-33.x86_64即可
(二)创建Oracle用户组和用户账号(root用户)
# groupadd oinstall
# groupadd dba
# useradd -g oinstall -G dba oracle
# passwd oracle
执行时去掉#
(三)配置内核参数(root用户)
1.修改文件/etc/sysctl.conf vim /etc/sysctl.conf
内容如下:
fs.file-max = kernel.shmall = kernel.shmmax = kernel.shmmni = kernel.sem = net.ipv4.ip_local_port_range = net.core.rmem_default = net.core.rmem_max = net.core.wmem_default = net.core.wmem_max = net.ipv4.tcp_wmem = net.ipv4.tcp_rmem =
执行命令: /sbin/sysctl -p
使参数生效。
2. 修改文件/etc/security/limits.conf vim /etc/security/limits.conf
文件内容如下:
oracle soft nproc
oracle hard nproc
oracle soft nofile
oracle hard nofile
oracle soft stack
oracle hard stack
oracle hard memlock
oracle soft memlock
(四)创建Oracle的安装目录(root用户)
mkdir -p /u01/app/
chown -R oracle:oinstall /u01/app/
chmod -R /u01/app/
(五)编辑Oracle用户环境(Oracle用户)
在root用户下输入 su oracle
进入oracle用户环境
编辑.bash_profile文件 vim /home/oracle/.bash_profile
.bash_profile文件内容如下:
PATH=$PATH:$HOME/.local/bin:$HOME/bin export PATH
#For Oracle
export DISPLAY=:0.0
export TMP=/tmp;
export TMPDIR=$TMP;
export ORACLE_BASE=/u01/app/oracle;
export ORACLE_HOME=$ORACLE_BASE/product/11.2./dbhome_1;
export ORACLE_SID=orcl;
export ORACLE_TERM=xterm;
export PATH=/usr/sbin:$PATH;
export PATH=$ORACLE_HOME/bin:$PATH;
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib;
重新启动Linux,选择oracle用户环境的时候,系统会根据环境变量进行配置,后边的oracle命令才能正常执行。
输入 echo $ORACLE_HOME 查看环境变量是否配置成功,如果正常输出了配置的路径,则成功,如果输出为空白,可以在本次手动执行 source /home/oracle/.bash_profile 执行环境变量的加载。但是仅在当前终端窗口有效。
(六)安装ORACLE数据库(oracle用户)
电脑重启完之后,当前为Oracle用户,
1.首先cd到包含oracle文件的盘,
解压缩:
unzip linux.x64_11gR2_database_1of2
unzip linux.x64_11gR2_database_2of2
利用unzip命令解压缩的时候,出现-bash: unzip: command not found的错误。
unzip——命令没有找到,其原因肯定是没有安装unzip。利用一句命令就可以解决了。
yum install -y unzip zip
2.键入vncserver
如果提示command not found,则在root用户下使用 yum install tigervnc-server -y
进行安装
3.执行 ./runInstaller
进入安装界面
(1).取消沟-----下一步------yes(提示没有填写邮箱)
(2)选择“Create and configure a database”,点击“Next”
(3)选择“Desktop Class”,点击“Next”
(4)在配置页面上,输入管理员密码,比如“password”,点击“Next”
(5)验证先决条件
(6)预检查通常会报很多fail
关于swap空间不足,可以采用以下方式修复
、使用dd命令创建一个swap分区 、#dd if=/dev/zero of=/home/swap bs= count= 、格式化刚才创建的分区 、# mkswap /home/swap 、再使用swapon命令把这个文件分区变成swap分区 、#swapon /home/swap 、(关闭SWAP分区的命令为:#swapoff /home/swap) 、再用free -m 查看已经扩容的了swap分区。 、为了能够让swap自动挂载,需要修改etc/fstab文件,用vi /etc/fstab 、在文件末尾加上 /home/swap swap swap default 、这样就算重启系统,swap分区也不用手动挂载了 、但是我感觉好像我重启了系统 swap就没有了,然后我又百度了一下,要执行下面一段命令 #echo "swapon /home/swap" >> /etc/inittab 、然后在看 vi 看下 /etc/inittab 、最后一行是swapon /home/swap,这样就万事大吉了。
其他的诸如黄框框中的错误,采用(一)依赖安装中的方式进行修复,由于本机是64位,对于i386的包可以予以忽略
修复需要的安装包之后,如部分i386的没有安装,就直接点击右上角的ignore All 进行下一步即可
(七).显示的安装进度信息:
进行到68%时会报两个错误
第一个:Error in invoking target 'install' of makefile '/home/oracle/app/oracle/product/11.2.0/dbhome_1/ctx/lib/ins_ctx.mk'. See '/home/oracle/oraInventory/logs/installActions2014-05-21_02-20-57PM.log' for details.
解决方案:
编辑创建脚本:
# Fix ctx/lib/ins_ctx.mk ORACLE_HOME=/u01/app/oracle/product/11.2./db_1 cat << __EOF__ > /tmp/memcpy_wrap.c
#include <stddef.h>
#include <string.h> asm (".symver wrap_memcpy, memcpy@GLIBC_2.14");
void *wrap_memcpy(void *dest, const void *src, size_t n) {
return memcpy(dest, src, n);
}
__EOF__ if [[ -e "${ORACLE_HOME}/ctx/lib/ins_ctx.mk" ]]; then
sed -i -e 's/\$(INSO_LINK)/\$(INSO_LINK) -Wl,--wrap=memcpy_wrap \$(ORACLE_HOME)\/ctx\/lib\/memcpy_wrap.o/g' ${ORACLE_HOME}/ctx/lib/ins_ctx.mk
gcc -c /tmp/memcpy_wrap.c -o ${ORACLE_HOME}/ctx/lib/memcpy_wrap.o && rm /tmp/memcpy_wrap.c
fi
运行脚本 并点击retry
下载路径及傻瓜式操作步骤下载链接:
第二个:Error in invoking target 'agent nmhs' of makefile '/u01/app/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk'. See '/u01/app/oraInventory/logs/installActions2015-04-23_01-23-30PM.log' for details.
解决方案:
编辑创建脚本:
# Fix sysman/lib/ins_emagent.mk ORACLE_SRC_INSTALL_DIR=/media/sf_uxora_share/database
cd ${ORACLE_SRC_INSTALL_DIR}/stage/Components jar_file=
for i_file in $( ls ./oracle.sysman.agent/*/1/DataFiles/filegroup*.jar ); do
unzip -l ${i_file} sysman/lib/ins_emagent.mk 2>&1 1>/dev/null
[[ $? -eq 0 ]] && jar_file=${i_file} && break
done unzip ${jar_file} sysman/lib/ins_emagent.mk 2>&1 1>/dev/null
if [[ $? -eq 0 ]]; then
sed -i -e 's/\$(MK_EMAGENT_NMECTL)/\$(MK_EMAGENT_NMECTL) -lnnz11/g' sysman/lib/ins_emagent.mk
jar -uvf ${jar_file} sysman/lib/ins_emagent.mk
fi
运行脚本 并点击retry
下载路径及傻瓜式操作步骤下载链接:
第三个:执行以上两个脚本时会出现的问题
解决linux的-bash: ./xx: Permission denied
-bash: ./xx.sh: Permission denied
解决:
chmod 777 xx.sh
Linux chmod +755和chmod +777 各是什么意思呢?
755 代表用户对该文件拥有读,写,执行的权限,同组其他人员拥有执行和读的权限,没有写的权限,其他用户的权限和同组人员权限一样。
777代表,user,group ,others ,都有读写和可执行权限。
(八)安装最后步骤按提示在root用户下执行脚本.
cd /u01/app/oraInventory/
sh orainstRoot.sh
cd /u01/app/oracle/product/11.2./dbhome_1/
sh root.sh
最后点击OK即可,
至此完成了oracle的安装,以下开始配置监听器等,
==================================================================================================================================================================================
写在前面:
首先将安装完成后生成的listener.ra及tnsname.ora改个名字(不要删除,建议重命名为init_XXXX.ora),这样做的目的是后续需要使用netca自己根据需要配置这两个文件
(九)oracle安装成功后需要配置监听器,直接键入 netca
命令,如果提示bash:netca:command not found ,手工执行source /home/oracle/.bash_profile
,就可以进入配置监听器的用户界面了,根据需要配置监听器。
首先配置tnsnames.name
直接键入 netca
命令
打开tnsnames.ora进行进一步的修改
orcl =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.195.128)(PORT = ))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
==========================================================================
配置listener.ora
直接键入 netca
命令
协议选择TCP之后一路下一步即可。
打开listener.ora进行进一步的修改
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME=/u01/app/oracle/product/11.2./dbhome_1)
(SID_NAME = orcl)
)
) LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.195.128)(PORT = ))
)
) ADR_BASE_LISTENER = /u01/app/oracle
(十)测试监听命令
lsnrctl stop
lsnrctl start
在这个过程中,可能一般会报错,错误为:
Service "orcl" has instance(s).
Instance "orcl", status UNKNOWN, has handler(s) for this service...
The command completed successfully
此时采用如下方式进行修复:
(1)设置主机hosts映射,root下更改 vi /etc/hosts
使用hostname命令查看主机名
(2)执行以下命令,注册数据实例
[oracle@localhost ~]$ sqlplus / as sysdba
SQL>shutdown immediate
SQL> startup
SQL> alter system register;
SQL> quit
(3)查看结果
lsnrctl status
输出:
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 13-MAY-2014 10:19:18
Copyright (c) 1991, 2009, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.121)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 13-MAY-2014 10:13:32
Uptime 0 days 0 hr. 5 min. 46 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/gpdb/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.121)(PORT=1521)))
Services Summary...
Service "orcl" has 2 instance(s).
Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
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
说明已经修复好了哦,至此所有配置已经完结。
==============================================================================================================================================================================
以下进行测试
#sqlplus / as sysdba
//输出: SQL*Plus: Release 11.2.0.1.0 Production on Fri Dec 20 00:52:02 2019
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL>
执行:
SQL>select * from tab;
若有一大堆输入,则说明是正确的啦
以下,对安装时默认锁定的用户进行解锁,例如将scott用户解锁,密码设置为11,
具体操作步骤如下:
C:> sqlplus
请输入用户名:sys
输入口令:sys as sysdba //注意:在口令这里输入的密码后面必须要跟上 as sysdba 才可以。
SQL> alter user scott account unlock;
用户已更改.
SQL> commit;
提交完成.
SQL> conn scott/tiger
更改scott口令
新口令:tiger
重新键入新口令:tiger
口令已更改
已连接。
测试一下:
恭喜!!!所有操作已完成。。。
前后折腾了两三天,特此记录,以备后用