iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >部署statspack工具(二)之解决方案2
  • 923
分享到

部署statspack工具(二)之解决方案2

2024-04-02 19:04:59 923人浏览 薄情痞子
摘要

解决方案二:在emp2的empno列上面创建索引,再执行share_pool_sql_1.sh脚本,查看sp报告8.1在emp2的empno列上创建索引sys@TESTDB12>create inde

解决方案二:在emp2的empno列上面创建索引,再执行share_pool_sql_1.sh脚本,查看sp报告

8.1在emp2的empno列上创建索引

sys@TESTDB12>create index ind_empno on scott.emp2(empno);

8.2 重新执行share_pool_sql_1.sh脚本并重新开启statspack自动快照

 

{oracle@Redhat55.cuug.net:/home/oracle/script/bin}$sh share_pool_sql_1.sh

SQL>@?/rdbms/admin/spauto

 

8.3生成statspack报告

perfstat@TESTDB12>selectsnap_id,snap_time,snap_level from stats$snapshot order by snap_time;

 

perfstat@TESTDB12>selectsnap_id,snap_time,snap_level from stats$snapshot order by snap_time;

 

   SNAP_ID SNAP_TIME SNAP_LEVEL

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

         1 28-JUL-14          7

        11 28-JUL-14          7

        21 28-JUL-14          7

        31 28-JUL-14          7

        41 29-JUL-14          7

        51 29-JUL-14          7

        61 29-JUL-14          7

        71 29-JUL-14          7

        81 29-JUL-14          7

        91 29-JUL-14          7

       101 29-JUL-14          7

       111 29-JUL-14          7

       121 29-JUL-14          7

       131 29-JUL-14          7

       141 29-JUL-14          7

       151 29-JUL-14          7

       161 29-JUL-14          7

       171 29-JUL-14          7

       181 29-JUL-14          7

       191 29-JUL-14          7

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

Enter value for begin_snap: 131

Enter value for end_snap: 141

Enter value for report_name:

 

Specify the Begin and End Snapshot Ids

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

Enter value for begin_snap: 141

Enter value for end_snap: 151

Enter value for report_name:

 

Specify the Begin and End Snapshot Ids

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

Enter value for begin_snap: 151

Enter value for end_snap: 161

Enter value for report_name:

 

Specify the Begin and End Snapshot Ids

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

Enter value for begin_snap: 161

Enter value for end_snap: 171

Enter value for report_name:

8.4通过新生成的4个statspack报告对比各个时间段的数据缓冲区的命中率和库缓冲区的命中率:

时间

Buffer  Hit(%)

Library Hit(%)

05:19:01~ 05:34:01

99.99

89.78

05:34:01 ~05:49:00  

99.99

89.72

05:49:00 ~ 06:04:05

99.98

89.45

06:04:05 ~06:13:00

99.95

88.79

 在emp2的empno列上创建索引后通过对比发现数据缓冲区的命中率明显得到了改善,达到了的99%以上;而库缓冲区的命中率也得到小幅度提升

8.5查看Top 5 Timed Events找出4 个报告中各个时间段跟磁盘I/O相关的等待事件

时间

name

Wait(s)

Time(s)

05:19:01~ 05:34:01

log file parallel  write

45,110

54


log file sync

6,240

46


os thread startup

34

5


control file  parallel write  

332

3

05:34:01 ~05:49:00

log file parallel  write

 48,413

36


log file sync

3,563

28


os thread startup

33

5


db file sequential  read

2,018

2

05:49:00 ~ 06:04:05

log file parallel  write

49,564

23


log file sync

455

15


db file sequential  read

3,955

9


os thread startup

39

6

06:04:05 ~06:13:00

log file parallel  write

 28,273

8


db  file sequential read 

 2,928

5


log  file sync

231

4


os  thread startup

21

3

通过4个报告的对比Top 5 Timed Events中direct path read不见了,说明解决了全表扫描等待I\O的问题;但log file parallel write和log file sync的磁盘I/O都还比较大,而且新增了control fileparallel write I/O,没有什么大的耗资源的任务,说明系统性能得以提升

 

8.6造成物理读最大的前几个sql语句在报告中未找到,用sql语句查询得出这些语句:select sql_text from v$sqlwhere disk_reads=(select max(disk_reads) from v$sql);

时间

 Executions

Rows  per Exec

Sql语句

05:19:01~ 05:34:01

10,840

16.1

select  bucket, endpoint, col#, epvalue from histgrm$

 where obj#=:1 and intcol#=:2 and row#=:3  order by bucket









05:34:01 ~05:49:00

12,565

16.1

select  bucket, endpoint, col#, epvalue from histgrm$

 where obj#=:1 and intcol#=:2 and row#=:3  order by bucket





05:49:00 ~ 06:04:05

15,112

 16.0

select  bucket, endpoint, col#, epvalue from histgrm$

 where obj#=:1 and intcol#=:2 and row#=:3  order by bucket





06:04:05 ~06:13:00

 20,814

16.4

select  bucket, endpoint, col#, epvalue from histgrm$

 where obj#=:1 and intcol#=:2 and row#=:3  order by bucket





通过对比各时间段最消耗资源的SQL语句,发现仍有相同或相似的执行计划,应该使用绑定变量,来提高执行效率。

 

 

生成语句的执行计划: set autotrace traceonly   select * from scott.emp2

idle>select *from scott.emp2 where empno=1484;

 

 

Execution Plan

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

Plan hash value:2918945472

 

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

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

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

|   0 | SELECT STATEMENT            |           |    1 |    48 |     4  (0)| 00:00:01 |

|   1 | TABLE ACCESS BY INDEX ROWID| EMP2     |     1 |    48 |    4   (0)| 00:00:01 |

|*  2 |  INDEX RANGE SCAN          |IND_EMPNO |     1 |       |    3   (0)| 00:00:01 |

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

 

PredicateInfORMation (identified by operation id):

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

 

   2 - access("EMPNO"=1484)

 

 

Statistics

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

         55 recursive calls

          0 db block gets

         78 consistent gets

          4 physical reads

          0 redo size

       1033 bytes sent via SQL*Net to client

        523 bytes received via SQL*Net from client

          2 SQL*Net roundtrips to/from client

          7 sorts (memory)

          0 sorts (disk)

          1 rows processed

8.7查看Buffer Pool Advisory并把Buffer cache的大小设置为推荐的大小

05:19:01~ 05:34:01时间段的Buffer PoolAdvisory

 

                                   Est

                                  Phys      Estimated                   Est

    Size for Size      Buffers   Read    Phys Reads     Est Phys % dbtime

P    Est (M) Factr  (thousands) Factr    (thousands)    Read Time for Rds

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

D          4   .1            0    8.0            261          345      5.2

D          8   .2            1    1.1             35           37       .6

D         12   .3            1    1.1             34           36       .5

D         16   .3            2    1.0             33           35       .5

D         20   .4            2    1.0             33           34       .5

D         24   .5            3    1.0             33           34       .5

D         28   .6            3    1.0             33           34       .5

D         32   .7            4    1.0             33           33       .5

D         36   .8            4    1.0             33           33       .5

D         40   .8            5    1.0             32           33       .5

D         44   .9            5    1.0             32           33       .5

D         48  1.0            6    1.0             32           33       .5

D         52  1.1            6    1.0             32           33       .5

D         56  1.2            7    1.0             32           33       .5

D         60  1.3            7    1.0             32           33       .5

D         64  1.3            8    1.0             32           33       .5

D         68  1.4            8    1.0             32           33       .5

D         72  1.5            9    1.0             32           33       .5

D         76  1.6            9    1.0             32           33       .5

D         80  1.7           10    1.0             32           33       .5

05:34:01 ~05:49:00时间段的Buffer PoolAdvisory

                                   Est

                                  Phys      Estimated                   Est

    Size for Size      Buffers   Read    Phys Reads     Est Phys % dbtime

P    Est (M) Factr  (thousands) Factr    (thousands)    Read Time for Rds

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

D          4   .1            0    7.8            273          357      5.1

D          8   .2            1    1.1             37           39       .6

D         12   .3            1    1.0             37           38       .5

D         16   .3            2    1.0             36           37       .5

D         20   .4            2    1.0             35           37       .5

D         24   .5            3    1.0             35           36       .5

D         28   .6            3    1.0             35           36       .5

D         32   .7            4    1.0             35           36       .5

D         36   .8            4    1.0             35           36       .5

D         40   .8            5    1.0             35           36       .5

D         44   .9            5    1.0             35           36       .5

D         48  1.0            6    1.0             35           36       .5

D         52  1.1            6    1.0             35           36       .5

D         56  1.2            7    1.0             35           36       .5

D         60  1.3            7    1.0             35           36       .5

D         64  1.3            8    1.0             35           36       .5

D         68  1.4            8    1.0             35           36       .5

D         72  1.5            9    1.0             35           36       .5

D         76  1.6            9    1.0             35           36       .5

D         80  1.7           10    1.0             35           36       .5

      

05:49:00 ~ 06:04:05时间段的Buffer PoolAdvisory

                                   Est

                                  Phys      Estimated                   Est

    Size for Size      Buffers   Read    Phys Reads     Est Phys % dbtime

P    Est (M) Factr  (thousands) Factr    (thousands)    Read Time for Rds

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

D          4   .1            0    7.6            302          438      6.0

D          8   .2            1    1.1             42           49       .7

D         12   .3            1    1.0             41           48       .7

D         16   .3            2    1.0             40           47       .6

D         20   .4            2    1.0             40           46       .6

D         24   .5            3    1.0             40           46       .6

D         28   .6            3    1.0             40           46       .6

D         32   .7            4    1.0             40           46       .6

D         36   .8            4    1.0             40           46       .6

D         40   .8            5    1.0             40           46       .6

D         44   .9            5    1.0             40           46       .6

D         48  1.0            6    1.0             40           46       .6

D         52  1.1            6    1.0             40           46       .6

D         56  1.2            7    1.0             40           46       .6

D         60  1.3            7    1.0             40           46       .6

D         64  1.3            8    1.0             40           46       .6

D         68  1.4            8    1.0             40           46       .6

D         72  1.5            9    1.0             40           46       .6

D         76  1.6            9    1.0             40           46       .6

D         80  1.7           10    1.0             40           46       .6

 

 

06:04:05 ~06:13:00时间段的Buffer PoolAdvisory

                                   Est

                                  Phys      Estimated                   Est

    Size for Size      Buffers   Read    Phys Reads     Est Phys % dbtime

P    Est (M) Factr  (thousands) Factr    (thousands)    Read Time for Rds

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

D          4   .1            0    7.6            338          497      6.6

D          8   .2            1    1.0             47           56       .7

D         12   .3            1    1.0             46           55       .7

D         16   .3            2    1.0             45           54       .7

D         20   .4            2    1.0             45           54       .7

D         24   .5            3    1.0             45           54       .7

D         28   .6            3    1.0             45           53       .7

D         32   .7            4    1.0             45           53       .7

D         36   .8            4    1.0             45           53       .7

D         40   .8            5    1.0             45           53       .7

D         44   .9            5    1.0             45           53       .7

D         48  1.0            6    1.0             45           53       .7

D         52  1.1            6    1.0             45           53       .7

D         56  1.2            7    1.0             45           53       .7

D         60  1.3            7    1.0             45           53       .7

D         64  1.3            8    1.0             45           53       .7

D         68  1.4            8    1.0             45           53       .7

D         72  1.5            9    1.0             45           53       .7

D         76  1.6            9    1.0             45           53       .7

D         80  1.7           10    1.0             45           53       .7

 

通过以上4个时间段中Buffer Pool Advisory建议可以看的出来,对于增加Buffer cache的大小对性能的影响并不明显。

 

 

8.8查看Time Model System Stats

05:19:01~  05:34:01时间段Time Model System Stats

Statistic                                       Time  (s) % DB time

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

DB CPU                                              440.5     119.9

parse time  elapsed                                  158.5      43.1

sql execute  elapsed time                            145.1      39.5

hard parse elapsed time                            135.0      36.8

connection  management call elapsed                  108.8      29.6

PL/SQL execution  elapsed time                         5.7       1.6

hard parse  (sharing criteria) elaps                   1.3        .3

hard parse (bind  mismatch) elapsed                    1.2        .3

PL/SQL compilation  elapsed time                       0.8        .2

repeated bind  elapsed time                            0.4        .1

sequence load  elapsed time                            0.1        .0

DB time                                             367.4

background elapsed  time                             75.1

background cpu  time                                  20.1

05:34:01  ~05:49:00时间段Time Model System Stats

Statistic                                       Time  (s) % DB time

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

DB CPU                                              455.9     124.3

parse time  elapsed                                  155.5      42.4

sql execute  elapsed time                            149.9      40.9

hard parse elapsed time                            128.2      35.0

connection  management call elapsed                  104.6      28.5

PL/SQL execution  elapsed time                         6.8       1.9

hard parse  (sharing criteria) elaps                   2.5        .7

hard parse (bind  mismatch) elapsed                    2.4        .7

PL/SQL compilation  elapsed time                       0.8        .2

repeated bind  elapsed time                            0.5        .1

sequence load  elapsed time                            0.3        .1

DB time                                             366.8

background elapsed  time                             54.4

background cpu  time                                  20.1

05:49:00 ~  06:04:05时间段Time Model System Stats

Statistic                                       Time  (s) % DB time

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

DB CPU                                              463.3     122.2

parse time  elapsed                                  160.9      42.4

sql execute  elapsed time                            158.6      41.9

hard parse elapsed time                            133.8      35.3

connection  management call elapsed                  103.6      27.3

PL/SQL execution  elapsed time                         7.3       1.9

hard parse  (sharing criteria) elaps                   2.1        .6

hard parse (bind  mismatch) elapsed                    1.9        .5

PL/SQL compilation  elapsed time                       1.1        .3

repeated bind  elapsed time                            0.5        .1

sequence load  elapsed time                            0.2        .0

DB time                                             379.0

background elapsed  time                             52.7

background cpu  time                                  23.0

06:04:05 ~06:13:00时间段Time Model  System Stats

Statistic                                       Time  (s) % DB time

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

DB CPU                                              269.2     119.5

parse time  elapsed                                  105.7      46.9

sql execute  elapsed time                            102.9      45.6

hard parse elapsed time                             89.9      39.9

connection  management call elapsed                   58.2      25.8

PL/SQL execution  elapsed time                         4.0       1.8

hard parse  (sharing criteria) elaps                   2.0        .9

hard parse (bind  mismatch) elapsed                    1.6        .7

PL/SQL compilation  elapsed time                       1.1        .5

repeated bind  elapsed time                            0.6        .3

sequence load  elapsed time                            0.1        .1

DB time                                             225.4

background elapsed  time                             19.6

background cpu  time                                  12.2

通过对比4个报告各个时间段中的Time Model System Stats,发现产生的硬解析明显增加了。

 

8.9查看Latch Sleep breakdown

05:19:01~  05:34:01时间段的Latch Sleep breakdown

Latch Name                        Requests       Misses      Sleeps        Gets

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

shared pool                      3,787,761            4           4           0

05:34:01  ~05:49:00时间段的Latch Sleep breakdown

Latch Name                        Requests       Misses      Sleeps        Gets

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

shared pool                      4,107,841            5           5           0

js Sh mem  access                         3            1           1           0

enqueue hash  chains                320,877            1           1           0

05:49:00 ~  06:04:05时间段的Latch Sleep breakdown

Latch Name                        Requests       Misses      Sleeps        Gets

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

shared pool                      4,257,852            8           8           0

row cache  objects                3,956,966            3           3           0

call  allocation                     110,566            1           1           0

redo  allocation                      99,927            1           1           0

06:04:05 ~06:13:00时间段的Latch Sleep breakdown

Latch Name                        Requests       Misses      Sleeps        Gets

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

shared pool                      2,595,386            6           6           0

row cache  objects                2,500,734            1           1           0

通过以上4个sp报告各个时间段的Latch Sleepbreakdown的内容,发现cache bufferslru chain已经没有了,但是shared pool次数上来了。


您可能感兴趣的文档:

--结束END--

本文标题: 部署statspack工具(二)之解决方案2

本文链接: https://www.lsjlt.com/news/50808.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 部署statspack工具(二)之解决方案2
    解决方案二:在emp2的empno列上面创建索引,再执行share_pool_sql_1.sh脚本,查看sp报告8.1在emp2的empno列上创建索引sys@TESTDB12>create inde...
    99+
    2024-04-02
  • k8s之ingress-nginx详解和部署方案
    目录1、ingress介绍2、ingress的工作原理3、ingress可以解决的问题1)动态配置服务2)减少不必要的端口暴露4、部署ingress(deployment的方式)1)...
    99+
    2024-04-02
  • vue部署后不生成二维码的三种解决方案
    当我们在Vue项目中引用某些第三方库或插件时,有时可能会遇到部署后不生成二维码的问题。这个问题可能会带给我们很大的麻烦和困扰,因为二维码在现在的移动互联网时代已经成为了一种方便快捷的信息传递方式。那么,为什么在Vue项目部署后会出现不生成二...
    99+
    2023-05-14
  • 如何使用 ASP 网站部署工具解决网站部署难题
    ASP Website Deployment Tool是一个微软官方提供的ASP网站部署工具,它可以帮助开发者轻松地将ASP网站部署到生产环境,无需手动执行复杂的部署步骤。该工具支持多种部署方式,包括FTP、UNC路径、WebDeploy...
    99+
    2024-02-07
    ASP 网站部署 部署工具 自动化部署 生产环境
  • Springboot笔记之热部署及不生效的解决方案
    目录一、背景二、方法三、验证四、添加热部署的依赖后不生效怎么办总结一、背景 目前的Springboot,当发生了任何修改之后,必须关闭后再启动Application类才能够生效,显得...
    99+
    2022-12-23
    Springboot笔记 Springboot热部署 Springboot热部署不生效
  • Vue3打包部署报错的解决方案
    目录Vue3打包部署报错vue3 vite 打包部署后,访问报错Vue3打包部署报错 通常情况下,我们直接npm run build后的代码可以直接部署在服务器上,以便老板远程访问。...
    99+
    2024-04-02
  • K8S部署Kafka界面管理工具(kafkamanager)方法详解
    kafka-manager 是雅虎开源的apache-kafka管理工具,是用Scala编写的,可以在web页面进行kafka的相关操作。 一、制作kafkamanager的imag...
    99+
    2024-04-02
  • 部署DLP解决方案的具体流程及效果是怎么样的
    部署DLP解决方案的具体流程及效果是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。部署DLP系统已经开始成为一些企业所需要处理的网络安全防数手段之一了,在部署DLP...
    99+
    2023-06-17
  • Java toString方法重写工具之ToStringBuilder案例详解
    apache的commons-lang3的工具包里有一个ToStringBuilder类,这样在打日志的时候可以方便的打印出类实例中的各属性的值。 具体用法如下: import ...
    99+
    2024-04-02
  • 注塑模具设计与加工解决方案
    INOVATION注塑模设计与加工解决方案是根据注塑模具设计与制造现场的经验与技术,将产品成形工艺与工程分析数据相结合,开发出的适用于注塑模具设计的专用软件包。此解决方案涵盖了模型可行性分析、模具构想设计、智能分模创建模具、详细设计、快速配...
    99+
    2023-06-05
  • pytorch部署到jupyter中的问题及解决方案
    目录pytorch部署到jupyter中两种解决方案pytorch部署到jupyter中 在安装Aconda的同时,会将jupyter notebook一起安装,不过这里的jupy...
    99+
    2024-04-02
  • 基于 Docker 部署 Mysql 的时区设置解决方案
    文章目录 场景描述问题追因解决方案 场景描述 环境版本及条件: 基于 Docker 部署的 Mysql:8.0.27 版本数据库中。datatime 数据类型的字段设置了默...
    99+
    2023-09-11
    docker mysql java
  • 揭秘 PHP Docker:您的 PHP 开发和部署解决方案
    PHP Docker 的优势: 开发环境一致性: PHP Docker 为每个开发人员提供相同的开发环境,从而确保在不同环境中构建的应用程序能够一致地运行。 快速部署: PHP Docker 可以快速将应用程序部署到生产环境中,而无需...
    99+
    2024-02-03
    PHP Docker 容器 开发 部署
  • 如何分析企业部署DLP解决方案的总体策略
    如何分析企业部署DLP解决方案的总体策略,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。数据泄露已经成为了企业网络安全问题的一个大项,越来越多的企业安全管理人员在为部署DLP解决...
    99+
    2023-06-17
  • Go 编写的 Shell 同步工具:索引问题解决方案
    在日常开发中,我们经常需要将本地的文件同步到远程服务器上。而 Shell 脚本是实现文件同步的常用方式。但在实际开发中,我们会发现 Shell 脚本同步文件时存在一些问题,其中最常见的问题就是索引问题。 索引问题指的是在同步文件时,She...
    99+
    2023-10-31
    shell 同步 索引
  • 阿里云轻量服务器部署宝塔全面的解决方案
    随着云计算的发展,越来越多的企业和个人开始使用云计算来实现其业务目标。然而,如何有效地管理和部署云计算资源,特别是轻量级服务器,是一个挑战。本文将介绍如何使用阿里云轻量服务器部署宝塔,这是一种全面的解决方案,可以帮助您轻松地管理和部署您的轻...
    99+
    2023-11-03
    阿里 宝塔 解决方案
  • 亚马逊部署服务器异常原因、影响及解决方案
    亚马逊作为全球最大的电商平台,其服务器部署异常的问题可能对用户造成重大影响。本文将详细说明导致亚马逊服务器异常的原因、影响及解决方案。 一、原因分析硬件故障:硬件故障是导致服务器异常的常见原因之一。例如,硬盘故障、内存问题、CPU过热等。软...
    99+
    2023-11-04
    亚马逊 异常 解决方案
  • 阿里云服务器中数据库部署失败的解决方案
    在使用阿里云服务器部署数据库时,有时会遇到数据库部署失败的问题。本文将介绍一些常见的原因和解决方案,帮助用户快速解决这个问题。1. 检查网络连接数据库部署失败的一个常见原因是网络连接问题。首先,确保你的服务器能够正常连接到互联网。可以通过...
    99+
    2023-12-28
    阿里 器中 解决方案
  • Python实现实时增量数据加载工具的解决方案
    目录创建增量ID记录表数据库连接类增量数据服务客户端结果测试本次主要分享结合单例模式实际应用案例:实现实时增量数据加载工具的解决方案。最关键的是实现一个可进行添加、修改、删除等操作的...
    99+
    2024-04-02
  • vue项目打包部署后默认路由不正确的解决方案
    目录打包部署后默认路由不正确问题描述解决方案vue打包后路径不对对于背景图片不显示的问题动画无法运行小图标没了打包部署后默认路由不正确 问题描述 vue项目本地开发的时候默认路由没问...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作