首先,我要申明我之所以写这篇博客是因为今天看来篇博文http://chenzone.iteye.com/blog/2018199,原作者写的很好,只是排版欠缺,我在他的基础上把内容写清晰点,首先,带上我参考的博文链接:
http://chenzone.iteye.com/blog/2018199 http://www.jb51.net/article/20823.htm http://dbajun.iteye.com/blog/135331 http://blog.itpub.net/633084/viewspace-1027933/ http://www.linuxidc.com/Linux/2012-10/72953.htm
下面开始:
一开始,我按原作者写的,创建存储过程,报错了,没有权限,而是想使用sysdba赋予权限。
一登录,我发现 sysdba身份是SYS,以前自己一直在尝试使用sys登录,原来sysdba就是sys。
查看当前用户:
show user
那还有一个什么system呢?说实话system密码我也不知道,所以要使用sysdba修改system密码:
ALTER USER SYSTEM IDENTIFIED BY root
如下:
那么sys和system有何区别呢?
简单说,SYS用户是Oracle中权限最高的用户,而SYSTEM是一个用于数据库管理的用户,平常一般用该帐号管理数据库就可以了。
使用system登录,测试修改是否成功。
然后给用户赋予查看v$session的权限。
权限不足,那system又有那些权限呢?
system用户的系统权限如下:
SQL> col privilege for a20; SQL> select privilege from dba_sys_privs where grantee='SYSTEM';
system用户角色权限为;
select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='SYSTEM')
应该是system用户权限不足,换成sysdba试下,使用sysdba赋予权限。
sysdba也没权限?其实,对于这种动态v$session,系统有一个相对应表,查看相对的表名是什么,赋予权限后就可以了,如下:
select synonym_name,table_name from dba_synonyms where synonym_name='V$SESSION';
赋予用户v_$session查看权限就OK了。
grant select on v_$session to tmd;
那如何撤销权限呢?
revoke select on v_$session from tmd;
原来system对象搞错了,切换system赋予v_$session权限试下:
还是没权限,所以只能使用sysdba赋予权限了。
然后,新建存储过程:
create or replace procedure proc_KILL_INACTIVE_SESSIONS authid current_user is s VARCHAR2(1000); begin FOR sess IN (select SID, SERIAL# from v$session s where status='INACTIVE' and (program='lg_server.exe' or program='JDBC Thin Client') AND TYPE != 'BACKGROUND' and last_call_et>5000) LOOP s := 'alter system kill session '''||sess.sid||','||sess.serial# ||'''immediate ' ; EXECUTE IMMEDIATE s; END LOOP; end proc_KILL_INACTIVE_SESSIONS;
测试如下:
begin -- Call the procedure proc_kill_inactive_sessions; end;
该存储过程原理是:
在系统使用的过程中,数据库会出现很多inactive的session,占用服务器的资源,而这些session很多都是由于客户端以不正常的方式断开或者突然的断网产生的,如果清理掉必将会影响到数据库服务器的性能。我们可以通过select * from v$session WHERE status='INACTIVE' 来查看当前处在inactive 状态的sesion,然后将sid和serial#带入以下语句中将相应的session 杀死。
终于写完了,补充下,我的数据库是oracle 10g的。
下面啰嗦句,其实很多作者博文内容很好,这是排版欠缺,导致很多人不想看,以为内容低下,这里我要感谢原作者,关于v$session对应v_$session表我今天才知道。
世有伯乐,然后有千里马,这是我一开始想到的,我意思是伯乐难求,作为千里马也得自己争取,希望各位以后写博客时候注意排版,不求很漂亮,但求内容清晰,能看懂,谢谢。
全文完。
相关推荐
Oracle存储过程是数据库管理系统中的一种重要工具,用于封装一系列的SQL和PL/SQL语句,以执行特定的任务。性能优化是数据库管理的核心任务之一,尤其是对于处理大量数据的企业级应用,存储过程的优化能显著提升系统...
在Oracle数据库管理中,存储过程是预编译的SQL语句集合,用于执行特定的数据库操作,例如数据处理、业务逻辑等。优化存储过程对于提升系统性能至关重要,尤其是在大规模数据处理场景下。本文将深入探讨Oracle表字段...
本文档将详细介绍一个具体的存储过程,该过程不仅能够将Oracle表数据导出为TXT或CSV格式,而且还包含了一项批量删除的功能。这对于需要定期处理大量数据的场景尤其有用。 #### 二、存储过程核心逻辑 存储过程的...
以下是一个使用Oracle存储过程的例子: ```sql CREATE OR REPLACE PROCEDURE batchDeleteCustomers(p_age IN NUMBER) AS BEGIN DELETE FROM CUSTOMERS WHERE AGE > p_age; END; ``` 然后在Java代码中调用这个存储...
对于支持存储过程的数据库(如Oracle),可以创建一个存储过程来实现批量更新,这样不仅可以提高执行速度,还可以充分利用数据库的内置优化机制。 ```sql CREATE OR REPLACE PROCEDURE batchUpdateCustomer(p_age ...
在IT领域,尤其是在Java开发中,Hibernate是一个非常流行的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式...无论是用于批量更新还是查询操作,正确地配置和调用存储过程都能极大地提高应用的效率和灵活性。
本文将详细介绍如何在Hibernate框架下调用存储过程,并以Oracle数据库中的`batchUpdateStudent()`存储过程为例进行讲解。 #### 二、存储过程的优势 存储过程直接在数据库服务器上执行,与应用程序分离,具有以下...
可以使用类似批量更新的策略,即通过HQL或原生SQL执行一次性的删除操作,或者利用数据库的存储过程来提高效率。 ### 结论 在Hibernate应用中处理批量更新和批量删除时,开发者应充分考虑数据库性能和资源消耗,...
解决 Oracle 杀死死锁进程 Oracle 杀死死锁进程是数据库管理员经常遇到的问题,本文将介绍解决 Oracle 杀死死锁进程的方法。 在 Oracle 中,死锁是指两个或多个会话在等待对方释放资源,从而导致互相阻塞的情况。...
4. **使用存储过程**:对于支持存储过程的数据库,如Oracle,可以创建一个存储过程来执行批量删除操作,这种方式可以极大地提高执行效率。 ```sql CREATE OR REPLACE PROCEDURE batchDeleteCustomers(p_age IN ...
4. **存储过程**:为了批量执行这些操作,我们需要创建一个存储过程。存储过程是一组预编译的SQL语句,可以接受参数并返回结果。下面是一个简单的示例: ```sql CREATE OR REPLACE PROCEDURE create_user(p_...
对于支持存储过程的数据库系统,如Oracle,可以通过存储过程来执行批量操作。将批量操作逻辑直接写入数据库存储过程中,然后通过Hibernate或JDBC调用该存储过程,可以进一步提升批量操作的性能。 ### 总结 在JSP与...
Oracle数据库是世界上最流行的数据库管理系统之一,广泛应用于企业级的数据存储和管理。韩顺平的“玩转Oracle”视频教程旨在帮助学习者掌握Oracle的核心概念和技术。以下是对视频教程笔记的详细解析: 首先,Oracle...
这两者在IT领域中都有着举足轻重的地位,尤其在企业级应用开发中,Oracle作为数据存储的核心,Java则常用于构建应用程序并与数据库进行交互。 1. **Oracle DBA基础知识** - 数据库概念:理解数据库的基本概念,如...
Oracle中的数据对象包括表、视图、存储过程和触发器等,它们构成了数据库的核心元素。SQL*Plus是Oracle自带的命令行工具,用于执行SQL语句。在SQL*Plus中,常用的命令如conn用于连接数据库,disc断开连接,passw修改...
通过`DESC user_source`或`user_triggers`等视图,可以查看触发器、存储过程或函数的创建脚本。 **3. 计算表空间占用** 使用以下查询来计算特定表占用的空间: ``` SELECT owner, table_name, NUM_ROWS, EMPTY_...
`不仅授予yyaccp用户执行任何存储过程的权限,还允许yyaccp将此权限再授予其他用户,增强了权限管理的灵活性。 以上知识点涵盖了Oracle数据库的文件结构查询、基本操作、用户管理以及权限控制等方面,对于初学者和...
PL/SQL是Oracle特有的过程化语言,结合了SQL的功能,用于编写存储过程、函数、触发器等高级数据库编程。 三、数据库管理 1. 表和索引管理:创建、修改和删除表是常见的操作,索引能显著提高查询速度,但也会占用...
Oracle对账优化过程是数据库管理中的重要环节,尤其是在大型企业或金融机构中,对账工作对于保证数据一致性、准确性和合规性至关重要。Oracle数据库提供了一系列工具和技术来帮助优化这个过程,提高效率并减少错误。...