1 / 37

Oracle Database 12c 中针对 Java 的新增内容

Oracle Database 12c 中针对 Java 的新增内容. Kuassi Mensah 产品管理总监. 以下内容旨在概述产品的总体发展方向 。 该内容仅供参考,不可纳入任何合同 。 其内容不构成提供任何材料、代码或功能的承诺,并且不应该作为制定购买决策的依据 。 此处所述有关 Oracle 产品的任何特性或功能的开发、 发布以及相应的 演讲议题 均由 Oracle 自行决定 。. 我的 讲座. Oracle In-Database MapReduce(动手实践 ) 2013 年 7 月 24 日,17:15 — 18:15,411/412 室

laura-bass
Download Presentation

Oracle Database 12c 中针对 Java 的新增内容

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Oracle Database 12c 中针对Java 的新增内容 KuassiMensah产品管理总监

  2. 以下内容旨在概述产品的总体发展方向。该内容仅供参考,不可纳入任何合同。其内容不构成提供任何材料、代码或功能的承诺,并且不应该作为制定购买决策的依据。此处所述有关 Oracle 产品的任何特性或功能的开发、发布以及相应的演讲议题均由Oracle 自行决定。

  3. 我的讲座 • Oracle In-Database MapReduce(动手实践) • 2013 年 7 月 24 日,17:15 — 18:15,411/412 室 • 通过 Oracle database 12c 最大化应用程序的可用性 • 2013 年 7 月 25 日,09:00 — 10:00,429 室 • Oracle In-Database MapReduce:Hadoop 与 Exadata • 2013 年 7 月 25 日,12:00 — 13:00,431 室

  4. 演讲议题 • 对 Java 标准的支持 • 多租户架构和全新SQL 数据类型 • Java 性能和可伸缩性 • Java 可用性 • 适用于 Java 的全局数据服务 • 安全性和已弃用的/取消支持的特性

  5. JDBC/UCP 对 JDK 7 和 JDBC 4.1 的支持 对 JDBC 4.1 的支持 • Java SE 7、ojdbc7.jar、ucp.jar • setClientInfo() 和 getClientInfo() • getObject() • try with resources • java.sql.Connection

  6. 数据库中的 Java • 多个 Java SE:JDK 6 & JDK 7;JNDI、Logging • 性能:存储过程和函数 • 重用技能和库 • 集成Lucene、Solr、Hadoop与数据库 • 实现图像转换和格式转换(GIF、PNG、JPEG 等) • 实现针对不同文件类型(txt、zip、xml、二进制)的解析器 • 调用外部系统 • HTTP 调用、JDBC调用、Web服务调用

  7. 数据库中的 Java在创建数据库时安装 JDK 7 • 运行下面的 Perl 脚本 perl $ORACLE_HOME/javavm/install/update_javavm_binaries.pl 7 • 在非 Windows 平台上重新链接 Oracle cd $ORACLE_HOME/rdbms/lib make -f ins_rdbms.mk ioracle • 继续进行数据库创建步骤

  8. 演讲议题 • Java 标准 • 多租户架构和全新SQL 数据类型 • Java 性能和可伸缩性 • Java 可用性 • 适用于 Java 的全局数据服务 • 安全性和已弃用的/取消支持的特性

  9. JDBC/UCP 对多租户架构的支持 • Net 服务透明 • SET CONTAINER <container> • 通过 UCP 连接标签和回调实现跨容器的通用池

  10. JDBC 对新 SQL 数据类型的支持 • 32K VARCHAR、NVARCHAR 和 RAW • 不可见或隐藏列 • 隐式结果集 • 自动递增列(IDENTITY 列) • 作为参数的 PL/SQL 包类型

  11. 32K VARCHAR、NVARCHAR 和 RAW • VARCHAR2、NVARCHAR2 和 RAW 从 4,000 增加到 32,767 字节 • 凡大小小于 32k 的数据,Java应用程序无需再将其转换为大型对象 (LOB) • 可以在这些列上构建索引 • 先决条件 (DBA) • 将 COMPATIBLE初始化参数设置为12.0.0.0。 • 将 MAX_STRING_SIZE初始化参数设施为EXTENDED。 • 运行rdbms/admin/utl32k.sql脚本。

  12. 不可见或隐藏列易于升级 • 使用 INVISIBLE SQL 关键字创建的列 • 在常规访问时不显示不可见列,例如“SELECT * FROM table”或“DESCRIBE table” • JDBC 提供isColumnInvisible() 以检查列是否不可见/隐藏。 OracleResultSetMetaDatarsmd = (OracleResultSetMetaData)rset.getMetaData(); System.out.println("Visibility:"+ rsmd.isColumnInvisible(2));

  13. 隐式结果集 • 待解决问题:从不使用RefCursor的第三方 RDBMS 迁移 Java 应用程序。 • 隐式结果:使用DBMS_SQL.RETURN_RESULT直接检索存储过程(PL/SQL、Java)的返回内容。 • 使用dbms_sql.return_result() 的存储过程示例 create or replace procedure p_imres asresult sys_refcursor; begin open result for select * from tab;dbms_sql.return_result(result);end;

  14. 隐式结果集 • 新的 Oracle JDBC 方法 getMoreResults() 或getMoreResults(int)int参数可以拥有以下一个值:KEEP_CURRENT_RESULT、CLOSE_ALL_RESULTS、CLOSE_CURRENT_RESULT getResultSet():反复检索每个隐式结果 • 在 Oracle 中也可以使用以下外部 Java 代码 CallableStatementcstmt = null;ResultSetrs = null;cstmt = conn.prepareCall(“{call p_imres()}”);cstmt.execute();booleanresultsAvailable = cstmt.getMoreResults();

  15. JDBC 对自动递增列的支持 • 待解决问题:重用构建于外部 RDBMS 之上且使用自动递增列的应用程序 • Oracle database 12c使用 SQL 关键字 IDENTITY 实现自动递增的 ANSI 兼容列。CREATE TABLE t1 (c1 NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, c2 VARCHAR2(10)); • 无需新的 JDBC API

  16. 作为参数的 PL/SQL 包类型 • 待解决问题:在不创建 PLSQL 包装器的情况下以 Java 数组形式访问 PL/SQL 类型 • 使用方法 按照以下方式指定类型名称 <package name>.<type name> 或 <schema name>.<package name>.<type name> 1) 使用%ROWTYPE CREATE OR REPLACE PACKAGE pack1 AS TYPE employee_rowtype_array IS A TABLE OF Employee%ROWTYPE; END; /

  17. 作为参数的 PL/SQL 包类型 2) 以 java.sql.Struct的 java.sql.Array的形式获取行 CallableStatementcstmt = connection.prepareCall( “BEGIN SELECT * INTO :1 FROM EMPLOYEE; END;”); cstmt.registerOutParameter(1, OracleTypes.ARRAY, “PACK1.EMPLOYEE_ROWTYPE_ARRAY”); cstmt.execute(); Array employeeArray = cstmt.getArray(1); 此特性能够轻松以 Java Array 或 Struct的形式获取查询结果,从而简化对象关系映射。

  18. 使用 JDBC 对每个数组 DML 的行进行计数 期待已久 • 使用 Oracle JDBC 驱动程序的 Java 应用程序现在可以检索数组 DML 语句(例如,数组INSERT、UPDATE、DELETE)的每次迭代所影响的行数。 … intrcount[] = stmt.executeBatch();

  19. 演讲议题 • 对 Java 标准的支持 • 多租户架构和全新SQL 数据类型 • Java 性能和可伸缩性 • Java 可用性 • 适用于 Java 的全局数据服务 • 安全性和已弃用的/取消支持的特性

  20. Java 应用程序性能和可伸缩性 全新性能和可伸缩性特性 • 新的内存管理 • 对数据库驻留连接池的 JDBC/UCP 支持 • 超大型网络缓冲区 (SDU)

  21. 通过 DRCP 实现极高的可伸缩性支持成千上万的并发用户 POC:5000 个用户;DRCP 池规模为 100

  22. 在 RDBMS 端配置 DRCP • DRCP 池必须由 DBA 使用DBMS_CONNECTION_POOL 包显式创建、启动和停止。 sqlplus /nolog connect / as sysdba execute dbms_connection_pool.start_pool(); ... execute DBMS_CONNECTION_POOL.CONFIGURE_POOL (session_cached_cursors=>50); ... execute dbms_connection_pool.stop_pool();

  23. 超大型网络缓冲区 (SDU) 控制 SQL*Net 包的大小 默认值:8K 最大值:2MB (12c),64K (11.2),32K (11.2 之前的版本) 设置位置 sqlnet.ora:DEFAULT_SDU_SIZE tnsnames.ora:地址中的 SDU 连接字符串 大 SDU 可实现 更高的网络吞吐量 更少的系统调用来发送和接收数据 更少的 CPU 使用量 — 系统和用户 大 SDU 的副作用:网络缓冲区占用更多的内存 配置位置 客户端:URL sqlnet.ora 和/或 tnsnames.ora 或 LDAP 服务器:sqlnet.ora

  24. 演讲议题 • 对 Java 标准和全新 SQL 类型的支持 • Java 对多租户可拔插数据库的支持 • Java 性能和可伸缩性 • Java 可用性 • 适用于 Java 的全局数据服务 • 安全性和已弃用的/取消支持的特性

  25. 针对 Java 的应用程序连续性 待解决问题 应用程序面临的四个数据库中断问题 • 挂起 • 错误和连接处理 • 进行中工作的结果 • 进行中工作的重新提交 更多详细信息请参加讲座“最高应用程序可用性”2013 年 7 月 25 日,09:00 - 10:00,429 室

  26. RAC 数据库 实例 1 实例 2 实例 3 代理 1 代理 2 连接 重放上下文 应用程序连续性的实际应用 Oracle JDBC 驱动程序 调用 1 调用 2 应用程序

  27. 演讲议题 • 对 Java 标准的支持 • 多租户架构和全新SQL 数据类型 • Java 性能和可伸缩性 • Java 可用性 • 适用于 Java 的全局数据服务 • 安全性和已弃用的/取消支持的特性

  28. 复制环境中的数据库挑战/要求 • 没有一种无缝方式可以高效使用所有数据库 • 无自动负载平衡和容错 备用数据库 主数据库 备用数据库 GoldenGate

  29. 全局数据服务 复制数据库的负载平衡和服务故障切换 • 将 RAC 式服务故障切换、负载平衡和可管理性扩展至一组复制数据库 • 考虑网络延迟、复制延迟和服务布置策略 • 提高可用性、改善可管理性并最大限度提高性能 全局数据服务

  30. UCP 针对全局数据服务的支持 • 透明地支持已有快速连接故障切换 (FCF)、运行时负载平衡 (RLB)、数据库亲和性 • 在连接 URL 中指定全局服务名称和地区名 (DESCRIPTION= (ADDRESS_LIST= (LOAD_BALANCE=ON) (FAILOVER=ON) (ADDRESS=(GDS_protocol_address_information)) (ADDRESS=(GDS_protocol_address_information)) ) (CONNECT_DATA= (SERVICE_NAME=global_service_name) (REGION=region_name)))

  31. 演讲议题 • 对 Java 标准的支持 • 多租户架构和全新SQL 数据类型 • Java 性能和可伸缩性 • Java 可用性 • 适用于 Java 的全局数据服务 • 安全性和已弃用的/取消支持的特性

  32. 高级安全增强功能 • JDBC 现在支持 SHA-2 散列算法:SHA-256、SHA-384 和 SHA-512 prop.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_TYPES, "( MD5, SHA1, SHA256, SHA384 or SHA512 )"); prop.setProperty(OracleConnection.CONNECTION_PROPERTY_THIN_NET_CHECKSUM_LEVEL, "REQUIRED");

  33. 已弃用和取消支持的特性 • 已弃用特性 • 具体类型 oracle.sql.CLOB、oracle.sql.BLOB、oracle.sql.BFILE、oracle.sql.STRUCT、oracle.sql.ARRAY、oracle.sql.OPAQUE:使用 Java 和 Oracle 接口 • Oracle 样式批处理:使用 Java 标准批处理 pstmt.setInt(1, 1234);pstmt.setString(2, “Product #1”); pstmt.addBatch(); int [] batchCount = pstmt.executeBatch(); • 端到端标准 API:使用 Java 标准 setClientInfo() • 取消支持的特性 • JDK 5 在 12.1 中不受支持:JDK 6 和 JDK 7 受支持 • 隐式连接缓存:使用 UCP 作为替代

  34. 问答

More Related