oracle网络服务之beq协议和SDU优化(性能提升可达30%)

oracle网络服务之beq协议和SDU优化(性能提升可达30%)

12.3.1  BEQ协议

如果Oracle数据库服务端和客户端在同一台机器上,可以使用BEQ连接,BEQ连接采用进程间直接通信,不需要走网络监听,对于大数据量的导入导出来说性能更高。BEQ协议可以通过在tnsnames.ora 配置文件的TNS连接串中将协议声明为BEQ来指定,如下所示:

orclbeq =

  (DESCRIPTION =

   (ADDRESS =

      (PROTOCOL = BEQ)

      (PROGRAM = /u01/app/oracle/product/12.2/db_home1/bin/oracle)

      (ARGV0 = orclpdb)

      (ARGS = '(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=BEQ)))')

      # (ENVS = 'ORACLE_HOME=/u01/app/oracle/product/12.2/db_home1,ORACLE_SID=ora12c')

    )

    (CONNECT_DATA =

      (SERVER = DEDICATED)

      (SERVICE_NAME = orclpdb)

    )

  )

下面我们来看一下采用BEQ和网络协议的性能差别。

使用TCP/IP协议:

[oracle@oel-12c oradata]$ expdp hr/hr@localhost:1521/orclpdb tables=(big_table_tmp) directory=dmp_dir dumpfile=expdat_nocond2.dmp exclude=statistics

 

连接到: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

启动 "HR"."SYS_EXPORT_TABLE_01":  hr/********@localhost:1521/orclpdb tables=(big_table_tmp) directory=dmp_dir dumpfile=expdat_nocond2.dmp exclude=statistics

处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA

处理对象类型 TABLE_EXPORT/TABLE/TABLE

处理对象类型 TABLE_EXPORT/TABLE/INDEX/INDEX

. . 导出了 "HR"."BIG_TABLE_TMP"                        290.8 MB 1000000 行

已成功加载/卸载了主表 "HR"."SYS_EXPORT_TABLE_01"

******************************************************************************

HR.SYS_EXPORT_TABLE_01 的转储文件集为:

  /oradata/ORA11G/dmpdir/expdat_nocond2.dmp

作业 "HR"."SYS_EXPORT_TABLE_01" 已于 星期日 3月 17 15:32:30 2019 elapsed 0 00:00:30 成功完成

使用BEQ协议:

[oracle@oel-12c oradata]$ expdp hr/hr@orclbeq tables=(big_table_tmp) directory=dmp_dir dumpfile=expdat_nocond1.dmp exclude=statistics

 

连接到: Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production

启动 "HR"."SYS_EXPORT_TABLE_01":  hr/********@orclbeq tables=(big_table_tmp) directory=dmp_dir dumpfile=expdat_nocond1.dmp exclude=statistics

处理对象类型 TABLE_EXPORT/TABLE/TABLE_DATA

处理对象类型 TABLE_EXPORT/TABLE/TABLE

处理对象类型 TABLE_EXPORT/TABLE/INDEX/INDEX

. . 导出了 "HR"."BIG_TABLE_TMP"                        290.8 MB 1000000 行

已成功加载/卸载了主表 "HR"."SYS_EXPORT_TABLE_01"

******************************************************************************

HR.SYS_EXPORT_TABLE_01 的转储文件集为:

  /oradata/ORA11G/dmpdir/expdat_nocond1.dmp

作业 "HR"."SYS_EXPORT_TABLE_01" 已于 星期日 3月 17 15:33:36 2019 elapsed 0 00:00:16 成功完成

从上可知,使用TCP/IP协议进行导出的时间比BEQ协议多了近1倍。

除了在Oracle自带的工具中可以使用BEQ协议外,JDBC OCI驱动也能够使用BEQ协议进行连接,如下所示:

System.setProperty("oracle.net.tns_admin","$ORACLE_HOME etworkadmin");

String dbURL = "jdbc:oracle:oci:@orclbeq";

Connection connection = DriverManager.getConnection(dbURL, "hr", "hr");

相比TCP/IP协议,在JDBC中使用BEQ协议导出时速度也更快。