oracle连接数过多清理机制

合集下载

Oracle临时表空间清理

Oracle临时表空间清理

Oracle 临时表空间清理回收
Oracle临时表空间使用时,一旦空间自动扩展,已扩展的大小是不能收缩的,除非重建临时表空间。

正常来说临时表空间中非活动段是由后台smon进程自动释放的,但smon进程每两个小时五分钟才进行一次临时段的回收清理,且每次清理只会回收五个临时段,因此如果连接排序等操作过于频繁时,会导致临时表空间扩展,当然这跟配置的Oracle物理内存也有关系,主要是PGA区,如果配置的内存过少,大量的排序在内存中无法完成,将会额外使用临时表空间来完成,因此临时表空间消耗与配置了大PGA内存相比必然多出。

频繁复杂的语句连接排序完全可能导致临时表空间不停扩展,临时段来不及回收,出现无临时段可用的情况。

如果临时段不能及时释放,通常可以通过重启数据库来清理非活动的临时段,实践证明没有问题。

但如果生产环境不适宜重启数据库,也可以使用手工方式进行非活动临时段的清理。

Oracle 9i OEM中经常看到临时表空间满,其实那是假象,因为OEM是从v$temp_extent_pool统计的。

正常来说要看v$sort_segment中sum(free_blocks)是不是近于0,以确认临时表空间是不是真的满了,如果为0,则表明临时表空间已被当前激活临时段用完。

手工清理非活动临时段的方法如下:
1、正常退出、终止所有连接数据库的应用
5、执行临时表空间非激活临时段清理
该方法适用于Oracle9i以上版本。

oracle连接数过多导致系统非常慢分析总结

oracle连接数过多导致系统非常慢分析总结

Tue Jan 19 10:52:49 2010
skgpspawn failed:category = 27142, depinfo = 11, p = fork, loc = skgpspawn5
skgpspawn failed:category = 27142, depinfo = 11, p = fork, loc = skgpspawn3
skgpspawn failed:category = 27142, depinfo = 11, p = fork, loc = skgpspawn3
skgpspawn failed:category = 27142, depinfo = 11, p = fork, loc = skgpspawn3
19-JAN-2010 10:32:38 * (CONNECT_DATA=(SID=ora9jsy)(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.1)(PORT=1076)) * establish * ora9jsy * 0
19-JAN-2010 10:32:39 * (CONNECT_DATA=(SID=ora9jsy)(CID=(PROGRAM=)(HOST=__jdbc__)(USER=))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.2.1)(PORT=1077)) * establish * ora9jsy * 0
TNS-12500: TNS:listener failed to start a dedicated server process
TNS-12540: TNS:internal limit restriction exceeded

删除大量Oracle数据方法总结

删除大量Oracle数据方法总结

删除大量Oracle数据方法总结Oracle中删除超过50w条记录的数据,如果直接使用delete,效率就严重受到了影响。

那么首先我们需要了解对于这个表的数据,我们到底是全部删除,还是部分删除。

这里有三个关键字我们需要注意:truncate,delete,drop。

全部删除,不保留数据结构就直接drop最好。

如果是部分删除,一般就这样一些办法:1. 如果删除的数据是大部分,分段提交删除的数据。

create or replace proceduredelete_table is i number(10);beginfor x in (select * from emp where DEPTNO like‘a%’)loopdelete emp where emp.id = x.id i:=i+1;if i>1000thencommit;i:=0;end if;end loop;exception when others then dbms_out.put_line(sqlcode);rollback;end delete_table;或者–每500条数据提交一次DECLARE CNT NUMBER(10):=0;I NUMBER(10);BEGINSELECT COUNT(*) INTO CNT FROM ep_arrearage_bakWHERE TO_CHAR(DF_DATE,‘MM’)=’01′;FOR I IN1..TRUNC(CNT/500)+1LOOPDELETE FROM ep_arrearage_bak WHERE TO_CHAR(DF_DATE,‘MM’)=’01′AND ROWNUM<=500;COMMIT;END LOOP;END;2、把要保留的数据放在一个临时表里,truncate table原表后再放回来;create table t_back as select * from t where….drop table t;rename t_back to t;3. 专门使用一个大回滚段,比如定义:undo tablespace 2G4、如果将方法1做一点修改,可以这么做:有条件的分步删除数据表中的记录–创建测试表create table test as select * from dba_objects;–创建删除表的存储过程create or replace procedure deleteTab–插入语句SQL> insert into test select * from dba_objects;6374rows created.SQL> / 6374rows created.SQL> / 6374rows created.SQL> commit;–创建删除的存储过程create or replace procedure deleteTab/**** Usage: run the script to create the proc deleteTab** in SQL*PLUS, type "execdeleteTab(‘Foo’,'ID>=1000000′,’3000′);"** to delete the records in the table "Foo", commit per 3000 records.** Condition with default value ’1=1′ and default Commit batch is 10000.**/(p_TableName in varchar2, –The TableName which you want to delete fromp_Condition in varchar2 default’1=1′, –Delete condition, such as "id>=100000"p_Count in varchar2 default’10000′– Commit after delete How many records)as pragma autonomous_transaction;n_delete number:=0;beginwhile 1=1 loopEXECUTE IMMEDIATE‘delete from ‘||p_TableName||‘ where ‘||p_Condition||‘ and rownum <= :rn’USING p_Count;if SQL%NOTFOUND thenexit;elsen_delete:=n_delete + SQL%ROWCOUNT;end if;commit;end loop;commit;DBMS_OUTPUT.PUT_LINE(‘Finished!’);DBMS_OUTPUT.PUT_LINE(‘Totally ‘||to_char(n_delete)||‘ records deleted!’);end; /–执行语句SQL> exec deleteTab(‘TEST’,‘object_id >0′,’10000′)5、如果确认将来不需要做恢复,改为非归档模式,删除完改回来再做个备份。

Oracle占用cpu过高的处理办法

Oracle占用cpu过高的处理办法

Oracle占⽤cpu过⾼的处理办法问题描述:今天上午10点多,公司⽹络断了⼀会,过了⼤约⼗来分钟,⽹⼯处理好了,可数据库这下⼦可撑不住了,打开linux top查看了⼀下CPU百分百了,这可能是因为缓冲在客户端的数据⼀下⼦全传上来了导致数据库压⼒过⼤,可以前没有出现过这种问题,于是进⾏了分析和处理,以下为处理过程:问题分析:⼀般cpu占⽤效⾼都是排序、sql解析和全表扫描,这⾥⾸先需要找出占⽤cpu最⾼的sql,然后查看他的执⾏计划,⽐如:看执⾏计划是⾛索引还是全表扫描(刚开始查看top发现占⽤同样多的CPU的进程很多,还以为是oracle 的bug, 后来发现不是)。

处理过程:1, 根据操作系统进程查找Oracle数据库中占⽤最多CPU的SQL使⽤Linux系统 "top命令->P "查出占⽤cpu最⾼的进程PID操作如下:在sqlplus中执⾏如下sql:SQL>SELECTsql_textFROM v$sqltext aWHERE (a.hash_value, a.address) IN(SELECT DECODE(sql_hash_value, 0, prev_hash_value, sql_hash_value),DECODE(sql_hash_value, 0, prev_sql_addr, sql_address)FROM v$session bWHERE b.paddr =(SELECT addr FROM v$process c WHERE c.spid = '&pid'))ORDER BY piece ASC其中&pid 是使⽤top 查看系统中进程占⽤CPU极⾼的PID找到SQL语句进⾏相应的调整优化2,分析找到的sql语句,如查看sql执⾏计划。

总结:这⾥的问题是查询的where 条件字段没有在索引⾥⾯,导致查询慢。

oracle 数据清理和归档方案

oracle 数据清理和归档方案

Oracle 数据清理和归档方案概述在日常的数据管理中,数据清理和归档是非常重要的环节。

在Oracle数据库中,合理的数据清理和归档方案可以提高数据库的性能和可靠性,同时也能减少数据库的存储空间和备份/恢复的时间和成本。

本文将就Oracle数据库中的数据清理和归档方案进行详细的探讨。

数据清理方案数据清理是指清理不再需要的数据,以释放数据库的存储空间和提高查询性能。

下面是一些常用的数据清理方案:1. 删除过期数据在数据库中,某些数据可能有一定的保存期限,超过期限后就可以被删除。

可以通过编写定时任务或者使用Oracle的调度程序来定期删除过期数据。

例如,可以根据时间戳或者某个字段的值来判断数据是否过期,然后使用DELETE语句将其删除。

2. 聚合数据对于一些历史数据,可以根据需要将其进行聚合,以减少数据库的存储空间。

例如,可以将按天存储的数据聚合到按周、按月或者按年存储的数据中。

在聚合数据之后,可以删除原始的细粒度数据,以释放存储空间。

3. 数据归档对于一些历史数据,虽然可能不再被频繁访问,但是仍然需要保留。

这时可以考虑将这些数据归档到其他存储介质中,例如磁带库或者归档文件系统。

通过归档可以释放数据库的存储空间,同时仍然可以满足数据保留的需求。

数据归档方案数据归档是指将历史数据从Oracle数据库中移动到其他存储介质中,以解决存储空间不足的问题。

下面是一些常用的数据归档方案:1. 使用Oracle归档功能Oracle数据库提供了强大的归档功能,可以自动将历史数据归档到归档日志文件中。

通过配置适当的参数,可以调整归档的频率和方式。

归档日志文件可以保存在磁盘、磁带库或者归档文件系统中。

2. 使用第三方软件除了Oracle自带的归档功能,还可以使用一些第三方软件来进行数据归档。

这些软件通常具有更多的定制化和可扩展性,可以根据需要进行灵活的配置和管理。

例如,可以使用EMC Data Domain、IBM Tivoli Storage Manager等软件来进行数据归档。

Oracle 大数据量操作优化

Oracle 大数据量操作优化

如何加速Oracle大批量数据处理一、提高DML操作的办法:简单说来:1、暂停索引,更新后恢复.避免在更新的过程中涉及到索引的重建.2、批量更新,每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表空间.3、创建一临时的大的表空间用来应对这些更新动作.4、批量更新,每更新一些记录后及时进行提交动作.避免大量占用回滚段和或临时表空间.5、创建一临时的大的表空间用来应对这些更新动作.6、加大排序缓冲区alter session set sort_area_size=100000000;insert into tableb select*from tablea;commit;如果UPDATE的是索引字段,就会涉及到索引的重建,暂停索引不会提高多少的速度,反而有可能降低UPDATE 速度,因为在更新是索引可以提高数据的查询速度,重建索引引起的速度降低影响不大。

ORACLE优化修改参数最多也只能把性能提高15%,大部分都是SQL语句的优化!update总体来说比insert要慢:几点建议:1、如果更新的数据量接近整个表,就不应该使用index而应该采用全表扫描2、减少不必要的index,因为update表通常需要update index3、如果你的服务器有多个cpu,采用parellel hint,可以大幅度的提高效率另外,建表的参数非常重要,对于更新非常频繁的表,建议加大PCTFREE的值,以保证数据块中有足够的空间用于UPDATE,从而降低CHAINED_ROWS。

二、各种批量DML操作:(1)、oracle批量拷贝:set arraysize20set copycommit5000copy from username/password@oraclenameappend table_name1using select*from table_name2;(2)、常规插入方式:insert into t1select*from t;为了提高速度可以使用下面方法,来减少插入过程中产生的日志:alter table t1nologging;insert into t1select*from t;commit;(3)、CTAS方式:create table t1asselect*from t;为了提高速度可以使用下面方法,来减少插入过程中产生的日志,并且可以制定并行度:create table t1nologging parallel(degree2)as select*from t;(4)、Direct-Path插入:insert/*+append*/into t1select*from t;commit;为了提高速度可以使用下面方法,来减少插入过程中产生的日志:alter table t1nologging;insert/*+append*/into t1select*from t;Direct-Path插入特点:1、append只在insert…select…中起作用,像insert/*+append*/into tvalues(…)这类的语句是不起作用的。

Oracle大批量删除数据方法

Oracle大批量删除数据方法

批量删除海量数据通常都是很复杂及缓慢的,方法也很多,但是通常的概念是:分批删除,逐次提交。

下面是删除过程,数据表可以通过主键删除,测试过Delete和For all两种方法,for all在这里并没有带来性能提高,所以仍然选择了批量直接删除。

首先创建一下过程,使用自制事务进行处理:create or replace procedure delBigTab(p_TableName in varchar2,p_Condition in varchar2,p_Count in varchar2)aspragma autonomous_transaction;n_delete number:=0;beginwhile 1=1 loopEXECUTE IMMEDIATE'delete from '||p_TableName||' where '||p_Condition||' and rownum <= :rn'USING p_Count;if SQL%NOTFOUND thenexit;elsen_delete:=n_delete + SQL%ROWCOUNT;end if;commit;end loop;commit;DBMS_OUTPUT.PUT_LINE('Finished!');DBMS_OUTPUT.PUT_LINE('Totally '||to_char(n_delete)||' records deleted!');end;以下是删除过程及时间:SQL> create or replace procedure delBigTab2 (3 p_TableName in varchar2,4 p_Condition in varchar2,5 p_Count in varchar26 )7 as8 pragma autonomous_transaction;9 n_delete number:=0;10 begin11 while 1=1 loop12 EXECUTE IMMEDIATE13 'delete from '||p_TableName||' where '||p_Condition||' and rownum <= :rn'14 USING p_Count;15 if SQL%NOTFOUND then16 exit;17 else18 n_delete:=n_delete + SQL%ROWCOUNT;19 end if;20 commit;21 end loop;22 commit;23 DBMS_OUTPUT.PUT_LINE('Finished!');24 DBMS_OUTPUT.PUT_LINE('Totally '||to_char(n_delete)||' records deleted!');25 end;26 /Procedure created.SQL> set timing onSQL> select min(NUMDLFLOGGUID) from HS_DLF_DOWNLOG_HISTORY;MIN(NUMDLFLOGGUID)------------------11000000Elapsed: 00:00:00.23SQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11100000','10000');PL/SQL procedure successfully completed.Elapsed: 00:00:18.54SQL> select min(NUMDLFLOGGUID) from HS_DLF_DOWNLOG_HISTORY;MIN(NUMDLFLOGGUID)------------------11100000Elapsed: 00:00:00.18SQL> set serveroutput onSQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11200000','10000'); Finished!Totally 96936 records deleted!PL/SQL procedure successfully completed.Elapsed: 00:00:18.6110万记录大约19sSQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11300000','10000'); Finished!Totally 100000 records deleted!PL/SQL procedure successfully completed.Elapsed: 00:00:18.62SQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 11400000','10000'); Finished!Totally 100000 records deleted!PL/SQL procedure successfully completed.Elapsed: 00:00:18.85SQL>SQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 13000000','10000');Finished!Totally 1000000 records deleted!PL/SQL procedure successfully completed.Elapsed: 00:03:13.87100万记录大约3分钟SQL> exec delBigTab('HS_DLF_DOWNLOG_HISTORY','NUMDLFLOGGUID < 20000000','10000');Finished!Totally 6999977 records deleted!PL/SQL procedure successfully completed.Elapsed: 00:27:24.69700万大约27分钟以上过程仅供参考.来源:网络编辑:联动北方技术论坛。

shared pool 清理机制

shared pool 清理机制

shared pool 清理机制共享池(Shared Pool)是Oracle数据库中的重要组件,用于缓冲共享的SQL和PL/SQL代码。

由于共享池是被所有用户共享的,所以在多用户环境中,共享池的使用可能会导致内存资源的争用,进而影响整个系统的性能。

为了解决这个问题,Oracle数据库引入了一种被称为共享池清理机制(Shared Pool Cleanup)的功能。

共享池清理机制的作用是在共享池内存资源紧张的情况下,清理掉一些不再使用的对象,从而释放内存空间给其他正在使用的对象。

共享池清理机制的实现主要包括以下几个步骤:1. 标记(Marking):在共享池空间不足时,Oracle会遍历共享池中的所有内存块,标记那些被使用的内存块和那些未被使用的内存块。

这一步骤主要是为了确定哪些对象是可以被清理的。

2. 移动(Moving):在标记完成后,Oracle会将已经清理标记的未使用内存块从共享池中移除,并将内存空间释放给操作系统。

移动操作一般采用“逐个或批量”方式进行,根据需求释放不同大小的内存块。

3. 刷新(Refreshing):在移动操作完成后,Oracle会刷新共享池中剩余的内存块,使其重新合理地分配给需要使用的对象。

这一步骤可以提高共享池的利用率和性能。

需要注意的是,共享池清理机制是自动执行的,Oracle会根据预设的内存阈值和LRU(Least Recently Used)算法自动触发并执行清理操作。

同时,也可以通过调整初始化参数来调整清理机制的行为,如设置共享池的大小、调整内存阈值等。

总而言之,共享池清理机制是Oracle数据库中的一项重要功能,可以有效地管理共享池的内存资源,提高系统的性能和效率。

ORACLE最大连接数满常见问题

ORACLE最大连接数满常见问题
大家把不用的plsql 连接关一下试试
oracle 11g 大量废连接占满数据库连接问题处理
问题描述:
数据库不断出现大量无用连接,超过数据库最大连接数,导致新的连接无法建立,访问不通数据库
问题分析:
服务器netstat连接数,大量连接来自办公网连接,不断在增加,通过服务器spid查看数据库对应的sid,查看session会话,点击pl/sql 工具菜单,选择会话,选择所有会话,查看到sid对应的事务是pl/sql.exe为pl/sql客户端连接,关闭所有技术人员的pl/sql客户端,依然不释放连接,原因是技术人员使用pl/sql出现非主动关闭,如网络异常断开,断电等导致关闭客户端连接也不释放
SQL> show parameter processes #最大连接
SQL> alter system set processes = value scope = spf—————————————
在 oracle中,要经常查看process:
查看ORACLE最大进程数:
SQL> select count(*) from v$session #连接数
SQL> Select count(*) from v$session where status='ACTIVE' #并发连接数

Oracle超出最大连接数问题及解决

Oracle超出最大连接数问题及解决
# 公式: 约=可按照并发数量*4M
pga_aggregate_target=720M
# processes、sessions是扩大并发连接数,是同时使用。
# 公式: sessions = processes *1.1 +5
processes=600
sessions=665
2、在监听参数文件LISTENER.ORA 文件中增加参数
direct_handoff_ttc_listener = off
3、重新启动数据库服务。
B.修改windows配置
1、修改Windows系统中Boot.ini文件
/3GB /PAE
说明:修改操作系统中Boot.ini文件,可以使Oracle使用更多的内存空间。
2、修改用户组策略中锁定内存页大小权限。
后来查到有可能是oracle 10g for win32的一个bug,上网下了补丁,打完补丁后的版本是:10.2.0.3;也曾怀疑是不是windows 2003的tcp连接数不够,上网查说好像是有这毛病,下了个2003的补丁,把tcp连接数扩到了1000,结果能够达到可以有250个并发连接,但是再多就又连不上了。
设置的最大连接数(默认值为150)select value from v$parameter where name = ‘processes’;
修改最大连接数alter system set processes = 300 scope = spfile;
都知道,当数据库最大连接数不够时会出现客户端连接间歇性失败,报错ORA-12519。设置大点一般就可以了。但是做大型项目的时候还是会遇到一些不正常的问题,比如:设置最大连接数800,但是正常连接200多个就会报错,这也是我在一次面试中得知的。回来因为自己的垃圾机器上没有装Oracle,就查了些资料,发现还真的有这个问题,不过不是什么难题,貌似很多人遇到过,看来我们真的做项目太少了吧,顶多同时测试的也就十多个人。

Oracle连接数太多报错-ORA-12516错误

Oracle连接数太多报错-ORA-12516错误

Oracle ORA-12516 错误解析(2007-05-09 17:20:51)转载分类:Oracle数据库五一期间,负责的内蒙项目的数据库连接的时候突然出现“ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程”的异常,很是郁闷!!可看看Tomcat还在正常连接着,可PL/SQL怎么着就登录不了,报这个异常,一时之间把我吓坏了,还以为数据库又出现什么问题了!!于是就赶紧去网上查查。

得到了一系列的答案,其中下面这个我还是比较认可的。

ORA-12516:TNS:监听程序无法找到匹配的信息栈的可用句柄错误ORA-12520:解决方法:查了一下,原来是以前设置共享服务器时SESSION设了170,PROCESSES设了150,共享服务器时就肯定够用,专用服务器就不行了,后来改为SESSION设555,PROCESSES设500。

重启数据库,正常了。

然后又马上再查了,PROCESSES已经达到140了,奇怪,不可能有这么多人,再查SESSION发现只有30多,想了一下,哦!原来是共享服务器SHARED_SERVER设了100,就将它改成了10。

解决方法:加大PROCESSES后来,我把数据库给停了,但并没有按照上面的说法去增加PROCESSES,重新启动之后,连接就正常了,个人认为是访问量达到了设置的最大限,不过上面的解决方法是可以解决的,并且也比较彻底。

如果大家以后再遇到这种问题,可以尝试着把PROCESSES放大来解决这个问题!!ORA-12516错误的处理分类:数据库Oracle技术2007-06-08 11:47 5734人阅读评论(1) 收藏举报解决过程:1、查看当前会话数、processes和sessions值,发现session数和2个参数的值已经非常逼近SQL*Plus: Release 10.2.0.1.0- Production on星期一 10月915:50:21 2006Copyright (c) 1982, 2005, Oracle. All rights reserv ed.SQL> conn /as sysdba已连接。

oracle多表关联的优化问题

oracle多表关联的优化问题

oracle多表关联的优化问题ORACLE多表查询优化ORACLE多表查询优化这里提供的是执行性能的优化,而不是后台数据库优化器资料参考数据库开发性能方面的各种问题,收集了一些优化方案统计如下(当然,象索引等优化方案太过简单就不列入了,嘿嘿):执行路径ORACLE勺这个功能大大地提高了SQL的执行性能并节省了内存的使用:我们发现,单表数据的统计比多表统计的速度完全是两个概念?单表统计可能只要0.02秒,但是2张表联合统计就可能要几十表了.这是因为ORACL只对简单的表提供高速缓冲(cache buffering), 这个功能并不适用于多表连接查询..数据库管理员必须在init.ora 中为这个区域设置合适的参数,当这个内存区域越大,就可以保留更多的语句,当然被共享的可能性也就越大了.当你向ORACL提交一个SQL语句,ORACL会首先在这块内存中查找相同的语句.这里需要注明的是‘ORA CLE寸两者采取的是一种严格匹配,要达成共享,SQL语句必须完全相同(包括空格,换行等).共享的语句必须满足三个条件:A. 字符级的比较:当前被执行的语句和共享池中的语句必须完全相同.例如:SELECT * FROM EMP;和下列每一个都不同SELECT * from EMP;Select * From Emp;SELECT * FROM EMP;B. 两个语句所指的对象必须完全相同用户对象名问Jack sal_limit synonym Work_city synonym Pla nt_detail synonymJillsal_limit如何访privatepublicpublic privatesynonym Work_city synonympublicPla nt_detail tableowner考虑一下下列SQL语句能否在这两个用户之间共享.SQL能否共享原因select max(sal_cap)from sal」imit; 不能每个用户都有一个privatesynonym - sal_limit , 它们是不同的对象select count(*) from work_city where sdesc like 'NEW%'; 能两个用户访问相同的对象public synonym - work_cityselect a.sdesc,b .lo cati on from work_city a , pla nt_detail b wherea. city_id =b.city_id 不能用户jack 通过private synonym 访问plant_detail 而jill 是表的所有者,对象不同.C. 两个SQL语句中必须使用相同的名字的绑定变量(bindvariables)例如:第一组的两个SQL语句是相同的(可以共享),而第二组中的两个语句是不同的(即使在运行时,赋于不同的绑定变量相同的值)a.select pin , n ame from people where pin = :blk1.p in;select pin , n ame from people where pin = :blk1.p in;b.select pin , n ame from people where pin = :blk1.ot_i nd;select pin , n ame from people where pin = :blk1.ov_i nd;重点关注1:选择最有效率的表名顺序(只在基于规则的优化器中有效)重点关注ORACL的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表driving table)将被最先处理.在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表.当ORACL 处理多个表时,会运用排序及合并的方式连接它们.首先,扫描第一个表(FROM?句中最后的那个表)并对记录进行派序,然后扫描第二个表(FROM子句中最后第二个表), 最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并例如:表TAB1 16,384 条记录表TAB2 1 条记录选择TAB2作为基础表(最好的方法)select count(*) from tab1,tab2 执行时间0.96 秒选择TAB2作为基础表(不佳的方法)select count(*) from tab2,tab1 执行时间26.09 秒如果有3个以上的表连接查询,那就需要选择交叉表(intersection table)作为基础表,交叉表是指那个被其他表所引用的表.例如:EMP表描述了LOCATIONS和CATEGORY的交集.SELECT *FROM LOCATION L ,CATEGORY C,EMP EWHERE E.EMP_NO BETWEEN 1000 AND 2000AND E.CAT_NO = C.CAT_NOAND E丄OCN = L.L OCN将比下列SQL更有效率SELECT *FROM EMP E ,LOCATION L ,CATEGORYCWHERE E.CAT_NO = C.CAT_NOAND E丄OCN = L.L OCNAND E.EMP_NO BETWEEN 1000 AND 2000重点关注2:WHER子句中的连接顺序.重点关注ORACL采用自下而上的顺序解析WHER子句,根据这个原理,表之间的连接必须写在其他WHER条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE 子句的末尾.例如:(低效,执行时间156.3秒)SELECT …FROM EMP EWHERE SAL >; 50000AND JOB = ‘MANAGERAND 25 < (SELECT COUNT(*) FROM EMPWHERE MGR=E.EMPNO);(高效,执行时间10.6秒)SELECT …FROM EMP EWHERE 25 < (SELECT COUNT(*) FROM EMPWHERE MGR=E.EMPNO)AND SAL >; 50000AND JOB = ‘MANAGER重点关注3:SELECT子句中避免使用‘ * : 重点关注当你想在SELEC子句中列出所有的COLUM时,使用动态SQ咧引用‘*'是一个方便的方法.不幸的是,这是一个非常低效的方法.实际上,ORACL在解析的过程中,会将’*'依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间.7. 减少访问数据库的次数当执行每条SQL语句时,ORACLEE内部执行了许多工作:解析SQL语句,估算索引的利用率,绑定变量,读数据块等等.由此可见,减少访问数据库的次数,就能实际上减少ORACL的工作量.例如,以下有三种方法可以检索出雇员号等于0342或0291的职员.方法1 (最低效)SELECT EMP_NAME , SALARY , GRADE FROM EMPWHERE EMP_NO = 342;SELECT EMP_NAME , SALARY , GRADEFROM EMPWHERE EMP_NO = 291;方法2(次低效)DECLARECURSOR C1 (E_NO NUMBER) ISSELECT EMP_NAME,SALARY,GRADEFROM EMPWHERE EMP_NO = E_NO;BEGINOPEN C1(342);FETCH C1 INTO …;OPEN C1(291);FETCH C1 INTO …;CLOSE C1;END;方法3(高效)SELECT A.EMP_NAME , A.SALARY , A.GRADE, B.EMP_NAME ,B.SALARY , B.GRADE FROM EMP A,EMP BWHERE A.EMP_NO = 342AND B.EMP_NO = 291;在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZ参数,可以增加每次数据库访问的检索数据量,建议值为200.重点关注4:使用DECOD E数来减少处理时间.重点关注使用DECOD E数可以避免重复扫描相同记录或重复连接相同的表. 例如:SELECT COUNT(*) SUM(SAL)FROM EMPWHERE DEPT_NO = 0020AND ENAME LIKE ‘ SMITH%;SELECT COUNT(*) SUM(SAL)FROM EMPWHERE DEPT_NO = 0030AND ENAME LIKE ‘ SMITH%;你可以用DECOD E数高效地得到相同结果SELECT COUNT(DECODE(DEPT_NO,O0X0,,NULL)) D0020_COUNTCOUNT(DECODE(DEPT_NO,0030, ,NULL))D0030_COUNT,SUM(DECODE(DEPT_NO,0020,SAL,NULL)) D0020_SAL,SUM(DECODE(DEPT_NO,0030,SAL,NULL)) D0030_SALFROM EMP WHERE ENAME LlKSMITH%;类似的,DECOD函数也可以运用于GROUP B湘ORDER B子句中.重点关注5:删除重复记录.重点关注最高效的删除重复记录方法(因为使用了ROWID)DELETE FROM EMP EWHERE E.ROWID >; (SELECT MIN(X.ROWID)FROM EMP XWHERE X.EMP_NO = E.EMP_NO); 重点关注6:用TRUNCAT替代DELETE S点关注当删除表中的记录时,在通常情况下,回滚段(rollback segments )用来存放可以被恢复的信息.如果你没有COMMI事务,ORACLED将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况)而当运用TRUNCAT时,回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复?因此很少的资源被调用,执行时间也会很短?(译者按:TRUNCAT趴在删除全表适用‘TRUNCATED DDL不是DML)重点关注7:尽量多使用COMM IT重点关注只要有可能,在程序中尽量多使用COMMIT,这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:COMMITS释放的资源:a. 回滚段上用于恢复数据的信息?b. 被程序语句获得的锁c. redo log buffer 中的空间d. ORACL为管理上述3种资源中的内部花费(译者按:在使用COMMIT寸必须要注意到事务的完整性,现实中效率和事务完整性往往是鱼和熊掌不可得兼)重点关注8:减少对表的查询.重点关注在含有子查询的SQL语句中,要特别注意减少对表的查询.例如:低效SELECT TAB_NAMEFROM TABLESWHERE TAB_NAME = ( SELECT TAB_NAMEFROM TAB_COLUMNS。

分除法盐快速掌握删除Oracle

分除法盐快速掌握删除Oracle

快速掌握删除Oracle 10g垃圾表的好方法经常使用Oracle10g,我们可以发现以前删除的表在数据库中出现了特别多的垃圾表,如下例:BINjR8PK5HhrrgMK8KmgQ9nw==这一类的表通常无法删除,并且无法用"delete"删除,这种情况的出现,一般不会影响正常的使用,但是有遇到以下几种情况时则必须删掉它。

1.这些表占用空间2.如果使用Middlegen-Hibernat e-r5的朋友会发现一些问题,不你象以前用oracle9时那么顺的生成hibernate配置文件,原因就在这里将它删除就没有问题了.3.其它情况BINjR8PK5HhrrgMK8KmgQ9nw==这一类的表是是10g 的新特性。

Drop Table后,没有真正的删除表,而是在“垃圾站”中了。

可以通过下面看到。

SQL> SHOW RECYCLEBIN如果要彻底删除,可以使用:SQL> PURGE TABLE "BINjR8PK5HhrrgMK8KmgQ9nw==";删除这一个或删除全部:SQL> PURGE RECYCLEBIN;盐为什么能刷牙?因为食盐不但能稳固牙齿,还具有保健作用,在我国南北朝梁代陶弘景的《名医别录》中,就记载了食盐具有清火凉血解毒的作用,按照中医的理论,食盐味咸,入肾,齿为骨之余,肾又主骨,所以,食盐能稳固牙齿,《食盐能稳固牙齿保健口腔》由3721健康知识网编辑,转载请注明出处和链接。

食盐能稳固牙齿保健口腔普及健康知识在《红楼梦》中曾记载贾宝玉每天清晨就有用盐擦牙的习惯。

中国中医科学院西苑医院内科副主任医师陈可远指出,古代人是用盐来刷牙,但是随着朝代更替,单纯的盐牙膏也变得丰富了。

普及健康知识盐为什么能刷牙?因为食盐不但能稳固牙齿,还具有保健作用。

在我国南北朝梁代陶弘景的《名医别录》中,就记载了食盐具有清火凉血解毒的作用。

按照中医的理论,食盐味咸,入肾,齿为骨之余,肾又主骨,所以,食盐能稳固牙齿。

oracle_告警规则_解释说明

oracle_告警规则_解释说明

oracle 告警规则解释说明1. 引言1.1 概述本文将详细解释和说明Oracle告警规则。

Oracle是一种常用的关系型数据库管理系统,它具有强大的功能和广泛的应用范围。

在数据库运行过程中,可能会出现各种问题和异常情况,例如连接超时、CPU利用率高以及磁盘空间不足等问题。

为了能够及时发现和解决这些问题,Oracle提供了丰富的告警规则。

1.2 文章结构本文共分为五个部分,除引言外还包括告警规则概述、Oracle告警规则解释说明、实际应用案例分析以及结论与展望。

在“告警规则概述”部分,我们将介绍什么是告警规则,并探讨其作用以及常见的类型。

在“Oracle告警规则解释说明”部分,我们将详细解释告警规则的设置方法,并对各类常见告警规则进行逐一说明。

在“实际应用案例分析”部分,我们将通过三个案例来展示如何应用具体的告警规则进行优化和问题定位。

最后,在“结论与展望”部分中,我们将总结回顾重点内容,并对未来发展趋势进行展望。

1.3 目的本文的目的是帮助读者理解和掌握Oracle告警规则,以便能够在实际应用中灵活运用。

通过对告警规则的解释和说明,读者将了解到如何设置和调整告警规则,以及如何通过分析和处理告警信息来优化数据库性能、提高系统稳定性,并预防可能出现的数据丢失风险。

通过本文内容的学习,读者将能够系统地掌握Oracle告警规则相关知识,并在实际工作中更加高效地管理和维护Oracle数据库。

2. 告警规则概述2.1 什么是告警规则告警规则是指在特定的场景或条件下,通过监测系统状态或指标来判断当前系统是否存在异常情况,并及时发出相应的告警信息以提示用户或管理员进行处理。

在Oracle数据库中,告警规则用于监控数据库实例和相关资源的使用情况。

2.2 告警规则的作用告警规则在Oracle数据库中起到了非常重要的作用。

通过设置合适的告警规则,可以帮助管理员及时发现和解决数据库中可能出现的问题,提高数据库性能和可靠性。

oracle连接数过多清理机制

oracle连接数过多清理机制

Oracle连接数过多释放机制年07月05日18:07:21∙14532Oracle服务器连接数过多会当掉,把连接数过多的客户机网线拔出后,在远程Oracle上依然还会保留此用户的连接数,久久不能释放,上网查了下可以以下面方法解决。

通过profile可以对用户会话进行一定的限制,比如IDLE时间。

将IDLE超过一定时间的会话断开,可以减少数据库端的会话数量,减少资源耗用。

使用这些资源限制特性,需要设置resource_limit为TRUE:[oracle@test126 udump]$ sqlplus "/ as sysdba"SQL*Plus: Release 10.2.0.1.0 - Production on Fri Oct 13 07:58:21 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning and Data Mining optionsSQL> show parameter resourceNAME TYPE VALUE------------------------------------ -----------------------------------------resource_limit boolean TRUEresource_manager_plan string该参数可以动态修改:SQL> alter system set resource_limit=true;System altered.数据库缺省的PROFILE设置为:SQL> SELECT * FROM DBA_PROFILES;PROFILE RESOURCE_NAME RESOURCE LIMIT-------------------- -------------------------------- -----------------------DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED DEFAULT SESSIONS_PER_USER KERNEL UNLIMITEDDEFAULT CPU_PER_SESSION KERNEL UNLIMITED DEFAULT CPU_PER_CALL KERNEL UNLIMITEDDEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMI TEDDEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITE DDEFAULT IDLE_TIME KERNEL UNLIMITED DEFAULT CONNECT_TIME KERNEL UNLIMITED DEFAULT PRIVATE_SGA KERNEL UNLIMITED DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10 DEFAULT PASSWORD_LIFE_TIME PASSWORDUNLIMITEDPROFILE RESOURCE_NAME RESOURCE LIMIT-------------------- -------------------------------- -----------------------DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITEDDEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITEDDEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULLDEFAULT PASSWORD_LOCK_TIME PASSWORD UNLIMITEDDEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMITED16 rows selected.创建一个允许3分钟IDLE时间的PROFILE:SQL> CREATE PROFILE KILLIDLE LIMIT IDLE_TIME 3;Profile created.新创建PROFILE的内容:SQL> col limit for a10SQL> select * from dba_profiles where profile='KILLIDLE';PROFILE RESOURCE_NAME RESOURCE LIMIT------------------------------ -------------------------------- -------- ----------KILLIDLE COMPOSITE_LIMIT KERNEL DEFAULTKILLIDLE SESSIONS_PER_USER KERNEL DEFAUL TKILLIDLE CPU_PER_SESSION KERNEL DEFAULTKILLIDLE CPU_PER_CALL KERNEL DEFAULTKILLIDLE LOGICAL_READS_PER_SESSION KERNEL DEF AULTKILLIDLE LOGICAL_READS_PER_CALL KERNEL DEFA ULTKILLIDLE IDLE_TIME KERNEL 3 KILLIDLE CONNECT_TIME KERNEL DEFAULTKILLIDLE PRIVATE_SGA KERNEL DEFAULTKILLIDLE FAILED_LOGIN_ATTEMPTS PASSWORD DEFAULTKILLIDLE PASSWORD_LIFE_TIME PASSWORD DEFAULTPROFILE RESOURCE_NAME RESOURCE LIMIT------------------------------ -------------------------------- -------- ----------KILLIDLE PASSWORD_REUSE_TIME PASSWORD DEFAULTKILLIDLE PASSWORD_REUSE_MAX PASSWORD DEFAULTKILLIDLE PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULTKILLIDLE PASSWORD_LOCK_TIME PASSWORD DEFAULTKILLIDLE PASSWORD_GRACE_TIME PASSWORD DEFAULT16 rows selected.测试用户:SQL> select username,profile from dba_users whereusername='EYGLE';USERNAME PROFILE------------------------------ --------------------EYGLE DEFAULT修改eygle用户的PROFILE使用新建的PROFILE:SQL> alter user eygle profile killidle;User altered.SQL> select username,profile from dba_users where username='EYGLE';USERNAME PROFILE------------------------------ --------------------EYGLE KILLIDLE进行连接测试:[oracle@test126 admin]$ sqlplus eygle/eygle@eygleSQL*Plus: Release 10.2.0.1.0 - Production on Fri Oct 13 08:07:13 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning and Data Mining optionsSQL> select username,profile from dba_users whereusername='EYGLE';USERNAME PROFILE------------------------------ ------------------------------EYGLE KILLIDLE当IDLE超过限制时间时,连接会被断开:SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; TO_CHAR(SYSDATE,'YY-------------------2006-10-13 08:08:41SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual*ERROR at line 1:ORA-02396: exceeded maximum idle time, please connect again1.sqlplus /nolog2.打开sqlplus3.4.5.connect system/bianqiwei@orcltns as sysdba6.使用具有dba权限得用户登陆oracle7.8.9.show parameter resource_limit10.显示资源限定是否开启,value为true是开启,为false是关闭11.12.13.alter system set resource_limit=true14.如果未开启,则使用此命令开启资源限定功能15.16.17.create profile profileName limit connect_time 60 idle_time 3018.创建profile文件,profileName任意起,connect_time设置连接超过多少分钟后强制释放,idle_time设置连续不活动的会话超过多少分钟后强制释放19.20.alter user oracleUser profile profileName21.将profile文件作用于指定用户Oracle session连接数和inactive的问题记录oracle学习2009-03-1015:42:37 阅读317 评论0 字号:大中小订阅 .从上周起,服务器Oracle数据库出现问题,用不到半天,就会报maxsession (150)的问题,肯定是数据库的会话超过最大数了。

Oracle清空一个表的数据(数据量大的做法)

Oracle清空一个表的数据(数据量大的做法)

Oracle清空⼀个表的数据(数据量⼤的做法)
如果有⼀张表有上千万条数据,需要清空这个表的数据,你会怎么解决?
如果⽤delete,会卡上半天时间,不可⾏。

需要⽤truncate table去解决,如下:
1、先创建⼀个备份表
create table 备份表 as
select * from 千万条数据的表
2、清空数据
truncate table 千万条数据的表
3、如果需要保留部分数据
insert into 千万条数据的表 select * from 备份表 where ......
4、删除临时表
drop table 备份表
完成。

TRUNCATE TABLE 是⼀次性地从表中删除所有的数据并不把单独的删除操作记录记⼊⽇志保存,删除⾏是不能恢复的。

并且在删除的过程中不会激活与表有关的删除触发器。

执⾏速度快。

数据库连接的手工清理方法

数据库连接的手工清理方法

数据库连接的手工清理方法数据库连接的手工清理方法一、引言DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。

同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。

下面我们对由于Oracle数据库连接问题引起的问题分享以下经验。

二、故障现象Oracle数据库访问速度慢。

三、处理过程(一)、查看数据库的连接情况以下的SQL语句列出当前数据库建立的会话情况:select sid,serial#,username,program,machine,statusfrom v$session;其中,SID 会话(session)的ID号;SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;USERNAME 建立该会话的用户名;PROGRAM 这个会话是用什么工具连接到数据库的;STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;如果DBA要手工断开某个会话,则执行alter system kill session 'SID,SERIAL#';注意,上例中SID为1到7(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。

(二)、常用命令select count(*) from v$session #连接数Select count(*) from v$session where status='ACTIVE' #并发连接数show parameter processes #最大连接alter system set processes = value scope = spfile;重启数据库#修改连接1:oracle中怎样查看总共有哪些用户select * from all_users;2:查看oracle当前连接数怎样查看oracle当前的连接数呢?只需要用下面的SQL语句查询一下就可以了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle连接数过多释放机制年07月05日18:07:21∙14532Oracle服务器连接数过多会当掉,把连接数过多的客户机网线拔出后,在远程Oracle上依然还会保留此用户的连接数,久久不能释放,上网查了下可以以下面方法解决。

通过profile可以对用户会话进行一定的限制,比如IDLE时间。

将IDLE超过一定时间的会话断开,可以减少数据库端的会话数量,减少资源耗用。

使用这些资源限制特性,需要设置resource_limit为TRUE:[oracle@test126 udump]$ sqlplus "/ as sysdba"SQL*Plus: Release 10.2.0.1.0 - Production on Fri Oct 13 07:58:21 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning and Data Mining optionsSQL> show parameter resourceNAME TYPE VALUE------------------------------------ -----------------------------------------resource_limit boolean TRUEresource_manager_plan string该参数可以动态修改:SQL> alter system set resource_limit=true;System altered.数据库缺省的PROFILE设置为:SQL> SELECT * FROM DBA_PROFILES;PROFILE RESOURCE_NAME RESOURCE LIMIT-------------------- -------------------------------- -----------------------DEFAULT COMPOSITE_LIMIT KERNEL UNLIMITED DEFAULT SESSIONS_PER_USER KERNEL UNLIMITEDDEFAULT CPU_PER_SESSION KERNEL UNLIMITED DEFAULT CPU_PER_CALL KERNEL UNLIMITEDDEFAULT LOGICAL_READS_PER_SESSION KERNEL UNLIMI TEDDEFAULT LOGICAL_READS_PER_CALL KERNEL UNLIMITE DDEFAULT IDLE_TIME KERNEL UNLIMITED DEFAULT CONNECT_TIME KERNEL UNLIMITED DEFAULT PRIVATE_SGA KERNEL UNLIMITED DEFAULT FAILED_LOGIN_ATTEMPTS PASSWORD 10 DEFAULT PASSWORD_LIFE_TIME PASSWORDUNLIMITEDPROFILE RESOURCE_NAME RESOURCE LIMIT-------------------- -------------------------------- -----------------------DEFAULT PASSWORD_REUSE_TIME PASSWORD UNLIMITEDDEFAULT PASSWORD_REUSE_MAX PASSWORD UNLIMITEDDEFAULT PASSWORD_VERIFY_FUNCTION PASSWORD NULLDEFAULT PASSWORD_LOCK_TIME PASSWORD UNLIMITEDDEFAULT PASSWORD_GRACE_TIME PASSWORD UNLIMITED16 rows selected.创建一个允许3分钟IDLE时间的PROFILE:SQL> CREATE PROFILE KILLIDLE LIMIT IDLE_TIME 3;Profile created.新创建PROFILE的内容:SQL> col limit for a10SQL> select * from dba_profiles where profile='KILLIDLE';PROFILE RESOURCE_NAME RESOURCE LIMIT------------------------------ -------------------------------- -------- ----------KILLIDLE COMPOSITE_LIMIT KERNEL DEFAULTKILLIDLE SESSIONS_PER_USER KERNEL DEFAUL TKILLIDLE CPU_PER_SESSION KERNEL DEFAULTKILLIDLE CPU_PER_CALL KERNEL DEFAULTKILLIDLE LOGICAL_READS_PER_SESSION KERNEL DEF AULTKILLIDLE LOGICAL_READS_PER_CALL KERNEL DEFA ULTKILLIDLE IDLE_TIME KERNEL 3 KILLIDLE CONNECT_TIME KERNEL DEFAULTKILLIDLE PRIVATE_SGA KERNEL DEFAULTKILLIDLE FAILED_LOGIN_ATTEMPTS PASSWORD DEFAULTKILLIDLE PASSWORD_LIFE_TIME PASSWORD DEFAULTPROFILE RESOURCE_NAME RESOURCE LIMIT------------------------------ -------------------------------- -------- ----------KILLIDLE PASSWORD_REUSE_TIME PASSWORD DEFAULTKILLIDLE PASSWORD_REUSE_MAX PASSWORD DEFAULTKILLIDLE PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULTKILLIDLE PASSWORD_LOCK_TIME PASSWORD DEFAULTKILLIDLE PASSWORD_GRACE_TIME PASSWORD DEFAULT16 rows selected.测试用户:SQL> select username,profile from dba_users whereusername='EYGLE';USERNAME PROFILE------------------------------ --------------------EYGLE DEFAULT修改eygle用户的PROFILE使用新建的PROFILE:SQL> alter user eygle profile killidle;User altered.SQL> select username,profile from dba_users where username='EYGLE';USERNAME PROFILE------------------------------ --------------------EYGLE KILLIDLE进行连接测试:[oracle@test126 admin]$ sqlplus eygle/eygle@eygleSQL*Plus: Release 10.2.0.1.0 - Production on Fri Oct 13 08:07:13 2006Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning and Data Mining optionsSQL> select username,profile from dba_users whereusername='EYGLE';USERNAME PROFILE------------------------------ ------------------------------EYGLE KILLIDLE当IDLE超过限制时间时,连接会被断开:SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; TO_CHAR(SYSDATE,'YY-------------------2006-10-13 08:08:41SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual*ERROR at line 1:ORA-02396: exceeded maximum idle time, please connect again1.sqlplus /nolog2.打开sqlplus3.4.5.connect system/bianqiwei@orcltns as sysdba6.使用具有dba权限得用户登陆oracle7.8.9.show parameter resource_limit10.显示资源限定是否开启,value为true是开启,为false是关闭11.12.13.alter system set resource_limit=true14.如果未开启,则使用此命令开启资源限定功能15.16.17.create profile profileName limit connect_time 60 idle_time 3018.创建profile文件,profileName任意起,connect_time设置连接超过多少分钟后强制释放,idle_time设置连续不活动的会话超过多少分钟后强制释放19.20.alter user oracleUser profile profileName21.将profile文件作用于指定用户Oracle session连接数和inactive的问题记录oracle学习2009-03-1015:42:37 阅读317 评论0 字号:大中小订阅 .从上周起,服务器Oracle数据库出现问题,用不到半天,就会报maxsession (150)的问题,肯定是数据库的会话超过最大数了。

相关文档
最新文档