Oracle 12CR2 安装配置与基础学习
Oracle Database,又名Oracle RDBMS,或简称 Oracle。是甲骨文公司的一款关系数据库管理系统。Oracle 数据库 12c 引入了一个新的多租户架构,使用该架构可轻松部署和管理数据库云。目前最新的版本是 19C(19.3),还有 18C(18.3、18.4)两个版本以及 12C(12.1、12.2两个版本)。本次使用的是 Linux下的 12.2.0.1 版本。
0、软件下载
https://www.oracle.com/database/technologies/oracle-database-software-downloads.html
打开此网站,选择相应的操作系统版本,点击 See All 便出现如下页面。便可以下载软件了(前提是需要 Oracle 账号登陆才可以)。
1、安装前检查
对内存、交换空间、磁盘空间、临时目录和操作系统版本等进行检查
[root@JiekeXu ~]# free -m
total used free shared buff/cache available
Mem: 1819 916 94 28 808 640
Swap: 2047 0 2047
[root@JiekeXu ~]#
[root@JiekeXu ~]# df -h /dev/shm/
文件系统 容量 已用 可用 已用% 挂载点
tmpfs 910M 4.0K 910M 1% /dev/shm
[root@JiekeXu ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Jul 4 01:57:56 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=d40ff30e-48ce-4286-8e3f-bc9e30f3a6bb /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
[root@JiekeXu ~]# uname -m
x86_64
[root@JiekeXu ~]# uname -r
3.10.0-957.el7.x86_64
[root@JiekeXu ~]# cat /etc/sysconfig/network
# Created by anaconda
[root@JiekeXu ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[root@JiekeXu ~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.32.66 JiekeXu
Oracle官方建议安装目录最小要求 7.5G 大小,目前安装到根目录便可以使用。
[root@JiekeXu ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 27G 4.2G 23G 16% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 4.0K 910M 1% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 180M 835M 18% /boot
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 64K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
[root@JiekeXu ~]# df -h /tmp/
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 27G 4.2G 23G 16% /
[root@JiekeXu /]# cat /proc/version
Linux version 3.10.0-957.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
[root@JiekeXu /]#
[root@JiekeXu /]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
1、查看官方文档
oracle 自己也有一份很详细的安装文档可在线查看或下载,例如下,数据库 12.2.0.1 对操作系统版本有严格要求, Red Hat Enterprise Linux 6.4: 2.6.32-358.el6.x86_64 or later、 Red Hat Enterprise Linux 7: 3.10.0-123.el7.x86_64 or later 等等。
https://docs.oracle.com/en/database/oracle/oracle-database/12.2/ladbi/index.html
2、配置 yum 源 安装 RPM 包
前面已经说过配置 YUM 源的方法了,可查看前一节进行配置,然后安装一下 rpm 包。如果你使用的是 Oracle Linux 7 那么可以去此网址下载 这么一个 oracle-database-server-12cR2-preinstall 包即可。
https://oss.oracle.com/ol7/SRPMS-updates/
也可使用配置好的 yum 源 直接安装以下包即可。
yum install binutils*
yum install compat*
yum install glibc*
yum install ksh*
yum install libgcc*
yum install libstdc*
yum install libaio*
yum install make*
yum install sysstat*
yum install unixODBC*
yum -y install binutils compat-libcap1 compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel
3、修改资源限制
先备份 /etc/security/limits.conf 此文件,然后添加如下 5 行内容
cp /etc/security/limits.conf /etc/security/limits.conf.bak
vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
4、调整内核参数
vim /etc/sysctl.conf
fs.aio-max-nr = 1048576 #异步IO请求数目 推荐值是:1048576 其实它等于 1024*1024 也就是 1024K 个
fs.file-max = 6815744 #打开的文件句柄的最大数量,防止文件描述符耗尽的问题
kernel.shmall = 2097152 #共享内存总量 页为单位,内存除以4K所得
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128 #SEMMSL: 每个信号集的最大信号数量 SEMMNS:用于控制整个 Linux 系统中信号的最大数 SEMOPM:内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量 SEMMNI :内核参数用于控制整个 Linux 系统中信号集的最大数量
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 #套接字发送缓冲区大小的最大值
5、创建 Oracle 用户和组
groupadd oinstall #创建基本组 oinstall
groupadd dba #创建附加组 dba
groupadd oper #创建附加组 oper
useradd -g oinstall -G dba,oper oracle #创建 用户
echo 'Oracle12c' | passwd --stdin oracle #配置密码
6、创建 Oracle安装目录
mkdir -p /u01/app/oracle #创建oracle安装目录
chown -R oracle:oinstall /u01/app/oracle #分配属组属主
chmod -R 755 /u01/app/oracle/ #分配权限
7、Oracle 用户环境配置
vim /home/oracle/.bash_profile #oracle用户环境配置
umask 022 #反掩码
ORACLE_BASE=/u01/app/oracle #oracle的基本目录
ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/ #oracle的家目录
ORACLE_SID=JiekeXu #实例名称
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 #使环境生效
source .bash_profile 使环境变量生效。
8、oracle 用户资源限制
使用 pam_limits 认证模块,通过修改 pam 来达到控制 oracle 的目的
vim /etc/pam.d/login
#在其中添加
session required /lib/security/pam_limits.so
session required pam_limits.so
9、上传软件并解压
软件上传至 /u01/software/ 并赋权、解压
10、启动 Xmanager - Passive 安装数据库
查看宿主机 VMnet1 的 IP 地址
oracle 用户设置 DISPLAY 将图形化界面显示在宿主机,
export DISPLAY=192.168.32.1:0.0
echo $DISPLAY
如上,执行 ./runInstaller 出现图形化则可安装。由于是个人测试环境,本次使用图形化安装,后面有机会静默安装。
去掉对勾,不接收更新。
点击“是” 进行下一步。
选择“仅安装数据库软件”然后进行下一步。
只有一台机器故选择“单实例数据库安装”。
选择“企业版”安装。
Oracle 基目录,不用变,直接下一步。
产品清单,直接下一步。
已授权的操作系统组,直接下一步。
环境检查,发现交换空间不足。
当出现交换空间不足时,需要重新设置 swap 大小,生产环境不建议忽略,设置 swap 也很简单,如下步骤:
查看目前大小
[root@JiekeXu ~]# free -m
total used free shared buff/cache available
Mem: 2785 913 113 13 1758 1484
Swap: 2047 0 2047
从 / 下分出 1G 的空间作为 swap 使用
[root@JiekeXu ~]# dd if=/dev/zero of=/root/swap bs=1MB count=1024
记录了1024+0 的读入
记录了1024+0 的写出
1024000000字节(1.0 GB)已复制,4.17399 秒,245 MB/秒
[root@JiekeXu ~]#
[root@JiekeXu ~]# mkswap /root/swap #格式化
正在设置交换空间版本 1,大小 = 999996 KiB
无标签,UUID=d42d3604-4305-4083-bd8c-3a6978603a06
[root@JiekeXu ~]#
[root@JiekeXu ~]# swapon /root/swap #激活 swap
swapon: /root/swap:不安全的权限 0644,建议使用 0600。
[root@JiekeXu ~]#
[root@JiekeXu ~]# free -m
total used free shared buff/cache available
Mem: 2785 913 181 13 1690 1487
Swap: 3024 0 3024
如有其它不影响的条件可忽略,选择 "是" 继续安装。
当设置完 swap 交换空间后直接点击“安装”。
则会出现如下图所示的安装进度。
当进度条大于到 95 % 时,出现如下界面,需要使用 root 执行出现的脚本。
使用 root 用户执行第一个脚本
[root@JiekeXu app]# /u01/app/oraInventory/orainstRoot.sh
更改权限/u01/app/oraInventory.
添加组的读取和写入权限。
删除全局的读取, 写入和执行权限。
更改组名/u01/app/oraInventory 到 oinstall.
脚本的执行已完成。
使用 root 用户执行第二个脚本,然后到 [/usr/local/bin] 时回车,到 Trace File Analyzer (TFA) now ? yes|[no] : 时输入 yes,如下所示:
[root@JiekeXu app]# /u01/app/oracle/product/12.2.0/dbhome_1/root.sh
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/12.2.0/dbhome_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.
Do you want to setup Oracle Trace File Analyzer (TFA) now ? yes|[no] :
Oracle Trace File Analyzer (TFA - User Mode) is available at :
/u01/app/oracle/product/12.2.0/dbhome_1/suptools/tfa/release/tfa_home/bin/tfactl
OR
Oracle Trace File Analyzer (TFA - Daemon Mode) can be installed by running this script :
/u01/app/oracle/product/12.2.0/dbhome_1/suptools/tfa/release/tfa_home/install/roottfa.sh
/u01/app/oracle/product/12.2.0/dbhome_1/rdbms/install/rootadd_rdbms.sh: 第 79 行:[: 6815744: 期待二元表达式
/u01/app/oracle/product/12.2.0/dbhome_1/rdbms/install/rootadd_rdbms.sh: 第 79 行:[: 参数太多
/u01/app/oracle/product/12.2.0/dbhome_1/rdbms/install/rootadd_rdbms.sh: 第 88 行:[: 6815744: 期待一元表达式
[root@JiekeXu app]# /u01/app/oracle/product/12.2.0/dbhome_1/root.sh
Performing root user operation.
The following environment variables are set as:
ORACLE_OWNER= oracle
ORACLE_HOME= /u01/app/oracle/product/12.2.0/dbhome_1
Enter the full pathname of the local bin directory: [/usr/local/bin]:
The contents of "dbhome" have not changed. No need to overwrite.
The contents of "oraenv" have not changed. No need to overwrite.
The contents of "coraenv" have not changed. No need to overwrite.
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.
Do you want to setup Oracle Trace File Analyzer (TFA) now ? yes|[no] :
yes
Installing Oracle Trace File Analyzer (TFA).
Log File: /u01/app/oracle/product/12.2.0/dbhome_1/install/root_JiekeXu_2019-09-07_23-05-47-800056905.log
Finished installing Oracle Trace File Analyzer (TFA)
[root@JiekeXu app]#
执行完脚本后,可直接点击“确定”。
然后就完成了,点击关闭即可。
11、netca 配置监听
继续调用图形化, netca 一路 下一步、下一步即可完成。
[oracle@JiekeXu database]$ export DISPLAY=192.168.32.1:0.0
[oracle@JiekeXu database]$ netca
lsnrctl status 查看监听状态
当然,以上图形化配置监听,则是生成上图中的 listener.ora 配置文件,也可直接修改此文件即可。内容以及路径如下:
[oracle@JiekeXu admin]$ more listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = JiekeXu)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)
12、dbca 建库
[oracle@JiekeXu database]$ export DISPLAY=192.168.32.1:0.0
[oracle@JiekeXu database]$ dbca
创建模式中选择第二个“高级配置”。
选择 单实例数据库,“一般用途或事务处理”
这里需要勾选如下图中所示的“创建为容器数据库”
默认勾选第一项,“为数据库存储属性使用模板文件”
暂时不开启归档不指定闪回区
使用之前配置好的监听程序
Oracle Database Vault 选择默认,不启用
选择 自动内存管理 大小 800M
调整大小里面默认连接数300不变,字符集如下默认即可。
连接模式默认选择“专用服务器模式(D)”,后面示例方案勾选即可。
配置 EM 端口默认为 5500
统一设置密码为 Oracle12c
勾选创建数据库开始下一步
点击完成,则会出现如下进度条进行数据库实例的创建。到 47% 时间比较久,耐心等待即可。
进度条完成后直接点击关闭即可。
查看相关进程
简单查看主机资源使用情况以及数据库情况
[oracle@JiekeXu admin]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 27G 21G 6.3G 78% /
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.4G 484M 909M 35% /dev/shm
tmpfs 1.4G 12M 1.4G 1% /run
tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/sr0 4.3G 4.3G 0 100% /mnt/centos
/dev/sda1 1014M 180M 835M 18% /boot
tmpfs 279M 12K 279M 1% /run/user/42
tmpfs 279M 0 279M 0% /run/user/0
[oracle@JiekeXu admin]$ free -m
total used free shared buff/cache available
Mem: 2785 826 490 489 1467 1170
Swap: 3024 48 2976
[oracle@JiekeXu admin]$ cd /u01/app/oracle/
[oracle@JiekeXu oracle]$ ll
总用量 0
drwxr-x---. 3 oracle oinstall 21 9月 8 00:08 admin
drwxr-x---. 3 oracle oinstall 21 9月 8 00:12 audit
drwxr-xr-x. 5 oracle oinstall 47 9月 8 00:18 cfgtoollogs
drwxr-xr-x. 2 oracle oinstall 6 9月 7 23:12 checkpoints
drwxrwxr-x. 21 oracle oinstall 254 9月 7 23:01 diag
drwxr-x---. 3 oracle oinstall 21 9月 8 00:08 oradata
drwxr-xr-x. 3 oracle oinstall 20 9月 7 22:49 product
drwxr-xr-x. 5 root root 73 9月 7 23:07 tfa
[oracle@JiekeXu oracle]$ du -sh *
1.7M admin
0 audit
20M cfgtoollogs
0 checkpoints
5.4M diag
3.4G oradata
7.2G product
[oracle@JiekeXu oracle]$ ls -lh /u01/app/oracle/oradata/JiekeXu/
总用量 2.0G
-rw-r-----. 1 oracle oinstall 18M 9月 8 00:36 control01.ctl
-rw-r-----. 1 oracle oinstall 18M 9月 8 00:36 control02.ctl
drwxr-x---. 2 oracle oinstall 104 9月 8 00:28 JiekeXupdb
drwxr-x---. 2 oracle oinstall 111 9月 8 00:13 pdbseed
-rw-r-----. 1 oracle oinstall 201M 9月 8 00:25 redo01.log
-rw-r-----. 1 oracle oinstall 201M 9月 8 00:35 redo02.log
-rw-r-----. 1 oracle oinstall 201M 9月 8 00:25 redo03.log
-rw-r-----. 1 oracle oinstall 471M 9月 8 00:35 sysaux01.dbf
-rw-r-----. 1 oracle oinstall 801M 9月 8 00:32 system01.dbf
-rw-r-----. 1 oracle oinstall 34M 9月 8 00:27 temp01.dbf
-rw-r-----. 1 oracle oinstall 71M 9月 8 00:31 undotbs01.dbf
-rw-r-----. 1 oracle oinstall 5.1M 9月 8 00:25 users01.dbf
[oracle@JiekeXu oracle]$ sqlplus / as sysdba
SQL*Plus: Release 12.2.0.1.0 Production on 星期日 9月 8 00:40:38 2019
Copyright (c) 1982, 2016, Oracle. All rights reserved.
连接到:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
SQL> col name for a20
SQL> select name,open_mode from v$pdbs;
NAME OPEN_MODE
-------------------- ------------------------------
PDB$SEED READ ONLY
JIEKEXUPDB READ WRITE
打开宿主机浏览器输入 https://IP:5500/em/login
注意:需要先运行 flash 以及远程 Linux 关闭防火墙和 SeLinux
13、建库后相关配置
sqlplus 命令提示符
[oracle@JiekeXu ~]$ cd $ORACLE_HOME/sqlplus/admin
[oracle@JiekeXu admin]$ vi glogin.sql
set linesize 120
set pagesize 999
define _editor=vi
set sqlprompt "_user'@'_connect_identifier> "
配置 tnsnames.ora 增加 JIEKEXUPDB
[oracle@JiekeXu ~]$ cd $ORACLE_HOME/network/admin
[oracle@JiekeXu admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
JIEKEXU =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = JiekeXu)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = JiekeXu)
)
)
LISTENER_JIEKEXU =
(ADDRESS = (PROTOCOL = TCP)(HOST = JiekeXu)(PORT = 1521))
JIEKEXUPDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = JiekeXu)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = JIEKEXUPDB)
)
)
sqlplus 历史命令 rlwrap
上传 rlwrap 包至 /u01/software 解压,然后编译(./configure)、安装(make&&make install).
[root@JiekeXu rlwrap-0.37]# which rlwrap
/usr/local/bin/rlwrap
配置 alias
编辑 oracle 用户.bash_profile 文件 追加两行配置,然后 source 使之生效,sqlplus 登陆测试。
[oracle@enmoedu1 ~]$ vi .bash_profile
alias sqlplus='/usr/local/bin/rlwrap sqlplus'
alias rman='/usr/local/bin/rlwrap rman'
设置密码永不过期
SYS@JiekeXu> col PROFILE for a20
SYS@JiekeXu> col RESOURCE_NAME for a20
SYS@JiekeXu> col LIMIT for a20
SYS@JiekeXu> set linesize 300
SYS@JiekeXu> select * from dba_profiles where resource_name ='PASSWORD_LIFE_TIME' and profile='DEFAULT';
PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT COMMON INHERITED IMPLICIT
-------------------- -------------------- ------------------------ -------------------- --------- --------- ---------
DEFAULT PASSWORD_LIFE_TIME PASSWORD 180 NO NO NO
SYS@JiekeXu> alter profile default limit password_life_time unlimited;
配置文件已更改
SYS@JiekeXu> select * from dba_profiles where resource_name ='PASSWORD_LIFE_TIME' and profile='DEFAULT';
PROFILE RESOURCE_NAME RESOURCE_TYPE LIMIT COMMON INHERITED IMPLICIT
-------------------- -------------------- ------------------------ -------------------- --------- --------- ---------
DEFAULT PASSWORD_LIFE_TIME PASSWORD UNLIMITED NO NO NO
修改脚本 pdb 中创建 scott 用户
[oracle@JiekeXu ~]$ cd $ORACLE_HOME/rdbms/admin/
[oracle@JiekeXu admin]$ cp utlsampl.sql utlsampl2.sql
[oracle@JiekeXu admin]$ vi utlsampl2.sql
CONNECT SCOTT/tiger@JIEKEXUPDB #找到这一行,写上自己上面 tns 中配置的服务名
SYS@JIEKEXUPDB> @?/rdbms/admin/utlsampl2.sql
[oracle@JiekeXu admin]$ sqlplus scott/tiger@JIEKEXUPDB
解锁 HR 用户
SYS@JiekeXu> show pdbs
CON_ID CON_NAME OPEN MODE RESTRICTED
---------- ------------------------------ ---------- ----------
2 PDB$SEED READ ONLY NO
3 JIEKEXUPDB READ WRITE NO
SYS@JiekeXu> alter session set container=JIEKEXUPDB; #切换到 PDB
会话已更改。
SYS@JiekeXu> alter user hr identified by hr account unlock;
用户已更改。
SYS@JiekeXu> conn hr/hr@JIEKEXUPDB
已连接。
HR@JIEKEXUPDB> select table_name from user_tables;
TABLE_NAME
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
REGIONS
COUNTRIES
LOCATIONS
DEPARTMENTS
JOBS
EMPLOYEES
JOB_HISTORY
已选择 7 行。
文章比较长,还有一部分补丁下载及更新的放后面在介绍吧,花费一个国庆小长假断断续续整理而成的,希望对你有帮助,更希望看到这里的你能点一个“在看”,便是对我最大的支持咯。
推荐阅读:
Linux Oracle 11.2.0.4 单机数据库升级至最新补丁安装指北
万字详解Oracle架构、原理、进程,学会世间再无复杂架构
Linux | CentOS6.X/7.X 忘记超级用户 root 密码该怎么办?
CentOS6.7安装PostgreSQL10.9详细教程
Linux CentOS 7 安装教程
Linux RHEL7 安装教程
(长按添加微信公众号,更多精彩内容不错过!)