人生路,靠不得任何人,只能靠自己。那些该吃的苦,一点都不能少,那是我们通向未来必须要走的路,从泥泞不堪,布满荆棘的小道上迈步,才能踏上铺满鲜花的大道。
前言
作为一个开发人员虽然有时候对于数据库这方面操作的不是很多,大多数都是由DBA来操作,,但是如果你能把这些都掌握个差不多,那对你自己以后的发展绝对是添砖加瓦的,俗话说“技多不压身”,退一步来说,其实这些技巧对于开发人员来说学起来是特别简单的,只要自己肯去练一练、学一学。
表空间满了怎么办
DB2:增大表空间、增加容器
- 查看当前数据库表空间分配状况
- list tablespaces show detail
- 给原有的表空间扩容
- alter tablespace 表空间名称 resize(file '存储表空间路径表空间名称' 大小);
- 新增表空间
- alter tablespace 表空间名称 add(file '存储表空间路径表空间名称' 10g);
ORACLE:增大表空间、增加容器、设置成自动增长
- alter database datafile '存储表空间路径表空间名称' resize 100m;
- alter tablespace 表空间名称 add datafile '存储表空间路径表空间名称' size 50m;
- alter tablespace 表空间名称 add datafile '存储表空间路径表空间名称' size 50m autoextend on next 5m maxsize 100m;
- alter database datafile '存储表空间路径表空间名称' autoextend on next 5m maxsize 100m;
磁盘不足了怎么办
1.方法一:增加硬盘空间
2.方法二:数据清理或表空间收缩释放高水位达到可以缩小表空间大小
具体的办法内容过多,这里有限,需要的小伙伴可以关注、转发+评论然后私信我!
数据库无法连接怎么办
数据库无法连接原因有很多,一般检查步骤:
1、尝试连接,根据报告出来的错误信息再具体分析问题
2、查看日志,是否有报错信息提示:
- 应用跟踪:跑批日志跟踪/TOMCAT日志查看;
- 数据库日志跟踪:db2:db2diag.log
- orale:alert_.log
3、DB2查看数据库是否在自动恢复,一般意外或强行关闭可能会导致自动恢复,时间较长,命令:db2 list utilities show detail
表锁了怎么办
锁分类:
- 从数据库系统角度分为三种:排他锁、共享锁、更新锁。
- 从程序员角度分为两种:一种是悲观锁,一种乐观锁。
- 锁原因(通常发生成INSERT甥䑐呁EDELETE之间):
- A程序执行了对 tableA 的 insert ,并还未 commite时,B程序也对tableA 进行insert 则此时会发生资源正忙的异常就是锁表;
- 并发情况
避免死锁的办法:
- 减少INSERT甥䑐呁EDELETE的时间;
- 优化SQL执行效率;
- 对异常事务进行回滚;
- 加大死锁超时时间参数;DB2: LOCKTIMEOUT(锁定超时)LOCKLIST(分配给锁定列表的内存量)MAXLOCKS(应用程序挂起的锁定列表的百分比)
如何解锁
db2:
- 看看是否有锁住的进程
- list application for database SNPAS show detail
- KILL掉死锁的进程
- force application(进程号)
ORACLE:
- 查询死锁的会话并生成KILL掉命令DBA用户
- select 'alter system kill session '''||sn.sid||','||sn.serial#||''';'
- from v$session sn
- where sn.sid in (select lk.sid from v$lock lk);
结语
以上的内容都是些干货,但是也有一部分需要结合具体的案例才能够理解的很清楚,但是由于篇幅问题无法给大家介绍案例,不过如果需要的小伙伴可以转发、评论+关注,然后私信我“案例”即可获得~