1、打开服务窗口:使用 win+r 快捷键打开运行窗口,输入命令 services.msc 按回车。
成都创新互联专业做网站、网站建设,集网站策划、网站设计、网站制作于一体,网站seo、网站优化、网站营销、软文平台等专业人才根据搜索规律编程设计,让网站在运行后,在搜索中有好的表现,专业设计制作为您带来效益的网站!让网站建设为您创造效益。
2、在标准视图下找到 oracle 的 7个服务。
3、可以看到 7 个服务中有四个服务的启动方式是自动运行的(绿线标注的)。把这几个服务的启动方式改成手动。
注:(1)以OracleDBConsoleorcl 服务为例:右击服务– 属性。
(2)修改完成之后的效果,除 OracleJobSchedulerORCL 是禁用外,其他的都是手动启动。
4、按照先后顺序依次启动服务”Oracle ServiceORCL“,”OracleOraDb11g-home1TNSListener“。启动方式:右击服务–启动,如下图所示,即可成功启动。
ORACLE有一种定时调度机制 用dbms_job包来管理
设置的JOB就是不运行 搞得的郁闷
最好执行了这个才搞定 exec dbms_ijob set_enabled(true);
下面提供一个checklist用于检查job异常的原因
) Instance in RESTRICTED SESSIONS mode?
Check if the instance is in restricted sessions mode:
select instance_name logins from v$instance;
If logins=RESTRICTED then:
alter system disable restricted session;
^– Checked!
) JOB_QUEUE_PROCESSES=
Make sure that job_queue_processes is
show parameter job_queue_processes
^– Checked!
) _SYSTEM_TRIG_ENABLED=FALSE
Check if _system_enabled_trigger=false
col parameter format a
col value format a
select a ksppinm parameter b ksppstvl value from x$ksppi a x$ksppcv b
where a indx=b indx and ksppinm= _system_trig_enabled ;
If _system_trig_enabled=false then
alter system set _system_trig_enabled =TRUE scope=both;
^– Checked!
) Is the job BROKEN?
select job broken from dba_jobs where job=job_number;
If broken then check the alert log and trace files to diagnose the issue
^– Checked! The job is not broken
) Is the job MITted?
Make sure a mit is issued after submitting the job:
DECLARE X NUMBER;
BEGIN
SYS DBMS_JOB SUBMIT
(
job = X
what = dbms_utility *** yze_schema
( SCOTT PUTE NULL NULL NULL);
next_date = to_date( / / : : ′ dd/mm/yyyy hh :mi:ss )
no_parse = FALSE
);
MIT;
END;
/
If the job executes fine if forced (i e exec dbms_jobs run(job_no);) then likely a mit
is missing
^– Checked! The job is mitted after submission
) UPTIME days
Check if the server (machine) has been up for more than days:
For SUN use uptime OS mand
If uptime and the jobs do not execute automatically then you are hitting unpublished bug
(Jobs may stop running after days uptime) which is fixed in and A
^– Checked! The server in this case has been up days only
) DBA_JOBS_RUNNING
Check dba_jobs_running to see if the job is still running:
select * from dba_jobs_running;
^– Checked! The job is not running
LAST_DATE and NEXT_DATE
Check if the last_date and next_date for the job are proper:
select Job Next_date Last_date from dba_jobs where job=job_number;
^– NEXT_DATE is porper however LAST_DATE is null since the job never executes automatically
) NEXT_DATE and INTERVAL
Check if the Next_date is changing properly as per the interval set in dba_jobs:
select Job Interval Next_date Last_date from dba_jobs where job=job_number;
^– This is not possible since the job never gets executed automatically
) Toggle value for JOB_QUEUE_PROCESSES
Stop and restart CJQ process(es)
alter system set job_queue_processes= ;
–Wait for some time to ensure CJQ process stopped
alter system set job_queue_processes= ;
Ref: Bug (fixed by: )
^– Done but did not help
) DBMS_IJOB(Non documented):
Last ditch effort
Either restart the database or try the following:
exec dbms_ijob set_enabled(true);
Ref: Bug (Closed Not a Bug)
Done but did not help
These are the most mon causes for this behavior
Solution
The solution ended up to be the server (machine) uptime
Even though it was up for only days after the server was rebooted all jobs were able to execute automatically
To implement the solution please execute the following steps:
Shutdown all applications including databases
Shutdown the server (machine)
Restart all applications including databases
Check that jobs are executing automatically
lishixinzhi/Article/program/Oracle/201311/16944
以redhat 和oracle g为例 安装过程参考官方文档 以下是实现oracle自启动的方法
配置dbstart和dbshut
在$ORACLE_HOME/bin中 有dbstart和dbshut这两个脚本 more dbstart看一下可以看到
QUOTE:
#
# $Id: dbstart sh pp may : : vikrkuma Exp $
# Copyright (c) Oracle All rights reserved
#
###################################
#
# usage: dbstart
#
# This is used to start ORACLE from /etc/rc( local)
# It should ONLY be executed as part of the system boot procedure
#
# This will start all databases listed in the oratab file
# whose third field is a Y If the third field is set to Y and
# there is no ORACLE_SID for an entry (the first field is a *)
# then this will ignore that entry
#
# This requires that ASM ORACLE_SID s start with a + and
# that non ASM instance ORACLE_SID s do not start with a +
#
# If ASM instances are to be started with this it cannot
# be used inside an rc* d directory and should be invoked from
# rc local only Otherwise the CSS service may not be available
# yet and this will block init from pleting the boot
# cycle
#
# Note:
# Use ORACLE_TRACE=T for tracing this
#
# The progress log for each instance bringup plus Error and Warning message[s]
# are logged in file $ORACLE_HOME/startup log The error messages related to
# instance bringup are also logged to syslog (system log module)
# The Listener log is located at $ORACLE_HOME_LISTNER/listener log
可以看出这个脚本是用来启动oracle服务的 包括listener instance a *** instances 并且可以放到/etc/rc( local) 同样dbshut也是起到关闭服务的作用
配置系统使这个脚本起作用
) 以root编辑/etc/oratab 类似 orcl:/u /product/ /db_ :N 这种格式 其中orcl是你的ORACLE_SID /u /product/ /db_ 是ORACLE_HOME 这里需要把N改为Y 即orcl:/u /product/ /db_ :Y这样
) 以oracle编辑$ORACLE_HOME/bin/dbstart 找到其中第 行:ORACLE_HOME_LISTNER=改为你自己的路径 或者可以改成ORACLE_HOME_LISTNER=$ORACLE_HOME
保存脚本 以oracle用户运行dbshut和dbstart看是否能关闭 启动数据库 如果不能 一般是参数设置 根据报错找到对应位置更改
把dbstart和dbshut加到redhat启动服务中
经过上一步的配置 可以直接用dbstart命令启动数据listener instance a *** instances 但是还没有启动oracle g的EM ORACLE利用web页面管理数据库相当方便 也是 g的一个特色 所以应该一并启动起该服务来
QUOTE:
$ORACLE_HOME/bin/emctl start dbconsole
因此我们可以用rc local或者redhat服务都可以实现要求的开机启动 下面分别说一下
) 利用rc local 直接把dbstart加到rc local中 实现开机自动启动 这里需要注意的是必须以oracle启动该脚本
用root编辑/etc/rc local 添加下面一行
QUOTE:
su oracle c /u /product/ /db_ /bin/dbstart
su oracle c /u /product/ /db_ /bin/emctl start dbconsole
这里/u /product/ /db_ 需要替换成实际的ORACLE_HOME
保存并退出后 reboot服务器测试一下 可以看到 当系统启动以后oracle监听 实例和em都已经起来了
) 如果我们不用rc local 也可以加到redhat服务中 在/etc/rc d/init d中添加如下脚本文件 命名为oracle
QUOTE:
#!/bin/sh
#cconfig:
#deion: ORACLE g Server
ORACLE_HOME=/u /product/ /db_
if [ ! f $ORACLE_HOME/bin/dbstart ]
then
echo ORACLE cannot start
exit
fi
case $ in
start )
echo Starting Oracle Database
su oracle c $ORACLE_HOME/bin/dbstart
su oracle c $ORACLE_HOME/bin/emctl start dbconsole
;;
stop )
echo Stoping Oracle Database
su oracle c $ORACLE_HOME/bin/emctl stop dbconsole
su oracle c $ORACLE_HOME/bin/dbshut
;;
esac
注意其中两行注释 网上很多脚本因为少了这两行不能使服务自启动
QUOTE:
#cconfig:
#deion: ORACLE g Server
其中cconfig 是指脚本将为运行级 启动oracle g服务 启动优先级为 关闭优先级为
然后以root权限:
QUOTE:
# cd /etc/rc d
# ln s /etc/rc d/init d/oracle S oracle
# cconfig list oracle
# cconfig level on
重启系统 就可以在启动的过程中看到 Starting oracle 因为我们设置的优先级为 一般是最后启动 [OK]以后就可以了 因为要启动emctl 可能有点慢 等待的时间要稍微长一点
lishixinzhi/Article/program/Oracle/201311/16863
参考:
Oracle中 NLS_DATE_FORMAT的设置方法
Oracle日期格式默认为:DD-MON-YY,以下是3种方法可以修改使之永久生效;
1、修改glogin.sql文件,这个文件的路径为:
Windows下:
%ORACLE_HOME\sqlplus\admin\
Unix下:
$ORACLE_HOME/sqlplus/admin/
在文件中加入:
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
2、修改注册表(windows平台)
开始--运行--regedit--HKEY_LOCAL_MACHINE--SOFTWARE--ORACLE--KEY_ORADb10g_home1
新建字符串值:
NLS_DATE_FORMAT,并设置其值为:YYYY-MM-DD:HH24:MI:SS
3、修改用户环境变量(Unix平台)
export NLS_DATE_FORMAT =AMERICAN
export NLS_DATE_FORMAT ='YYYY-MM-DD HH24:MI:SS'
RMAN会话中设置NLS_DATE_FORMAT 和NLS_LANG
run {
...........
sql 'alter session set NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS";
sql 'alter session set NLS_LANG ="AMERICAN";
root登录,执行以下命令进入init.d目录并创建oracle文件:
vim/etc/rc.d/init.d/oracle
#!/bin/bash
# chkconfig:345 99 10
#description: Startup Script for Oracle Databases
#/etc/rc.d/init.d/dbstart
exportORACLE_BASE=/u01/app/oracle/
exportORACLE_HOME=/u01/app/oracle/product/11.2.0/db_home1
exportORACLE_SID=orcl
exportPATH=$PATH:$ORACLE_HOME/bin
ORA_OWNR="oracle"
# if theexecutables do not exist -- display error
if [ ! -f$ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo"Oracle startup: cannot start"
exit 1
fi
# dependingon parameter -- startup, shutdown, restart
# of theinstance and listener or usage display
case"$1" in
start)
# Oraclelistener and instance startup
echo -n"Starting Oracle: "
su -$ORA_OWNR -c "$ORACLE_HOME/bin/dbstart"
touch/var/lock/Oracle
#su -$ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
#su -$ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctl start"
echo"OK"
;;
stop)
# Oraclelistener and instance shutdown
echo -n"Shutdown Oracle: "
#su -$ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"
#su -$ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctl stop"
su -$ORA_OWNR -c "$ORACLE_HOME/bin/dbshut"
su -$ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
rm -f/var/lock/Oracle
echo"OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo"Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0
######################################################
chmod 775/etc/rc.d/init.d/oracle
chkconfig--add oracle
看上面加了注释的su开头的行,dbconsole那行就是em管理器自动启动的配置
1.引言
定制定时执行的任务有两种形式,系统级别和数据库级别,
从操作系统级别来讲,
windows系统我们可以使用任务计划来实现,
对于winXP系统,设置步骤如下,开始---设置---控制面板---任务计划,然后添加任务计划,按向导完成配置即可;
对于win7系统,设置步骤如下,点击开始,然后在 搜索程序和文件 框中输入 [任务计划],然后点击出来的任务计划程序,创建一个基本任务即可;
linux系统我们可以使用crontab命令来是实现,
关于crontab命令的使用可以见之前的博客
从数据库级别来讲,我们可以采用数据库的job来实现;
本节主要介绍通过oracle数据库的job来定制一个简单的定时执行任务。本节会采用oracle定制一个定时向一个表中插入语句。
这里聊一下我做这个oracle定时任务的缘由:
项目中要在固定的时间,把一个数据库中某些表的数据同步到另外一个数据库,显然这些工作我不能每次都自己去做,
那么,我要怎么来做呢?这个时候oracle的定时执行任务JOB无疑是我的最佳选择。我把同步的脚本放在一个存储过程中,
然后在固定的时间去执行这个存储过程就OK了。
注意:以下所有的操作都是在sytem用户下执行。采用PL/SQL做的客户端登陆。
分享文章:oracle怎么自动运行 oracle启动后立马自动关闭
转载来源:https://www.cdcxhl.com/article24/hggoje.html
成都网站建设公司_创新互联,为您提供网站营销、营销型网站建设、服务器托管、网站维护、、网站设计公司
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联