Tag Archives: ORACLE

Oracle中的Java调用

项目中碰到一个特殊情况,部分功能必须通过Java实现,记录一下在Oracle中调用Java的方法。 实时使用的时候要慎重考虑,是否需要这么复杂的方案。 方法一:在PL/SQL中直接写java源代码,适合简单功能的测试,毕竟在PL/SQL中写Java代码还是很麻烦的。 将java的功能封装成一个函数 调用函数 在user_objects可以查询到创建的java程序、编译后的CLASS 方法二:将java的class文件或jar包导入到数据库中 剩下的步骤同方法一

oracle嵌套表测试记录

在数据库表,个别字段设置为嵌套表,实际使用的不多,看到SF上提问做的测试,先记下来备用。

oracle 12c之使用Restful接口访问JSON数据

1、安装补丁20885778 先关闭数据库和监听 安装补丁 验证补丁是否已经安装 2、安装SODA for REST 首先需要安装JDK 1.7或更高版本 使用RPM包安装完成后,更改环境变量,并切换到新安装的JDK 安装SODA 安装成功后,如果选择start in standalone mode选项,服务就已经启动了。 在数据库中启用ORDS功能 为测试方便,停用ORDS的权限检查功能 3、SODA的Restful接口测试 3.1 查询所有的集合 返回结果 3.2 增加books的集合 返回结果 无正文内容,状态码为201 Created 3.3 重新查询所有的集合 返回结果 3.4 创建单条记录 发送内容,POSTMAN中,选择RAW类型,格式为JSON(application/json) 命令行: 返回结果 3.5 批量创建 发送内容 返回结果 3.6 根据ID查询单条记录 返回结果 3.7 更新单条记录 发送内容 返回结果 正文无,状态码为200 OK 重新执行3.6的查询,返回结果为 3.8 在数据库中查询上述步骤插入的3条记录 查看表结构 注意:因表名称为小写,查询的时候表名称必须加双引号 3.9 删除单条记录 返回结果 [...]

oracle 12c新功能之JSON数据类型支持

oracle 12c提供了原生的json类型支持,json的数据可以存放在VARCHAR、CLOB、BLOB的数据类型中,查询的字段可以直接下探到json对象的属性,在做一些快速原型应用的时候可以非常灵活支持业务对象属性的变更。 1、创建包含json对象的表 2、插入一些测试数据 3、查询json对象及其属性,json对象的值也可以作为查询条件 上面这种写法,必须使用表的别名,才能引用json对象的属性。 也可以使用json_value的函数 4、索引创建在json对象的属性上,本质上是一个函数索引 从上一步查询语句的执行计划,可以看到查询中确实使用了索引 5、使用json_exists函数,判断json对象是否存在某个属性,使用json_query返回整个json对象 6、如果json中含有数组类型,可以使用json_table函数展开,可以其他列的数据做join操作。 上面article_id=2的数据,article_comments是个数组,包含两个comment的json对象,使用json_table展开后,article_id=2的行在结果集中会变为2行,每行一个comment对象对应的属性。 ARTICLE_ID ARTICLE_TITLE COMMENT_BY COMMENT_CONTENT 1 oracle 12c新特性 adam TOM大神的好书 2 PL/SQL揭秘 frank 值得一读 2 PL/SQL揭秘 john 适合有经验的开发者 7、查询哪些列使用了json类型 参考资料: The new SQL/JSON Query operators (Part1: JSON_VALUE) The new SQL/JSON Query operators (Part2: JSON_QUERY) The new SQL/JSON Query operators (Part3: JSON_EXISTS) The new SQL/JSON [...]

oracle 12c新功能之inmemory option

oracle 12c inmemory功能,不仅仅是将数据放入内存,而且采用了列存储和特殊的查询方式(SIMD vector instructions),可以短时间内快速进行大量数据的是扫描,因此对于大表的全表扫描速度得到了很大的提升;对于开发者内存数据的访问、更新完全是透明,不需要再应用程序做任何处理,只需要在数据库中配置哪些表启用inmemory功能。

1、修改数据库参数,以启用数据库的inmemory功能
2、重启数据库
3、查看inmemory的参数是否生效
4、测试表的行数和占用空间(表记录300万,占用2.3G空间)
5、测试从磁盘读取和内存读取的逻辑读差异
6. 总结
原表记录数3419561,占用空间2304M,全表扫描一次逻辑读次数292417,花费时间1.83秒
使用inmemory特性后,占用空间184M,占原表大小约8%,内存中全表扫描一次逻辑读次数23,是直接扫描表方式的万分之一,花费时间0.11秒
根据inmemory的特点,比较适合用于从大量数据进行筛选、过滤,返回结果较少场景,可以节省因创建大量不同查询条件索引占用额外的空间,提升查询效率和响应时间

使用sqlplus导出文本文件的脚本

在Oracle中调用操作系统命令

1、准备工作 修改当前用户的权限,可以创建JOB、创建外部命令的JOB 设置执行操作系统命令的用户 将run_user和run_group设置为oracle所在的用户和组 参考资料: Guide to External Jobs on 10g with dbms_scheduler 2、创建JOB 注意:JOB_NAME不能有特殊字符,建议为字母、数字或下划线,实际测试中不允许名字中包含横线。 3、JOB设置参数 4、运行JOB 5、如何执行另外一台服务器上的命令 首先需要设置可以通过证书直接登录目标服务器: 通过SSH执行远程服务器上的命令 注意:远程登录后用户的参数文件未加载,相关的环境变量不正确;为保证调用脚本可以正常运行,建议在目标服务器上将执行的命令封装为脚本,在脚本中将bash_profile中相关的环境变量在脚本中重新设置。 6、查询JOB的运行情况

Oracle中日期运算实例

下面的例子列出常用的按照年、月、周进行计算的函数,假设当天为2016-02-03 运行结果: TODAY TODAY_OF_2MONTH_AGO FIRST_DAY_MONTH LAST_DAY_MONTH FIRST_DAY_YEAR FIRST_DAY_WEEK NEXT_FRIDAY 2016/2/3 2015/12/3 2016/2/1 2016/2/29 2016/1/1 2016/1/31 2016/2/5  

PL/SQL函数缓存测试

一、创建测试的表,并初始化测试数据 二、创建带缓存的函数 三、执行结果和统计信息 第一次: 第二次查询: 三、表新增或更新数据,缓存将失效 再次运行同样的语句,发现consistent gets不为零,说明缓存失效,oracle重新从表读取了数据

PL/SQL的常用设置

一、显示所有打开的窗口,并永久生效 菜单:Tools -> Window List 菜单:Window -> Save Layout 二、默认显示My Objects,提高数据库对象的展开速度 菜单:Tools -> Browser Filters,将My Objects设置为默认 三、调整数据库对象的显示顺序,最常用的放在前面 菜单:Tools -> Browser Folders 建议显示顺序为:Recent Objects | Tables | Sequences | Views | Tablespaces | Fucntions | Procedures | Tiggers | Database Links | Jobs | Users | Recycle bin,其他顺序不变,可以根据自己的习惯调整。 四、编辑器设置:关键字自动转化为大写 菜单:Tools -> Preferences -> User Interface -> [...]