Centos7安装oracle12c
1.安装必要软件包
yum install binutil* -y
yum install compat* -y
yum install gcc* -y
yum install glibc* -y
yum install ksh* -y
yum install libaio* -y
yum install libgcc* -y
yum install libstd* -y
yum install libXi* -y
yum install libXtst* -y
yum install make* -y
yum install sysstat* -y
2.创建Oracle用户和用户组
[root@localhost ~]# groupadd dba
[root@localhost ~]# groupadd oinstall
[root@localhost ~]# useradd -g oinstall -G dba oracle
[root@localhost ~]# passwd oracle
image.png
3.创建安装目录
[root@localhost ~]# mkdir -p /u01/app/oracle
[root@localhost ~]# chown -R oracle:oinstall /u01/app/oracle
[root@localhost ~]# chmod -R 775 /u01/app/oracle
##同样把/u01 和/u01/app/也授权给oracle
[root@localhost ~]#chown -R oracle:oinstall /u01/
[root@localhost ~]#chown -R oracle:oinstall /u01/app/
image.png
4.CentOS7关闭防火墙和selinux
[root@localhost app]# setenforce 0
[root@localhost app]# /usr/sbin/sestatus
image.png
[root@localhost app]# systemctl stop firewalld
[root@localhost app]# systemctl disable firewalld
[root@localhost app]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@localhost app]# vi /etc/selinux/config
image.png
reboot重启
[root@localhost app]# reboot
查看结果:
[root@localhost app]#/usr/sbin/sestatus
[root@localhost app]#/usr/sbin/getenforce
image.png
5.修改系统内核参数
修改前先备份一下/etc/sysctl.conf
修改前先备份一下/etc/sysctl.conf
[root@localhost ~]# cp /etc/sysctl.conf /etc/sysctl.conf.bak
在 /etc/sysctl.conf文档下方增加上以下内容:
kernel.shmmax = 18446744073692774399
kernel.shmall = 18446744073692774399
kernel.shmmni = 4096
kernel.sem =250 32000 100 128
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
net.ipv4.ip_local_port_range =32768 60999
fs.file-max=6815744
fs.aio-max-nr=1048576
修改完成后保存,然后运行sysctl -p命令使之生效。
[root@localhost ~]# sysctl -p
image.png
6.扩大swap交换空间
若出现以下报错,则是swap空间不足,需要扩大交换空间
This is a prerequisite condition to test whether sufficient total swap space is available on the system. (more details)
Expected Value
: 15.64GB (1.6403472E7KB) 16400000
Actual Value
: 4.87GB (5111800.0KB)
解决步骤:
1、使用dd命令创建一个swap分区
2、#dd if=/dev/zero of=/home/swap bs=1024 count=16400000
3、格式化刚才创建的分区
4、# mkswap /home/swap
5、再使用swapon命令把这个文件分区变成swap分区
6、#swapon /home/swap
7、(关闭SWAP分区的命令为:#swapoff /home/swap)
8、再用free -m 查看已经扩容的了swap分区。
9、为了能够让swap自动挂载,需要修改etc/fstab文件,用vi /etc/fstab
10、在文件末尾加上 /home/swap swap swap default 0 0
11、这样就算重启系统,swap分区也不用手动挂载了
12、但是我感觉好像我重启了系统 swap就没有了,然后我又百度了一下,要执行下面一段命令 #echo "swapon /home/swap" >> /etc/inittab
13、然后在看 vi 看下 /etc/inittab
14、最后一行是swapon /home/swap,这样就万事大吉了。
完整操作如下:
[root@localhost app]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 17M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 40G 12G 29G 30% /
overlay 40G 12G 29G 30% /var/lib/docker/overlay2/234b1b34bb70c1b60fe7bca6640e8012186f3c078600a3e20006819f9ef2398e/merged
overlay 40G 12G 29G 30% /var/lib/docker/overlay2/e8b54eefa1b4c1d6483a3835eafd731f07799c73a83a340f3b763978c100a9bb/merged
tmpfs 379M 0 379M 0% /run/user/0
[root@localhost app]# dd if=/dev/zero of=/home/swap bs=1024 count=16400000
16400000+0 records in
16400000+0 records out
16793600000 bytes (17 GB) copied, 161.571 s, 104 MB/s
[root@localhost app]# mkswap /home/swap
Setting up swapspace version 1, size = 16399996 KiB
no label, UUID=45b9c854-486b-4cf9-a012-4c8c887350ca
[root@localhost app]# swapon /home/swap
swapon: /home/swap: insecure permissions 0644, 0600 suggested.
[root@localhost app]# free -m
total used free shared buff/cache available
Mem: 3789 580 132 11 3076 2929
Swap: 18063 55 18008
[root@localhost app]# /home/swap swap swap default 0 0
-bash: /home/swap: Permission denied
[root@localhost app]# echo "swapon /home/swap" >> /etc/inittab
[root@localhost app]#
image.png
7.设置用户限制
编辑 /etc/security/limits.conf
[root@localhost app]# vi /etc/security/limits.conf
在 /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 hard stack 10240
Add the following line to the "/etc/pam.d/login" file,
if it does not already exist.
session required /lib/security/pam_limits.so
session required pam_limits.so
Add the following to
/etc/profile if Oracle user will use the bash shell.
if [ $USER = "oracle" ]; then
ulimit -u 16384
ulimit -n 65536
fi
image.png
8. 配置环境变量
首先切换到oracle账户su - oracle (特别注意:一定要加横杠) ,编辑修改主目录下 .bash_profile
[root@localhost security]# su - oracle
[oracle@localhost ~]$ pwd
/home/oracle
image.png
编辑.bash_profile文件,增加如下内容:
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1; export ORACLE_HOME
ORACLE_SID=epps; export ORACLE_SID
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
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
执行 source .bash_profile 使配置生效
[root@localhost security]# source .bash_profile
8.上传oracle12c安装文件
用root用户上传文件到目录/home/oracle/, 并修改权限
[root@localhost security]# chown oracle:oinstall linuxamd64_12102_database_*
image.png
切换到oracle用户,解压安装包
#切换到ORACLE用户
[root@localhost oracle]# su - oracle
Last login: Wed Nov 17 10:36:35 UTC 2021 on pts/0
[oracle@localhost ~]$
#解压第一个文件压缩包
[oracle@localhost ~]$ unzip linuxamd64_12102_database_1of2.zip
#在解压完第一个压缩包后再来解压第二个压缩包
[oracle@localhost ~]$ unzip linuxamd64_12102_database_2of2.zip
文件解压完后都放在database文件中
创建一个目录,把zip包放起来
image.png
9.安装Xme30.exe 软件
从阿里云盘下载,然后在自己的电脑上安装
image.png
下载之后按照步骤一步一步安装即可
注册lic
image.png
点开Xbrowser之后,点击Help -> About Xbrowser -> Enter Product Key, 录入压缩包license.txt中的注册码即可
image.png
启动工具 Xmanager-Passive
image.png
如果出现错误:failed to get the installation date from the system registry
解决办法如下:
出现了这个问题后,各种可能的想法都想到了,但是,一直得不到解决,后来查到了这样一种办法
1.打开Xbrowser
2.打开Help, 选择About Browser
3.点击Enter Product Key
Name : 3ddown.com
Organization: none
Serial:080807-116451-999766
就OK了
呵呵,Xmanager不让贴上去,就辛苦大家用手敲上去了。
10. 安装oracle
查看安装文件的权限信息
image.png
查看我们自己的pc的ip地址
image.png
确保安装oracle的机器可以ping 通我们自己的pc
image.png
启动调用自己pc的图形管理工具(也就是上一步安装的Xme30)并启动安装
[oracle@localhost database]$ export DISPLAY=192.168.1.35:0.0
image.png
启动之后注意观察,依次会出现如下图像界面
image.png
image.png
取消勾选I wish to receive ...
image.png
image.png
image.png
image.png
image.png
/u01/app/oracle
/u01/app/oracle/product/12.1.0/db_1
image.png
image.png
image.png
image.png
出现此情况是/u01 /u01/app的权限导致的
image.png
处理步骤:逐步赋权
chown oracle:oinstall /u01/
chown oracle:oinstall /u01/app/
image.png
点击OK ,再点击下图的NEXT 按钮
image.png
出现如下问题:
image.png
问题原因是swap空间不足导致,需要扩大交换空间
This is a prerequisite condition to test whether sufficient total swap space is available on the system. (more details)
Expected Value
: 15.64GB (1.6403472E7KB) 16400000
Actual Value
: 4.87GB (5111800.0KB)
问题原因是没有swap空间不足导致,需要扩大交换空间
解决:1、使用dd命令创建一个swap分区
2、#dd if=/dev/zero of=/home/swap bs=1024 count=16400000
3、格式化刚才创建的分区
4、# mkswap /home/swap
5、再使用swapon命令把这个文件分区变成swap分区
6、#swapon /home/swap
7、(关闭SWAP分区的命令为:#swapoff /home/swap)
8、再用free -m 查看已经扩容的了swap分区。
9、为了能够让swap自动挂载,需要修改etc/fstab文件,用vi /etc/fstab
10、在文件末尾加上 /home/swap swap swap default 0 0
11、这样就算重启系统,swap分区也不用手动挂载了
12、但是我感觉好像我重启了系统 swap就没有了,然后我又百度了一下,要执行下面一段命令 #echo "swapon /home/swap" >> /etc/inittab
13、然后在看 vi 看下 /etc/inittab
14、最后一行是swapon /home/swap,这样就万事大吉了
完整操作如下
[root@localhost app]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 17M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 40G 12G 29G 30% /
overlay 40G 12G 29G 30% /var/lib/docker/overlay2/234b1b34bb70c1b60fe7bca6640e8012186f3c078600a3e20006819f9ef2398e/merged
overlay 40G 12G 29G 30% /var/lib/docker/overlay2/e8b54eefa1b4c1d6483a3835eafd731f07799c73a83a340f3b763978c100a9bb/merged
tmpfs 379M 0 379M 0% /run/user/0
[root@localhost app]# dd if=/dev/zero of=/home/swap bs=1024 count=16400000
16400000+0 records in
16400000+0 records out
16793600000 bytes (17 GB) copied, 161.571 s, 104 MB/s
[root@localhost app]# mkswap /home/swap
Setting up swapspace version 1, size = 16399996 KiB
no label, UUID=45b9c854-486b-4cf9-a012-4c8c887350ca
[root@localhost app]# swapon /home/swap
swapon: /home/swap: insecure permissions 0644, 0600 suggested.
[root@localhost app]# free -m
total used free shared buff/cache available
Mem: 3789 580 132 11 3076 2929
Swap: 18063 55 18008
[root@localhost app]# /home/swap swap swap default 0 0
-bash: /home/swap: Permission denied
[root@localhost app]# echo "swapon /home/swap" >> /etc/inittab
[root@localhost app]#
image.png
然后Check Again
image.png
image.png
开始漫长的等待
image.png
image.png
[root@localhost u01]# /u01/app/oraInventory/orainstRoot.sh
Changing permissions of /u01/app/oraInventory.
Adding read,write permissions for group.
Removing read,write,execute permissions for world.
Changing groupname of /u01/app/oraInventory to oinstall.
The execution of the script is complete.
[root@localhost u01]# /u01/app/oracle/product/12.1.0/db_1/root.sh
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/12.1.0/db_1
Enter the full pathname of the local bin directory: [/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 script.
Now product-specific root actions will be performed.
image.png
最后安装成功
image.png
11.配置listener
(如果重启服务器了,启动Oracle的顺序是先启动监听:lsnrctl start)
还是在oracle用户~目录下,通过netca调用图形化配置(如果重启过客户端需要先执行命令:export DISPLAY=192.168.1.73:0.0)
先打开
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
12.安装数据库实例
还是在oracle用户~目录下 执行dbca 命令调用 数据库实例 图形安装界面
image.png
稍等,出现如下图像
image.png
image.png
点击Next
image.png
创建数据库密码:Oracle12c,
image.png
image.png
image.png
image.png
image.png
image.png
13.解决数据库启动问题
切换用户
su - oracle
然后连接
sqlplus / as sysdba
启动oralce
startup
启动报错,如图
image.png
解决:
把/u01/app/oracle/admin/orcl/pfile下的init.ora.XXXXXXXXX文件 拷贝到
/u01/app/oracle/product/12.1.0/db_1/dbs/,并重命名为initepps.ora
[oracle@localhost pfile]$ cp /u01/app/oracle/admin/orcl/pfile/init.ora.10172021113749 /u01/app/oracle/product/12.1.0/db_1/dbs/
[oracle@localhost pfile]$ cd /u01/app/oracle/product/12.1.0/db_1/dbs/
[oracle@localhost dbs]$ ll
total 28
-rw-rw---- 1 oracle oinstall 1544 Nov 17 11:41 hc_orcl.dat
-rw-r--r-- 1 oracle oinstall 2992 Feb 3 2012 init.ora
-rw-r----- 1 oracle oinstall 1893 Nov 17 11:56 init.ora.10172021113749
-rw-r----- 1 oracle oinstall 24 Nov 17 11:28 lkORCL
-rw-r----- 1 oracle oinstall 7680 Nov 17 11:37 orapworcl
-rw-r----- 1 oracle oinstall 3584 Nov 17 11:56 spfileorcl.ora
[oracle@localhost dbs]$ mv init.ora.10172021113749 initepps.ora
然后再报错:ORA-00845 MEMORY_TARGET not supported on this system 解决方法:
修改文件 /etc/fstab 将tmpfs 修改成以下值(修改后要重启系统):
tmpfs /dev/shm tmpfs defaults,size=14G 0 0
image.png
如果直接修改/etc/fstab,通过重启reboot 让参数生效。
注意:这个size 的大小需要设置为整数。
df -h 在查查修改后的/dev/shm的大小
image.png
再次启动切换到su - oracle
然后连接sqlplus / as sysdba
然后修改默认设置信息:
--修改密码规则策略为密码永不过期;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
-- 修改system用户账号密码;
alter user system identified by system;
-- 修改sys用户账号密码;
alter user sys identified by sys;
--修改数据库最大连接数据;
alter system set processes=100 scope=spfile;
image.png
image.png
14.设置数据库字符集
首先通过sqlplus / as sysdba登录,查看当前字符集
select * from nls_database_parameters where parameter='NLS_CHARACTERSET';
image.png
这默认字符集不是我们需要的
我们要设置为AL32UTF8
设置步骤如下:
第一 先关闭数据库:
shutdown immediate;
第二 启动数据库到mount状态
startup mount;
image.png
第三 限制session
alter system enable restricted session;
image.png
第四 查看相关参数并修改
show parameter job_queue_processes;
设置为0
alter system set job_queue_processes=0;
show parameter aq_tm_processes;
也设置为0
alter system set aq_tm_processes=0;
image.png
image.png
第五 打开数据库
alter database open;
image.png
第六 修改字符集
alter database character set internal_use AL32UTF8;
image.png
第七 修改完成之后,将相关参数还原
alter system set job_queue_processes=1000;
alter system set aq_tm_processes=1;
第八 重启数据库
14. 配置Local Net...
先试试15步,用PL/SQL能不能连接,不能再配置
配置中请注意如下两个参数:
Global service name -----> orcl.oracle.com
Sid ------>orcl
image.png
还是在oracle用户~目录下,通过netca调用图形化配置
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
配置完成后,/u01/app/oracle/product/12.1.0/db_1/network/admin下多出两个文件
image.png
然后在oracle用户下启动监听器
lsnrctl start
lsnrctl stop
lsnrctl reload
sqlplus / as sysdba
一定要在oracle用户下重启监听(特别注意:切换到oracle的时候,一定要加横杠)
启动服务 startup ;
image.png
(关闭oracle : shutdown immediate)
操作过程如下图:
image.png
image.png
启动oracle报错:
image.png
找不到initepps.orga
解决:
把/u01/app/oracle/admin/orcl/pfile下的init.ora.10172021113749 拷贝到
/u01/app/oracle/product/12.1.0/db_1/dbs/
[oracle@localhost pfile]$ cp /u01/app/oracle/admin/orcl/pfile/init.ora.10172021113749 /u01/app/oracle/product/12.1.0/db_1/dbs/
[oracle@localhost pfile]$ cd /u01/app/oracle/product/12.1.0/db_1/dbs/
[oracle@localhost dbs]$ ll
total 28
-rw-rw---- 1 oracle oinstall 1544 Nov 17 11:41 hc_orcl.dat
-rw-r--r-- 1 oracle oinstall 2992 Feb 3 2012 init.ora
-rw-r----- 1 oracle oinstall 1893 Nov 17 11:56 init.ora.10172021113749
-rw-r----- 1 oracle oinstall 24 Nov 17 11:28 lkORCL
-rw-r----- 1 oracle oinstall 7680 Nov 17 11:37 orapworcl
-rw-r----- 1 oracle oinstall 3584 Nov 17 11:56 spfileorcl.ora
[oracle@localhost dbs]$ mv init.ora.10172021113749 initepps.ora
image.png
15.远程连接oracle(PL/SQL Developer)
我的阿里云下载客户端:
image.png
解压后,在根目录,创建文件tnsnames.ora
内容为:
ichannel@192_168 =
(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.111)(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = orcl.oracle.com))
)
image.png
打开PL/SQL Developer
image.png
一定要配置本机的4个环境变量:
变量名:ORACLE_HOME
变量值:D:\soft\instantclient_11_2
变量名:TNS_ADMIN
变量值:D:\soft\instantclient_11_2
变量名:NLS_LANG
变量值:AMERICAN_AMERICA.AL32UTF8
修改Path变量:在后面添加 D:\soft\instantclient_11_2
16.配置数据库自启动
(还未最后验证成功)
第一步:修改/u01/app/oracle/product/12.1.0/db_1/bin/dbstart
把ORACLE_HOME_LISTNER=$1改为ORACLE_HOME_LISTNER=$ORACLE_HOME
image.png
第二步:修改/etc/oratab,启动数据库时启动实例
image.png
第三步:编辑/etc/rc.d/rc.local启动文件,并授权
因为在centos7中rc.local已经被逐渐废弃,在其文件中也说明建议使用systemd。我这里将就下,修改完rc.local后为其添加执行(x)权限,重启后才能执行成功。
vi /etc/rc.d/rc.local
文件末尾添加如下两行
su - oracle -lc /u01/app/oracle/product/12.1.0/db_1/bin/dbstart
su - oracle -lc "/u01/app/oracle/product/12.1.0/db_1/bin/lsnrctl start"
注意:第二个命令有空格,所以要用引号
授权:chmod +x /etc/rc.d/rc.local
重启主机,查看数据库和监听是否自启动
ps -ef | grep orcl
lsnrctl status
ps -ef | grep LISTEN | grep -v grep
17.创建用户表空间
-- 创建用户 用户名必须以c##开头
create user c##wangcen identified by wangcen;
image.png
image.png
-- 创建表空间
-- tablespace_wangcen 是表空间的名称
-- /u01/oracle/data/ 数据文件存放路径(必须提前创建好)
-- wangcen_data.dbf 数据文件
create tablespace tablespace_wangcen datafile '/u01/oracle/data/wangcen_data.dbf' size 1024M;
image.png
18.服务器重启后如何启动oracle
分两步:
1 先切换到oracle用户su - oracle
2启动监听器 lsnrctl start
3 登录 sqlplus / as sysdb
然后执行 startup
完成。
关闭oracle:shutdown immediate;