Alei Blog

保持简单

Oracle insert忽略重复记录

向Oracle数据库中插入记录,但是有部分数据在库中已存在 场景 插入数据报错,提示唯一性约束冲突 插入的数据由中间件通过网络取得,并不清楚取得的数据和数据库中的数据是否存在唯一性冲突 需求是,存在冲突,就不插入 方案一 利用Oracle的Comments -- 假设表名是t_employees, 冲突的索引名是i_employees_code ...

Java asychronous execution

网络请求,响应很慢,采用异步调用,避免阻塞 ExecutorService 举例:企业系统调用银行付款接口 // 调用银行付款接口,响应较慢,采用异步 ExecutorService executor = Executors.newCachedThreadPool(); Future<String> future = executor.submit(ne...

Oracle DBA手记:无法使用AWR

数据库调优,但是AWR无法正常使用 查看AWR 使用Oracle sql developer 打开dba窗口,菜单栏-View-DBA 新建连接,要求用户具有DBA权限 Connections-Connection-Performance-AWR-AWR Report View 选择snapshot id,显示空白,无法正常使用 检查信息统计的级别 ...

Oracle drop if exists

参考https://stackoverflow.com/questions/1799128/oracle-if-table-exists 场景 删除表,视图等对象时,静默执行,不返回报错信息 类似dorp table if exists,语句可反复执行 开发人员编写sql,让实施人员执行 直接写drop table abc,如果abc表已经被删除或者不存在,返回...

java读取.properties文件

场景 读取.properties配置文件 代码示例 myconfig.properties文件路径是工程下的classes/tech/alei/boot/conf/myconfig.properties 文件编码是utf-8,需要注意处理中文乱码 package tech.alei.boot; import java.io.FileNotFoundExc...

Oracle,解除死锁

场景 数据库可能发生死锁了,重启数据库是最简单粗暴的方案 有时没有服务器的权限,有时甲方使用小型机导致条件严苛,不能重启数据库,只能死磕数据库的锁 排查数据库死锁 查询表锁定 select c.sid , c.serial# , a.oracle_username , a.os_user_name , b.object_nam...

Oracle,lock mode

场景 有时中间件并发量很大,会提示单据/数据库锁定 这个时候,需要排查中间件的业务锁,事务锁,也需要排查数据库的锁 排查数据库死锁 查询表锁定 select c.sid , c.serial# , a.oracle_username , a.os_user_name , b.object_name , a.locked_mod...

Oracle,删除表中千万条数据

场景 当表中存在数百万条以上的数据,sql执行的时间急剧增加 我的一次实践,依次删除某张表中的部分数据,然后统计该表的数据量。5200万条,查询耗时120.3秒;2800万条,查询耗时45.6秒;488万条,查询耗时10.9秒;177万条,查询耗时0.17秒 为提升性能,决定删除该表其中大部分过期的数据。业务需要,仍保留近期的数据 因为该表存在多个索引,删除数据耗时远超过...

Git删除提交历史,重新开始

场景 在项目提交过许多次后,发现之前的提交中走了弯路,或者数据库密码等敏感信息也被提交了,现在想彻底删除提交历史,将现有状态当作起点,重新开始 fork了一个项目,不想继承提交历史 操作 基于现有分支,创建孤儿分支temp,也就是没有提交历史的分支 git checkout --orphan temp temp分支中,添加文件 gi...

防火墙放开端口

场景 服务器启用防火墙之后,需要放开对应的端口,客户端才能正常访问服务器上的应用 Windows Windows放开端口 控制面板-Windows防火墙-高级设置-入站规则,新建规则 选择“端口”,点击下一步 输入端口号,比如“8080”,点击下一步 选择“允许连接”,点击下一步 选择“域”、“专用”、“公用”,点击下一步 名称输入“tcp-8080”,点击完成...