当前位置:网站首页>项目中数据库插入大批量数据遇到的问题
项目中数据库插入大批量数据遇到的问题
2022-07-24 06:57:00 【导演我尽力了】
上周五的时候在测试环境跑大批数据(大概有8000万),想着等周一来看,但周一发现数据并没有处理完,停住了,查看日志时发现问题,首先是看到“no space left on device”这个异常,哦,磁盘空间不足了,删呗…,df- I 查一下文件属性使用情况:

使用的都很少,那再用 df -h 看看实际文件大小:

(这个图是删完以后的,当时忘截图了……)
标红的地方当时使用情况已经达到100G,达到了100%;所以显而易见,服务器内存不足了;然后就可以找一些没用的日志文件删一删就可以了;
当我继续去跑数据后,过了会儿我发现数据又不动了,于是去查看日志,又发现另一个新的异常:” ORA-01653: unable to extend table 表名by 1024 in tablespace 表空间名”
哈,日常表空间不足;
首先检查一下oracle表空间:
SELECT UPPER(F.TABLESPACE_NAME) "表空间名",
D.TOT_GROOTTE_MB "表空间大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比例",
F.TOTAL_BYTES "空闲空间(M)",
F.MAX_BYTES "最大块空间(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 4 desc ;
查询结果(这个图是扩完以后的,之前是60G,当时忘截图了……)

所以当时情况就是表空间不足了,需要扩表空间;
查看表空间所使用数据文件:
select file_name,tablespace_name,bytes/1024/1024,maxbytes/1024/1024 from dba_data_files where tablespace_name='表空间名';

(4是扩完以后加的,原来只有60个G,)
每次扩最多32G,( 至于怎么扩的,我不清楚了,管理员扩的,)
查询表空间中占用最多的10个对象:
select OWNER,SEGMENT_NAME,SEGMENT_TYPE,total||'M' from
(select OWNER,SEGMENT_NAME,SEGMENT_TYPE,bytes/1024/1024 total from dba_segments
where TABLESPACE_NAME='表空间名' order by bytes/1024/1024 desc ) where rownum <11;
前俩列是表空间名和表名,就不展示了,这俩列是类型和占用大小;

表空间扩完了,服务器内存也够了,这回可以继续跑数据了,但是…………没过多久又崩了!!!

不知道大家有没有见过,反正我是头一次见,在查阅了一些资料后了解到:
ORA-00604:递归某个SQL层时出现错误
ORA-01000: 超出打开游标的最大数
而我由于业务需要,在处理数据时,需要循环插入,我是每500条访问一次数据库,这500条有就更新没有就插入;
所以这些结合到一起就是说,由于我的sql一直在循环插入数据,游标一直处于开启,而oracle默认的游标数是300,而我循环插入一直在开,而没有关闭,就崩了;
我在网上找到2种解决方案:
第一种就是增加oracle的最大游标数;(但大家说这指标不治本);
第二种就是在代码的循环处使用JDBC手动去关一下,释放掉(可以网上查一下相关的资料)
但我听了一个大神的建议,只是把500修改到了50,就好了……!!!!!!!
我只是在这里记录一下这次奇葩跑数经历,各路大神不喜勿碰~
边栏推荐
- Stm32h750vbt6 drives programmable gain amplifier module pga113 -- Hal Library Based on cubemx
- FPGA实现AXI4总线的读写
- File "manage.py", line 14) from exc ^ syntaxerror: cause and solution of invalid syntax error
- Take you to learn C step by step (second)
- B. Also Try Minecraft
- [PTA] group programming ladder competition - Summary of exercises L3 (incomplete)
- One book a day: machine learning and practice -- the road to the kaggle competition from scratch
- Gimp custom screenshot
- FPGA realizes reading and writing of axi4 bus
- 项目上线就炸,这谁受得了
猜你喜欢

One book a day: machine learning and practice -- the road to the kaggle competition from scratch

定制 or 通用,中国 SaaS 未来发展趋势是什么?

Decompress the anchor and enjoy 4000w+ playback, adding a new wind to the Kwai food track?

单点登录的三种实现方式

Riotboard development board series notes (IX) -- buildreoot porting matchbox

C language from entry to soil (III)

Ue4/5 cannot open the file "xxx.generated.h" (cannot open file xxx.generated.h) solution summary

AMD64(x86_64)架构abi文档:上

电子商务时代,企业社交电商转型要做什么?

Redis persistence
随机推荐
Chapter007-FPGA学习之IIC总线EEPROM读取
定制 or 通用,中国 SaaS 未来发展趋势是什么?
File “manage.py“, line 14 ) from exc ^ SyntaxError: invalid syntax出错的原因及解决方法
我的创作纪念日
QoS quality of service three DiffServ Model message marking and PHB
单场GMV翻了100倍,冷门品牌崛起背后的“通用法则”是什么?
8. Use the quadratic geometry technology to draw a small column on the screen.
django.db.utils.OperationalError: (2002, “Can‘t connect to local MySQL server through socket ‘/var/r
一首伟大的赞歌
C language from entry to soil (I)
Use dichotomy to find specific values from the array
Variables and data types (03)
Job search memo
Bookkeeping app: xiaoha bookkeeping 1 - production of welcome page
编译与调试(gcc,g++,gdb)
解压主播狂揽4000w+播放,快手美食赛道又添新风向?
csdn,是时候说再见!
开发系统选择路线
Part II - C language improvement_ 2. Memory partition
Decompress the anchor and enjoy 4000w+ playback, adding a new wind to the Kwai food track?