由于项目需要,开始接触oracle,虽然以前接触过mssql,对基本语法有一定了解,但oracle略有不同。从plsql的配置开始学习,第一次见识tnsnames配置文件的强大,到join、case-when、nvl、to_date等等的应用,感受着数据库的魅力,报表语句也逐步提炼修改,前后经历无数个版本。最近,为了实现远程数据表转存功能,开始接触db_links/procedures/dbms_jobs,前后差不多一个星期,这算是我学习oracle数据库以来的一次进步。
PLSQL连接远程数据库实例,只有用户权限够高。db_links/procedures/dbms_jobs这三个功能都可以直接使用,db_links实现当前活动数据库实例与另一个数据库实例的连接,配置类似于tnsnames的连接配置,完成db_links后,活动数据库实例可以像操作本地库一样对远程数据库进行操作,只需表明后面加上"@db_links名称"。
procedures存储过程,是一系列操作集合,把sql 窗体的所以操作语句集中起来
dbms_jobs是任务设置,加入存储过程名,配置定时器,就可以实现任务定时执行功能
TRUNC(sysdate,'mi') + 1/ (24) 小时间隔
TRUNC(sysdate,'mi') + 1/ (24*60) 分钟间隔
第一次设置存储过程和任务是很成功,完成报表结果集定时执行转存,后面为了实现透视表的转存,再次设置,可能操作过于着急和频繁,出现了锁死情况,百思不得其解,甚至搞到电脑奔溃重启,几番搜索,最后才找到解决办法,备注下来作为参考
查询锁定
select session_id from v$locked_object;
SELECT * FROM V$LOCKED_OBJECT
PLSQL连接远程数据库实例,只有用户权限够高。db_links/procedures/dbms_jobs这三个功能都可以直接使用,db_links实现当前活动数据库实例与另一个数据库实例的连接,配置类似于tnsnames的连接配置,完成db_links后,活动数据库实例可以像操作本地库一样对远程数据库进行操作,只需表明后面加上"@db_links名称"。
procedures存储过程,是一系列操作集合,把sql 窗体的所以操作语句集中起来
dbms_jobs是任务设置,加入存储过程名,配置定时器,就可以实现任务定时执行功能
TRUNC(sysdate,'mi') + 1/ (24) 小时间隔
TRUNC(sysdate,'mi') + 1/ (24*60) 分钟间隔
第一次设置存储过程和任务是很成功,完成报表结果集定时执行转存,后面为了实现透视表的转存,再次设置,可能操作过于着急和频繁,出现了锁死情况,百思不得其解,甚至搞到电脑奔溃重启,几番搜索,最后才找到解决办法,备注下来作为参考
查询锁定
select session_id from v$locked_object;
SELECT * FROM V$LOCKED_OBJECT
查询sid 和serial
SELECT sid, serial#, username, oSUSEr FROM v$session where sid = 80;
SELECT v.sid,v.SERIAL#,v.USERNAME,v.ACTION FROM v$session v WHERE v.sid IN (SELECT session_id FROM v$locked_object)
SELECT sid, serial#, username, oSUSEr FROM v$session where sid = 80;
SELECT v.sid,v.SERIAL#,v.USERNAME,v.ACTION FROM v$session v WHERE v.sid IN (SELECT session_id FROM v$locked_object)
杀死ORACLE进程
ALTER SYSTEM KILL SESSION '254,59483';
ALTER SYSTEM KILL SESSION '254,59483';
无法杀死,进行下面步骤
查询系统进程号 spid
select spid, osuser, s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=254
进入linux系统 直接结束进程。
查询系统进程号 spid
select spid, osuser, s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=254
进入linux系统 直接结束进程。
linux root >> kill -9 spid
顺便放一下tnsnames配置文件(放在oracle客户端安装目录下) oracle服务器ip:端口 /实例名 必须与实际一直
名字(任意取) =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle服务器ip)(PORT = 端口))
)
(CONNECT_DATA =
(SERVICE_NAME =实例名)
)
)
顺便放一下tnsnames配置文件(放在oracle客户端安装目录下) oracle服务器ip:端口 /实例名 必须与实际一直
名字(任意取) =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = oracle服务器ip)(PORT = 端口))
)
(CONNECT_DATA =
(SERVICE_NAME =实例名)
)
)
太久了可能或找到不oracle客户端的安装目录,可以通过注册表(运行框执行regedit ),查找 ORACLE_HOME