Linux下安装Oracle 12c ( 含systemctl 开机自动启动oracle)

Submitted by Lizhe on Tue, 05/30/2017 - 12:17

创建一个名为oracle的用户

把下载后的zip文件解压

我的路径是/home/oracle/database

这个路径下有一个叫做runInstaller的可执行文件,直接运行它,注意你需要使用oracle直接登录进ui界面,用su oracle切换过来调用任何图形界面都会报错

当然网上也有其他解决方案,不过我觉得还是直接用oracle登录进图形界面最简单

然后一步一步照着填就可以,安装过程中有两个脚本需要使用root权限调用,然后点击ok

创建用户名称的时候12c需要以C##开头, 原因是现在多了一个plugable DB的概念,具体还不太清楚,反正instance跟数据库由一对多变成多对多了

默认会安装在/home/oracle/app/oracle/product/12.2.0/dbhome_1 , 需要的其他命令比如要创建数据库的管理工具都在这个目录的bin目录下 (./dbca)

117

启动步骤(第一次安装的话会自动启动)

$ lsnrctl start 打开监听
$ sqlplus /nolog 进入sql命令行
SQL> conn /as sysdba 切换权限
SQL> startup 启动数据库
SQL> shutdown immediate 停止数据库

 

实际上还有更简单的方法

/home/oracle/app/oracle/product/12.2.0/dbhome_2/bin/dbstart $ORACLE_HOME 2>&1 &  
/home/oracle/app/oracle/product/12.2.0/dbhome_2/bin/dbshut $ORACLE_HOME 2>&1 &  

 

不指定ORACLE_SID的话会出现下面的错误

SQL> conn /as sysdba
ERROR:
ORA-12162: TNS:net service name is incorrectly specified

不指定ORACLE_HOME的话会出现

Message 1070 not found; No message file for product=network, facility=TNSTNSLSNR for Linux: Version 

 

下面设置开机自动启动oracle

vi /etc/oratab

把最下面要启动的实例设置成Y

orcl:/home/oracle/app/oracle/product/12.2.0/dbhome_1:Y

 

一点补充知识

Linux启动时,会运行一个init程序,然后由init来启动后面的任务,包括多用户环境(inittab中设定)和网络等。运行级就是当前程序运行的功能级别,这个级别从1到6,具有不同的功能。这些级别在/etc/inittab(其他发行版这个文件位置不同)中指定,该文件就是init程序寻找的主要文件。最先运行的服务放在/etc/rc.d目录下。
文件以S开头,代表start(启动),后面的数字是启动顺序;文件以K开头,代表kill(结束),同样,后面的数字代表结束顺序。例如:/etc/rc3.d/S55sshd表示它与运行级别3有关,55就是它的启动顺序;/etc/rc3.d/K15nginx表示它与运行级别3有关,15就是它的关闭顺序。
init.d
这个目录中存放了一些服务启动脚本,系统安装时的多个rpm包,这些脚本在执行时可以用来启动,停止和重启这些服务。
rcx.d(x为0~6)
这个目录是启动级别的执行程序链接目录,里面的文件都是指向init.d目录中文件的一些软连接

 

然后如果你按照网上大多数网友做的, 实际上是centos6之前使用service命令时的旧方法

直接修改/etc/rc.d/rc.local

加入 /home/oracle/app/oracle/product/12.2.0/dbhome_2/bin/dbstart $ORACLE_HOME  2>&1

这个文件实际上是为了兼容旧系统

服务是由systemctl enable rc-local.service提供的,所以如果你采用这种方式需要确认好rc-local服务是否正常

 

 

使用systemctl命令其实更方便,但是好多朋友好像不太喜欢这种方式,网上没有例子,所以自己做了一个

[root@localhost system]# cat /usr/lib/systemd/system/oracle.service
[Unit]  
Description=Oracle Database 12c Startup/Shutdown Service  
After=syslog.target network.target  
  
[Service]  
LimitMEMLOCK=infinity  
LimitNOFILE=65535  
Type=oneshot  
RemainAfterExit=yes  
User=oracle  
Environment="ORACLE_HOME=/home/oracle/app/oracle/product/12.2.0/dbhome_2"  
ExecStart=/home/oracle/app/oracle/product/12.2.0/dbhome_2/bin/dbstart $ORACLE_HOME >> 2>&1 &  
ExecStop=/home/oracle/app/oracle/product/12.2.0/dbhome_2/bin/dbshut $ORACLE_HOME 2>&1 &  
  
[Install]  
WantedBy=multi-user.target