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.png13.解决数据库启动问题
切换用户
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;
第三 限制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
还是在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
下多出两个文件
然后在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)
我的阿里云下载客户端:
解压后,在根目录,创建文件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
第二步:修改/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;