linux系统下设置oracle开机自动启动

在Linux系统中,安装好oracle数据库服务后,并不像在Windows系统下一样,oracle服务在默认情况下会随系统的启动自动启动。Linux系统中,是需要用户去手动进行设置,才能实现oracle开机自动启动的。本文将一步一步教你如何进行设置。

安装好oracle的linux系统(以CentOS7.5、Oracle 12c为例)

方法/步骤

1、前提条件:你已经在Linux系统中正确安装好oracle服务,使用手动方式可以正常启动。

查看ORACLE_HOME是否设置
$ echo $ORACLE_HOME
/usr/oracle/product

使用dbstart命令启动数据库比较方便,但是在linux上安装好oracle之后,第一次使用dbstart命令可能会报如下错误:

[oracle@osbdb product]$ cd bin/
[oracle@osbdb bin]$ ll | grep dbs
-rwxr-x--- 1 oracle oinstall      6072 Jan  1  2000 dbshut
-rwxr-x--- 1 oracle oinstall     13839 Jan  1  2000 dbstart
[oracle@osbdb bin]$ dbstart
ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener
Usage: /usr/oracle/product/bin/dbstart ORACLE_HOME
[oracle@osbdb bin]$

原因: dbstart和dbshut脚本文件中ORACLE_HOME_LISTNER的设置有问题,分别打开两个文件找到:用vi编辑dbstart,ORACLE_HOME_LISTNER=$1,修改为 ORACLE_HOME_LISTNER=$ORACLE_HOME 前提是$ORACLE_HOME环境设置正确

[oracle@osbdb bin]$ vi dbstart --dbstart为开机自启动脚本,让系统开机就去执行dbstart脚本文件,它会去读oratab文件,读到Y就会把对应的实例开机自启动 --调整或确认监听路径,如ORACLE_HOME_LISTNER=/usr/oracle/product或ORACLE_HOME_LISTNER=$ORACLE_HOME根据设置的监听调整路径

2、使用vi编辑器编辑文件/etc/oratab

dbca建库时都会自动创建/etc/oratab文件

#vi /etc/oratab
将“orcl:/usr/oracle/product:N”,
改为“orcl:/usr/oracle/product:Y”。
修改完成后,保存退出
--<N|Y>选项代表开机是否自启动

说明:orcl为实例名;/usr/oracle/product为oracle安装目录;会因安装的情况不同而有所不同。 image-20210512133112271

3、编辑/etc/rc.d/rc.local启动文件,添加数据库启动脚本dbstart

#su root
#vi /etc/rc.d/rc.local
末尾添加:
su oracle -lc "/usr/oracle/product/bin/lsnrctl start"
su oracle -lc /usr/oracle/product/bin/dbstart

或启动指定实例
su - oracle -lc "/usr/oracle/product/bin/lsnrctl start ORCL"
su - oracle -lc /usr/oracle/product/bin/dbstart

--命令中-c代表执行脚本,脚本dbstart中指定启动的实例,脚本lsnrctl中启动配置的监听

说明:*/usr/oracle/product为oracle的安装目录,要根据实际情况进行修改。* image-20210512135322083

4、修改DB启动配置文件

#vim /usr/oracle/product/bin/dbstart
找到ORACLE_HOME_LISTNER这行
# First argument is used to bring up Oracle Net Listener
ORACLE_HOME_LISTNER=$1

将$1修改为如下(你的路径):
ORACLE_HOME_LISTNER=/usr/oracle/product

image-20210512135805310

5、重启主机,查看数据库和监听是自启动

6、开机自启动多个监听及多个实例

#vim /etc/rc.d/rc.local
su - oracle -lc "/usr/oracle/product/bin/lsnrctl start UTF8"
su - oracle -lc "/usr/oracle/product/bin/lsnrctl start GBK"
su - oracle -lc /usr/oracle/product/bin/dbstart
监听写多个启动,实例用一个dbstart命令去启动,它会去读oratab文件,读到Y就会把对应的实例开机自启动

7、小结:

linux下设置实例自启动有关脚本:

oratab:实例是否自启动的注册信息

dbstart:开机启动脚本文件会读取oratab信息

rc.local:开机后立即要做的文件

--“启动监听” lsnrctl start

--“启动数据库实例” dbstart

--“关闭数据库实例” dbshut

--“关闭监听” lsnrctl stop

ORA-28040

没有匹配的验证协议

Oracle11g客户端连接Oracle12C服务器端,需配置项

前置条件:已安装Oracle11g客户端,配置好环境变量,用PL/SQL Developer登录数据库

出现问题:登录数据库时,提示“ORA-28040:没有匹配的验证协议”

解决办法:

①在oracle 12C服务器端$oracle_home/network/admin目录下文件sqlnet.ora

SQLNET.ALLOWED_LOGON_VERSION_SERVER=9
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=9

意思是支持oracle9服务端与客户端连接

②在服务器端,管理员身份登录,修改密码

sqlplus / as sysdba
alter user 用户名 identified by 密码;

注意:配置完服务器端的sqlnet.ora文件后,务必要重新修改密码,否则仍登录失败

ORA-12514

当执行下列命令时出现ORA-12514错误

[oracle@edbjr2p1 admin]$ sqlplus system/oracle@PROD

SQL*Plus: Release 11.2.0.4.0 Production on Sat May 3 12:25:27 2014

Copyright (c) 1982, 2013, Oracle. All rights reserved.

ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

解决:

1.查看listener.ora文件

[oracle@edbjr2p1 admin]$ cat listener.ora 
\# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
\# Generated by Oracle configuration tools.

LISTENER =
 (DESCRIPTION_LIST =
  (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = edbjr2p1.us.oracle.com)(PORT = 1521))
   (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
  )
)

ADR_BASE_LISTENER = /u01/app/oracle

2.查看tnsnames.ora文件

[oracle@edbjr2p1 admin]$ cat tnsnames.ora 
PROD =
(DESCRIPTION =
        (ADDRESS =
            (PROTOCOL = TCP)
            (HOST = edbjr2p1.us.oracle.com)
            (PORT = 1521)
        )
        (CONNECT_DATA =
            (SERVICE_NAME = PROD.us.oracle.com)
        )
    )

3.在listener.ora中增加下列几行

[oracle@edbjr2p1 admin]$ vim listener.ora 
\# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora
\# Generated by Oracle configuration tools.

LISTENER =
 (DESCRIPTION_LIST =
  (DESCRIPTION =
   (ADDRESS = (PROTOCOL = TCP)(HOST = edbjr2p1.us.oracle.com)(PORT = 1521))
   (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
  )
)

#新加开始

SID_LIST_LISTENER =
    (SID_LIST =
        (SID_DESC =
        (GLOBAL_DBNAME = PROD.us.oracle.com)
        (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
        (SID_NAME = PROD)
        )
    )

#新加结束

ADR_BASE_LISTENER = /u01/app/oracle

4.测试是否成功

[oracle@edbjr2p1 ~]$ sqlplus [system/oracle@PROD](mailto:system/oracle@PROD)

SQL*Plus: Release 11.2.0.4.0 Production on Sat May 3 12:31:20 2014

Copyright (c) 1982, 2013, Oracle. All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

© 2021 CFESB.CN all right reserved,powered by Gitbook 本文档更新于: 2021-07-06 16:26

results matching ""

    No results matching ""