【oracle】固定执行计划-使用coe_xfr_sql_profile

2024-01-26 23:40

本文主要是介绍【oracle】固定执行计划-使用coe_xfr_sql_profile,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

固定执行计划-使用coe_xfr_sql_profile

一、历史执行计划固定

历史的执行计划找到一个合理的执行计划进行绑定

1. 存在多个执行计划的语句,按照索引是比较合适的,FULL SCAN不合适

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

select * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor('4hpk08j31nm7y',null))

 

SQL_ID  4hpk08j31nm7y, child number 0

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 1404472509

  

------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name             | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                  |       |       |     2 (100)|          |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP              |     6 |   228 |     2   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INDEX_EMP_DEPTNO |     6 |       |     1   (0)| 00:00:01 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - access("DEPTNO"=30)

  

SQL_ID  4hpk08j31nm7y, child number 1

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 3956160932

  

--------------------------------------------------------------------------

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------

|   0 | SELECT STATEMENT  |      |       |       |     3 (100)|          |

|*  1 |  TABLE ACCESS FULL| EMP  |     6 |   228 |     3   (0)| 00:00:01 |

--------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   1 - filter("DEPTNO"=30)

存在两个执行计划,使之后的SQL语句都走Plan hash value: 1404472509 处理模

2、运行coe_xfr_sql_profile脚本来绑定

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

sys@GULL> @coe_xfr_sql_profile.SQL

 

Parameter 1:

SQL_ID (required)

 

输入 1 的值:  4hpk08j31nm7y

 

 

PLAN_HASH_VALUE AVG_ET_SECS

--------------- -----------

     1404472509        .002

     3956160932        .015

 

Parameter 2:

PLAN_HASH_VALUE (required)

 

输入 2 的值:  1404472509

 

Values passed to coe_xfr_sql_profile:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SQL_ID         : "4hpk08j31nm7y"

PLAN_HASH_VALUE: "1404472509"

 

SQL>BEGIN

  2    IF :sql_text IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20100, 'SQL_TEXT for SQL_ID &&sql_id. was not found in memory (gv$sqltext_with_newlines) or AWR (dba_hist_sqltext).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

SQL>BEGIN

  2    IF :other_xml IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20101, 'PLAN for SQL_ID &&sql_id. and PHV &&plan_hash_value. was not found in memory (gv$sql_plan) or AWR (dba_hist_sql_plan).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

 

Execute coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql

on TARGET system in order to create a custom SQL Profile

with plan 1404472509 linked to adjusted sql_text.

 

 

COE_XFR_SQL_PROFILE completed.

 

sys@GULL> @coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql

sys@GULL> REM

sys@GULL> REM $Header: 215187.1 coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql 11.4.3.5 2016/06/20 carlos.sierra $

sys@GULL> REM

sys@GULL> REM Copyright (c) 2000-2011, Oracle Corporation. All rights reserved.

sys@GULL> REM

sys@GULL> REM AUTHOR

sys@GULL> REM   carlos.sierra@oracle.com

sys@GULL> REM

sys@GULL> REM SCRIPT

sys@GULL> REM   coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql

sys@GULL> REM

sys@GULL> REM DESCRIPTION

sys@GULL> REM   This script is generated by coe_xfr_sql_profile.sql

sys@GULL> REM   It contains the SQL*Plus commands to create a custom

sys@GULL> REM   SQL Profile for SQL_ID 4hpk08j31nm7y based on plan hash

sys@GULL> REM   value 1404472509.

sys@GULL> REM   The custom SQL Profile to be created by this script

sys@GULL> REM   will affect plans for SQL commands with signature

sys@GULL> REM   matching the one for SQL Text below.

sys@GULL> REM   Review SQL Text and adjust accordingly.

sys@GULL> REM

sys@GULL> REM PARAMETERS

sys@GULL> REM   None.

sys@GULL> REM

sys@GULL> REM EXAMPLE

sys@GULL> REM   SQL> START coe_xfr_sql_profile_4hpk08j31nm7y_1404472509.sql;

sys@GULL> REM

sys@GULL> REM NOTES

sys@GULL> REM   1. Should be run as SYSTEM or SYSDBA.

sys@GULL> REM   2. User must have CREATE ANY SQL PROFILE privilege.

sys@GULL> REM   3. SOURCE and TARGET systems can be the same or similar.

sys@GULL> REM   4. To drop this custom SQL Profile after it has been created:

sys@GULL> REM      EXEC DBMS_SQLTUNE.DROP_SQL_PROFILE('coe_4hpk08j31nm7y_1404472509');

sys@GULL> REM   5. Be aware that using DBMS_SQLTUNE requires a license

sys@GULL> REM      for the Oracle Tuning Pack.

sys@GULL> REM

sys@GULL> WHENEVER SQLERROR EXIT SQL.SQLCODE;

sys@GULL> REM

sys@GULL> VAR signature NUMBER;

sys@GULL> REM

sys@GULL> DECLARE

  2  sql_txt CLOB;

  3  h       SYS.SQLPROF_ATTR;

  BEGIN

  5  sql_txt := q'[

  6  select * from  scott.emp  where deptno=30

  7  ]';

  8  h := SYS.SQLPROF_ATTR(

  9  q'[BEGIN_OUTLINE_DATA]',

 10  q'[IGNORE_OPTIM_EMBEDDED_HINTS]',

 11  q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]',

 12  q'[DB_VERSION('11.2.0.3')]',

 13  q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]',

 14  q'[ALL_ROWS]',

 15  q'[OUTLINE_LEAF(@"SEL$1")]',

 16  q'[INDEX_RS_ASC(@"SEL$1" "EMP"@"SEL$1" ("EMP"."DEPTNO"))]',

 17  q'[END_OUTLINE_DATA]');

 18  :signature := DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE(sql_txt);

 19  DBMS_SQLTUNE.IMPORT_SQL_PROFILE (

 20  sql_text    => sql_txt,

 21  profile     => h,

 22  name        => 'coe_4hpk08j31nm7y_1404472509',

 23  description => 'coe 4hpk08j31nm7y 1404472509 '||:signature||'',

 24  category    => 'DEFAULT',

 25  validate    => TRUE,

 26  replace     => TRUE,

 27  force_match => FALSE /* TRUE:FORCE (match even when different literals in SQL). FALSE:EXACT (similar to CURSOR_SHARING) */ );

 28  END;

 29  /

 

PL/SQL 过程已成功完成。

 

sys@GULL> WHENEVER SQLERROR CONTINUE

sys@GULL> SET ECHO OFF;

 

            SIGNATURE

---------------------

  7148830044791940844

 

 

... manual custom SQL Profile has been created

 

 

COE_XFR_SQL_PROFILE_4hpk08j31nm7y_1404472509 completed

执行COE_XFR_SQL_PROFILE_4hpk08j31nm7y_1404472509

3、再此重新执行语句

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

select * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor(null,null))

 

SQL_ID  4hpk08j31nm7y, child number 2

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 1404472509

  

------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name             | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                  |       |       |    10 (100)|          |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP              |     6 |   228 |    10   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INDEX_EMP_DEPTNO |     6 |       |     5   (0)| 00:00:01 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - access("DEPTNO"=30)

  

Note

-----

   - SQL profile coe_4hpk08j31nm7y_1404472509 used for this statement

SQL profile coe_4hpk08j31nm7y_1404472509 used for this statement,说明sql profile已经绑定上,执行计划已这个为最佳,为止绑定处理

 

二、自己来构造合理的执行计划

1、构造执行计划

以下例子中sql语句走的是全表扫描,没有走索引,构造一个走索引的语句,来替换全表扫描执行计划

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

alter session set optimizer_index_cost_adj=500

 

select * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor(null,null))

 

SQL_ID  4hpk08j31nm7y, child number 0

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 3956160932

  

--------------------------------------------------------------------------

| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |

--------------------------------------------------------------------------

|   0 | SELECT STATEMENT  |      |       |       |     3 (100)|          |

|*  1 |  TABLE ACCESS FULL| EMP  |     6 |   228 |     3   (0)| 00:00:01 |

--------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   1 - filter("DEPTNO"=30)

执行现存在的coe_xfr_sql_profile

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

sys@GULL> @coe_xfr_sql_profile.SQL

 

Parameter 1:

SQL_ID (required)

 

输入 1 的值:  4hpk08j31nm7y

 

 

PLAN_HASH_VALUE AVG_ET_SECS

--------------- -----------

     3956160932        .041

 

Parameter 2:

PLAN_HASH_VALUE (required)

 

输入 2 的值:  3956160932

 

Values passed to coe_xfr_sql_profile:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SQL_ID         : "4hpk08j31nm7y"

PLAN_HASH_VALUE: "3956160932 "

 

SQL>BEGIN

  2    IF :sql_text IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20100, 'SQL_TEXT for SQL_ID &&sql_id. was not found in memory (gv$sqltext_with_newlines) or AWR (dba_hist_sqltext).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

SQL>BEGIN

  2    IF :other_xml IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20101, 'PLAN for SQL_ID &&sql_id. and PHV &&plan_hash_value. was not found in memory (gv$sql_plan) or AWR (dba_hist_sql_plan).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

 

Execute coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql

on TARGET system in order to create a custom SQL Profile

with plan 3956160932 linked to adjusted sql_text.

 

 

COE_XFR_SQL_PROFILE completed.

查看构造SQL的走索引执行计划coe_xfr_sql_profile

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

select /*+index(emp index_emp_deptno)*/ * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor(null,null))

 

SQL_ID  2hdyvqk9b09va, child number 0

-------------------------------------

select /*+index(emp index_emp_deptno)*/ * from  scott.emp  where

deptno=30

  

Plan hash value: 1404472509

  

------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name             | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                  |       |       |    10 (100)|          |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP              |     6 |   228 |    10   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INDEX_EMP_DEPTNO |     6 |       |     5   (0)| 00:00:01 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - access("DEPTNO"=30)

查看次构造SQL的coe_xfr_sql_profile

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

SQL>@coe_xfr_sql_profile.SQL 2hdyvqk9b09va

 

Parameter 1:

SQL_ID (required)

 

 

 

PLAN_HASH_VALUE AVG_ET_SECS

--------------- -----------

     1404472509        .001

 

Parameter 2:

PLAN_HASH_VALUE (required)

 

输入 2 的值:  1404472509

 

Values passed to coe_xfr_sql_profile:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

SQL_ID         : "2hdyvqk9b09va"

PLAN_HASH_VALUE: "1404472509"

 

SQL>BEGIN

  2    IF :sql_text IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20100, 'SQL_TEXT for SQL_ID &&sql_id. was not found in memory (gv$sqltext_with_newlines) or AWR (dba_hist_sqltext).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

SQL>BEGIN

  2    IF :other_xml IS NULL THEN

  3      RAISE_APPLICATION_ERROR(-20101, 'PLAN for SQL_ID &&sql_id. and PHV &&plan_hash_value. was not found in memory (gv$sql_plan) or AWR (dba_hist_sql_plan).');

  4    END IF;

  END;

  6  /

SQL>SET TERM OFF;

 

Execute coe_xfr_sql_profile_2hdyvqk9b09va_1404472509.sql

on TARGET system in order to create a custom SQL Profile

with plan 1404472509 linked to adjusted sql_text.

 

 

COE_XFR_SQL_PROFILE completed.

2、替换outline data

查看coe_xfr_sql_profile_2hdyvqk9b09va_1404472509.sql信息,需要替换的是这段内容

复制代码

h := SYS.SQLPROF_ATTR(
q'[BEGIN_OUTLINE_DATA]',
q'[IGNORE_OPTIM_EMBEDDED_HINTS]',
q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]',
q'[DB_VERSION('11.2.0.3')]',
q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]',
q'[OPT_PARAM('optimizer_index_cost_adj' 500)]',
q'[ALL_ROWS]',
q'[OUTLINE_LEAF(@"SEL$1")]',
q'[INDEX_RS_ASC(@"SEL$1" "EMP"@"SEL$1" ("EMP"."DEPTNO"))]',
q'[END_OUTLINE_DATA]');

复制代码

把这个内容替换到coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql 中

复制代码

h := SYS.SQLPROF_ATTR(
q'[BEGIN_OUTLINE_DATA]',
q'[IGNORE_OPTIM_EMBEDDED_HINTS]',
q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]',
q'[DB_VERSION('11.2.0.3')]',
q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]',
q'[OPT_PARAM('optimizer_index_cost_adj' 500)]',
q'[ALL_ROWS]',
q'[OUTLINE_LEAF(@"SEL$1")]',
q'[FULL(@"SEL$1" "EMP"@"SEL$1")]',
q'[END_OUTLINE_DATA]');

复制代码

这段信息后,执行coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql 这个脚本

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

SQL>@coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql

SQL>REM

SQL>REM $Header: 215187.1 coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql 11.4.3.5 2016/06/20 carlos.sierra $

SQL>REM

SQL>REM Copyright (c) 2000-2011, Oracle Corporation. All rights reserved.

SQL>REM

SQL>REM AUTHOR

SQL>REM   carlos.sierra@oracle.com

SQL>REM

SQL>REM SCRIPT

SQL>REM   coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql

SQL>REM

SQL>REM DESCRIPTION

SQL>REM   This script is generated by coe_xfr_sql_profile.sql

SQL>REM   It contains the SQL*Plus commands to create a custom

SQL>REM   SQL Profile for SQL_ID 4hpk08j31nm7y based on plan hash

SQL>REM   value 3956160932.

SQL>REM   The custom SQL Profile to be created by this script

SQL>REM   will affect plans for SQL commands with signature

SQL>REM   matching the one for SQL Text below.

SQL>REM   Review SQL Text and adjust accordingly.

SQL>REM

SQL>REM PARAMETERS

SQL>REM   None.

SQL>REM

SQL>REM EXAMPLE

SQL>REM   SQL> START coe_xfr_sql_profile_4hpk08j31nm7y_3956160932.sql;

SQL>REM

SQL>REM NOTES

SQL>REM   1. Should be run as SYSTEM or SYSDBA.

SQL>REM   2. User must have CREATE ANY SQL PROFILE privilege.

SQL>REM   3. SOURCE and TARGET systems can be the same or similar.

SQL>REM   4. To drop this custom SQL Profile after it has been created:

SQL>REM  EXEC DBMS_SQLTUNE.DROP_SQL_PROFILE('coe_4hpk08j31nm7y_3956160932');

SQL>REM   5. Be aware that using DBMS_SQLTUNE requires a license

SQL>REM  for the Oracle Tuning Pack.

SQL>REM

SQL>WHENEVER SQLERROR EXIT SQL.SQLCODE;

SQL>REM

SQL>VAR signature NUMBER;

SQL>REM

SQL>DECLARE

  2  sql_txt CLOB;

  3  h       SYS.SQLPROF_ATTR;

  BEGIN

  5  sql_txt := q'[

  6  select * from  scott.emp  where deptno=30

  7  ]';

  8  h := SYS.SQLPROF_ATTR(

  9  q'[BEGIN_OUTLINE_DATA]',

 10  q'[IGNORE_OPTIM_EMBEDDED_HINTS]',

 11  q'[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]',

 12  q'[DB_VERSION('11.2.0.3')]',

 13  q'[OPT_PARAM('optimizer_dynamic_sampling' 0)]',

 14  q'[OPT_PARAM('optimizer_index_cost_adj' 500)]',

 15  q'[ALL_ROWS]',

 16  q'[OUTLINE_LEAF(@"SEL$1")]',

 17  q'[INDEX_RS_ASC(@"SEL$1" "EMP"@"SEL$1" ("EMP"."DEPTNO"))]',

 18  q'[END_OUTLINE_DATA]');

 19  :signature := DBMS_SQLTUNE.SQLTEXT_TO_SIGNATURE(sql_txt);

 20  DBMS_SQLTUNE.IMPORT_SQL_PROFILE (

 21  sql_text    => sql_txt,

 22  profile     => h,

 23  name        => 'coe_4hpk08j31nm7y_3956160932',

 24  description => 'coe 4hpk08j31nm7y 3956160932 '||:signature||'',

 25  category    => 'DEFAULT',

 26  validate    => TRUE,

 27  replace     => TRUE,

 28  force_match => FALSE /* TRUE:FORCE (match even when different literals in SQL). FALSE:EXACT (similar to CURSOR_SHARING) */ );

 29  END;

 30  /

 

PL/SQL 过程已成功完成。

 

SQL>WHENEVER SQLERROR CONTINUE

SQL>SET ECHO OFF;

 

            SIGNATURE

---------------------

  7148830044791940844

 

 

... manual custom SQL Profile has been created

 

 

COE_XFR_SQL_PROFILE_4hpk08j31nm7y_3956160932 completed

3、再次语句查看执行计划

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

select * from  scott.emp  where deptno=30

 

select * from table(dbms_xplan.display_cursor(null,null))

 

SQL_ID  4hpk08j31nm7y, child number 0

-------------------------------------

select * from  scott.emp  where deptno=30

  

Plan hash value: 1404472509

  

------------------------------------------------------------------------------------------------

| Id  | Operation                   | Name             | Rows  | Bytes | Cost (%CPU)| Time     |

------------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT            |                  |       |       |    10 (100)|          |

|   1 |  TABLE ACCESS BY INDEX ROWID| EMP              |     6 |   228 |    10   (0)| 00:00:01 |

|*  2 |   INDEX RANGE SCAN          | INDEX_EMP_DEPTNO |     6 |       |     5   (0)| 00:00:01 |

------------------------------------------------------------------------------------------------

  

Predicate Information (identified by operation id):

---------------------------------------------------

  

   2 - access("DEPTNO"=30)

  

Note

-----

   - SQL profile coe_4hpk08j31nm7y_3956160932 used for this statement

偷梁换柱成功,固定执行so easy

提供脚本文件COE_XFR_SQL_PROFILE.SQL

这篇关于【oracle】固定执行计划-使用coe_xfr_sql_profile的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/648412

相关文章

使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)

《使用Java解析JSON数据并提取特定字段的实现步骤(以提取mailNo为例)》在现代软件开发中,处理JSON数据是一项非常常见的任务,无论是从API接口获取数据,还是将数据存储为JSON格式,解析... 目录1. 背景介绍1.1 jsON简介1.2 实际案例2. 准备工作2.1 环境搭建2.1.1 添加

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功