十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在windows里启动Oracle有两个步骤,一是先启动服务,二是再启动实例、数据库,这两个都可以设置成自动或者手动
专注于为中小企业提供成都网站设计、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业雨花台免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了超过千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
针对数据库开机自动启动问题,解决方法有两个
方法一:在服务把oracleservice%SID%这个服务改成手动启动
方法二:修改注册表HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOME0\ORA_%SID%_AUTOSTART的值为false,这个是控制启动服务时是否自动启动数据库(实例,占内存),默认是true
注册表还有个ORA_%SID%_shutdown它是控制你关机时是否自动关数据库的
启动服务可以用net start oracleservice%SID% 命令
停止服务可以用net start oracleservice%SID% 命令
手动启动数据库要先开始服务,不然sqlplus不能进行操作系统验证了
进入sqlplus “/as sysdba"
启动数据库是在sqlplus里输入startup
关闭数据库是在sqlplus里输入shutdown immediate
oracle 表的统计信息,跟他的执行计划很有关联
执行计划的正常是否,跟SQL的执行速度很有关系
首先讲解一下如何查看一个数据库的是否开启自动统计分析
1、查看参数:STATISTICS_LEVEL(在V$PARAMETER表中查看数据的情况),10g中默认为typical,只有将STATISTICS_LEVEL参数设置为ALL或者typical才能让ORACLE识别过期的统计信息。
2、自动表分析每天晚上10开始,那说明应该是JOB定时在处理,自动统计分析的JOB是:GATHER_STATS_JOB。
每个对象都有相应的属性,JOB相应的属性记录在DBA_SCHEDULER_JOBS这个字典中。
在DBA_SCHEDULER_JOBS这个视图中特别需要关注的,enabled这个字段,TRUE:表示启用,FALSE: 表示关闭
3、查看每天JOB的执行情况
通过查看DBA_SCHEDULER_JOB_RUN_DETAILS这个视图,可以观察自动表分析的JOB有没有执行过 GATHER_STATS_JOB
如何开启自动统计信息收集
1、修改参数值
alter system set STATISTICS_LEVEL=typical;
2、启动GATHER_STATS_JOB这个JOB
BEGIN
DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
END;
如何关闭统计信息
1、修改参数值
alter system set STATISTICS_LEVEL=basic;
2、关闭GATHER_STATS_JOB这个JOB
BEGIN
DBMS_SCHEDULER.ENABLED('GATHER_STATS_JOB');
END;
监控数据的变化程度,关于增、删、改数据的变化量
记录在DBA_TAB_MODIFICATIONS视图里面。我们在查询DBA_TAB_MODIFICATIONS视图的时候有可能查询不到结果,或者查询的结果不准确,这个时候需要用DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO过程将内存中的信息刷新到该视图中
在代码中加入 pause; 就可以中止当前的SQl,另外你还可以将当前需要的资料显示出来。 便于查询错误。
找出正在执行的JOB编号及其会话编号 SELECT SID,JOB FROM DBA_JOBS_RUNNING; 停止该JOB的执行 SELECT SID,SERIAL# FROM V$SESSION WHERE SID='SID'; ALTER SYSTEM KILL SESSION 'SID,SERIAL'; EXEC DBMS_JOB.BROKEN(JOB,TRUE);实例分析:1,查询正在运行的Job,通过查询有两个,和进程占用较多的是两个ORACLE进程符合。SQL SELECT SID,JOB FROM DBA_JOBS_RUNNING; SID JOB\x0d\x0a---------- ----------12 11616 1172,查询正在运行的job的信息SQL SELECT SID,SERIAL# FROM V$SESSION WHERE SID='12'; SID SERIAL#\x0d\x0a---------- ----------\x0d\x0a12 4SQL SELECT SID,SERIAL# FROM V$SESSION WHERE SID='16'; SID SERIAL#\x0d\x0a---------- ----------\x0d\x0a16 13,利用查询出来的job信息将job结束掉SQL ALTER SYSTEM KILL SESSION '12,4';System altered.SQL ALTER SYSTEM KILL SESSION '16,1';System altered.\x0d\x0a4,如果不希望运行上述job的话,可以将job设置为broken.EXEC DBMS_JOB.BROKEN(116,TRUE);EXEC DBMS_JOB.BROKEN(117,TRUE);