前言
之前用的Oracle数据库是部署在windows上面的,最近有点不太稳定了,寻思着迁移到Linux上面会不好一点,因此做一下记录。这次迁移的是非GUI版的操作,GUI版会有不同。
环境准备
Centos 7.9 x64 2207
Oracle 11gR2 x64安装包 11.2.0.1.0 (包含:linux.x64_11gR2_database_1of2.zip、linux.x64_11gR2_database_1of2zip,网上也有7个包的安装包,不过如果是安装数据库的话,只需要前两个包就行)
需要安装的库包
代码语言:shell复制unzip gcc make binutils gcc-c compat-libstdc -33 elfutils-libelf-devel
elfutils-libelf-devel-static ksh libaio libaio-devel numactl-devel
sysstat unixODBC unixODBC-devel pcre-devel policycoreutils-python安装准备
安装包准备
以下操作除非特别注明,不然都是以root用户去执行命令。
上传安装包到服务器上并解压,我这里使用自建的/data/tmp目录来存放安装包文件。(注:Linux下解压多个zip时,不会像Windows那样直接解压全部包,而是要一个一个手动解压)
unzip linux.x64_11gR2_database_1of2.zip && unzip linux.x64_11gR2_database_2of2.zip等待解压完成后,会在/data/tmp目录下生产一个database文件夹,里面就是Oracle11g安装文件。
[root@oracle]# ll
总用量 2.2G
drwxr-xr-x. 8 root root 4.0K 8月 21 2009 database
-rw-r--r--. 1 root root 1.2G 4月 25 09:53 linux.x64_11gR2_database_1of2.zip
-rw-r--r--. 1 root root 1.1G 4月 25 09:55 linux.x64_11gR2_database_2of2.zip设置主机名称
在/etc/hosts中添加主机名,一般来说ssh连接后显示的root@oracle,@后面的就是主机名称,一般为localhost,这里是我们使用oracle作为主机名。
在127.0.0.1最后添加oracle,在最后一行添加服务器的ip:
代码语言:javascript复制127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 oracle # 这里
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 oracle
172.16.0.10 oracle # 这里关闭SELinux
由于CentOS的SELinux安全机制,开放Oracle的1521端口需要手动放开SELinux和firewall两处,由于机器处在可信的内网中,故我这里直接关闭SELinux。
先临时关闭SElinux(下次启动就失效):
代码语言:shell复制setenforce 0如果提示命令找不到的话,看看是不是没有安装policycoreutils-python这个包。
然后永久关闭SELinux:
然后修改/etc/selinux/config,设置SELINUX=disabled:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled # 修改为disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted关闭防火墙
代码语言:shell复制service iptables stop
systemctl stop firewalld
systemctl disable firewalld添加安装用户和用户组
代码语言:shell复制groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle注意,oracle账户不要在安装系统时创建,不然后面安装的时候提示对oraInventory目录没有写权限,就得删除现在这个oracle用户,重新创建一个新的oracle用户,并且将需要的目录重新授予新Oracle用户。
检查权限是否正确:
代码语言:shell复制id oracle得到如下结果:
代码语言:shell复制uid=1001(oracle) gid=1001(oinstall) 组=1001(oinstall),1002(dba)修改内核参数配置
代码语言:shell复制nano /etc/sysctl.conf添加以下内容:
代码语言:shell复制fs.aio-max-nr=1048576
fs.file-max=6815744 // 表示一个进程可以打开的文件句柄的最大数量.
kernel.shmall=4194304
kernel.shmmni=4096
kernel.shmmax=8589934592 // 单个共享内存段的最大值,这里设置为8GB
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=1048586 // 发送缓冲区最大值详细参数说明如下:
kernel.shmall:
kernel.shmall的单位是页。对于X86的linux系统,一页=4k,也就是4096字节。kernel.shmall = 2097152 就是2097152*4k/1024/1024 = 8G 就是说可用共享内存一共8G,2097152 =8G ,4194304=16G 。
一个共享内存段的最大大小是16G,那么需要共享内存页数是 16GB/4KB=16777216KB/4KB=4194304 (页),也就是64Bit 系统下 16GB 物理内存,设置 kernel.shmall = 4194304 才符合要求(几乎是原来设置2097152 的两倍)。这时可以将shmmax 参数调整到 16G 了,同时可以修改SGA_MAX_SIZE 和 SGA_TARGET 为 12G(您想设置的SGA 最大大小,当然也可以是2G~14G 等,还要协调PGA参数及OS 等其他内存使用,不能设置太满,比如16G)。
kernel.shmmni:
共享内存段的最大数量,shmmni 缺省值 4096 ,一般是够用了。
kernel.shmmax:
shmmax 是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值(以字节为单位),
设置应该足够大,能在一个共享内存段下容纳下整个的SGA ,设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降,最大值为16GB(在大多数情况下,该值应该比SGA大)。
其值应>=sag_max_size初始化参数的大小,否则SAG由多个内存段构成,效率降低,还要不小于物理内存的一半,默认情况下在32位x86系统中,Oracle SGA最大不能超过1.7GB。
缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G(2147483648)
针对24G的服务器,至少12G的配置,则是17179869184。
编辑好文件后,输入sysctl -p使配置生效
sysctl -p(注:可以使用ipcs -l看结果。ipcs -u 可以看到实际使用的情况)
限制oracle用户的shell权限
第一步,先修改/etc/security/limits.conf文件
代码语言:shell复制nano /etc/security/limits.conf在末尾添加
代码语言:shell复制oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536limits.conf配置说明:
<domain> <type> <resource> <value>domain:
代码语言:javascript复制username | @groupname:设置需要被限制的用户名,组名前面加@ 与 用户名 区别。
* 表示所有用户(注意有的系统不支持哦)。type:
代码语言:javascript复制soft 指的是当前系统生效的设置值,
hard 表明系统中所能设定的最大值(soft 的限制不能比har 限制高 )
- 就表明同时设置了 soft 和 hard 的值。resource(针对Oracle的我们主要配置nproc nofile):
代码语言:javascript复制as -地址空间限制
rss -最大持久设置大小
cpu -以分钟为单位的最多 CPU 时间
core -限制内核文件的大小
date -最大数据大小
stack -最大栈大小
fsize -最大文件大小
noproc -进程的最大数目
nofile -打开文件的最大数目
memlock -最大锁定内存地址空间
maxlogins -此用户允许登录的最大数目value: 限制的值
第二步,修改**/etc/pam.d/login**
代码语言:shell复制nano /etc/pam.d/login在文件末尾添加:
代码语言:shell复制session required /lib64/security/pam_limits.so //用于设置用户的资源限制
session required pam_limits.so第三步,修改**/etc/profile**
在末尾添加:
代码语言:shell复制if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
limit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi这段代码的作用是:如果当前用户是oracle,那么根据当前用户的shell类型,设置用户的资源限制。如果shell是/bin/ksh,那么使用limit -p 16384命令设置最大进程数为16384,使用ulimit -n 65536命令设置最大打开文件数为65536。如果shell不是/bin/ksh,那么使用ulimit -u 16384 -n 65536命令同时设置最大进程数和最大打开文件数。
创建安装目录和设置文件权限
代码语言:shell复制mkdir -p /data/oracle/product/11.2.0
mkdir /data/oracle/oradata
mkdir /data/oracle/inventory
mkdir /data/oracle/fast_recovery_area
chown -R oracle:oinstall /data/oracle
chmod -R 775 /data/oracle设置oracle用户的环境变量
首先切换到oracle这个用户,接下来所有操作都是用oracle这个账号进行的了。
su - oracle修改环境变量
代码语言:shell复制nano .bash_profile添加以下内容:
代码语言:shell复制ORACLE_HOSTNAME=oracle
ORACLE_UNQNAME=SID #这里SID填写你要设置的SID,文中用SID代替,下文所有的SID也是同理
ORACLE_BASE=/data/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0
ORACLE_SID=oracle
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOSTNAME ORACLE_UNQNAME ORACLE_BASE ORACLE_HOME ORACLE_SID ORACLE_SIDPATH LD_LIBRARY_PATH NLS_LANG编辑静默安装响应文件
先把之前解压好的oracle安装包目录下的response文件夹复制一份到/home/oracle下面:
cp -R /data/tmp/database/database/response/ /home/oracle然后编辑/home/oracle/response/db_install.rsp文件:
oracle.install.option=INSTALL_DB_SWONLY //只安数据库
ORACLE_HOSTNAME=oracle
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/data/oracle/inventory
SELECTED_LANGUAGES=en,zh_CN
ORACLE_HOME=/data/oracle/product/11.2.0
ORACLE_BASE=/data/oracle
oracle.install.db.InstallEdition=EE //安装企业版
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=dba
DECLINE_SECURITY_UPDATES=true开始安装
根据响应文件静默安装Oracle11g
代码语言:shell复制cd /data/tmp/database
./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq可以在以下位置找到本次安装会话的日志:
代码语言:shell复制/data/oracle/inventory/logs/当出现以下提示时,代表安装成功:
代码语言:shell复制[oracle@oracle database]$ ./runInstaller -silent -responseFile /home/oracle/response/db_install.rsp -ignorePrereq
正在启动 Oracle Universal Installer...
检查临时空间: 必须大于 120 MB。 实际为 14942 MB 通过
检查交换空间: 必须大于 150 MB。 实际为 2047 MB 通过
准备从以下地址启动 Oracle Universal Installer /tmp/OraInstall2023-05-04_04-57-44PM. 请稍候...
可以在以下位置找到本次安装会话的日志:
/data/oracle/inventory/logs/installActions2023-05-04_04-57-44PM.log
以下配置脚本需要以 "root" 用户的身份执行。
#!/bin/sh
#要运行的 Root 脚本
/data/oracle/inventory/orainstRoot.sh
/data/oracle/product/11.2.0/root.sh
要执行配置脚本, 请执行以下操作:
1. 打开一个终端窗口
2. 以 "root" 身份登录
3. 运行脚本
4. 返回此窗口并按 "Enter" 键继续
Successfully Setup Software.按要求新开终端以root执行脚本/data/oracle/product/11.2.0/root.sh,得到以下提示就是执行成功。
Check /data/oracle/product/11.2.0/install/root_oracle_2023-05-05_09-03-32.log for the output of root script以静默方式配置监听
代码语言:shell复制netca /silent /responseFile /home/oracle/response/netca.rsp注意此处,必须使用/silent /responseFile格式,而不是-silent -responseFile,因为是静默安装.。
[oracle@oracle database]$ netca /silent /responseFile /home/oracle/response/netca.rsp
正在对命令行参数进行语法分析:
参数"silent" = true
参数"responsefile" = /home/oracle/response/netca.rsp
完成对命令行参数进行语法分析。
Oracle Net Services 配置:
完成概要文件配置。
Oracle Net 监听程序启动:
正在运行监听程序控制:
/data/oracle/product/11.2.0/bin/lsnrctl start LISTENER
监听程序控制完成。
监听程序已成功启动。
监听程序配置完成。
成功完成 Oracle Net Services 配置。退出代码是0成功运行后,在/data/oracle/product/11.2.0/network/admin/中生成listener.ora和sqlnet.ora。
通过lsof命令可以查看1521端口正在监听。
代码语言:shell复制[oracle@oracle database]$ lsof -i:1521
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
tnslsnr 7358 oracle 13u IPv6 812764 0t0 TCP *:ncube-lm (LISTEN)以静默方式建立新库,同时也建立一个对应的实例
代码语言:shell复制nano /home/oracle/response/dbca.rsp设置以下参数:
代码语言:shell复制GDBNAME= "SID"
SID ="SID"
SYSPASSWORD= "Sys@2023"
SYSTEMPASSWORD= "Sys@2023"
SYSMANPASSWORD= "Sys@2023"
DBSNMPPASSWORD= "Sys@2023"
TOTALMEMORY = "12288"其中TOTALMEMORY ="12288"为12288MB,物理内存16G*80%,请根据你实际的内存来分配。(注意该值应当小于上面sysctl.conf设置的kernel.shmmax的空间,不然后面创建数据库的时候会提示:ORA-27102: out of memory)
进行静默配置
代码语言:shell复制dbca -silent -responseFile /home/oracle/response/dbca.rsp如果提示:模板不存在。请为数据库创建操作指定现有模板。那么应该是安装包解压不完整,检查一下是不是只解压了一个包。
代码语言:shell复制[oracle@oracle database]$ dbca -silent -responseFile /home/oracle/response/dbca.rsp
复制数据库文件
1% 已完成
3% 已完成
11% 已完成
18% 已完成
26% 已完成
37% 已完成
正在创建并启动 Oracle 实例
40% 已完成
45% 已完成
50% 已完成
55% 已完成
56% 已完成
57% 已完成
60% 已完成
62% 已完成
正在进行数据库创建
66% 已完成
70% 已完成
73% 已完成
74% 已完成
85% 已完成
96% 已完成
100% 已完成
有关详细信息, 请参阅日志文件 "/data/oracle/cfgtoollogs/dbca/SID/SID.log"。如果/data/oracle/cfgtoollogs/dbca/SID/SID.log提示:Oracle 系统标识符 (SID) "interlib" 已经存在。请指定另一个 SID。
打开/etc/oratab文件,注释掉类似下面的语句。
SID:/data/oracle/product/11.2.0:Y建库后进行实例进程检查:
代码语言:shell复制ps -ef | grep ora_ | grep -v grep得到
代码语言:shell复制[oracle@oracle database]$ ps -ef | grep ora_ | grep -v grep
oracle 11684 1 0 09:17 ? 00:00:00 ora_pmon_SID
oracle 11687 1 0 09:17 ? 00:00:00 ora_vktm_SID
oracle 11691 1 0 09:17 ? 00:00:00 ora_gen0_SID
oracle 11693 1 0 09:17 ? 00:00:00 ora_diag_SID
oracle 11695 1 0 09:17 ? 00:00:00 ora_dbrm_SID
oracle 11697 1 0 09:17 ? 00:00:00 ora_psp0_SID
oracle 11699 1 0 09:17 ? 00:00:00 ora_dia0_SID
oracle 11701 1 0 09:17 ? 00:00:00 ora_mman_SID
oracle 11703 1 0 09:17 ? 00:00:00 ora_dbw0_SID
oracle 11705 1 0 09:17 ? 00:00:00 ora_lgwr_SID
oracle 11707 1 0 09:17 ? 00:00:00 ora_ckpt_SID
oracle 11709 1 0 09:17 ? 00:00:00 ora_smon_SID
oracle 11711 1 0 09:17 ? 00:00:00 ora_reco_SID
oracle 11713 1 0 09:17 ? 00:00:00 ora_mmon_SID
oracle 11715 1 0 09:17 ? 00:00:00 ora_mmnl_SID
oracle 11717 1 0 09:17 ? 00:00:00 ora_d000_SID
oracle 11719 1 0 09:17 ? 00:00:00 ora_s000_SID
oracle 11762 1 0 09:17 ? 00:00:00 ora_qmnc_SID
oracle 11786 1 0 09:17 ? 00:00:00 ora_cjq0_SID
oracle 11868 1 0 09:17 ? 00:00:00 ora_q000_SID
oracle 11870 1 0 09:17 ? 00:00:00 ora_q001_SID查看监听状态:
代码语言:shell复制lsnrctl status代码语言:shell复制[oracle@oracle database]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 05-5月 -2023 09:29:49
Copyright (c) 1991, 2009, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for Linux: Version 11.2.0.1.0 - Production
启动日期 05-5月 -2023 09:08:15
正常运行时间 0 天 0 小时 21 分 34 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 /data/oracle/product/11.2.0/network/admin/listener.ora
监听程序日志文件 /data/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
服务摘要..
服务 "SID" 包含 1 个实例。
实例 "SID", 状态 READY, 包含此服务的 1 个处理程序...
服务 "SIDXDB" 包含 1 个实例。
实例 "SID", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功登录查看实例状态:
代码语言:shell复制sqlplus / as sysdba
SQL> select status from v$instance;代码语言:shell复制[oracle@oracle database]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 5月 5 09:32:10 2023
Copyright (c) 1982, 2009, Oracle. All rights reserved.
连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> select status from v$instance;
STATUS
------------------------------------
OPEN
SQL>Oracle sqlplus无法使用命令退格删除和历史记录的解决方法
SSH客户端远程登录Linux下oracle的sqplus时,输错字符后按Backspace键或Del键删除时,会出现^H或其他乱七八糟的的字符,感觉非常别扭不习惯,虽然可以通过Ctrl Backspace组合键实现删除功能,但是严重影响使用效率。可以通过使用rlwrap这个包去解决。
安装rlwrap
代码语言:shell复制yum install rlwrap如果提示:没有可用软件包 rlwrap。可以先安装第三方软件库epel-release。
yum install epel-release然后再安装rlwrap就可以了。
设置sqlplus的系统别名
编辑oracle的.bash_profile文件,如果你用的是zsh,那么就是.zshrc。
代码语言:shell复制nano /home/oracle/.bash_profile在头部或尾部添加:
代码语言:javascript复制 alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'然后source一下就ok了。
代码语言:javascript复制source ~/.bash_profile配置oracle开机自启
当我们的虚拟机关机后重新开机,会遇到一个问题。
会发现Oracle实例,监听程序和emctl程序没有启动。
用sqlplus通过show parameter instance_name命令可以发现Oracle实例不可用
[oracle@oracle database]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 星期三 4月 26 14:23:57 2023
Copyright (c) 1982, 2009, Oracle. All rights reserved.
已连接到空闲例程。
SQL> show parameter instance_name
ORA-01034: ORACLE not available
进程 ID: 0
会话 ID: 0 序列号: 0当然我们可以手动启动它们:
启动Oracle实例
通过sqlplus / as sysdba连接到Oracle,执行如下命令:
SQL> startup执行完毕后可以得到启动成功
ORACLE 例程已经启动。
代码语言:shell复制Total System Global Area 1603411968 bytes
Fixed Size 2213776 bytes
Variable Size 402655344 bytes
Database Buffers 1191182336 bytes
Redo Buffers 7360512 bytes
数据库装载完毕。
数据库已经打开。启动监听程序
lsnrctl status查看监听器状态
lsnrctl start启动监听器
启动成功后会有类似下面的响应:
代码语言:shell复制LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 26-4月 -2023 15:46:31
Copyright (c) 1991, 2009, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
LISTENER 的 STATUS
------------------------
别名 LISTENER
版本 TNSLSNR for Linux: Version 11.2.0.1.0 - Production
启动日期 26-4月 -2023 15:20:52
正常运行时间 0 天 0 小时 25 分 39 秒
跟踪级别 off
安全性 ON: Local OS Authentication
SNMP OFF
监听程序参数文件 /data/oracle/product/11.2.0/network/admin/listener.ora
监听程序日志文件 /data/oracle/diag/tnslsnr/oracle/listener/alert/log.xml
监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)))
服务摘要..
服务 "SIDXDB" 包含 1 个实例。
实例 "SID", 状态 READY, 包含此服务的 1 个处理程序...
服务 "SID" 包含 1 个实例。
实例 "SID", 状态 READY, 包含此服务的 1 个处理程序...
命令执行成功
[oracle@oracle database]$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 26-4月 -2023 15:46:34
Copyright (c) 1991, 2009, Oracle. All rights reserved.启动emctl
emctl start dbconsole启动emclt
设置Oracle 11g实例和相关服务开机自启
但是一个一个的启动实在是太不优雅了,所以怎么让他们开机自己启动呢?如下:
修改dbstart dbshut 文件
将ORACLE_HOME_LISTNER=$1改为ORACLE_HOME_LISTNER=$ORACLE_HOME,让数据库启动文件找到正确的启动目录
nano /data/oracle/product/11.2.0/bin/dbstart
nano /data/oracle/product/11.2.0/bin/dbshut
修改oratab 文件
代码语言:shell复制nano /etc/oratab 在文件最后添加以下内容:
代码语言:javascript复制SID:/data/oracle/product/11.2.0:Y上面的SID请改成你相应的SID,如果存在以上内容,请把末尾的N改成Y。
创建启动oracle11g的init脚本
代码语言:shell复制cd /etc/rc.d/init.d/
nano /etc/rc.d/init.d/oracle添加以下内容:
代码语言:shell复制#!/bin/bash
#oracle: Start/Stop Oracle Database 11g R2
#chkconfig: 345 90 10
#description: The Oracle Database is an Object-Relational Database ManagementSystem.
#
LOCKFILE=/var/lock/subsys/oracle
ORACLE_HOME=/data/oracle/product/11.2.0 #根据自己的具体目录来
ORACLE_USER=oracle
case "$1" in
'start')
if [ -f $LOCKFILE ];then
echo $0 already running.
else
echo -n $"StartingOracle Database:"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"
touch $LOCKFILE
fi
;;
'stop')
if [ ! -f $LOCKFILE ]; then
echo $0 already stopping.
else
echo -n $"StoppingOracle Database:"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut"
su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"
rm -f $LOCKFILE
fi
;;
'restart')
$0 stop
sleep 5
$0 start
;;
'status')
if [ -f $LOCKFILE ]; then
echo $0 started.
else
echo $0 stopped.
fi
;;
*)
echo "Usage: $0[start|stop|status]"
exit 1
esac
exit 0写完后记得给该文件执行权限。
代码语言:shell复制chmod a x /etc/rc.d/init.d/oracle加入到系统服务列表中
代码语言:javascript复制chkconfig --add oracle
chkconfig --level 345 oracle on测试(没有报错就说明成功了)
代码语言:javascript复制service oracle restart
service oracle start
service oracle stop


