1. 系统要求
官方建议内存空间至少1G,交换分区应为内存空间2倍以上
2. 调整swap分区大小(若满足,忽略此步)
2.1 查看swap分区
free -m
2.2 创建swap文件,增加交换空间
# dd if=/dev/zero of=/usr/swapfree bs=1024 count=2048000
2.3 格式化及启动swap文件
mkswap /usr/swapfree # (将文件格式化为swap文件格式)
swapon /usr/swapfree #(启动swap交换分区) 要停止使用新创建的swap文件,只要执行 swapoff /tmp/swapfree命令即可,如果swap交换文件不再使用,可以删除此文件。
swappon -s # 检查swap
2.4 设置开机自启新添加的swap分区
/usr/swapfree swap swap defaults 0 0 # (开机时启动此swap文件)在/etc/fstab文件加一行
重启确认
说明:通常Swap空间的大小应是物理内存的2-2.5倍,特别是数据库服务器和Web服务器,随着访问量的增加,对Swap空间的要求也会增加
3. 关闭防火墙以及Selinux
systemctl stop firewalld.service #--关闭防火墙
systemctl disable firewalld.service #-- 禁止防火墙开机启动
systemctl status firewalld.service #-- 查看防火墙状态
# vi /etc/selinux/config
SELINUX=disabled # 关闭selinux
# 添加本地解析 (非必须)
4. yum安装必要安装包
rpm -q 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
4.1 检查后安装
1)Centos7.4.1检查安装oracle12c的依赖结果:
compat-libstdc++和ksh无安装信息(compat-libstdc++ ksh本地镜像没有,不能挂载,可以到此链接下载rpm包进行安装)下载地址
2) 如果其他centso版本检查到安装oracle12c前缺失unixODBC-devel和glibc,也无Internet环境,可挂载本地镜像安装
4.1.1. 挂载安装示例:
1)挂载安装unixODBC-devel和glibc 1) 新建挂载目录 /Centos7.4
2) 镜像默认存在于/dev/sr0,执行挂载[root@oracle /]# mount /dev/sr0 /Centos7.4/ /Centos7.4下ls下可见
3) cd /etc/yum.repos.d/ 进去此目录,删除目录下的所有文件
4) cd /etc/yum.repos.d/目录新建文件:yum.repo
5)vi /etc/yum.repos.d/yum.repo新增以下内容(/Centos7.4是挂载目录) [Centos7.4]
name=Centos7.4 baseurl=file:///Centos7.4 gpgcheck=0
6) 生成 本地yum 缓存
执行 yum clean all(清除缓存) yum makecache(建立新缓存)
7)yum install package
8)卸载挂载 [root@oracle /]# umount /dev/sr0 /Centos7.4/
9)执行安装:yum localinstall xxx.rpm
10)安装检查,全部通过
4.2 关闭透明大页
在Linux6.x之后的平台,在安装Oracle数据库的时候都建议关闭透明大页
5. 调整系统内核参数
5.1修改内核参数
#vim /etc/sysctl.conf
#异步IO请求数目 推荐值是:1048576 其实它等于 1024*1024 也就是 1024K 个
fs.aio-max-nr = 1048576
#打开的文件句柄的最大数量,防止文件描述符耗尽的问题
fs.file-max = 6815744
#共享内存总量 页为单位,内存除以4K所得
kernel.shmall =4194304
#单个共享内存段的最大值
kernel.shmmax = 8589934592 1/2物理内存大小
#共享内存段的最小数量缺省值4096
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
#SEMMSL: 每个信号集的最大信号数量 ,(Oracle建议其值不少于100.)
#SEMMNS:用于控制整个 Linux 系统中信号的最大数
#SEMOPM: 内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量 (Oracle建议其值不少于100.)
#SEMMNI :内核参数用于控制整个 Linux 系统中信号集的最大数量(Oracle建议其值不少于100.)
#用于向外连接的端口范围
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#加载配置文件
5.2. 重要参数说明
1)kernel.shmall:共享内存页数的最大值
Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大值可以设置为16G,比如16G内存,则对应需要共享内存页数为16GB/4KB=16777216KB/4k(getconf
PAGESIZE可得到)= 4194304(页) 2) kernel.shmmax:单个共享内存段的最大值
Shmma设置应足够大,设置过低可能导致需要创建多个共享内存段,导致系统性能下降,一般情况下,设置最大共享内存为物理内存的一半,如物理内存是2G,则可以设置最大共享内存为110241024*1024
= 1073741824,以此类推, kernel.shmmax= 8589934592 kernel.shmall=4194304
6. 用户及安装目录配置
6.1. 新建oinstall,dba组
#groupadd oinstall
#groupadd dba
6.2. 新建该组的用户oracle
useradd –g oinstall –G dba oracle
passwd oracle 修改主机oracle用户的密码
# 说明:
# -g用户组 指定用户所属的用户组。
# -G用户组,用户组 指定用户所属的附加组。
6.3. 新建目录
mkdir -p /orc/app/oracle
mkdir /tmp/oracle_12c # //把安装包放到这个目录
6.4. 修改目录的属主,属组
chown -R oracle:oinstall /orc/app/
6.5. 修改oracle目录的权限
chmod -R 755 /orc/app/oracle/
7. Oracle用户环境配置
7.1. #vim /home/oracle/.bash_profile
#权限(反码)
umask 022
#oracle的BASE目录定义
ORACLE_BASE=/orc/app/oracle
#oracle的HOME目录定义
ORACLE_HOME=/orc/app/oracle/product/12.2.0/dbhome_1/
#设置SID
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
8. oracle用户资源限制使用pam_limits认证模块
8.1. vim /etc/pam.d/login
#在内容末尾添加以下两行数据
session required /lib/security/pam_limits.so
session required pam_limits.so
8.2. 编辑limits.conf配置
# 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
8.3. 编辑profile文件
# vim /etc/profile
# 在内容末尾添加以下语句
if [ $USER = "oracle" ]
then
if [ $SHELL = "/bin/ksh" ]
then
ulimit -p 16384 #缓冲区大小
ulimit -n 65536
else
ulimit -u 16384 -n 65536 #进程数 文件数
fi
fi
# source /etc/profile # 8.4. 使配置生效
9. 开始安装
远程图形化安装
如果没有安装图形界面,linux基础不好,建议先安装桌面环境,以便图形安装
yum grouplist
yum groupinstall -y "X Window System"
yum group install –y "GNOME Desktop"
yum install xterm
yum install xclock
9.1. 配置xmanager(win远程)
需要在windows上面下载xmanager这个软件
Windows安装:http://www.xshellcn.com/
打开命令行:/usr/bin/xterm -ls -display $DISPLAY
9.2. 开始安装
安装选项:仅安装数据库软件(选第一个可快捷安装,不用二次调起图形界面)
说明:堆栈检测不能通过,经排查,在limits.conf中配置错误:错误原因是添加内容被注释,导致去掉注释,重新检测也未能通过,选中此时忽略,则可进入下一步
9.3. 配置监听
1) 打开终端,输入netca,自动调出配置界面
注意:安装完成之后你会发现没有sqlplus命令,这意味着使用命令行没有办法链接到数据库,此时就是环境变量没有配置(我已提交配置好了)。如果提前配置,则在本地可直接生效sqlplus命令,Crt终端工具连接需要手动激活用户环境变量(source /home/oracle/source .bash_profile),sqlplus命令才可生效。
9.4. 创建数据库
打开终端,输入dbca,自动调出创建数据库配置界面
自动内存管理最好启用,oracle会以当前分配的内存,根据实际需求,来分配SGA\PGA的最佳比例。否则如果由于某个池大小不足造成数据库性能出现问题,还需要人为调整,很麻烦(swap大于8G,此处不可调整)
扩展:
1.确定sga pga内存大小:
SHOW PARAMETER TARGET
2.确定自数据库启动以来pga最大的使用大小:
select value from v$pgastat where name=‘maximum PGA allocated’;
9.5. 启动监听及数据库
9.5.1. 启动监听
若安装过程配置监听已经启动,则忽略
[oracle]$ lsnrctl start/status/stop
9.5.2. 启动/关闭数据库
startup
当启动报ORA-00443: background process “GEN1” dit not start,重启,内存不足导致
SQL>shutdown nomal # (正常关闭方式)
SQL>shutdown immediate # (立即关闭方式)
SQL>shutdown transactional # (事务关闭方式)
本地以sqlplus / as sysdba方式登录时,采用的是操作系统验证的方式,所以用户名/密码输与不输入是一样的。
oracle数据库登录认证的2种方式
1、操作系统认证:也叫本地认证,oracle认为操作系统是可靠的,只要能登录到操作系统,就能访问数据库。安装oracle时默认的就是这种认证方式
这种情况下,任何用户密码以sysdba角色都可以连接数据库,实际上都是作为sys登录的
2、口令文件认证:oracle认为操作系统是不可靠的,若要访问数据库,必须要输入用户密码
10. 查看新建的数据库
10.1. 连接数据库
10.2. 查看数据库是否为CDB
SQL> select name, decode(cdb, 'YES', 'Multitenant Option enabled', 'Regular 12c Database: ') "Multitenant Option" , open_mode, con_id from v$database;
YES表示该数据库是CDB,如果是NO表示是NO-CDB(普通数据库)
10.3. 查看当前容器(Container)
11. Oracle12c 创建用户、授权
12c推出了可插拔库,管理用户也分为两种:本地用户和公用用户
本地用户是指在插拔数据库(PDB)中的用户,和12c之前的版本没有什么区别。公用用户只存在于可插拔环境中,在传统的数据库环境中不存在这种应用。怎么理解公用用户呢?可以简单的把它当做容器(CDB)用户,可以在各个通用与所有可插拔数据库(PDB)中使用。这个用户就像是小区的物业管理员,由小区物业来任命并且可以管理小区所有用户。
如果第一次登录CDB数据库,用传统方式创建用户会报错,这就是因为在CDB环境创建的用户为公共用户,语法和普通用户不同
11.1. 创建公用用户
创建用户:create user c##xjcx identified by xjcx;
说明:公用用户需要使用C##或者c##作为该用户名的开头
注意:sysdba身份登录进入数据库
如果使用传统创建用户的方法会报错
SQL > create user xjcx identified by xjcx;
create user xjcx identified by xjcx
ERROR at line 1:
ORA-65096: invalid common user or role name
此疑惑参阅 链接
11.2. 授权
11.2.1. 所有授权
给用户赋予所有权限:grant connect,resource,dba to 用户名;
提示:可通过登录web可视化管理页面授权https://x.x.x.x:5500/em/
11.2.2. 细化授权(若无要求,忽略此步骤)
因为新建的用户和默认的用户是锁住的,没有权限。所以新建用户后要给用户赋予权限。 1) 给用户赋予登录的权限:grant create
session to 用户名 2) 给用户赋予表操作的权限:grant create table to用户名(包含有create
index权限, alter table, drop table权限) 3) 给用户赋予表空间操作的权限:grant unlimited
tablespace to用户名 4) 给该用户赋予访问任务表的权限:grant select any table to
用户名(同理可以赋予update和delete) 5) 给c##xjcx用户赋予xxx用户的a表的查询的权限: 例如:grant
select on xxx.a to c##xjcx(同理可以有alter,drop,insert等权限) 6) 更多赋权参考:
https://www.cnblogs.com/lanqingzhou/p/8145272.html
11.3. 验证
11.3.1. 创建表空间
create table t_couse( couseid number(10) primary key, cousename varchar2(20) not null, cousetype varchar2(4) );
11.3.2. 插入表数据
- 插入
insert into t_couse(couseid, cousename, cousetype)values ('3', '张三' ,'0');
2)提交:commit;
11.3.3. 验证表数据
验证新插入的表的数据:新建一个连接窗口,查看是否插入成功,并查看插入的中文是否乱码
12. Web登录Oracle管理页面
https://192.168.1.xx:5500/em
13. 常见问题
13.1. 普通用户登录
1)数据库普通用户登录数据库,当提示下图,数据库实例未启动,oracle用户使用sysdba登录登录启动即可。
13.2. 新建用户第一次操作数据库
1)在用PL/SQL进行登录时,出现:”ora-01045 :user system lacks create session privilege; logon denied”
原因:该用户没有创建session会话的权限
grant create session to UserName;(UserName是登录出错的用户名)
2)如果以创建的用户登录,创建表,提示权限不足,则再次赋予创建表的权限
grant create session,create table to username;
3)给创建的表插入表数据,提示ORA-01950: 对表空间 ‘USERS’ 无权限,sys用户执行
grant resource,connect to username;
说明:connect是赋予连接数据库的权限,resource 是赋予用户只可以创建实体但是没有创建数据结构的权限
5) 第三步出错,无要求,直接赋予dba权限!
grant dba to 用户名
更多参考 链接
其他
本地安装调不起图形界面
Xdpyinfo|grep local查看下
Export DISPLAY=localhost:11.0
然后./runInstaller执行安装脚本即可调起图形界面