Oracle 维护小技巧

1.重新编译有错误的函数,存储过程,包

select 'ALTER ' || OBJECT_TYPE || ' ' || owner || '.' || OBJECT_NAME ||
' COMPILE;'
from all_objects
where status = 'INVALID'
and object_type in ('PACKAGE', 'FUNCTION', 'PROCEDURE', 'TABLE', 'VIEW',
'SEQUENCE', 'TRIGGER');
select 'ALTER PACKAGE ' || OWNER || '.' || OBJECT_NAME || ' COMPILE body;'
from ALL_objects
where status = 'INVALID'
and object_type in ('PACKAGE BODY');

2.查看没有关闭的游标
[url]http://www.oracle.com.cn/viewthread.php?tid=17870&extra=&page=1[/url]

-----查看没有关闭的游标数
select KGLLKFLG,KGLNAOBJ from X$KGLLK where KGLLKFLG=8;
-----查看session占用的游标数目
select * from V$OPEN_CURSOR
-------查看表的底层结构
select * from v$fixed_view_definition where view_name ='GV$OPEN_CURSOR';

3.设置用户的最大连接数

--先创建一个PROFILE
create profile ses_conn limit
sessions_per_user n; ----- n为最大连接数。
-----oracle 最大连接数的参数
show parameter process
------然后将该PROFILE付给需要限制的用户。
alter user xxx profile ses_conn;
-------最后别忘了确认RESOURCE_LIMIT参数已设为TRUE。如果没有,用
alter system set recource_limit=TRUE;

4.一行变多列

SQL> select * from a3;

ID ID1 ID2
---------- ---------- ----------
1 2 3

SQL>
SQL> select decode(column_name,column_name,column_name) name,
2 decode(column_name,'ID',ID,'ID1',ID1,'ID2',ID2) value
3 from user_tab_columns u,A3 t
4 where u.table_name='A3';

NAME VALUE
------------------------------ ----------
ID 1
ID1 2
ID2 3

3.2句话搞定客户端和服务器字符集不一致
a.查询服务器端配置的字符集。在sqlplus中以dba用户执行:
select tab1.aa||'_'||tab2.bb||'.'||tab3.cc from (select VALUE$ aa from sys.props$ where name='NLS_LANGUAGE')tab1,(select VALUE$ bb from sys.props$ where name='NLS_ISO_CURRENCY')tab2,(select VALUE$ cc from sys.props$ where name='NLS_CHARACTERSET')tab3;

b.在客户端的注册表HKEY_LOCAL_MACHINE->SOFTWARE->ORACLE->HOME0中,如无系统变量NLS_LANG,则“新建”->“字符串”,重命名为“NLS_LANG”,并赋值为上述查询变量的值(注意引号内的字符应大写),再查看时不需要重启Oracle。
4.触发器和存储过程的优缺点汇总(转) 缺点:
1、可移植性是存储过程和触发器最大的缺点。
2、占用服务器端太多的资源,对服务器造成很大的压力
3、不能做DDL。
4、触发器排错困难,而且数据容易造成不一致,后期维护不方便。


优点:
1、预编译,已优化,效率较高。避免了SQL语句在网络传输然后再解释的低效率。
2、存储过程可以重复使用,减少开发人员的工作量。
3、业务逻辑封装性好,修改方便。
4、安全。不会有SQL语句注入问题存在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值