lightlanguage 2019-12-12
Linux 系统要求:
- 物理内存: 必须高于1GB,对于VMware虚拟机建议不少于2GB.
- 交换空间: 物理内存为1~ 2GB时,交换分区为物理内存的1.5~2倍;物理内存为2~ 16GB时,交换分区与物理内存大小相同:物理内存超过16GB时,交换分区使用16GB 就可以了。
一、准备工作
系统配置要求
对于Oracle 12c 数据库,若程序文件和数据文件安装在同一分区,则该分区硬盘空间的最小要求为企业版6.4GB.标准版6.1GB,除此以外,还应确保/tmp 目录的可用空间不少于1GB.总地
来说,建议为Oracle 12c 准备至少15GB的硬盘空间。
实验环境下,如果不单独给Oracle 创建分区,那么至少要保证根分区有15GB的可用磁盘空间。如果当前的磁盘空间不足,可以考虑在虛拟机中添加一块硬盘,格式化为XFS文件系统。同时创建/u01目录,将新创建的分区挂载到/u01目录。还要记得修改/etc/fstab文件,让其开机自动挂载。
安装Oracle数据库前,要求规划好主机名和IP。服务器的主机名、IP 地址也应提前确定无误.一旦 Oracle 数据库安装完成,建议不要再修改主机名,否则会导致数据库启动失败。查看主机名可以通过hostname命令实现,修改主机名通过配置文件/etc/hosts实现
[ /]# hostname oracle [ /]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.1.10 oracle
软件环境要求
Oracle 12c 的安装过程通常在图形界面中进行,因此建议使用已安装有GNOME中文桌面环境的CentOS服务器。软件开发工具当然也是必不可少的,如gcc. glibc, binutils 等软件包
[ /]# 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
内核要求
为了确保数据库运行稳定,Oracle 12c针对Linux内核参数.进程会话限制提出了一些要求,其中一部分设置可以在安装过程中自动检测并修复,但并不一定很完整 ,所以最好的做法是根据安装文档提前进行配置。
内核参数调整体现在/etc/sysctl .conf文件中,主要包括与内存调度.端口范围、打开文件数.
VO请求等相关的一些设置,相关数值不可低于安装要求。修改完毕后通过执行如下的"sysctl -p”命令使新配置立即生效。
[ /]# 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 # 重新加载配置文件 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
Oracle 用户环境要求
Oracle 12c 需要固定的运行用户oracle.安装组oinsall.管理组dba,这些账号应提前建好。用
来存放Oracle程序及数据库文件的基本目录(如/u01/app/oracle) 也应该提前创建好
[ /]# groupadd -g 54321 oinstall # 创建安装组 [ /]# groupadd -g 54322 dba # 创建管理组 [ /]# useradd -u 54321 -g oinstall -G dba oracle # 创建运行用户 [ /]# passwd oracle # 配置密码 更改用户 oracle 的密码 。 新的 密码: 无效的密码: 密码未通过字典检查 - 过于简单化/系统化 重新输入新的 密码: passwd:所有的身份验证令牌已经成功更新。 [ /]# mkdir -p /u01/app/oracle # 创建基本目录 [ /]# chown -R oracle:oinstall /u01/app/ [ /]# chmod -R 775 /u01/app/oracle/
Oracle 12c的安装任务应以运行用户oracle的身份执行,需适当调整oracle 用户的环境配置以满足要求:
[ /]# vim /home/oracle/.bash_profile ........................ // 省略部分内容 umask 022 ORACLE_BASE=/u01/app/oracle # 定义基本目录 ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/ # 定义安装家目录 ORACLE_SID=orcl # 定义数据库实例名称 NLS_LANG="SIMPLIFIED CHINESE_CHINA".UTF8 # 确定使用何种语言环境 PATH=$PATH:$ORACLE_HOME/bin LANG=zh_CN.UTF-8 export PATH LANG NLS_LANG ORACLE_BASE ORACLE_HOME ORACLE_SID export DISPLAY=:0.0
Oracle 用户资源限制要求
进程会话限制可以采用pam. Jimits认证模块来实现.通过修改登录程序login的PAM设置以启用该认证,然后修改/etc/security/imits. conf 文件,使用户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 # Oracle 软堆栈限制 [ /]# 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
不配置oracle用户资源限制部分,也不会影响Oracle数据库的成功安装,但是,若有糟糕的SQL语句对服务器的资源无限占用,导致长时间对用户请求无响应,则建议提前限制oralce用户资源,准备工作完成后重启操作系统,重启之后再次检查之前的配置是否生效,建议不要做临时配置。
二、安装 Oracle
Oracle的中文官方网址为https ://www . oracle .com/cn.它支持Oracle 12c安装文件的免费下载(需注册账号).正确选择所使用的系统平台(如Linux x86-64),然后下载linuxx64 .12201.database .zip这个ZP压缩包到/tmp/abc文件夹(自行创建).解压后可获得database文件夹, Oracle 的安装脚本.产品手册等文档都位于此文件夹中
也可下载本人提供的安装包:
开始安装
[ /]# mkdir /tmp/abc # 为什么要在tmp下创个目录呢,因为tmp的权限都放开了,一会需要切换Oracle用户来进行安装 [ /]# cd /tmp/abc/ [ abc]# ls flash-player-npapi-26.0.0.131-release.x86_64.rpm linuxx64_12201_database.zip [ abc]# unzip linuxx64_12201_database.zip [ abc]# ls database/ install response rpm runInstaller sshsetup stage welcome.html
Oracle 12c 的安装主要通过runlsaller 脚本进行,访问网页welcome .html可以查阅产品手册,其中包括产品说明,发行注记、安装指南等文档,为管理员提供了极为丰富的帮助信息。
所有前置条件都准备好以后,就可以正式开始安装了。如果当前的图形桌面环境是以其他用户的身份(如root)登录的,则还应添加授权以允许用户oracle 使用图形终端。例如,“xhost +
" 表示 允许用户oracle从本机访问,执行,xhost+” 表示取消所有 限制。
以用户oracle的身份登录到CentOS的图形桌面环境,启动database/ 目录下的runstaller脚本文件
[ abc]# xhost + # 一定要以root用户在图形环境中操作 access control disabled, clients can connect from any host [ abc]# su - oracle # 切换为 Oracle用户 [ ~]$ cd /tmp/abc/database/ [ database]$ ./runInstaller 正在启动 Oracle Universal Installer... 检查临时空间: 必须大于 500 MB。 实际为 28334 MB 通过 检查交换空间: 必须大于 150 MB。 实际为 2047 MB 通过 检查监视器: 监视器配置至少必须显示 256 种颜色。 实际为 16777216 通过 准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2019-12-11_09-32-31PM. 请稍候...
[ /]# /u01/app/oraInventory/orainstRoot.sh # 直接执行即可 更改权限/u01/app/oraInventory. 添加组的读取和写入权限。 删除全局的读取, 写入和执行权限。 更改组名/u01/app/oraInventory 到 oinstall. 脚本的执行已完成。 [ /]# /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]: # 回车
安装 flash player
[ /]# cd /tmp/abc/ [ abc]# ls database linuxx64_12201_database.zip flash-player-npapi-26.0.0.131-release.x86_64.rpm [ abc]# rpm -ivh flash-player-npapi-26.0.0.131-release.x86_64.rpm 准备中... ################################# [100%] 正在升级/安装... 1:flash-plugin-26.0.0.131-release ################################# [100%]
下图就是Oracle 的企业管理器
Oracle 12c 数据库的创建
[ /]$ sqlplus / as sysdba # 登录数据库 SQL*Plus: Release 12.2.0.1.0 Production on 星期三 12月 11 22:00:15 2019 Copyright (c) 1982, 2016, Oracle. All rights reserved. 连接到: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> sys用户是Oracle的最高管理员,以sys用户登录的时候一般要加上as sysdba, 而其他用户则不需要。 SQL> help index # ketongguy可通过此命令来查看支持的指定列表
创建数据库:
[ /]$ dbca # shuru输入此命令可弹出创建数据库的向导
Oracle 12c 数据库的启动与关闭
1. 数据库的启动
启动(STARTUP) 一个数据库需要三个步骤,①启动Oracle实例(非装 载阶段);②由实例装载
数据库(装载阶段);③打开数据库(打开阶段)。
在STARTUP命令中,可以通过不同的选项来控制数据库的不同启动步骤。
1) STARTUP NOMOUNT
NOMOUNT选项仅仅启动一个Oracle实例,读取init ora初始化参数文件、启动后台进程、初始
化SGA.当实例启动后,系统将显示一个SGA内存结构和大小的列表,如下所示.
SQL> startup nomount ORACLE instance started. Total System G1obal Area 2516582400 bytes Fixed Size 8795904 bytes Variable Size 671090944 bytes Database Buffers 1828716544 bytes Redo Buffers 7979008 bytes
2) STARTUP MOUNT
STARTUP MOUNT命令启动实例并且装载数据库,但没有打开数据库。Oracle 系统读取控制文件中关于数据文件和重做日志文件的内容,但并不打开该文件。这种打开方式常在数据库维护操作中使用,如对数据文件的更名,改变重做日志及打开归档模式等,在这种打开方式下,除了可以看到SGA系统列表以外,系统还会给出“数据库装载完毕 ”的提示。
3) STARTUP
STARTUP命令完成启动实例、装载数据库和打开数据库三个步骤。此时,数据库使数据文件和重做日志文件在线,通常还会请求一个或者多个回滚段;系统除了可以看到前STARTUP MOUNT方式下的所有提示外,还会给出一个‘数据库已经打开” 的提示: 数据库系统处于正常工作状态,可以接收用户请求。
如果采用STARTUP NOMOUNT或者STARTUP MOUNT的数据库打开方式,必须采用ALTER DATABASE命令来执行装载或打开数据库的操作。例如,如果以STARTUP NOMOUNT方式打开数据库,也就是说实例已经启动,但是数据库没有装载和打开。这时必须运行下面的两条命令,数据库才能正确启动。
ALTER DATABASE MOUNT; ALTER DATABASE OPEN;
如果以STARTUP MOUNT方式启动数据库,只需要运行下面-条命令即可以打开数据库。
ALTER DATABASE OPEN;
2.数据库的关闭
对于数据库的关闭(SHUTDOWN), 有四种不同的关闭选项.
1) SHUTDOWN NORMAL
SHUTDOWN NORMAL是SHUTDOWN命令的默认选项。也就是说,如果用户发出SHUTDOWN命令,即执行SHUTDOWN NORMAL命令。
发出该命令后,任何新的连接都将不再允许连接到数据库。在数据库关闭之前,Oracle 将等待目前连接的所有用户都从数据库中退出后才开始关闭数据库。采用这种方式关闭数据库,在下一-次启动时不需要进行任何的实例恢复。但需要注意的是.采用这种方式时,也许关闭一个数据库需要几天或更长的时间。
2) SHUTDOWN IMEDIATE
SHUTDOWN IMEDIATE是常用的一种关闭数据库的方式。若既想很快地关闭数据库,又想让数据库“干净”地关闭,则常采用这种方式。
发出该命令后,当前正在被Oracle处理的SaL语句立即中断,系统中任何没有提交的事务全部回滚。如果系统中存在-个很长的未提交的事务,那么采用这种方式关闭数据库也需要一段时间 (该事务回滚时间)。系统不会等待连接到数据库的所有用户退出系统,而会强行回滚当前所有的活动事务,然后断开所有的连接用户。
3) SHUTDOWN TRANSACTIONAL
SHUTDOWN TRANSACTIONAL命令常用来计划关闭数据库,它会等待当前连接到系统且正在活动的事务执行完毕,运行该命令后 ,任何新的连接和事务都是不允许的。在所有活动的事务执行完成后,数据库将以和SHUTDOWN IMEDIATE同样的方式关闭数据库.
4) SHUTDOWN ABORT
SHUTDOWN ABORT是关闭数据库方式的最后选择,是在没有任何办法关闭数据库的情况下不得不采用的方式,- -般不要采用。在下列情况出现时可以考虑采用这种方式关闭数据库。
(1)数据库处于一种非正常工作状态,不能用SHUTDOWN NORMAL 或SHUTDOWN IMEDIATE 命令关闭数据库。
(2) 需要立即关闭数据库。
(3)在启动数据库实例时遇到问题.
发出该命令后,所有正在运行的SQL语句将立即中止,所有未提交的事务将不回滚,Oracle 也不等待目前连接到数据库的用户退出系统,下-次启动数据库时需要实例恢复,因此,下一-次启动可能比平时需要更多的时间。
在关闭数据库时最好使用SHUTDOWN IMMEDIATE方式,因为这种方式安全且相对较快。不是万不得已不要使用SHUTDOWN ABORT方式,因为这种方式会造成数据丢失,并且恢复数据库也需要较长时间。