文章目录
1、环境以及工具准备
· VMware Workstation10及其以上版本
· centos7.x虚拟机
· IP:xxx.xxx.xxx.xxx
· 4G物理内存,8G虚拟内存
· Oracle的安装文件夹不低于15G
· 为虚拟机分配两个以上的处理器
· 软件包:Oracle 12c和jdk64
· WinSCP–连接linux上传下载文件工具
· SecureCRT–连接linux客户端,注意该工具安装oracle是不支持图形界面(不支持框安装),只是为了连接执行脚本是速度更快,不像在vm中不能复制粘贴。
· Xmanager Enterprise 5及以上版本(注意该软件要安装正版破解授权的软件不然在安装oracle的时候弹不出图形界面的诡异问题,如果有该问题建议重新下载此软件尝试是否可以弹框)
2、配置环境
2.1 centOs虚拟机的网络配置
网络设置最常见的有两种配置方式
1).nat模式:虚拟机只能与主机通信,虚拟机与其它的电脑间不能通信
2).桥接模式:虚拟机不仅能与主机通信,而且能其它的电脑间不能通信,是虚拟机在一个局域网内可以被访问
2.2 虚拟机的网卡配置
使用的dhcp动态获取ip:(网络环境要有动态分配ip的环境,不然每次分配的ip都是变化的,不利于oracle的使用,网络改变导致每次数据库的ip都会变化,此时要社设置静态static配置固定ip)+桥接模式的话、配置oracle的监听器的时候是有主机名不使用ip地址,这样动态的获取ip就不用由于网络环境改变每次都要重新设置监听器的HOST。
使用static配置固定ip:这种方式每次由于网络环境改变有重新设置ip
2.2.1 配置方法
vi /etc/sysconfig/network-scripts/ifcfg-enxxxx
dhcp:
onboot=yes
bootproto=dhcp
static:
onboot=yes
bootproto=static
IPADDR=XXXXXX //ip
NETMASK=255.255.255.0 //子网掩码
GATEWAY=XXXXX //网关
DDS1=8.8.8.8
DNS2=8.8.8.4
配置好网络之后执行如下命令:
systemctl restart network //重启网卡
Ifconfig //查看ip 没有ifconfig安装yum install net-tools包
2.2.2 需要使用yum安装的的包和配置
yum -y install vim //该包安装是为了使用vim编辑器,也可以不安装使用vi编辑器
Vi/vim两个常用的命令
:wq 报错退出
:wq!强制保存退出
:q不保存
:q! 不保存强制退出
2.2.3 配置ssh远程连接
1.判断centos是否安装了ssh
rpm -qa |grep ssh
2.没有安装使用
yum install -y openssl openssh-server
启动ssh的服务:
systemctl start sshd.service
ystemctl restart sshd
设置开机自动启动ssh服务
systemctl enable sshd.service
3.打开ssh配置文件配置下访问权限
vi /etc/ssh/sshd_config
把下面几行的#号注释去掉
1、Port 22,sshd服务的端口
2、Protocol 2,也就是外部连接的协议用ssh2,不设置也可。
3、PermitRootLogin no/yes,如果允许使用root登陆则设为yes,否则为no
4、PasswordAuthentication no/yes,no为不允许使用密码登陆,yes为允许使用密码登陆,一般如果用自己账户登录都用密码
5、 sshd配置文件中X11Forwarding的配置为yes
X11Forwarding yes #这个设置是为了xmanager弹框使用
设置好后保存退出。
4.重启ssh服务
/bin/systemctl restart sshd.service
5.netstat -antup|grep ssh查看ssh服务
查看ssh所用的端口是否已经打开
firewall-cmd --zone=public --query-port=22/tcp //端口如果开放则为yes,否则为no
没有开放,看到网上的解决方案是关闭防火墙,但是我防火墙本来就关着,于是尝试开放22端口,由于关闭防火墙设置失败,所以先开启防火墙
查看防火墙状态
systemctl status firewalld
启动防火墙
systemctl start firewalld
配置22端口
//例子打开22和80端口
firewall-cmd --zone=public --add-port=22/tcp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
重新载入
firewall-cmd --reload
查看ssh所用的端口是否已经打开
firewall-cmd --zone=public --query-port=22/tcp
返回success现在应该是成功了
最后关闭防火墙,之后就可以是使用linux远程连接到linux了,方便后面的操作。
突然发现网不能用了,重启网卡服务报错
Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.
解决:
[root@mina0 hadoop]# systemctl stop NetworkManager
[root@mina0 hadoop]# systemctl disable NetworkManager
2.2.4 安装unzip(用于解压oracle12的软件包)
使用unzip命令将其解压linuxx64_12201_database.zip(直接解压就行),解压完成后会生成一个database文件夹:
安装unzip 用于对安装包的解压:yum install -y unzip zip
unzip linuxx64_12201_database.zip
2.3 关闭防火墙及selinux防火墙
# CentOS7关闭防火墙和SELinux
# 临时关闭防火墙
systemctl stop firewalld
# 临时打开防火墙
systemctl start firewalld
# 防火墙开机关闭
systemctl disable firewalld
# 防火墙开机启动
systemctl enable firewalld
# 查看防火墙状态
systemctl status firewalld
# 临时关闭SELinux
setenforce 0
# 临时打开SELinux
setenforce 1
# 开机关闭SELinux
vi /etc/selinux/config
# 修改"SELINUX=enforcing"为"SELINUX=disabled"
# 查看SELinux状态
getenforce
# 修改完毕之后重启reboot
# 查看SELinux状态
getenforce //值为disabled
注意事项:
# 1.centos7的关闭 防火墙的操作
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
# 2.如果安装了iptables-service,也可以使用下面的命令,
yum install -y iptables-services
# 关闭防火墙
service iptables stop
# 检查防火墙状态
service iptables status
2.4 修改主机名
# 修改主主机名hostname
hostnamectl set-hostname oracle
# 这里注意如果没有修改主机名,需要修改
2.5 修改hosts文件
vim /etc/hosts
ip oracle # 直接在配置文件末行添加即可
2.6 重启虚拟机
reboot
3、安装jdk
注意:这里安装的是64位的jdk,oracle也是64位的
1 使用winSCP上传jdk的软件包
2 tar.gz格式的包解压方法:(其它格式的上网百度)
tar -zxvf ./jdk-8u181-linux-x64.tar.gz -C /usr/local/
3.1 方法一
给某个用户可以使用,root用户下配置其它用户也可以使用
1.执行 vi .bash_profile命令,在文件末尾添加以下内容,wq保存
export JAVA_HOME=/usr/local/jdk1.8.0_181;
#注意:jdk1.8.0_181这里配置的是local下的jdk解压软件目录,可以cd /usr/local/下查解压的目录,这里配置错误则环境变量配置错误,配置无效。
export PATH=$PATH:$JAVA_HOME/bin;
export
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
2.使用source .bash_profile让配置的环境变量生效
3.使用 java -version查看版本信息
3.2 方法二
所有用户可以使用
1. vi /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_181;
export PATH=$PATH:$JAVA_HOME/bin;
export
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/jre/lib/rt.jar
2. source /etc/profile 使配置生效
3. 使用 java -version查看版本信息
4、开始安装
RAM(内存)和SWAP(交换分区)的关系:SWAP=2.5*RAM
# 参看:https://blog.csdn.net/weixin_30929295/article/details/97378504
d if=/dev/zero of=/home/swap bs=1024 count=18874368 //18G
查看swap大小的命令:
free -m
可使用以下命令你给查看你系统可用硬盘空间
# df -h
注意:linux的swap分区的磁盘空间必须要大于8G或者以上,因为解压的安装的oracle12c的解压空间就占有7个G还多,所以swap的磁盘空间没有在8G以上的话就安装过程中会出现内层空间不足的问题。
扩展swap分区空间的方法参看下面的博客教程:
参看 https://blog.csdn.net/java_1992/article/details/78697388
保证/tmp目录只要有1GB可用空间
# df -h /tmp
4.1 安装oracle需要的依赖包
yum -y install binutils compat-libcap1 compat-libstdc++-33 gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
重新执行下如下命令防止漏包:
yum install binutils compat-libstdc++** elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel make sysstat unixODBC unixODBC-devel
下面这几个包是用于oracle使用xmanager5企业版的界面弹窗支持的rpm包:
yum install xorg-x11-apps*
yum -y install xclock xterm xorg*
yum install xorg-x11-server-utils-7.7-20.el7.x86_64(包含了xdpyinfo)
yum install tigervnc tigervnc-server
yum install xorg-x11*
yum install libXp
# 如安装上面的rmp包出现出现有同名的包版本冲突报错,首先查看当前rpm包的版本: (yum list|grep 包名 )或者 (rpm -qa|grep 包名)
# 例如:yum list|grep libgcc-4.8.5-39.el7.x86_64
# 接下来使用rpm -e xxxx 删除rmp包实例如下:
rpm -e libgcc-4.8.5-39.el7.x86_64 glibc-common-2.17-292.el7.x86_64
# 已安装先卸载,然后在整体运行安装
4.2 内核参数调整
vim /etc/sysctl.conf
# 参数配置如下:
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
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 = 1048576
# 保存后执行:
sysctl -p //不属于配置文件内容,重新加载配置文件
4.3 用户环境配置
# 新建用户组和用户设置用户密码
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle # 密码设置为:123456
# 软件安装文件目录
mkdir -p /orc/app/oracle
chown -R oracle:oinstall /orc/app/
chmod -R 755 /orc/app/oracle/
# 软件附属文件目录
mkdir -p /orc/app/oraInventory
chown oracle:dba /orc/app/oraInventory
chmod 775 /orc/app/oraInventory
4.4 Oracle用户环境配置
# 使用oracle用户登录
vim /home/oracle/.bash_profile
# 参数配置如下:
umask 022
ORACLE_BASE=/orc/app/oracle
ORACLE_HOME=/orc/app/oracle/product/12.2.0/dbhome_1
ORACLE_SID=orcl
NLS_LANG="SIMPLIFIED CHINESE_CHINA".UTF8
PATH=$PATH:$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin
LANG=zh_CN.UTF-8
export PATH LANG NLS_LANG ORACLE_BASE ORACLE_HOME ORACLE_SID
4.4 Oracle用户资源限制
vim /etc/pam.d/login
#session required /lib/security/pam_limits.so ---这里注释,放开的话后面使用客户端无法登陆
session required pam_limits.so
vim /etc/security/limits.conf
oracle soft nproc 2047 #单用户可使用的进程数量
oracle hard nproc 16384
oracle soft nofile 1024 #用户可打开的文件数量
oracle hard nofile 65536
oracle soft stack 10240 #堆栈设置
#该配置文件中均为注释文件,只需在末行添加即可
vim /etc/profile
if [ $USER = "oracle" ]
then
if [ $SHELL = "/bin/ksh" ]
then
ulimit -p 16384 #缓冲区大小
ulimit -p 65536
else
ulimit -u 16384 -n 65536 #进程数 文件数
fi
fi #配置文件末行直接添加
4.5 root下执行
xhost +
4.6 切换到oracle用户下
su - oracle
进入到oracle12c的解压目录database下
注意:安装之前要执行如下操作:
export LANG="en_US" # 设置语言,不然弹框安装会乱码
export DISPLAY=ip:0.0 # 这个ip地址是安装xmanager电脑的地址
让弹框显示在当前电脑的屏幕上,设置错误不会弹框就报错了,也不是设置linux的地址。
然后运行
./ruInstall....
下面一步要注意:
4.7 安装过程中遇到的问题
1.解决安装oracle时出现
Could not execute auto check for display colors using command /usr/bin/xdpyinfo
参看 https://blog.csdn.net/qq_40170325/article/details/82254824
2.Can’t connect to X11 window server using ‘172.16.0.234:0.0’ as the value of
参看 https://my.oschina.net/liuyuanyuangogo/blog/376091
3. Xhost +不能显示
相关支持xmanager安装的包要安装全,上面有xmanager图形界面要用到的包
参看 https://blog.csdn.net/dongdong9223/article/details/80447377?utm_source=blogxgwz6
参看 https://blog.csdn.net/xile99/article/details/12981495?utm_source=blogxgwz4
4.安装smartmontools
如果没有安装smartmontools磁盘扫描的包,在oracle12安装的过程有一步它会扫描Linux的磁盘发现找不到这个包导致报错,
安装命令:
yum install smartmontools -y
smartmontools的博客介绍:
参看 https://www.sypopo.com/post/80oVaPBO5R/
5. netca启动报错是由于没有设置主机名
参看 https://blog.csdn.net/DBAngelica/article/details/83826612
6. startup oracle命令行启动oracle报错
ORA-01078: failure in processing system parameters LRM-00109: could not open parameter file '/orc/app/oracle/product/12.2.0/dbhome_1/dbs/initorcl.ora 文件不存在
解决方法:
参看 https://blog.csdn.net/weixin_30900589/article/details/98711601
参看 https://blog.csdn.net/kruie/article/details/88640296
去到oracle数据库实例路径下cd $ORACLE_BASE/admin/下的实例名/pfile下init.ora.xxxxxxxxx的文件将该文件复制到/orc/app/oracle/product/12.2.0/dbhome_1/dbs/
cp init.ora.xxxxxxxx /orc/app/oracle/product/12.2.0/dbhome_1/dbs/initorcl.ora
注意,复制到位置,是你自己的Linux的dbs的位置,与我的位置可能有一些差异,复制过去的文件名称中是你自己的sid.
7. 修改字符集
参看 http://blog.sina.com.cn/s/blog_7d23b65501013qjp.html
8. 运行./ruInstall… 这个弹框鼠标点击无效卡顿半天没有反应
设置xmanager的属性设置,点击桌面右下角的X图标找到属性,设置设备中的鼠标的属性,上面红框框起来的设置把勾去掉,保存之后重新运行安装命令,弹框点击就有相应也不会出现卡顿无法操作的情况。
9. 设备上没有空间----不要按照一些博客说的乱删,不然就是成了从删库到跑路le
参看 https://blog.csdn.net/henrymrz/article/details/88386007
yum install lsof
lsof |grep delete
# 根据lsof列出的进程号,kill这些进程后,空间就释放出来了
# 原因:有文件被删除,而进程还活着,因而造成还占用空间的现象
Kill -9 pid # 进程的id号
10. 导入dmp文件编码问题:实例编码有问题(这个问题还有待解决)
导入失败还有一种可能是数据库的磁盘空间满了
已经完成 UTF8 字符集和 UTF8 NCHAR 字符集中的导入 导入服务器使用 ZHS16GBK 字
参看 http://www.itkeyword.com/doc/3550459595368426x441/utf-8-oracle
5、配置监听器
配置监听(用于远程连接数据库)
# 在命令行输入netca/netmgr
# 监听器相关命令:
lsnrctl status # 查看监听器的状态
lsnrctl stop # 停止监听器
lsnrctl start # 启动监听器
主机名配置
$ORACLE_HOME/admin/listener.ora
$ORACLE_HOME/admin/ tnsnames.ora
监听器listener.ora文件配置(参看)
# listener.ora Network Configuration File: /orc/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = /orc/app/oracle/product/12.2.0/dbhome_1)
(SID_NAME = orcl)
)
(SID_DESC =
(GLOBAL_DBNAME = orclnx)
(ORACLE_HOME = /orc/app/oracle/product/12.2.0/dbhome_1)
(SID_NAME = orclnx)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /orc/app/oracle
tnsnames.ora文件配置(参看)
# tnsnames.ora Network Configuration File:/orc/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
ORCLNX =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
(CONNECT_DATA =
#(SERVER = DEDICATED)
(SERVICE_NAME = orclnx)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
LISTENER_ORCLNX =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle)(PORT = 1521))
重新注册监听器
https://www.cnblogs.com/zhangsw0923/p/12003449.html
验证用户是否可以正常登录:
sqlplus sys/Pisoft_123@192.168.1.3:1521/nx as sysdba;
查看数据实例和状态
http://blog.sina.com.cn/s/blog_68e671c70101a619.html
select instance_name,host_name,status from v$instance;
最后一步:设置oracle数据库和监听程序开机自动启动。
切换到root用户
编辑文件/etc/oratab
[root@localhost dbhome_1]# vim /etc/oratab
orcl:/orc/app/oracle/product/12.2.0/dbhome_1/:Y
编辑文件rc.local并添加最后两行文字
[root@localhost dbhome_1]# vim /etc/rc.d/rc.local
su oracle -lc"/orc/app/oracle/product/12.2.0/dbhome_1/bin/lsnrctl start"
su oracle -lc/orc/app/oracle/product/12.2.0/dbhome_1/bin/dbstart
其中第一行因为lsnrctl之后有空格,需要引号,第二行加不加引号都可以。修改完保存退出即可。
但是还有一个很重要的问题,如果是在以前的centos版本中,这样就可以了。但是centos7 的/etc/rc.local不会开机执行,是因为
#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In constrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run ‘chmod +x /etc/rc.d/rc.local’ to ensure
# that this script will be executed during boot.
翻译:
#这个文件是为了兼容性的问题而添加的。
#强烈建议创建自己的systemd服务或udev规则来在开机时运行脚本而不是使用这个文件。
#与以前的版本引导时的并行执行相比较,这个脚本将不会在其他所有的服务后执行。
#请记住,你必须执行“chmod +x /etc/rc.d/rc.local”来确保确保这个脚本在引导时执行。
好,现在执行指令
# chmod +x /etc/rc.d/rc.local
设置完成
重启
用指令lsnrctl status 看监听程序是否打开
6、新建数据库实例(多实例)
命令行输入dbca弹框用于创建数据库
https://www.cnblogs.com/heymonkey/p/12078393.html
登录sqlplus / as sysdba
数据库的启动和关闭参看:
https://www.cnblogs.com/eastsea/p/3895747.html
新建数据库实例的时候也会遇到一些坑的,还是需要注意
startup 启动
startup force是shutdown abort + startup的组合,即强制关闭数据库+ 正常启动数据库,快速重启数据库时胆子大的人用的
shutdown nomal 正常关闭
shutdown immediate 快速关闭
shutodown abort 终止关闭方式(粗暴)
查看oracle的语言
select userenv(‘language’)from dual
查看oracle的版本
select *from v$version;
验证用户是否能登录:
sqlplus sys/Pisoft_123@localhost:1521/orcl as sysdba;
查看数据库实例的信息:
select instance_name,host_name,status from v$instance;
7、使用客户端工具连接数据服务器
使用navicat12来连接或者使用plsql12
8、创建表空间、用户、给用户分配权限以及导入dmp文件
--创建表空间
create tablespace NX_DATA datafile '/orc/app/oracle/oradata/nx/NX_DATA.dbf' size 1500M autoextend on next 50m maxsize unlimited;
create tablespace PWP_DATA datafile '/orc/app/oracle/oradata/nx/PWP_DATA.dbf' size 1500M autoextend on next 50m maxsize unlimited;
如果不能创建参看
https://www.oschina.net/question/617388_67387
!mkdir -p /orc/app/oracle/oradata/nx
--创建用户空间:
create user nx identified by Pisoft_123 default tablespace NX_DATA;
create user pwp identified by Pisoft_123 default tablespace PWP_DATA;
--给用户授权dba权限
grant dba to nx;
grant dba to pwp;
--用户授权:
grant connect,resource to ap ;
grant create any sequence to ap ;
grant create any table to ap ;
grant delete any table to ap ;
grant insert any table to ap ;
grant select any table to ap ;
grant unlimited tablespace to ap ;
grant execute any procedure to ap ;
grant update any table to ap ;
grant create any view to ap ;
--在nx用户创建dblink----使得两个数据库能相互连接访问
create database link LINK_PWP connect to pwp identified by Pisoft_123 using 'orcl';
--删除用户、表空间
删除用户:
drop user pwp cascade;
drop user nx cascade;
删除表空间1:
DROP tablespace PWP_DATA including contents and datafiles CASCADE CONSTRAINTS;
DROP tablespace NX_DATA including contents and datafiles CASCADE CONSTRAINTS;
删除表空间2:
alter database datafile '/orc/app/oracle/oradata/nx/PWP.dbf' offline drop;
alter database datafile '/orc/app/oracle/oradata/nx/NX_DATA.DBF' offline drop;
alter database datafile '/orc/app/oracle/oradata/nx/system01.dbf' offline drop;
--导入导出dmp
Windows下导出
exp nx/Pisoft_123#@ip/sid file=d:/nx.dmp
exp pwp/Pisoft_123#@ip/sid file=d:/pwp.dmp
Linux下导出
exp pwp/Pisoft_123#@ip/sid file=/home/nx.dmp
Windows下导入
imp nx/Pisoft_123@ip/sid file=d:/nx.dmp full=y
imp pwp/Pisoft_123@ip/sid file=d:/pwp.dmp full=y
Linux下导入
imp nx/Pisoft_123@ip/orcl file=/home/nx.dmp full=y
9、总结
到此,在vm虚拟机centOs7.x上安装oracle12c有网安装就已经完成了,如果是在内网安装网络不通的情况下就只能去把oracle相关的所有的rpm包给下载下来,然后一个包一个包的去安装,写这篇文章是几年前搞过这个后面才整理了下分享给大家,不至于让我们安装一个oracle还踩了好多的坑,请一键三连(关注点赞加收藏),么么哒!