部署Oracle 12c企业版数据库( 安装及使用) |
在计算机信息安全领域中,数据库系统无疑有着举足轻重的地位 。比如:SQL Server、MySQL、DB2、Oracle等,都是比较知名的数据库管理软件,由于Oracle数据库的安全性,所以在一些比较重要的场合被普遍使用,比如:电信、银行、政府部门等 。 本次博文以Oracle 12c数据库的64位企业版为例,学习如何在Centos 操作系统中的安装和基本配置,包括安装的准备等 。
一、安装Oracle 12c 1.安装CentOS 7操作系统的注意事项 由于本次安装Oracle 12c软件是在CentOS 7系统上实现的,那么首次安装CentOS 7操作系统有几点要求:
2.前置条件的准备 Oracle数据库是一个相对庞大的应用软件,对服务器的系统类型、内存和交换分区、硬盘空阿金、内核参数、软件环境、用户环境等都有相应的要求 。只要满足了这些必备的条件,才能确保Oracle 12c安装成功并稳定运行 。 (1)系统及配置要求 Oracle 12c明确支持的Linux操作系统包括Oracle Linux 7、Oracle Linux 6、Oracle Linux 5、Red Hat Enterprise Linux 7、Red Hat Enterprise Linux 6、Red Hat Enterprise Linux 5等,因为Red Hat Enterprise 和CentOS属于同步并行的操作系统,所以Oracle 12 c同样支持CentOS 7、CentOS 6、CentOS 5操作系统 。在其他Linux系统中安装时,个别软件或配置文件可能需要进行适当的调整 。 [root@localhost ']# cat /etc/centos-release //查看系统版本信息 CentOS Linux release 7.5.1804 (Core) [root@localhost ']# uname -r //查看系统内核信息 3.10.0-862.el7.x86_64 Linux操作系统要求:
如果交换分区空间不足的话,可以使用以下方式扩展交换分区 [root@localhost ']# dd if=/dev/zero of=/swap_file bs=1024 count=2097152 //这是扩展了2GB的交换分区,2097152除以1024等于2048,所以是2GB [root@localhost ']# mkswap /swap_file [root@localhost ']# swapon /swap_file //完成之后,再次查询就会发现交换分区多了2GB的空间 [root@localhost ']# grep MemTotal /proc/meminfo MemTotal: 7992344 kB [root@localhost ']# grep SwapTotal /proc/meminfo SwapTotal: 18568716 kB //交换分区空间及内存空间已经满足要求 对于Oracle 12c数据库,若程序文件和数据文件安装在同一分区,则该分区硬盘空间的最要要求为企业级为6.4G,标准版6.1G;除此之外,还应确保/tmp目录的可用空间不少于1G 。总的来说,建议安装Oracle 12c准备至少15G的硬盘空间 。 [root@localhost ']# df -hT /tmp //查看/tmp目录的磁盘使用情况 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root xfs 50G 21G 30G 42% / //很明显,满足了要求 安装Oracle数据库前,要求规划好主机名和IP 。服务器的主机名、IP地址应提前确认无误,一旦Oracle数据库安装完成,建议不要轻易的修改主机名,否则会导致数据库启动失败 。方法如下: [root@localhost ']# sed -i '1c oracle' /etc/hostname //设置主机名为oracle [root@localhost ']# echo -e "192.168.1.1 oracle" >> /etc/hosts //添加主机名与IP地址的对应关系 (2)软件环境要求 Oracle 12c的安装过程通常是在图形界面中进行,因此建议使用已安装有GNOME中文桌面环境的CentOS服务器,软件开发工具当然是必不可少的,应使用yum方式安装以下必要的软件环境 。 [root@localhost ']# yum -y install binutils compat-* gcc gcc-c++ glibc glibc-devel ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel libXi libXtst make sysstat unixODBC unixODBC-devel //使用本地光盘或者网络yum都可以 Oracle 12c自身集成了Java运行环境,但安装界面对中文的支持并不完善,因此若希望使用中文的Oracle安装界面,建议提前安装好Java软件包 。 (3)内核要求 为了确保数据库运行稳定,Oracle 12c针对Linux内核参数,进程会话限制提出了一些要求,其中一部分设置可以在安装过程中自动检测并进行修复,但并一定很完整,所以最好的做法是根据安装文档提前进行配置 。 内核参数调整体现在/etc/sysctl.conf文件中,主要包括与内存调度、端口范围、打开文件数、I/O请求等相关的一些设置,相关数值不可低于安装要求 。如下: [root@localhost ']# 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_max = 4194304 net.core.rmem_default = 262144 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 [root@localhost ']# sysctl -p //重新加载配置文件 各参数详解:
(4)Oracle用户环境要求 Oracle 12c需要固定的运行用户oracle、安装组oinstall、管理组dba,这些账号应提前创建好 。用于存放Oracle程序及数据库文件的基本目录也应提前创建好 。 [root@localhost ']# groupadd oinstall [root@localhost ']# groupadd dba [root@localhost ']# useradd -g oinstall -G dba oracle [root@localhost ']# echo '123456' | passwd --stdin oracle 更改用户 oracle 的密码 。 passwd:所有的身份验证令牌已经成功更新 。 [root@localhost ']# mkdir -p /u01/app/oracle [root@localhost ']# chown -R oracle:oinstall /u01/app [root@localhost ']# chmod -R 775 /u01/app/oracle Oracle 12c的安装任务应以运行用户oracle的身份执行,需适当调整oracle用户的环境配置以满足需求 。 [root@localhost ']# vim /home/oracle/.bash_profile ……………… //省略部分内容,在末尾添加即可! umask 022 ORACLE_BASE=/u01/app/oracle #oracle基本目录 ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1/ #安装家目录 ORACLE_SID=orcl #定义数据库实例名称 NLS_LANG="SIMPLIFIED CHINESE_CHINA".UTF8 #是针对Oracle语言、地区、字符集的设置 PATH=$PATH:$ORACLE_HOME/bin LANG=zh_CN.UTF-8 #LANG是针对Linux系统的语言、地区、字符集的设置 。 DISPLAY=:0.0 #在哪个终端可以使用图形 export PATH LANG NLS_LANG ORACLE_BASE ORACLE_HOME ORACLE_SID DISPLAY #将变量导出为全局变量 (5)oracle用户资源限制要求 进程会话限制可以采用pam_limits认证模块来实现,通过修改登录程序login的PAM设置以启用该认证,然后修改/etc/security/limits.conf 文件,使用户oracle能够打开的进程数、进程使用的文件数加大 。 [root@localhost ']# vim /etc/pam.d/login ……………… //省略部分内容,在末尾添加即可! session required /lib/security/pam_limits.so session required pam_limits.so [root@localhost ']# 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软堆栈限制 配置oracle用户资源限制,不配置也不会影响oracle数据库的成功安装,但是考虑到若有糟糕的sql语句对服务器资源的无限占用,导致长时间对用户请求无响应,建议提前限制oracle用户资源 。 [root@localhost ']# 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 准备工作完成后重新启动系统,重启之后,再次检查之前的配置是否生效 。 3.Oracle 12c安装过程 Oracle的中文官方网址是https://www.oracle.com/index.html 可以自行进行下载,也可通过本人提供的Oracle安装包 进行安装 。 [root@oracle ']# cd / [root@oracle /]# unzip /root/linuxx64_12201_database.zip //进入根目录对下载的Oracle软件包进行解压 [root@oracle /]# ls database/ //解压之后生成database目录 install response rpm runInstaller sshsetup stage welcome.html 授权允许用户oracle使用图形终端,例如执行:xhost + oracle@localhost,表示允许用户oracle从本机访问,或者执行xhost + 表示取消所有限制,这里执行xhost +即可 。 [root@oracle /]# xhost + //一定要以root用户的身份在图形环境中操作 [root@oracle /]# su - oracle //切换到oracle用户 [oracle@oracle ']$ cd /database/ [oracle@oracle database]$ export DISPLAY=:0.0 设置DISPLAY环境变量 [oracle@oracle database]$ ./runInstaller //执行安装脚本 执行完成后会弹出图形化界面,进行以下操作:
执行过程中,会有这样的提示信息: [root@oracle ']# /u01/app/oraInventory/orainstRoot.sh [root@oracle ']# /u01/app/oracle/product/12.2.0/dbhome_1/root.sh //执行第二个脚本,遇到提示,一路回车即可!
Web页面访问如下:
接下来使用命令行进行登录访问: 首先需要解决sqlplus命令行方向键不能使用的问题,方法如下: 获取rlwrap软件包 [root@oracle ']# yum -y install ncurses* readline* //安装软件包所需依赖 [root@oracle ']# tar zxf rlwrap-0.30.tar.gz.zip -C /usr/src [root@oracle ']# cd /usr/src/rlwrap-0.30/ [root@oracle rlwrap-0.30]# ./configure && make && make install //使用root身份进行编译安装,安装完成后即可使用! [oracle@oracle ']$ rlwrap sqlplus "/ as sysdba" SQL*Plus: Release 12.2.0.1.0 Production on 星期二 11月 26 10:51:44 2019 Copyright (c) 1982, 2016, Oracle. All rights reserved. 连接到: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> 这样登录到数据库库时,就可以使用方向键了 。但是这样每次登录数据库时都需要使用 rlwrap 命令稍嫌麻烦,可以进行一下操作: [oracle@oracle ']$ vim /home/oracle/.bash_profile ……………… //在末尾添加以下内容 alias sqlplus='rlwrap sqlplus' alias rman='rlwrap rman' //就是将命令创建别名而已 退出当前oracle用户,重新登录才可使用 。 [oracle@oracle ']$ sqlplus sys/123456 as sysdba //使用命令行登录 SQL*Plus: Release 12.2.0.1.0 Production on 星期二 11月 26 10:57:41 2019 Copyright (c) 1982, 2016, Oracle. All rights reserved. 连接到: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> 或者 [oracle@oracle ']$ sqlplus /nolog SQL*Plus: Release 12.2.0.1.0 Production on 星期二 11月 26 10:59:10 2019 Copyright (c) 1982, 2016, Oracle. All rights reserved. SQL> conn sys/123456 as sysdba 已连接 。 //也可以使用这样方式登录Oracle数据库 二、创建Oracle 12c数据库 如果在安装oracle产品时不创建数据库,那么要使用oracle系统就必须先创建数据库 。如果在安装oracle时选择建立数据库,也可以再创建第二个数据库(不过为了使oracle数据库充分利用系统资源,建议一个服务器上只创建一个数据库) 。 [oracle@oracle ']$ dbca //使用oracle用户创建数据库 //执行这条命令就会弹出图形化界面创建数据库 如果没有弹出窗口,可以参考前面的步骤,以root用户运行“xhost +”命令,再以oracle身份运行“export DISPLAY=:0.0”命令 。 弹出的图形化界面如下:
数据库已经创建完成! 三、Oracle 12c数据库的启动与关闭 oracle数据库的启动与关闭是日常工作之一 。对于大多数oracle DBA来说,启动和关闭oracle数据库最常用的方式是在命令行方式下执行 。 1.启动、关闭Oracle数据库 要启动和关闭数据库,必须具有Oracle管理员权限的用户登录,通常以具有SYSDBA权限的用户登录 。 (1)数据库的启动 启动一个数据库需要三个步骤:①启动oracle实例(非装载阶段);②由实例装载数据库(装载阶段);③打开数据库(打开阶段) 。 1)startup nomount(该命令不常用) nomount选项仅仅启动一个oracle实例,读取init.ora初始化参数文件、启动后台进程、初始化SGA 。当实例启动后,系统将显示一个SGA内存结构和大小的列表,如下: [oracle@oracle ']$ sqlplus / as sysdba //以oracle用户登录数据库 SQL*Plus: Release 12.2.0.1.0 Production on 星期二 11月 26 11:18:36 2019 Copyright (c) 1982, 2016, Oracle. All rights reserved. 连接到: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production SQL> startup nomount 2)startup mount(某些时候会用到该命令) startup mount 命令启动实例并且装载数据库,但是没有打开数据库 。oracle系统读取控制文件中关于数据文件和重做日志文件的内容,但并不打开该文件 。这种打开方式常在数据库维护操作中使用,如对数据文件的更名、改变重做日志及打开归档模式等 。在这种打开方式下,除了可以看到SGA系统列表以外,系统还会给出“数据库装载完毕”的提示 。 SQL> alter database mount; //由于上面已经执行了startup nomount命令,所以再更改它的状态,就需要使用该命令 3)startup(正常时使用的命令) startup命令完成启动实例,装载数据库和打开数据库三个步骤 。此时,数据库使数据文件和重做日志文件在线,通常还会请求一个或者多个回滚段;系统除了可以看到前面startup mount 方式下的所有提示外,还会给出一个“数据库已经打开”的提示;数据库系统处于正常的工作状态,可以接收用户的请求 。 如果采用startup nomount或者startup mount的数据库打开方式,必须采用alter database命令来执行装载或打开数据库的操作 。 前面两条命令都执行过了(startup nomount和alter database mount),所以这里再执行下面命令,数据库就可以说是正确启动完成了 。如下: SQL> alter database open; 正常来说,可以直接使用下面一条命令来正常启动数据库,如下: SQL> startup //在数据库关闭状态下执行该命令,数据库会依次启动、装载、打开 。 ORACLE 例程已经启动 。 Total System Global Area 1593835520 bytes Fixed Size 8793256 bytes Variable Size 1023411032 bytes Database Buffers 553648128 bytes Redo Buffers 7983104 bytes 数据库装载完毕 。 数据库已经打开 。 (2)数据库的关闭 对于数据库的关闭,有四种不同的关闭选项 。 2)shutdown immediate 发出该命令后,当前正在被oracle处理的SQL语句立即中断,系统中任何没有提交的事务全部回滚 。如果系统中存在一个很长的未提交的事务,那么采用这种方式关闭数据库也需要一段时间(该事务回滚时间) 。系统不会等待连接到数据库的所有用户退出系统,而会强行回滚当前所有的活动事务,然后断开所有的连接用户 。 3)shutdown transactional 4)shutdown abort
发出该命令后,所有正在运行的SQL语句将立即中止,所有未提交的事务将不回滚,oracle也不等待目前连接到数据库的用户退出系统;下一次启动数据库时需要实例恢复,因此,下一次启动可能比平时需要更多的时间 。 在关闭数据库时最好使用shutdown immediate方式,因为这种方式安全且相对较快 。不是万不得已不要使用shutdown abort 方式,因为这种方式会造成数据丢失,并且恢复数据库也需要较长时间 。 2.启动、关闭oracle监听进程 当oracle数据库实例启动完成后,为了使客户端用户能连接到oracle实例,DBA还需要在oracle所在的服务器上使用lsnrctl命令启动监听进程 。如果数据库实例关闭,一般也要关闭监听进程 。 (1)启动监听 启动监听是oracle用户在操作系统下执行的命令,可以直接在lsnrctl后加参数,也可在该命令提示符后进行操作,具体如下: [oracle@oracle ']$ lsnrctl //执行该命令 LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 25-9月 -2019 21:59:04 Copyright (c) 1991, 2016, Oracle. All rights reserved. 欢迎来到LSNRCTL, 请键入"help"以获得信息 。 LSNRCTL> start //启动监听 启动/u01/app/oracle/product/12.2.0/dbhome_1//bin/tnslsnr: 请稍候... TNSLSNR for Linux: Version 12.2.0.1.0 - Production 系统参数文件为/u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora 写入/u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml的日志信息 监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521))) 监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for Linux: Version 12.2.0.1.0 - Production 启动日期 25-9月 -2019 21:59:12 正常运行时间 0 天 0 小时 0 分 0 秒 跟踪级别 off 安全性 ON: Local OS Authentication SNMP OFF 监听程序参数文件 /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora 监听程序日志文件 /u01/app/oracle/diag/tnslsnr/oracle/listener/alert/log.xml 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oracle)(PORT=1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) 监听程序不支持服务 命令执行成功 也可以直接使用以下命令“来启动监听: [oracle@oracle ']$ lsnrctl start //启动监听 (2)关闭监听 [oracle@oracle ']$ lsnrctl stop //关闭监听 LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 25-9月 -2019 22:00:31 Copyright (c) 1991, 2016, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=oracle)(PORT=1521))) 命令执行成功 四、将Oracle数据库设置为开机自启动 [root@oracle ']# vim /etc/oratab ……………… //修改以下内容 orcl:/u01/app/oracle/product/12.2.0/dbhome_1:Y [root@oracle ']# vim /etc/rc.local su - oracle -c 'dbstart' //启动数据库 su - oracle -c 'lsnrctl start' //启用监听进程 [root@oracle ']# chmod +x /etc/rc.d/rc.local //添加执行权限 重启之后,进行验证: [root@oracle ']# netstat -anpt | grep 5500 //oracle数据库的监听端口 tcp6 0 0 :::5500 :::* LISTEN 2144/tnslsnr [root@oracle ']# netstat -anpt | grep 1521 //oracle数据库监听进程 tcp 0 0 192.168.1.1:24251 192.168.1.1:1521 ESTABLISHED 1816/ora_lreg_orcl tcp6 0 0 :::1521 :::* LISTEN 2144/tnslsnr tcp6 0 0 192.168.1.1:1521 192.168.1.1:24251 ESTABLISHED 2144/tnslsnr tcp6 0 0 192.168.1.1:1521 192.168.1.1:24143 TIME_WAIT - 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家 。 |