网断了,job停了

job(文中用j1代之)执行存储过程(p1)。p1中通过dblink对远程表做查询。另外P1中对others异常做了处理,把所有异常记录到日志中。

由于厂里停电,导致到远程数据库服务器的通信中断。j1在当前也停止了工作。查看j1,broken 为 Y,失败16次。

这就奇怪了,既然做了异常处理,p1中的所有异常(包括网络异常)都会被捕获,并记录到日志,j1根本就不会意识到p1执行失败,那怎么会出现失败16次导致j1 broken的呢?

查询日志发现,在j1上次执行时间内,根本没有该存储过程的任何错误日志。也就是说,j1失败16次但p1可能根本没执行。

查看了一下j1失败那段时间的alter日志有所发现:

Tue Apr 26 17:47:10 2011
Errors in file d:/oracle/product/10.2.0/admin/l25steel/bdump/l25steel_j000_4120.trc:
ORA-12012: 自动执行作业 269 出错
ORA-04045: 在重新编译/重新验证 COMMUNICATION.DATAFROML3 时出错
ORA-04052: 在查找远程对象
SM.PP_SM_IRON_SAMPLE_T@DBLINK_L3IRON_L25 时出错
ORA-00604: 递归 SQL 级别 4 出现错误
ORA-12170: TNS: 连接超时

原来p1是被重新编译了,由于网络中断导致抄不到远程对象,因而编译失败。这要就解释了为什么p1没被执行而j1失败了16次。

 

又是网络惹的祸。但怎么才能让程序包容网络错误呢?oracle非要重新编译存储过程,也不知道它什么时候才重新编译。

办法就是使用动态sql语句,骗过oracle,不让它帮你编译。

例如原来的存储过程p1,新建一个过程p2:

begin

strsql:='p1';
execute strsql;
exception when others
****

end

这样p1就作为动态语句在p2中执行。即使p1无效了(被删了,或者编译失败),p2仍然有效,能被执行。

不过要提醒一点的是,这样可能把原本能在静态编译时发现的错误引入到运行时。

开发人员和管理员必须好好读日志了。

好的,以下是一个简单的51job招聘网爬虫示例,使用Scrapy框架编写: 首先,在终端中创建一个新的Scrapy项目: ``` scrapy startproject jobspider ``` 接下来,进入项目目录并创建一个新的Spider: ``` cd jobspider scrapy genspider job51 job51.com ``` 现在,我们可以打开`jobspider/spiders/job51.py`文件,并开始编写我们的爬虫代码。以下是一个示例: ```python import scrapy class Job51Spider(scrapy.Spider): name = 'job51' allowed_domains = ['51job.com'] start_urls = ['https://search.51job.com/list/000000,000000,0000,00,9,99,python,2,1.html'] def parse(self, response): jobs = response.xpath('//div[@class="el"]') for job in jobs: yield { 'title': job.xpath('p[@class="t1"]/a/text()').get(), 'company': job.xpath('span[@class="t2"]/a/text()').get(), 'location': job.xpath('span[@class="t3"]/text()').get(), 'salary': job.xpath('span[@class="t4"]/text()').get(), 'date': job.xpath('span[@class="t5"]/text()').get(), } next_page = response.xpath('//div[@class="p_in"]/ul/li[last()]/a/@href') if next_page: yield response.follow(next_page.get(), self.parse) ``` 在上面的代码中,我们定义了一个名为“job51”的Spider,它开始访问51job.com上的搜索页面,并使用XPath选择器提取有关每个工作的信息。我们还定义了一个“parse”方法来处理响应并提取数据。 最后,我们需要在命令行中运行以下命令以启动爬虫: ``` scrapy crawl job51 -o jobs.csv ``` 这将运行我们的爬虫,并将提取的数据保存在“jobs.csv”文件中。 请注意,此示例仅用于演示如何使用Scrapy编写简单的爬虫。在实际使用中,您需要遵守所有网站的条款和条件,并确保您的爬虫不会对网站造成任何不必要的负担。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值