当前位置:  数据库>oracle
本页文章导读:
    ▪ORA-12519: TNS:no appropriate service handler found 解决      有时候连得上数据库,有时候又连不上.可能是数据库上当前的连接数目已经超过了它能够处理的最大值.select count(*) from v$process --当前的连接数select value from v$parameter where name = 'processes' --数据库.........
    ▪Oracle重置序列(不删除重建方式)      Oracle中一般将自增sequence重置为初始1时,都是删除再重建,这种方式有很多弊端,依赖它的函数和存储过程将失效,需要重新编译。不过还有种巧妙的方式,不用删除,利用步长参数,先查出.........
    ▪PRAGMA AUTONOMOUS_TRANSACTION自治事务应用      PRAGMA AUTONOMOUS_TRANSACTION在你的一个事务(外层事务)中可以定义一个或几个自治事务。自治事务可以独立commit,不对外层事务产生影响,同样外层事务的 rollback 也对自治事务没有影响。通常可.........

[1]ORA-12519: TNS:no appropriate service handler found 解决
    来源:    发布时间: 2013-10-29

有时候连得上数据库,有时候又连不上.

可能是数据库上当前的连接数目已经超过了它能够处理的最大值.


select count(*) from v$process --当前的连接数
select value from v$parameter where name = 'processes' --数据库允许的最大连接数
修改最大连接数:
alter system set processes = 300 scope = spfile;
重启数据库:
shutdown immediate;
startup;
--查看当前有哪些用户正在使用数据
SELECT osuser, a.username,cpu_time/executions/1000000||'s', sql_fulltext,machine 
from v$session a, v$sqlarea b
where a.sql_address =b.address order by cpu_time/executions desc;

本文链接


    
[2]Oracle重置序列(不删除重建方式)
    来源:    发布时间: 2013-10-29

Oracle中一般将自增sequence重置为初始1时,都是删除再重建,这种方式有很多弊端,依赖它的函数和存储过程将失效,需要重新编译。


不过还有种巧妙的方式,不用删除,利用步长参数,先查出sequence的nextval,记住,把递增改为负的这个值(反过来走),然后再改回来。


 假设需要修改的序列名:seq_name


1、select seq_name.nextval from dual; //假设得到结果5656


2、 alter sequence seq_name increment by -5655; //注意是-(n-1)


3、 select seq_name.nextval from dual;//再查一遍,走一下,重置为1了


4、  alter sequence seq_name increment by 1;//还原


可以写个存储过程,以下是完整的存储过程,然后调用传参即可: 



CREATE OR REPLACE PROCEDURE seq_reset(v_seqname VARCHAR2) AS
n NUMBER(10);
tsql VARCHAR2(100);
BEGIN
EXECUTE IMMEDIATE 'select ' || v_seqname || '.nextval from dual'
INTO n;
n := - (n - 1);
tsql := 'alter sequence ' || v_seqname || ' increment by ' || n;
EXECUTE IMMEDIATE tsql;
EXECUTE IMMEDIATE 'select ' || v_seqname || '.nextval from dual'
INTO n;
tsql := 'alter sequence ' || v_seqname || ' increment by 1';
EXECUTE IMMEDIATE tsql;
END seq_reset;


 

本文链接


    
[3]PRAGMA AUTONOMOUS_TRANSACTION自治事务应用
    来源:    发布时间: 2013-10-29

PRAGMA AUTONOMOUS_TRANSACTION


在你的一个事务(外层事务)中可以定义一个或几个自治事务。自治事务可以独立commit,不对外层事务产生影响,同样外层事务的 rollback 也对自治事务没有影响。


通常可以考虑将自治事务定义成一个过程,在外层的事务中调用。即当前的存储过程作为已有事务的子事务运行,子事务的commit,rollback操作不影响父事务的状态


应用于


(1)匿名块


(2)触发器


(3)存储过程


 例子:



PROCEDURE addrowautonomous(pid       IN tlog.id%TYPE,
pldate IN tlog.ldate%TYPE,
plhsecs IN tlog.lhsecs%TYPE,
pllevel IN tlog.llevel%TYPE,
plsection IN tlog.lsection%TYPE,
pluser IN tlog.luser%TYPE,
pltexte IN tlog.ltexte%TYPE) IS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
addrow(pid => pid,
pldate => pldate,
plhsecs => plhsecs,
pllevel => pllevel,
plsection => plsection,
pluser => pluser,
pltexte => pltexte);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
plog.error;
ROLLBACK;
RAISE;
END;


自治事务可以用于在客户化程序中记录调试信息



PROCEDURE insert_cux_debug_info(  
........
) IS PRAGMA AUTONOMOUS_TRANSACTION;
........
BEGIN
INSERT INTO cux_debug_info VALUES ........;
COMMIT;
END;


 

本文链接


    
最新技术文章:
▪current online redo log缺失后的恢复
▪ORA-600 2662错误解决实例
▪ORA-00600 2662错误解决方法
▪Oracle Hidden Parameter:_allow_resetlogs_corruption
▪Oracle诊断事件列表
▪Oracle 隐含参数 _disable_logging 详解
▪ORA-00600 [2662]错误解决过程
▪Oracle里常见的执行计划
▪Oracle里另外一些典型的执行计划
▪Oracle服务器自动备份
▪Oracle固定SQL的执行计划(一)---SQL Profile
▪Oracle固定SQL的执行计划(二)---SPM
▪同一环境下新建Standby RAC库
▪Oracle快速克隆安装
▪Oracle单实例启动多个实例
▪Oracle的PLSQL别名中文出现乱码解决方法
▪ORA-00379: no free buffers available in buffer pool DEFAULT ...
▪RMAN-06023: no backup or copy of datafile 16 found to restor...
▪RMAN还原数据库报错问题解决案例
▪OEL6.8_X86平台部署Oracle 10gR2检测失败问题
▪Oracle 性能优化建议
▪Oracle SQL语句优化心得
▪Oracle慢SQL监控脚本实现
▪Oracle dblink 查询 tns:无法解析指定的连接标识...
▪Red Hat Enterprise Linux 6使用udev配置Oracle ASM总结...
▪Linux6.6及以上版本配置Oracle ASM共享储存-UDEV
▪Oracle 12C 开启数据库归档模式
▪Solairs系统中配置Oracle 12c 开机启动
▪重建DBMS_STATS解决ORA-31626 ORA-21633以及ORA-04063 ORA...
▪Oracle ASMM 与AMM之间相互切换
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3