oracle数据库部署

本文详细介绍了在Linux Redhat7.3系统上部署Oracle 12c的步骤,包括系统配置要求、内核参数调整、用户权限设置、安装过程、启动关闭数据库的操作以及OEM的使用。内容涵盖内存、硬盘空间、主机名、防火墙和selinux的设置,以及数据库的启动、关闭和监听器管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle数据库部署

前言:前面我们学习过微软的sqlserver,还有甲骨文公司的mysql,也理解了数据库系统的作用,这两种数据库管理系统适用于软件,网站,游戏等后台数据库,例如我们在学习mysql的时候搭建过动态网站。但oracle属于非常安全、完善的大型数据库管理软件,在电信、银行、证券等大型应用场合拥有着绝对的优势。那么今天就给搭建介绍oracle的安装和基本的使用。Oracle可以安装到windows和linux系统上,但企业更多采用在linux上安装,接下来我就以redhat7.3为例。

关于oracle

最流行的大型关系数据库

    • 由甲骨文公司出品,目前最新版本为Oracle12c
    • 内容以64位企业版Oracle12c为例
    • 官方网站:http://www.oracle.com/
    • 采用C/S模式、支持SQL查询语言
    • 在稳定性、高性能、安全性等方面优于其他数据库,因此常用于政府及企业

一、安装oracle的准备工作

  1. 系统及配置要求
  1. 确认linux系统的版本

[root@localhost ~]# cat /etc/redhat-release

CentOS Linux release 7.3.1611 (Core)

[root@localhost ~]#

  1. 物理内存:必须高于1G。

物理内存应不少于1GB,对于VMWARE虚拟机建议不少于1200MB.对于系统中的交换分区设置,应参以下约定:物理内存为1GB~2GB时,交换分区为物理内存的1.5~2倍;物理内存为2GB~16GB时,交换分区与物理内存大小相同;物理内存超过16GB时,交换分区使用16GB就可以了。

[root@localhost ~]# free -m

              total        used        free      shared  buff/cache      available

Mem:        3774         466        2884          10       423      3041

Swap:        2047         0        2047

[root@localhost ~]#

  1. 硬盘空间:企业版需要5.65G,还要确保/tmp目录所在的分区空间不少于1G,建议总的空间给10G以上

[root@localhost ~]# df -hT /tmp

Filesystem          Type  Size  Used Avail Use% Mounted on

/dev/mapper/cl-root xfs    39G  3.9G   35G  10% /

[root@localhost ~]#

  1. 确定主机名之后修改hosts文件(安装好oracle之后再修改主机名会导致数据库启动失败)

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.1.1 oracle

5)关闭防火墙和selinux

# systemctl disable firewalld

#vim  /etc/sysconfig/selinux

SELINUX=disabled

  1. 配置yum,安装支持包

#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

3、调整内核参数

内核参数调整体现在/etc/sysctl.conf文件中。主要包括对内存调度、端口范围、打开文件数、I/O请求等相关的一些设置,相关数值不可低于安装要求。修改完毕后通过执行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_max = 4194304

net.core.rmem_default = 262144

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

各参数详解:

fs.aio-max-nr

此参数限制并发未完成的请求,应该设置避免I/O子系统故障。

fs.file-max

该参数决定了系统中所允许的文件句柄最大数目,文件句柄设置代表linux系统中可以打开的文件的数量。

kernel.shmall

该参数控制可以使用的共享内存的总页数。Linux共享内存页大小为4KB,共享内存段的大小都是共享内存页大小的整数倍。一个共享内存段的最大大小是16G,那么需要共享内存页数是16GB/4KB=16777216KB /4KB=4194304(页),也就是64Bit系统下16GB物理内存,设置kernel.shmall = 4194304才符合要求.

kernel.shmmax

是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。至于导致系统下降的主要原因为在实例启动以及ServerProcess创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低(在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响),但是其他时候都不会有影响。

官方建议值:

32位linux系统:可取最大值为4GB(4294967296bytes)-1byte,即4294967295。建议值为多于内存的一半,所以如果是32为系统,一般可取值为4294967295。

64位linux系统:可取的最大值为物理内存值-1byte,建议值为多于物理内存的一半,例如,如果为12GB物理内存,可取12*1024*1024*1024-1=12884901887。 

kernel.shmmni

该参数是共享内存段的最大数量。shmmni缺省值4096,一般肯定是够用了。

kernel.sem

以kernel.sem = 250 32000 100 128为例:

       250是参数semmsl的值,表示一个信号量集合中能够包含的信号量最大数目。

       32000是参数semmns的值,表示系统内可允许的信号量最大数目。

       100是参数semopm的值,表示单个semopm()调用在一个信号量集合上可以执行的操作数量。

       128是参数semmni的值,表示系统信号量集合总数。

net.ipv4.ip_local_port_range

表示应用程序可使用的IPv4端口范围。

net.core.rmem_default

表示套接字接收缓冲区大小的缺省值。

net.core.rmem_max

表示套接字接收缓冲区大小的最大值。

net.core.wmem_default

表示套接字发送缓冲区大小的缺省值。

net.core.wmem_max

表示套接字发送缓冲区大小的最大值。

4、oracle用户要求

Oracle需要固定的运行用户oracle,安装组oinstall,管理组dba,这些账号需要提前建立好。此外用来存放oracle程序及数据库文件的基本目录/u01/app/oracle也应该提前创建好。

1)建立用户和组

groupadd -g 54321 oinstall

groupadd  -g 54322 dba

useradd  -u 54321 -g oinstall -G dba oracle

passwd oracle

mkdir -p /u01/app/oracle

chown -R oracle:oinstall /u01/app/

chmod -R 775 /u01/app/oracle/

5、Oracle11g的安装任务应以运行用户oracle的身份执行,需适当调整oracle用户的环境配置以便满足要求。Oracle11g安装界的语言类型取决于环境变量LANG,若希望用中文安装界面,则应确保LANG变量的值为”zh_CN.UTF-8”。中文安装界面有时会因缺少字体、字体配置不当等原因导致界面乱码。这时可以改用”en_US.UTF-8”英文环境以回避类似问题。

vim ~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

6、oracle用户设置Shell限制:为了优化性能,需要添加oracle用户的限制参数。进程会话限制可以采用pam_limits认证模块来实现,通过修改登录程序login的PAM设置以启用该认证。

  • 修改/etc/security/limits.conf,将用户oracle能够打开的进程数、进程使用的文件数加在。加入如下内容:

# vim /etc/security/limits.conf

oracle soft nproc 2047 #oracle打开的进程数软限制

oracle hard nproc 16384 #oracle打开的进程数硬限制

oracle soft nofile 1024 #oracle打开的文件数软限制

oracle hard nofile 65536#oracle打开的文件数硬限制

oracle soft  stack 10240 #打开的文件堆限制

第1行是设置进程数软限制;第2行是设置进程数硬限制;第3行是设置文件数软限制;第4行是设置文件数硬限制

  • 修改/etc/pam.d/login,加入如下内容:

#vim /etc/pam.d/login

session required /lib/security/pam_limits.so

session required pam_limits.so

  1. 配置oracle用户资源限制,不配置也不会影响oracle数据库的成功安装,但是考虑到若有糟糕的sql语句对服务器资源的无限占用,导致长时间对用户请求无响应,建议提前限制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

以上配置完后,重启下主机

#reboot

二、正式安装oracle

1.下载oracle12c软件并解压

[root@rhel1 ~]# cd /

[root@rhel1 /]#unzip  /mnt/linuxx64_12201_database.zip

2、授权允许用户oracle使用图形终端,例如执行:xhost + oracle@localhost,表示允许用户oracle从本机访问,或者执行xhost + 表示取消所有限制,这里执行xhost +即可。

[root@rhel1 /]#xhost  +

3、执行安装程序

[root@rhel1 /]#su  -  oracle

[oracle@rhel1 ~]$cd  /

[oracle@rhel1 /]$cd database/

[root@node3 database]$ ./runInstaller

  1. 配置安全更新

 

2.  安装选项,选择“创建和配置数据库”

3、在系统类中选择“服务器类”

 

4、网格选项中选择“单实例数据库安装”、

 

5、安装类型选择“典型安装”。                                如果为各种管理账号分别设置口令,或者选择语言版本,设置自动备份,存储管理等,则应选择“高级安装”。

 

6、典型安装的配置,必须设置管理员口令,其它参数采用默认值,系统将自动创建3个用户,分别是:超级管理员sys,system和数据库所有者sysman,当选择高级安装时,可以为3个用户分别设置口令,否则将使用同一个管理口令。

口令格式

 八位字符    包括大小写字母和数字 例: Asdf1234

 

7、创建产品清单,将清单目录修改为/opt/oracle/oralnventory,以便oracle用户有权限写入oracle数据库的清单信息。

mkdir   -p   /opt/oracle/oralnventory

chown  -R  oracle:oinstall   /opt/oracle/oralnventory/

chmod  -R  775   /opt/oracle/oralnventory

 

8、先决条件检查及概要,出现下面的程序包状态失败,因为这些包是32位的包,而我们的系统是64位的,所以不用理会,点击“全部忽略”。然后点击“下一步”。

 

可以保存响应文件,以后安装oracle时可以使用这个脚本执行安装,就不用配置这么多了。

9、安装中.....

 

10、当弹出“口令管理”的窗口时,单击“口令管理”按钮,将用户scott解锁,修改完成后,单击“确定”按钮。

 

11、完成安装

文件复制及相关部署结束之后,会弹出“执行配置脚本”对话框,根据提示切换为root用户并以此执行脚本,如下所示。                到79%要执行两个脚本

以root身份运行上面那两个脚本

sh  /u01/app/oracle/orainstRoot.sh

sh  /u01/app/oracle/product/12.2.0/dbhome_1/root.sh

 

 

 

最后单击“确定”按钮,会提示访问https://ip或主机名:5500/em/,使用此地址访问OEM(企业管理器)平台,以便对oracle数据库实例进行管理。

 

  • 安装后oracle

1.通过OEM平台访问(OEM平台可以进行图像化管理oracle,比较方便)。

在浏览器中输入:https://ip或主机名:5500/em/,输入用户名:sys,密码pwd123,连接身份选择SYSDBA

2.使用sqlplus命令行访问oracle数据库

1)首先,解决sqlplus命令行不能使用方向键的问题

安装过程(以root身份安装):

  • 先安装依赖包

#yum -y install ncurses* readline*

  • 再安装rlwrap

[root@oradb temp]# tar -xvf /mnt/rlwrap-0.28.tar  -C   /usr/src

[root@oradb temp]# cd /usr/src/rlwrap-0.30

[root@oradb rlwrap-0.30]# ./configure

[root@oradb rlwrap-0.30]# make

[root@oradb rlwrap-0.30]# make install

这样就可以使用 rlwarp 了.

#su   -   oracle

[oracle@oradb ~]$ rlwrap sqlplus "/ as sysdba"

这样登录数据库 , 就可以使用上 下 键查找上次执行的命令.

如果每次都需要输入 rlwrap 感觉麻烦的话 , 还可以加入到 .bash_profile 中, 就不用每次都输入了.

$vim  /home/oracle/.bash_profile

alias sqlplus='rlwrap sqlplus'

alias rman='rlwrap rman'

$sh   .bash_profile

2).在命令行界面中输入:sqlplus  sys/pwd123 AS SYSDBA

或者:

  • 执行HELP INDEX命令查看所有可以使用的命令

 

  • 执行SHOW USER可以查看当前登录的用户(USER is  ‘SYS’)
  • 配置oracle和OEM随机启动

1、修改/etc/oratab,修改内容如下:

vim /etc/oratab

orcl:/opt/oracle/product/11.2.0/dbhome_1:Y(N改为Y)

2、修改/etc/rc.local文件,在文件末尾增加如下:

#chmod a+x   /etc/rc.d/rc.local

#vim  /etc/rc.local
su - oracle -c 'dbstart'
su - oracle -c 'lsnrctl start'

六、常见系统控制命令

1、执行”lsnrctl start”命令可以启动oracle监听器。

2、执行”lsnrctl status”命令可以查看oracle监听器的状态。

3、执行”emctl stop dbconsole”命令可以关闭OEM管理控制台。

4、执行”dbshut $ORACLE_HOME”命令可以停止数据库实例。

5、执行”dbstart  $ORACLE_HOME”命令可以启动数据库实例。

6、使用sqlplus命令工具时,若以超级管理员sys登录,则在”SQL>”环境中执行”STARTUP;”、”SHUTDOWN IMMEDIATE;”指令也可以启用、关闭默认的数据库实例。

  • 创建数据库

创建数据库有两种方法:一种通过图形界面;另一种采用create  database命令,下面介绍图形界面的方法。

在linux中,运行数据库配置助手(DBCA),执行$ORACLE_HOME/bin目录下执行DBCA

  1. 执行netca启用监听的方法(如果没有启用需要做这一步)(为了使客户端能连接到oracle实例,以及有些命令也需要启用监听)
  2. #su  - oracle
  3. $netca

七、启动关闭数据库   

        1、数据库启动

启动(startup)一个数据库需要3个步骤

  1. 启动oracle实例
  2. 由实例安装数据库
  3. 打开数据库

在startup命令中,可以通过不同的选项来控制数据库的不同的启动步骤。

NOMOUNT选项:

nomount:已经通过参数文件知道控制文件在哪个位置,但是还没有读取控制文件。主要的作用就是启动一个实例,读取init.ora初始化参数文件,启动后台进程,初始化全局SGA

MOUNT选项:

读取了控制文件,通过控制文件知道了其他文件(数据文件和日志文件),此时并没有读取数据文件和日志文件,这个状态叫mount状态。启动实例并且安装了数据库,但没有打开数据库。这种打开方式常在数据库维护操作中使用,例如对数据文件更名,改变重做日志及打开归档方式等,在这种打开方式下,除了可以看到SGA     系统列表以外,系统还会给出“数据库装载完毕”提示。


Open选项:

读取完控制文件之后,找到了数据文件和日志文件,数据库就处于OPEN状态了。

startupnomount|mount|open

shudownnormal|immedieate|transactional|abort

注意:如果仅仅执行startup命令,将会完成启动实例,安装实例和打开数据库的所有3个步骤,这是系统出了可以看到前面startup mount方式下所有提示外,还会给出一个“数据库已经打开”的提示,此时,数据库系统处于正常的工作状态,可以接收用户请求。

如果使用startup  nomount 命令或者startup  mount命令,必须采用alter  database命令执行打开数据库操作,例如:如果以startup nomount方式打开数据库,也就是说实例已经启动,但是数据库没有安装和打开,这是必须运行下面的两条命令,数据库才能正确启动。
ALTER DATABASE MOUNT;

ALTER DATABASE OPEN;

如果以startup  mount方式启动数据库,只需要运行下面一条命令即可打开数据库

ALTER DATABASE OPEN

2、执行startup命令

可以看出数据库已经打开

注意:

oracle11g数据库在执行dbca或者调整sga后重启oracle的时候可能会出现ORA-00845 MEMORY_TARGET not supported on this system 错误。

究其原因就是Linux系统的shm的大小比SGA设置的小,造成的,距离来说,SGA设置4G,而shm可能只有1G

解决办法:

调整shm的大小,具体操作如下:

vi /etc/fstab

修改如下行的设置

tmpfs /dev/shm tmpfs defaults 0 0

改成

tmpfs /dev/shm tmpfs defaults,size=6G 0 0

保存退出

重新mount下shm使其生效

mount -o remount /dev/shm

3、关闭数据库

SQL> shutdown   immediate

4、开始startup  nomount状态

5、修改数据库到open状态

ALTER   DATABASE  MOUNT;

6、数据库的关闭

normal:这是默认选项,使用该选项时,不允许任何新的用户连接,但是允许继续当前的所有连接,只有所有用户(自愿的)退出登录时,数据库才能真正的关闭

通常,正常的数据库关闭是没有意义的,即使只剩下database control在运行,也总是存在未退出登录的用户。也许关闭一个数据库需要几天或更长的事件(如果用户一直没有自己关闭)

immediate使用这个选项时,不允许任何新的用户连接,当前的所有连接的会话都被终止。任何活动的事务都会都将回滚,随后数据库会被关闭。是一种常用的关闭数据库方式,快速关闭数据库。

transactional:使用这个选项时,不允许任何新的用户连接,没有存在于某个事务中的现有会话被终止,允许当前位于某个事务中的会话在完成该事务之后终止。一但所有会话终止,数据就会被关闭(使用shutdown  immediate)

abort:就oracle而言,使用这个选项相当于断电。实例被立即终止。此时,任何数据都不会被写入磁盘。但是在下一次启动数据库的时候,速度比较慢(需要实例恢复)。建议在以下情况使用这种方式。

  1. 数据库一直处于非正常的工作状态,不能用shutdown normal或者shutdown  immediate命令关闭。
  2. 需要立即关闭数据库
  3. 在启动数据库实例时遇到问题
  4. 启用监听

lsnrctl   start  

  1. 连接到aaa数据库

sqlplus   sys/Pwd12345@aaa   as  sysdba;

6)使用oem如何连接不同的oracle服务器

export ORACLE_SID=aaa
emctl status dbconsole
如果没有启动则启动:
emctl start dbconsole

如果你改了忘记了,可以利用如下方法重置:
1)进入cmd
2sqlplus / as sysdba
3alter user sys identified by 新密码;

说明:oracle有两种登录方式,一种是系统账户,一种是oracle,修改sys口令的时候,Oracle采用的是操作系统认证方式,当属于操作系统DBA组用户登陆到数据库服务器,那么Oracle认为这样的用户就可以授权以SYSDBA身份登录数据库,这时的用户名和密码随便输什么,都能连上库,使用show user命令查看登陆用户,其实都是SYS用户。

  • 使用Navicat for Oracle工具远程图形化管理oracle
  1. 在win7宿主机上安装软件Navicat for Oracle。

连续点击下一步安装即可。

2、新建连接

 

3、点击高级---角色选择sysdba,位置选择图片设置的位置。

 

设置位置:C:\Users\yanyan\Documents\Navicat\Oracle\servers\oracleserver

4、查看数据库

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值