Oracle REST Data Services(ORDS)是让oracle数据库启用https功能。它作为一个中间层Java应用,ORDS提供了数据库管理REST API、SQL Developer Web、PL/SQL网关和适用于REST的SODA,并且支持发布RESTful Web服务,可与Oracle数据库中的数据和存储过程进行交互。
安装参照
https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/21.4/aelig/installing-REST-data-services.html#GUID-B6661F35-3EE3-4CB3-9379-40D0B8E24635
下载地址
ords:https://www.oracle.com/tools/ords/ords-downloads-2142.html
jdk:https://www.oracle.com/java/technologies/downloads/#java8-linux
安装前提
ords版本:21.4.2
系统要求
下载ords
https://www.oracle.com/tools/ords/ords-downloads-2142.html
上传解压
创建ords目录,解压至此
mkdir /software/oracle11g/ords
权限
分配相应用户必要的权限,见安装前执行脚本
数据库
已安装数据库,本文中是11.2.0.4。安装过程详见上一篇《linux安装oracle》
创建用户,用于安装ords。
create user test identified by test default tablespace users temporary tablespace temp;
授权(不授权不影响安装使用,待进一步测试)
grant connect,dba to test;
jdk
按照系统要求,下载安装jdk8
linux版的x64rpm或者x64compressed
以oracle用户登录sftp,将下载后的jdk文件上传
opt目录是linux专门给用户装额外软件的目录,在该目录下新建目录oraopt,专门给oracle用户安装软件使用。
以root用户创建oraopt目录,然后调整权限
mkdir -p /opt/oraopt
chown -R oracle:oinstall /opt/oraopt
chmod -R 775 /opt/oraopt
oracle用户进入目录/software/oracle11g,解压jdk
tar -zxvf jdk-8u271-linux-x64.tar.gz -C /opt/oraopt
设置环境变量
保存后,执行如下命令,使更改生效。
输入如下命令,出现java版本信息等如下内容,则安装成功。
安装过程
权限脚本
ORDS安装程序中的权限脚本
介绍关于用户安装、升级、校验、卸载ORDS所需的权限的脚本文件。
注意:这个脚本,是在你不想使用sys as sysdba去安装、升级、校验、卸载ORDS时,才需要。
从ORDS19.2版本开始,Oracle REST Data Services的安装文件中会包含一个脚本文件,ords_installer_privileges.sql。这个脚本文件会向指定的数据库用户分配安装、升级、校验、卸载ORDS的权限。
按照如下步骤执行操作
1、使用SQLcl或者SQL*Plus,以sysdba权限连接到oracle数据库。
2、执行如下脚本,并提供一个数据库用户
SQL> @/path/to/installer/ords_installer_privileges.sql exampleuser
SQL> exit
根据之前上传下载的路径,命令中的路径如下,而exampleuser则是之前创建的test。
高级安装
以oracle用户创建文件夹,用于存放安装时需要指定的配置信息
切换到ords.war所在目录,执行如下命令开始高级安装
java -jar ords.war install advanced
过程中按照提示完成安装即可。
ORDS_PUBLIC_USER:test
Enter the administrator username:test
Enter the database password for EXAMPLEUSER: test
本文的高级安装,选择的是独立服务模式,所以安装结束时,默认是以独立服务模式启动服务的,此时界面会一直停在启动成功界面,详见2.5启停服务。
防火墙
开放8080端口
firewall-cmd --permanent --add-port=8080/tcp
重启防火墙(修改配置后重启防火墙)
firewall-cmd --reload
其他可能用到的
移除端口(取消时,使用)
firewall-cmd --permanent --remove-port=8080/tcp
关闭firewall.service
service firewalld stop
开启firewall.service
service firewalld start
校验安装
java -jar ords.war validate [--database <dbname>]
启停服务
以独立服务模式,启动服务
java -jar ords.war standalone
停止服务 ctrl+c
启动服务截图
注意:启动后,启动信息中会有配置信息,注意其中的db.hostname,经测试,这其实是下图中,defaults.xml中的hostname配置内容,它会影响与数据库的通信,所以这里hostname的配置要和数据库监听中的hostname保持一致。
而访问url(例如http://192.168.0.108:8080/ords/test/ttest/)中的hostname与defaults.xml配置文件此处的hostname无关,只和服务所在服务器的ip有关。
简单测试
使用SQL Developer,在test用户中创建ttest表,并插入测试数据。
insert into ttest(c1) values('c');
insert into ttest(c1) values('y');
insert into ttest(c1) values('h');
commit;
在test模式上启用rest服务、在ttest表上启用rest服务。安装ords之后,在sql developer中右击相应模式(用户的连接),右键弹出菜单可以看到,【rest服务】内容
test模式(用户)启用rest服务
ttest表启用rest服务
浏览器测试,http://192.168.0.108:8080/ords/test/ttest/,截图如下可以看到浏览器以json格式
返回了插入的三条数据。
postman测试如下