问题描述:业务部门在10月26日发现某张基础表中丢失部分数据,系为9月份录入系统的基础数据丢失

Oracle RAC环境做的RMAN备份,10月18日做过expdp数据泵备份,丢失数据表名为T_GL_BALANCE,初始化表t_gl_balance_inibak

1. 查询数据操作记录

SQL>select t.SQL_TEXT, t.FIRST_LOAD_TIME from v$sqlarea t where t.FIRST_LOAD_TIME like '2019-10-%' order by t.FIRST_LOAD_TIME desc;

过滤出对T_GL_BALANCE数据表删除操作记录如下:

DELETE FROM T_GL_BALANCE WHERE (((FYEAR = :FNEXTYEAR AND FPERIOD = :FNEXTPERIOD) AND FACCOUNTBOOKID = :FACCOUNTBOOKID) AND FADJUSTPERIOD = 0) 2019-10-26/11:10:48
DELETE FROM T_GL_BALANCE WHERE (((FYEAR = :FYEAR AND FPERIOD = :FPERIOD) AND FACCOUNTBOOKID = :FACCOUNTBOOKID) AND FADJUSTPERIOD = 0) 2019-10-26/11:07:18
delete T_GL_BALANCE where T_GL_BALANCE.FACCOUNTBOOKID = :FACCOUNTBOOKID and T_GL_BALANCE.FACCOUNTID = :FACCOUNTID and T_GL_BALANCE.FYEAR = :FYEAR and T_GL_BALANCE.FPERIOD = :FPERIOD and T_GL_BALANCE.FCURRENCYID = :FCURRENCYID and T_GL_BALANCE.FDETAILID = :FDETAILID and T_GL_BALANCE.FADJUSTPERIOD = :FADJUSTPERIOD 2019-10-26/10:05:58
DELETE FROM T_GL_BALANCE WHERE EXISTS (SELECT 1 FROM TMP13ACDA3FF7C211E980B40050569 T1 WHERE ((((((t1.FAccountBookId = T_GL_BALANCE.FAccountBookId AND t1.FAccountId = T_GL_BALANCE.FAccountId) AND t1.FDetailId = T_GL_BALANCE.FDetailId) AND t1.FCurrencyId = T_GL_BALANCE.FCurrencyId) AND t1.FYear = T_GL_BALANCE.FYear) AND t1.FPeriod = T_GL_BALANCE.FPeriod) AND t1.FAdjustPeriod = T_GL_BALANCE.FAdjustPeriod)) 2019-10-26/15:25:20
DELETE FROM T_GL_BALANCE WHERE EXISTS (SELECT 1 FROM TMP9D482DDAF7C111E980B40050569 T1 WHERE ((((((t1.FAccountBookId = T_GL_BALANCE.FAccountBookId AND t1.FAccountId = T_GL_BALANCE.FAccountId) AND t1.FDetailId = T_GL_BALANCE.FDetailId) AND t1.FCurrencyId = T_GL_BALANCE.FCurrencyId) AND t1.FYear = T_GL_BALANCE.FYear) AND t1.FPeriod = T_GL_BALANCE.FPeriod) AND t1.FAdjustPeriod = T_GL_BALANCE.FAdjustPeriod)) 2019-10-26/15:22:03
DELETE FROM T_GL_BALANCE WHERE EXISTS (SELECT 1 FROM TMPF5CD11B1F7C011E980B40050569 T1 WHERE ((((((t1.FAccountBookId = T_GL_BALANCE.FAccountBookId AND t1.FAccountId = T_GL_BALANCE.FAccountId) AND t1.FDetailId = T_GL_BALANCE.FDetailId) AND t1.FCurrencyId = T_GL_BALANCE.FCurrencyId) AND t1.FYear = T_GL_BALANCE.FYear) AND t1.FPeriod = T_GL_BALANCE.FPeriod) AND t1.FAdjustPeriod = T_GL_BALANCE.FAdjustPeriod)) 2019-10-26/15:17:21
DELETE FROM T_GL_BALANCE WHERE EXISTS (SELECT 1 FROM TMP1D0C04A3F7B711E980B40050569 T1 WHERE ((((((t1.FAccountBookId = T_GL_BALANCE.FAccountBookId AND t1.FAccountId = T_GL_BALANCE.FAccountId) AND t1.FDetailId = T_GL_BALANCE.FDetailId) AND t1.FCurrencyId = T_GL_BALANCE.FCurrencyId) AND t1.FYear = T_GL_BALANCE.FYear) AND t1.FPeriod = T_GL_BALANCE.FPeriod) AND t1.FAdjustPeriod = T_GL_BALANCE.FAdjustPeriod)) 2019-10-26/14:06:52
DELETE FROM T_GL_BALANCE WHERE EXISTS (SELECT 1 FROM TMP7AAD91ECF7B311E980B40050569 T1 WHERE ((((((t1.FAccountBookId = T_GL_BALANCE.FAccountBookId AND t1.FAccountId = T_GL_BALANCE.FAccountId) AND t1.FDetailId = T_GL_BALANCE.FDetailId) AND t1.FCurrencyId = T_GL_BALANCE.FCurrencyId) AND t1.FYear = T_GL_BALANCE.FYear) AND t1.FPeriod = T_GL_BALANCE.FPeriod) AND t1.FAdjustPeriod = T_GL_BALANCE.FAdjustPeriod)) 2019-10-26/13:40:51
DELETE FROM T_GL_BALANCE WHERE EXISTS (SELECT 1 FROM TMP774CBE64F7B111E980B40050569 T1 WHERE ((((((t1.FAccountBookId = T_GL_BALANCE.FAccountBookId AND t1.FAccountId = T_GL_BALANCE.FAccountId) AND t1.FDetailId = T_GL_BALANCE.FDetailId) AND t1.FCurrencyId = T_GL_BALANCE.FCurrencyId) AND t1.FYear = T_GL_BALANCE.FYear) AND t1.FPeriod = T_GL_BALANCE.FPeriod) AND t1.FAdjustPeriod = T_GL_BALANCE.FAdjustPeriod)) 2019-10-26/13:26:26
DELETE FROM T_GL_BALANCE WHERE EXISTS (SELECT 1 FROM TMP0487A93FF7B111E980B40050569 T1 WHERE ((((((t1.FAccountBookId = T_GL_BALANCE.FAccountBookId AND t1.FAccountId = T_GL_BALANCE.FAccountId) AND t1.FDetailId = T_GL_BALANCE.FDetailId) AND t1.FCurrencyId = T_GL_BALANCE.FCurrencyId) AND t1.FYear = T_GL_BALANCE.FYear) AND t1.FPeriod = T_GL_BALANCE.FPeriod) AND t1.FAdjustPeriod = T_GL_BALANCE.FAdjustPeriod)) 2019-10-26/13:23:14
DELETE FROM T_GL_BALANCE WHERE EXISTS (SELECT 1 FROM TMPF586BB71F7B011E980B40050569 T1 WHERE ((((((t1.FAccountBookId = T_GL_BALANCE.FAccountBookId AND t1.FAccountId = T_GL_BALANCE.FAccountId) AND t1.FDetailId = T_GL_BALANCE.FDetailId) AND t1.FCurrencyId = T_GL_BALANCE.FCurrencyId) AND t1.FYear = T_GL_BALANCE.FYear) AND t1.FPeriod = T_GL_BALANCE.FPeriod) AND t1.FAdjustPeriod = T_GL_BALANCE.FAdjustPeriod)) 2019-10-26/13:22:49
DELETE FROM T_GL_BALANCE WHERE EXISTS (SELECT 1 FROM TMP7C479968F7B011E980B40050569 T1 WHERE ((((((t1.FAccountBookId = T_GL_BALANCE.FAccountBookId AND t1.FAccountId = T_GL_BALANCE.FAccountId) AND t1.FDetailId = T_GL_BALANCE.FDetailId) AND t1.FCurrencyId = T_GL_BALANCE.FCurrencyId) AND t1.FYear = T_GL_BALANCE.FYear) AND t1.FPeriod = T_GL_BALANCE.FPeriod) AND t1.FAdjustPeriod = T_GL_BALANCE.FAdjustPeriod)) 2019-10-26/13:19:28
DELETE FROM T_GL_BALANCE WHERE EXISTS (SELECT 1 FROM TMP6C2D55C5F7B011E980B40050569 T1 WHERE ((((((t1.FAccountBookId = T_GL_BALANCE.FAccountBookId AND t1.FAccountId = T_GL_BALANCE.FAccountId) AND t1.FDetailId = T_GL_BALANCE.FDetailId) AND t1.FCurrencyId = T_GL_BALANCE.FCurrencyId) AND t1.FYear = T_GL_BALANCE.FYear) AND t1.FPeriod = T_GL_BALANCE.FPeriod) AND t1.FAdjustPeriod = T_GL_BALANCE.FAdjustPeriod)) 2019-10-26/13:18:58
DELETE FROM T_GL_BALANCE WHERE EXISTS (SELECT 1 FROM TMP0DF8AC70F7B711E980B40050569 T1 WHERE ((((((t1.FAccountBookId = T_GL_BALANCE.FAccountBookId AND t1.FAccountId = T_GL_BALANCE.FAccountId) AND t1.FDetailId = T_GL_BALANCE.FDetailId) AND t1.FCurrencyId = T_GL_BALANCE.FCurrencyId) AND t1.FYear = T_GL_BALANCE.FYear) AND t1.FPeriod = T_GL_BALANCE.FPeriod) AND t1.FAdjustPeriod = T_GL_BALANCE.FAdjustPeriod)) 2019-10-26/14:06:26
DELETE FROM T_GL_BALANCE WHERE EXISTS (SELECT 1 FROM TMPB5F9D60EF7B511E980B40050569 T1 WHERE ((((((t1.FAccountBookId = T_GL_BALANCE.FAccountBookId AND t1.FAccountId = T_GL_BALANCE.FAccountId) AND t1.FDetailId = T_GL_BALANCE.FDetailId) AND t1.FCurrencyId = T_GL_BALANCE.FCurrencyId) AND t1.FYear = T_GL_BALANCE.FYear) AND t1.FPeriod = T_GL_BALANCE.FPeriod) AND t1.FAdjustPeriod = T_GL_BALANCE.FAdjustPeriod)) 2019-10-26/13:56:49
DELETE FROM T_GL_BALANCE WHERE EXISTS (SELECT 1 FROM TMPA1CD916AF7B511E980B40050569 T1 WHERE ((((((t1.FAccountBookId = T_GL_BALANCE.FAccountBookId AND t1.FAccountId = T_GL_BALANCE.FAccountId) AND t1.FDetailId = T_GL_BALANCE.FDetailId) AND t1.FCurrencyId = T_GL_BALANCE.FCurrencyId) AND t1.FYear = T_GL_BALANCE.FYear) AND t1.FPeriod = T_GL_BALANCE.FPeriod) AND t1.FAdjustPeriod = T_GL_BALANCE.FAdjustPeriod)) 2019-10-26/13:56:15
DELETE FROM T_GL_BALANCE WHERE (FAccountBookId = :FAccountBookId AND (((((FAccountId IN (102520)) AND (((FYear * 100) + FPeriod) BETWEEN :FMin AND :FMax)) AND (FCurrencyId = :FCurrencyId OR FCurrencyId = 0)) AND (FDetailId >= 0)) AND EXISTS (SELECT 1 FROM T_GL_BALANCE T1 WHERE ((T_GL_BALANCE.FDetailId = t1.FDetailId AND t1.FAccountBookId = :FBookId) AND (((t1.FAccountId IN (102520)) AND (((t1.FYear * 100) + t1.FPeriod) BETWEEN :FYearMin AND :FYearMax)) AND t1.FCurrencyId = :FCyId))))) 2019-10-26/14:06:51
DELETE FROM T_GL_BALANCE WHERE (FAccountBookId = :FAccountBookId AND (((((FAccountId IN (102509)) AND (((FYear * 100) + FPeriod) BETWEEN :FMin AND :FMax)) AND (FCurrencyId = :FCurrencyId OR FCurrencyId = 0)) AND (FDetailId >= 0)) AND EXISTS (SELECT 1 FROM T_GL_BALANCE T1 WHERE ((T_GL_BALANCE.FDetailId = t1.FDetailId AND t1.FAccountBookId = :FBookId) AND (((t1.FAccountId IN (102509)) AND (((t1.FYear * 100) + t1.FPeriod) BETWEEN :FYearMin AND :FYearMax)) AND t1.FCurrencyId = :FCyId))))) 2019-10-26/13:56:14
DELETE FROM T_GL_BALANCE WHERE (FAccountBookId = :FAccountBookId AND (((((FAccountId IN (4123)) AND (((FYear * 100) + FPeriod) BETWEEN :FMin AND :FMax)) AND (FCurrencyId = :FCurrencyId OR FCurrencyId = 0)) AND (FDetailId >= 0)) AND EXISTS (SELECT 1 FROM T_GL_BALANCE T1 WHERE ((T_GL_BALANCE.FDetailId = t1.FDetailId AND t1.FAccountBookId = :FBookId) AND (((t1.FAccountId IN (4123)) AND (((t1.FYear * 100) + t1.FPeriod) BETWEEN :FYearMin AND :FYearMax)) AND t1.FCurrencyId = :FCyId))))) 2019-10-26/10:47:49
DELETE FROM T_GL_BALANCE WHERE (FAccountBookId = :FAccountBookId AND (((((FAccountId IN (4002)) AND (((FYear * 100) + FPeriod) BETWEEN :FMin AND :FMax)) AND (FCurrencyId = :FCurrencyId OR FCurrencyId = 0)) AND (FDetailId >= 0)) AND EXISTS (SELECT 1 FROM T_GL_BALANCE T1 WHERE ((T_GL_BALANCE.FDetailId = t1.FDetailId AND t1.FAccountBookId = :FBookId) AND (((t1.FAccountId IN (4002)) AND (((t1.FYear * 100) + t1.FPeriod) BETWEEN :FYearMin AND :FYearMax)) AND t1.FCurrencyId = :FCyId))))) 2019-10-26/10:05:42
DELETE FROM T_GL_BALANCE WHERE (FAccountBookId = :FAccountBookId AND (((((FAccountId IN (103033)) AND (((FYear * 100) + FPeriod) BETWEEN :FMin AND :FMax)) AND (FCurrencyId = :FCurrencyId OR FCurrencyId = 0)) AND (FDetailId >= 0)) AND EXISTS (SELECT 1 FROM T_GL_BALANCE T1 WHERE ((T_GL_BALANCE.FDetailId = t1.FDetailId AND t1.FAccountBookId = :FBookId) AND (((t1.FAccountId IN (103033)) AND (((t1.FYear * 100) + t1.FPeriod) BETWEEN :FYearMin AND :FYearMax)) AND t1.FCurrencyId = :FCyId))))) 2019-10-25/11:34:36
DELETE FROM T_GL_BALANCE WHERE (FAccountBookId = :FAccountBookId AND (((((FAccountId IN (4007)) AND (((FYear * 100) + FPeriod) BETWEEN :FMin AND :FMax)) AND (FCurrencyId = :FCurrencyId OR FCurrencyId = 0)) AND (FDetailId >= 0)) AND EXISTS (SELECT 1 FROM T_GL_BALANCE T1 WHERE ((T_GL_BALANCE.FDetailId = t1.FDetailId AND t1.FAccountBookId = :FBookId) AND (((t1.FAccountId IN (4007)) AND (((t1.FYear * 100) + t1.FPeriod) BETWEEN :FYearMin AND :FYearMax)) AND t1.FCurrencyId = :FCyId))))) 2019-10-25/10:54:58
DELETE FROM T_GL_BALANCE WHERE (FAccountBookId = :FAccountBookId AND (((((FAccountId IN (104653)) AND (((FYear * 100) + FPeriod) BETWEEN :FMin AND :FMax)) AND (FCurrencyId = :FCurrencyId OR FCurrencyId = 0)) AND (FDetailId >= 0)) AND EXISTS (SELECT 1 FROM T_GL_BALANCE T1 WHERE ((T_GL_BALANCE.FDetailId = t1.FDetailId AND t1.FAccountBookId = :FBookId) AND (((t1.FAccountId IN (104653)) AND (((t1.FYear * 100) + t1.FPeriod) BETWEEN :FYearMin AND :FYearMax)) AND t1.FCurrencyId = :FCyId)))))

推断数据丢失发生在10月25、26日这两天

2. expdp数据泵备份还原至测试库

impdp user/passwd@localhost:1521/kdtest directory=dump dumpfile=dump191018.dump logfile=dump191018.log

3. 将T_GL_BALANCE表测试库导出,然后导入至正式库

测试库导出

expdp user/passwd@localhost:1521/kdtest tables=t_gl_balance_inibak directory=dump dumpfile=dump19102801.dump logfile=dump19102801.log

正式库导入

impdp user/passwd@scan-ip:1521/实例名 directory=dump dumpfile=dump19102801.dump logfile=dump19102801.log remap_table=t_gl_balance_inibak:tmp_t_gl_balance_inibak cluster=n;

remap_table设置表名重命名,以下为拷贝参数设置介绍:

REMAP_DATA 指定数据转换函数,例如REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO
REMAP_DATAFILE 在所有DDL语句中重新定义数据文件引用。

REMAP_SCHEMA 将一个方案中的对象加载到另一个方案。

REMAP_TABLE 表名重新映射到另一个表,例如 REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。

REMAP_TABLESPACE 将表空间对象重新映射到另一个表空间。

REUSE_DATAFILES 如果表空间已存在, 则将其初始化 (N)。

REMAP_SCHEMA参数

众所周知:IMP工具的FROMUSER和TOUSER参数可以实现将一个用户的的数据迁移到另外一个用户。
  

impdp数据泵使用REMAP_SCHEMA参数来实现不同用户之间的数据迁移;
  

语法:
  

   REMAP_SCHEMA=source_schema:target_schema
  

   impdp orcldev/oracle DIRECTORY=backup_path DUMPFILE=oracldev.dmp REMAP_SCHEMA=orcldev:orcltwo
  

与REMAP_SCHEMA类似的参数选项,如REMAP_TABLESPACE将源表空间的所有对象导入目标表空间。

REMAP_TABLE参数

将源表数据映射到不同的目标表中
  

  impdp orcldev/oracle DIRECTORY=backup_path dumpfile=oracldev.dmp remap_table=TAB_TEST:TEST_TB
  

数据导入到TEST_TB表中,但是该表的索引等信息并没有相应的创建,需要手工初始化。

REMAP_DATAFILE参数

语法:REMAP_DATAFILE=source_datafile:target_datafile
  

Oracle_Online:
  

  Remapping datafiles is useful when you move databases between platforms that have different file naming conventions. The source_datafile and target_datafile names should be exactly as you want them to appear in the SQL statements where they are referenced. Oracle recommends that you enclose datafile names in quotation marks to eliminate ambiguity on platforms for which a colon is a valid file specification character.

4. 查找丢失数据,导入正式库表T_GL_BALANCE中

SQL> alter table tmp_t_gl_balance_inibak drop column FYEARPERIOD;               --删除自动生成的唯一字段

SQL> insert into t_gl_balance select * from tmp_t_gl_balance_inibak where faccountbookid=151508;    --插入查询结果时少字段

SQL> alter table tmp_t_gl_balance_inibak add FYEARPERIOD NUMBER;                                           --将删除字段加回来

SQL> insert into t_gl_balance select * from tmp_t_gl_balance_inibak where faccountbookid=151508;         --插入查询结果时报错

ORA-11523: Message 11523 not found;  product=RDBMS; facility=ORA   google没有找到对应报错

直接在数据库服务器上操作:

sqlplus user/passwd@scan-ip/实例名

SQL> insert into t_gl_balance select * from tmp_t_gl_balance_inibak where faccountbookid=151508;

ORA-54013: INSERT operation disallowed on virtual columns  报错已经很明显了,通过指定列名来进行插入

SQL> insert into t_gl_balance(FACCOUNTBOOKID,FYEAR,FPERIOD,FACCOUNTID,FDETAILID,FCURRENCYID,FBEGINBALANCEFOR,FBEGINBALANCE,FDEBITFOR,FDEBIT,FCREDITFOR,FCREDIT,FYTDDEBITFOR,FYTDDEBIT,FYTDCREDITFOR,FYTDCREDIT,FENDBALANCEFOR,FENDBALANCE,FADJUSTPERIOD) select FACCOUNTBOOKID,FYEAR,FPERIOD,FACCOUNTID,FDETAILID,FCURRENCYID,FBEGINBALANCEFOR,FBEGINBALANCE,FDEBITFOR,FDEBIT,FCREDITFOR,FCREDIT,FYTDDEBITFOR,FYTDDEBIT,FYTDCREDITFOR,FYTDCREDIT,FENDBALANCEFOR,FENDBALANCE,FADJUSTPERIOD from tmp_t_gl_balance_inibak where faccountbookid=151508;

插入成功,将其他丢失数据批量恢复

5. 问题原因及问题出现的操作和时间节点

原因:业务系统BUG,反过账操作会将前一期数据清除

SQL>select  to_char(FDATETIME,'YYYY-MM-DD HH24:mi:ss'),FDESCRIPTION,FCLIENTIP  from t_bas_operatelog where fdescription like  '%过账%' and to_char(FDATETIME,'YYYY-MM-DD') in ('2019-10-25','2019-10-26');

SQL>select  to_char(FDATETIME,'YYYY-MM-DD HH24:mi:ss'),FDESCRIPTION,FCLIENTIP  from t_bas_operatelogbk where fdescription like  '%过账%' and to_char(FDATETIME,'YYYY-MM-DD') in ('2019-10-25','2019-10-26');

通过日志追溯到了时间及具体操作等,接下来就是让业务系统厂家打补丁了。

Oracle RAC业务bug导致部分数据丢失处理的更多相关文章

  1. Oracle RAC的五大优势及其劣势

    Oracle RAC的五大优势及其劣势 不同的集群产品都有自己的特点,RAC的特点包括如下几点: 双机并行.RAC是一种并行模式,并不是传统的主备模式.也就是说,RAC集群的所有成员都可以同时接收客户 ...

  2. oracle rac理解和用途扩展

    Oracle RAC的优势在于利用多个节点(数据库实例)组成一个数据库,这样在保证了数据库高可用性的情况下更充分的利用了多个主机的性能,而且可以通过增加节点进行性能的扩展.实现Oracle RAC需要 ...

  3. Vmware Workstation实现CentOS6.10_x64 下ORACLE RAC 11.2.0.4的搭建

    想必大家在学习ORACLE 11g时,都想搭建一个RAC的实验环境.在搭建RAC实验环境时,会碰到诸如IP怎么规划.虚拟机环境下怎么共享磁盘.ASM磁盘创建,以及安装过程中会遇到这样那样的问题.搭建一 ...

  4. 《Oracle RAC性能优化》

    一 RAC环境 RAC架构,2节点信息 节点1 SQL> show parameter instance NAME                                 TYPE    ...

  5. Oracle RAC集群体系结构

    一. Oracle集群体系结构 Oracle RAC,全称是Oracle Real Application Cluster,即真正的应用集群,是oracle提供的一个并行集群系统,整个集群系统由Ora ...

  6. bay——Oracle RAC集群体系结构.docx

    Oracle RAC集群体系结构 ————bayaim  2018年10月22日13:33 https://blog.51cto.com/ixdba/862207  一. Oracle集群体系结构 O ...

  7. 更改oracle RAC public ip,vip,scan ip和private ip

    更改oracle RAC public ip,vip,scan ip和private ip oifcfg - Oracle 接口配置工具 用法:  oifcfg iflist [-p [-n]]    ...

  8. Oracle RAC客户端tnsnames.ora相关配置及测试

    1.Oracle RAC服务端/etc/hosts部分内容如下 2.查看服务端的local_listener和remote_listener参数 3.客户端tnsnames.ora配置参考 3.1 1 ...

  9. oracle rac安装

    http://blog.chinaunix.net/xmlrpc.php?r=blog/article&id=4681351&uid=29655480 参考 1.百度文库中的收藏 2. ...

随机推荐

  1. 2.转发。基于itchat的微信消息同步机器人

    原文:https://www.jianshu.com/p/7aeadca0c9bd# 看到了该网址有基于itchat的微信消息同步机器人,转过来继续研究.以下是转过来的: 最近 全栈数据工程师养成攻略 ...

  2. bzoj3028食物 关于(1+x+x2+x3+x4+...)^k的第i项系数就是c(i+k−1,k−1)的证明

    关于(1+x+x2+x3+x4+...)^k的第i项系数就是c(i+k−1,k−1)的证明对于第i项,假设为5x^5=x^0*x^5x^5=x^1*x^4x^5=x^2*x^3........也就是说 ...

  3. Fabric CA/数字证书管理

    MSP(Membership Service Provider)成员管理服务提供商 名词: 1.CSR(Cerificate Signing Request):证书签署请求文件 CSR里包含申请者的 ...

  4. clearfix:after 的用法

    想要清除浮动就要在父元素上 加上 clearfix:after .clearfix:after { <----在类名为“clearfix”的元素内最后面加入内容: content: " ...

  5. 005 gcc 的简单使用

    0. 前言 本文主要讲关于 gcc 的几种编译方式 不妨设文件名为 test.c 1. 方法一 $ gcc test.c (Windows OS)编译成功的话,没有回馈,在 test.c 所在的文件夹 ...

  6. CM使用MySQL数据库预处理scm_prepare_database.sh执行报错:java.sql.SQLException: Access denied for user 'scm'@'hadoop101.com' (using password: YES)

    1.报错提示: [root@hadoop101 ~]# /opt/module/cm/cm-/share/cmf/schema/scm_prepare_database.sh mysql cm -hh ...

  7. Java数据结构之递归(Recursion)

    1. 递归解决问题 各种数学问题如:8皇后问题,汉诺塔,阶乘问题,迷宫问题,球和篮子的问题(google编程大赛) 各种算法中也会使用到递归,比如快速排序,归并排序,二分查找,分治算法等 将用栈解决的 ...

  8. spring boot @Transactional的一个小坑

    同一个类Service下,有两个函数 method_1和 method_2,且method_1内部调用了method_2,那么希望method_2内部意外时,数据库回滚,那么一定要在method_1上 ...

  9. 2019JS必看面试题

    2019JS必看面试题:https://www.jianshu.com/p/f1f39d5b2a2e 1. javascript的typeof返回哪些数据类型. 答案:string,boolean,n ...

  10. CentOS卸载lamp环境的步骤

    学习PHP的时候需要在CentOS系统下安装lamp环境,安装容易卸载就没那么简单了,因为lamp由Apache.MySQL.PHP三个部分构成,需要逐个卸载,小编就给大家介绍下CentOS卸载lam ...