第六章:手工不完全恢复

1、不完全恢复的特点:让整个database 回到过去某个时间点,不能避免数据丢失

2、不完全恢复(Incomplete recover) 使用环境:
       1)过去的某个时间点重要的table被破坏
       2)在做完全恢复时,丢失了归档日志或当前 online redo log
       3)当误删除了表空间(有备份)
       4)丢失了所有的控制文件,用备份的控制文件恢复
       
        
3、不完全恢复的类型:
      1)基于时间点或 基于change (scn)的不完全恢复:用于恢复过去时间点误操作的table
      2)基于cancel :用于归档日志或当前redo log 丢失,不能做完全恢复
      3)基于备份的controlfile:用于表空间的恢复

4、不完全恢复的操作步骤:
      1)先对现在的database做全备
      2)通过logmnr 找到误操作的时间点
      3)转储所有的datafile
      4)在mount状态下,对database做recover,恢复到过去的时间点
      5)将恢复出来的table做逻辑备份
      6)再对database做完全恢复
      
5、logminer 工具的使用
     -------对redo log 进行挖掘,找出在某个时间点所作的DDL 或DML 操作(包括:时间点、datablock scn 、sql语句)
   1)对DML 分析
   
   04:56:30 SQL> select * from test;

ID
----------
         1
         2
         3
         4
         5
         6
         7
         8

8 rows selected.

04:56:40 SQL> delete from test;

8 rows deleted.

04:56:48 SQL> commit;

Commit complete.

04:56:50 SQL> insert into test values (111);

1 row created.

04:57:44 SQL> insert into test values (222);

1 row created.

04:57:47 SQL> insert into test values (333);

1 row created.

04:57:49 SQL> commit;

Commit complete.

04:57:51 SQL> select * from test;

ID
----------
       111
       222
       333

04:57:57 SQL>

04:57:01 SQL> select * from v$log;

GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
         1          1          4   52428800          1 NO  CURRENT                1255988 16-AUG-11
         2          1          2   52428800          1 YES INACTIVE               1252334 16-AUG-11
         3          1          3   52428800          1 YES INACTIVE               1255986 16-AUG-11

04:57:06 SQL> alter system archive log current;

System altered.

04:57:21 SQL> select * from v$log;

GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
         1          1          4   52428800          1 YES ACTIVE                 1255988 16-AUG-11
         2          1          5   52428800          1 NO  CURRENT                1259738 17-AUG-11
         3          1          3   52428800          1 YES INACTIVE               1255986 16-AUG-11

04:57:22 SQL>

2)启用logmnr
-------添加database补充日志
04:59:50 SQL> alter database add supplemental log data;

Database altered.

----------查询日志(归档和当前日志)
04:57:21 SQL> select * from v$log;

GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
         1          1          4   52428800          1 YES ACTIVE                 1255988 16-AUG-11
         2          1          5   52428800          1 NO  CURRENT                1259738 17-AUG-11
         3          1          3   52428800          1 YES INACTIVE               1255986 16-AUG-11

05:00:46 SQL> select member from v$logfile;

MEMBER
------------------------------------------------------------------------------------------------------------------------
/u01/app/oracle/oradata/prod/redo03.log
/u01/app/oracle/oradata/prod/redo02.log
/u01/app/oracle/oradata/prod/redo01.log

05:00:47 SQL> select name from v$archived_log;

NAME
------------------------------------------------------------------------------------------------------------------------
/disk1/arch/prod/arch_38_1_758481658.log
/disk1/arch/prod/arch_39_1_758481658.log
/disk1/arch/prod/arch_40_1_758481658.log
/disk1/arch/prod/arch_41_1_758481658.log
/disk1/arch/prod/arch_42_1_758481658.log
/disk1/arch/prod/arch_43_1_758481658.log
/disk1/arch/prod/arch_44_1_758481658.log
/disk1/arch/prod/arch_45_1_758481658.log
/disk1/arch/prod/arch_46_1_758481658.log
/disk1/arch/prod/arch_2_1_759309442.log
/disk1/arch/prod/arch_3_1_759309442.log
/disk1/arch/prod/arch_4_1_759309442.log

46 rows selected.

----------添加日志,分析
05:00:56 SQL> execute dbms_logmnr.add_logfile(logfilename=>'/disk1/arch/prod/arch_4_1_759309442.log',options=>dbms_logmnr.new);

PL/SQL procedure successfully completed.

05:02:58 SQL> execute dbms_logmnr.add_logfile(logfilename=>'/u01/app/oracle/oradata/prod/redo02.log',options=>dbms_logmnr.addfile);

PL/SQL procedure successfully completed.

----------执行logmnr 分析
05:02:58 SQL>execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);

PL/SQL procedure successfully completed.
 
 --------查询分析结果
 
 05:23:33 SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered.
     
05:06:13 SQL> COL SQL_REDO FOR A50                                                                                                       
05:06:21 SQL> R                                                                                                                          
  1* select username,scn,timestamp,sql_redo from v$logmnr_contents where seg_name='TEST'

USERNAME                              SCN TIMESTAMP           SQL_REDO
------------------------------ ---------- ------------------- --------------------------------------------------
                                  1259691 2011-08-17 04:56:50 delete from "SCOTT"."TEST" where "ID" = '4' and RO
                                                              WID = 'AAAM3bAACAAAAA/AAA';

1259691 2011-08-17 04:56:50 delete from "SCOTT"."TEST" where "ID" = '5' and RO
                                                              WID = 'AAAM3bAACAAAAA/AAB';

1259691 2011-08-17 04:56:50 delete from "SCOTT"."TEST" where "ID" = '6' and RO
                                                              WID = 'AAAM3bAACAAAAA/AAC';

1259691 2011-08-17 04:56:50 delete from "SCOTT"."TEST" where "ID" = '7' and RO
                                                              WID = 'AAAM3bAACAAAAA/AAD';

1259691 2011-08-17 04:56:50 delete from "SCOTT"."TEST" where "ID" = '8' and RO
                                                              WID = 'AAAM3bAACAAAAA/AAE';

05:06:25 SQL> 
     
---------结束日志分析

05:06:25 SQL> execute dbms_logmnr.end_logmnr;

PL/SQL procedure successfully completed.

2)对DDL 操作分析

04:57:57 SQL> drop table test purge;

Table dropped.

05:09:39 SQL> create table test (id int ) tablespace test;

Table created.

05:09:55 SQL> insert into test values (1) ;

1 row created.

05:10:01 SQL> commit;

Commit complete.

---------设置logmnr 参数,存放数据字典文件
[oracle@work prod]$ mkdir /home/oracle/logmnr

05:11:28 SQL> show parameter utl

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
create_stored_outlines               string
utl_file_dir                         string
05:11:31 SQL> alter system set utl_file_dir='/home/oracle/logmnr' scope=spfile;

System altered.

05:11:48 SQL> startup force                                                                                                              
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              79693200 bytes
Database Buffers          230686720 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
05:12:08 SQL> show parameter utl

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
create_stored_outlines               string
utl_file_dir                         string      /home/oracle/logmnr
05:12:13 SQL>

---------建立数据字典文件dict.ora
05:12:13 SQL> execute dbms_logmnr_d.build('dict.ora','/home/oracle/logmnr',dbms_logmnr_d.store_in_flat_file);

PL/SQL procedure successfully completed.

---------查看日志信息
05:13:46 SQL> col name for a50                                                                                                           
05:13:52 SQL> r                                                                                                                          
  1* select name,sequence# from v$archived_log
NAME                                                SEQUENCE#
-------------------------------------------------- ----------
/disk1/arch/prod/arch_38_1_758481658.log                   38
/disk1/arch/prod/arch_39_1_758481658.log                   39
/disk1/arch/prod/arch_40_1_758481658.log                   40
/disk1/arch/prod/arch_41_1_758481658.log                   41
/disk1/arch/prod/arch_42_1_758481658.log                   42
/disk1/arch/prod/arch_43_1_758481658.log                   43
/disk1/arch/prod/arch_44_1_758481658.log                   44
/disk1/arch/prod/arch_45_1_758481658.log                   45
/disk1/arch/prod/arch_46_1_758481658.log                   46
/disk1/arch/prod/arch_2_1_759309442.log                     2
/disk1/arch/prod/arch_3_1_759309442.log                     3
/disk1/arch/prod/arch_4_1_759309442.log                     4
/disk1/arch/prod/arch_5_1_759309442.log                     5

47 rows selected.
   
     05:14:24 SQL> select * from v$log;

GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
         1          1          4   52428800          1 YES INACTIVE               1255988 16-AUG-11
         2          1          5   52428800          1 YES INACTIVE               1259738 17-AUG-11
         3          1          6   52428800          1 NO  CURRENT                1280754 17-AUG-11

05:14:38 SQL> col member for a60                                                                                                         
05:14:43 SQL>                                                                                                                         
  1* select group#,member from v$logfile

GROUP# MEMBER
---------- ------------------------------------------------------------
         3 /u01/app/oracle/oradata/prod/redo03.log
         2 /u01/app/oracle/oradata/prod/redo02.log
         1 /u01/app/oracle/oradata/prod/redo01.log

05:14:43 SQL>

-------------添加日志分析

05:14:43 SQL> execute dbms_logmnr.add_logfile(logfilename=>'/u01/app/oracle/oradata/prod/redo03.log',options=>dbms_logmnr.new);

PL/SQL procedure successfully completed.

05:20:59 SQL> execute dbms_logmnr.add_logfile(logfilename=>'/disk1/arch/prod/arch_5_1_759309442.log',options=>dbms_logmnr.addfile);

PL/SQL procedure successfully completed.

------------执行分析

05:16:08 SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmnr/dict.ora',options=>dbms_logmnr.ddl_dict_tracking);

PL/SQL procedure successfully completed.

----------查看分析结果

05:23:33 SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered.

05:22:55 SQL> select username,scn,timestamp,sql_redo from v$logmnr_contents                                                              
05:22:57   2  WHERE USERNAME ='SCOTT' and lower(sql_redo) like '%table%';

USERNAME                              SCN TIMESTAMP           SQL_REDO
------------------------------ ---------- ------------------- --------------------------------------------------
SCOTT                             1260664 2011-08-17 05:09:38 drop table test purge;
SCOTT                             1260698 2011-08-17 05:09:55 create table test (id int ) tablespace test;

05:23:33 SQL>

05:06:25 SQL> execute dbms_logmnr.end_logmnr;

PL/SQL procedure successfully completed.

不完全恢复案例:

案例1:

------------恢复过去某个时间点误操作的table
1)基于时间点
05:06:13 SQL> COL SQL_REDO FOR A50                                                                                                       
05:06:21 SQL> R                                                                                                                          
  1* select username,scn,timestamp,sql_redo from v$logmnr_contents where seg_name='TEST'

USERNAME                              SCN TIMESTAMP           SQL_REDO
------------------------------ ---------- ------------------- --------------------------------------------------
                                  1259691 2011-08-17 04:56:50 delete from "SCOTT"."TEST" where "ID" = '4' and RO
                                                              WID = 'AAAM3bAACAAAAA/AAA';

1259691 2011-08-17 04:56:50 delete from "SCOTT"."TEST" where "ID" = '5' and RO
                                                              WID = 'AAAM3bAACAAAAA/AAB';

1259691 2011-08-17 04:56:50 delete from "SCOTT"."TEST" where "ID" = '6' and RO
                                                              WID = 'AAAM3bAACAAAAA/AAC';

1259691 2011-08-17 04:56:50 delete from "SCOTT"."TEST" where "ID" = '7' and RO
                                                              WID = 'AAAM3bAACAAAAA/AAD';

1259691 2011-08-17 04:56:50 delete from "SCOTT"."TEST" where "ID" = '8' and RO
                                                              WID = 'AAAM3bAACAAAAA/AAE';
                                                              
     ------通过以上logmnr 分析,将test表恢复到delete 之前(time:2011-08-17 04:56:50)
     
     
     05:33:23 SQL> select * from test;

ID
----------
         1
         
  ----------test 表现有的数据
  
----------将database启动到mount ,进行restore 和recover
05:35:38 SQL> conn /as sysdba                                                                                                            
Connected.
05:35:46 SQL> 
05:35:46 SQL> shutdown immediate                                                                                                         
Database closed.
Database dismounted.
ORACLE instance shut down.
05:36:14 SQL> 
05:36:14 SQL> startup mount                                                                                                              
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              71304592 bytes
Database Buffers          239075328 bytes
Redo Buffers                2973696 bytes
Database mounted.
05:37:18 SQL> 
----------restore 所有的datafile 
[oracle@work ~]$ cp /disk1/backup/prod/close_bak/*.dbf /u01/app/oracle/oradata/prod/

---------基于时间的恢复(时间点为logmnr查询的时间)

05:40:13 SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered.
05:41:05 SQL> recover database until time '2011-08-17 04:56:50';                                                                         
Media recovery complete.

查看告警日志:
ALTER DATABASE RECOVER  database until time '2011-08-17 04:56:50'  
Wed Aug 17 05:41:10 2011
Media Recovery Start
Wed Aug 17 05:41:10 2011
Recovery of Online Redo Log: Thread 1 Group 1 Seq 4 Reading mem 0
  Mem# 0 errs 0: /u01/app/oracle/oradata/prod/redo01.log
Wed Aug 17 05:41:12 2011
Incomplete Recovery applied until change 1259690
Wed Aug 17 05:41:12 2011
Media Recovery Complete (prod)
Completed: ALTER DATABASE RECOVER  database until time '2011-08-17 04:56:50'  
Wed Aug 17 05:41:59 2011

-----------验证

05:41:13 SQL> alter database open resetlogs;

Database altered.

05:42:23 SQL> select * from scott.test;

ID
----------
         1
         2
         3
         4
         5
         6
         7
         8

8 rows selected.

案例2:
-----------恢复过去某个时间点误操作的表
1)基于change (scn)
05:45:41 SQL> truncate table scott.test;

Table truncated.

05:45:52 SQL> insert into scott.test values (11);

1 row created.

05:46:05 SQL> insert into scott.test values (22);

1 row created.

05:46:07 SQL> insert into scott.test values (33);

1 row created.

05:46:09 SQL> commit;

Commit complete.

05:46:11 SQL> select * from scott.test;

ID
----------
        11
        22
        33

05:46:16 SQL>

--------通过logmr 分析出误操作的scn
05:52:30 SQL> select current_scn from v$database;        //datablock 记录的scn

CURRENT_SCN
-----------
    1260285
    
 ------------test 表里的记录
 05:52:12 SQL> select * from scott.test;

ID
----------
         1
         2
         3
         4
         5
         6
         7
         8

8 rows selected

05:52:47 SQL> truncate table scott.test;

Table truncated

05:54:18 SQL> insert into scott.test values (11);

1 row created.

05:54:22 SQL> insert into scott.test values (22);

1 row created.

05:54:24 SQL> insert into scott.test values (33);

1 row created.

05:54:25 SQL> commit;

Commit complete.

05:54:26 SQL>

进行基于change的恢复:
---------在mount状态,进行restore 和recover
-------restore 所有的datafile
05:46:16 SQL> startup force mount                                                                                                        
ORACLE instance started.

Total System Global Area  314572800 bytes
Fixed Size                  1219184 bytes
Variable Size              71304592 bytes
Database Buffers          239075328 bytes
Redo Buffers                2973696 bytes
Database mounted.
05:48:07 SQL>
[oracle@work ~]$ cp /disk1/backup/prod/close_bak/*.dbf /u01/app/oracle/oradata/prod/

05:55:07 SQL> select file#,checkpoint_change# from v$datafile;

FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            1260061
         2            1260061
         3            1260061
         4            1260061
         5            1260061
         6            1260061
         7            1260061
         8            1260061
         9            1260061

9 rows selected.

05:57:00 SQL> select file#,checkpoint_change# from v$datafile_header;

FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1            1258960
         2            1258960
         3            1258960
         4            1258960
         5            1258960
         6            1258960
         7            1258960
         8            1258960
         9            1258960

9 rows selected.

----------基于change 的recover

05:57:03 SQL> recover database until change 1260285;                                                                                     
ORA-00279: change 1258960 generated at 08/17/2011 04:37:14 needed for thread 1
ORA-00289: suggestion : /disk1/arch/prod/arch_4_1_759309442.log
ORA-00280: change 1258960 for thread 1 is in sequence #4

05:57:33 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
auto                                                                                                                                     
ORA-00279: change 1259691 generated at 08/17/2011 05:41:59 needed for thread 1
ORA-00289: suggestion : /disk1/arch/prod/arch_1_1_759390119.log
ORA-00280: change 1259691 for thread 1 is in sequence #1

ORA-00279: change 1260023 generated at 08/17/2011 05:44:31 needed for thread 1
ORA-00289: suggestion : /disk1/arch/prod/arch_2_1_759390119.log
ORA-00280: change 1260023 for thread 1 is in sequence #2
ORA-00278: log file '/disk1/arch/prod/arch_1_1_759390119.log' no longer needed for this recovery

ORA-00279: change 1260025 generated at 08/17/2011 05:44:32 needed for thread 1
ORA-00289: suggestion : /disk1/arch/prod/arch_3_1_759390119.log
ORA-00280: change 1260025 for thread 1 is in sequence #3
ORA-00278: log file '/disk1/arch/prod/arch_2_1_759390119.log' no longer needed for this recovery

Log applied.
Media recovery complete.
05:57:44 SQL>

查看告警日志:

ALTER DATABASE RECOVER  database until change 1260285  
Wed Aug 17 05:57:32 2011
Media Recovery Start
Media Recovery start incarnation depth : 2, target inc# : 5, irscn : 1259690
ORA-279 signalled during: ALTER DATABASE RECOVER  database until change 1260285  ...
Wed Aug 17 05:57:38 2011
ALTER DATABASE RECOVER    CONTINUE DEFAULT  
Wed Aug 17 05:57:38 2011
Media Recovery Log /disk1/arch/prod/arch_4_1_759309442.log
ORA-279 signalled during: ALTER DATABASE RECOVER    CONTINUE DEFAULT  ...
Wed Aug 17 05:57:40 2011
ALTER DATABASE RECOVER    CONTINUE DEFAULT  
Wed Aug 17 05:57:40 2011
Media Recovery Log /disk1/arch/prod/arch_1_1_759390119.log
ORA-279 signalled during: ALTER DATABASE RECOVER    CONTINUE DEFAULT  ...
Wed Aug 17 05:57:40 2011
ALTER DATABASE RECOVER    CONTINUE DEFAULT  
Wed Aug 17 05:57:40 2011
Media Recovery Log /disk1/arch/prod/arch_2_1_759390119.log
ORA-279 signalled during: ALTER DATABASE RECOVER    CONTINUE DEFAULT  ...
Wed Aug 17 05:57:41 2011
ALTER DATABASE RECOVER    CONTINUE DEFAULT  
Wed Aug 17 05:57:41 2011
Media Recovery Log /disk1/arch/prod/arch_3_1_759390119.log
Wed Aug 17 05:57:41 2011
Recovery of Online Redo Log: Thread 1 Group 2 Seq 1 Reading mem 0
  Mem# 0 errs 0: /u01/app/oracle/oradata/prod/redo02.log
Wed Aug 17 05:57:41 2011
Recovery of Online Redo Log: Thread 1 Group 1 Seq 2 Reading mem 0
  Mem# 0 errs 0: /u01/app/oracle/oradata/prod/redo01.log
Wed Aug 17 05:57:41 2011
Recovery of Online Redo Log: Thread 1 Group 3 Seq 3 Reading mem 0
  Mem# 0 errs 0: /u01/app/oracle/oradata/prod/redo03.log
Wed Aug 17 05:57:41 2011
Incomplete Recovery applied until change 1260286
Wed Aug 17 05:57:41 2011
Media Recovery Complete (prod)
Completed: ALTER DATABASE RECOVER    CONTINUE DEFAULT

--------验证

05:57:44 SQL> alter database open resetlogs;

Database altered.

05:59:46 SQL> select * from scott.test;

ID
----------
         1
         2
         3
         4
         5
         6
         7
         8

8 rows selected.

本文转自 客居天涯 51CTO博客,原文链接:http://blog.51cto.com/tiany/792477,如需转载请自行联系原作者

Oracle 备份与恢复学习笔记(6_1)相关推荐

  1. oracle12c复制bdf,Oracle 备份与恢复学习笔记(12)

    第十二章: Catalog Database 目录库 1.catalog database 的功能 1)集中存放rman的资料库(备份的元数据),并且可以和target database 的contr ...

  2. Oracle 备份与恢复学习笔记(14)

    第十四章: 逻辑备份 1.逻辑备份和物理备份区别       1)物理备份:备份数据文件以及控制文件,备份整个库的物理结构,主要用于media recover       2)逻辑备份:备份datab ...

  3. oracle buffer block,8 Oracle深度学习笔记——BUFFER CACHE深入一

    8.Oracle深度学习笔记--BUFFER CACHE深入一 最近项目一直和ORACLE死磕,感觉总是找不到出口,只能多看书少说话了. 先记录多少是多少吧! BUFFER CACHE在ORACLE的 ...

  4. oracle数据库的model,Oracle 11g学习笔记–model子句

    Oracle 11g学习笔记–model子句 oracle 10g中新增的model子句可以用来进行行间计算.model子句允许像访问数组中元素那样访问记录中的某个列,这就提供了诸如电子表格计算之类的 ...

  5. Oracle 10g学习笔记(一)

    前言 很不好意思的坦白本人是刚刚学习oracle的菜鸟,以下内容是节取的书中一些值得注意的事项,因为只涉及oracle最初级的知识,并没有太深的内容,希望各位oralce高手们能够帮忙指点指点. Or ...

  6. 【Oracle Hint】Oracle Hint学习笔记【一】

    一.Oracle Hint的一些基本概念 Oracle数据库中的优化器又叫查询优化器(Query Optimizer). 它是SQL分析和执行的优化工具,它负责生成.制定SQL的执行计划. Oracl ...

  7. 2 Oracle深度学习笔记 内存架构之UGA

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 2.Or ...

  8. 2.Oracle深度学习笔记——内存架构之UGA

    2.Oracle深度学习笔记--内存架构之UGA 欢迎转载,转载请标明出处:  http://blog.csdn.net/notbaron/article/details/50558136 UGA是回 ...

  9. adg oracle,【学习笔记】Oracle ADG搭建与配置 windows平台11G ADG搭建与测试

    [学习笔记]Oracle ADG搭建与配置 windows平台11G ADG搭建与测试 时间:2016-10-26 20:09   来源:Oracle研究中心   作者:HTZ   点击: 次 天萃荷 ...

最新文章

  1. 妙用postman系列——postman建组、分享
  2. Animated Eye Candy for Programmers
  3. VA02修改销售订单的BAPI举例
  4. python格式化字符串漏洞_Python新型字符串格式漏洞分析及解决方案
  5. 生命、生活:同样重要
  6. 层间距离对ct图像的影响_CT专业知识掌握基础、了解原理
  7. 快递送不上门,谁的锅?
  8. 干货整理!10个Python图像处理工具,入门必看,提效大法 | 资源
  9. 剑指offer(C++)-JZ55:二叉树的深度(数据结构-树)
  10. Linux检查当前运行级别
  11. UbuntuSkills
  12. 程序员必备的10个B站优质UP主!
  13. 跳步游戏2--返回最小跳步数
  14. 4种实现Web前端可视化的常用方法
  15. 网址大放松 让网络一族网上过个新年(转)
  16. 财务自由之路笔记 第一章 你真正想要什么
  17. cesium实现鹰眼地图(三维)效果
  18. java this 逸出_this引用逸出
  19. 为什么社交APP已经这么多了,他们还要耗巨资做
  20. 外贸人如何使用intbell挖掘优质客户

热门文章

  1. QQ协议分析及其还原(一)
  2. shell基本语法和执行
  3. OpenStack之Keystone模块
  4. Oracle表空间创建的sql
  5. [转载]Oracle 游标使用全解
  6. XeLaTeX插入GB/T 7714-2005规范的参考文献方法
  7. linux下获取线程号
  8. 图解WordPress主题(模板)架构
  9. 阿里的财报,释放了什么信号?
  10. 埋点、数仓到中台:数据体系的从0到1