【ORACLE】在ORACLE数据库中启用机器学习功能(OML)以支持PYTHON脚本的运行

【ORACLE】在ORACLE数据库中启用机器学习功能(OML)以支持PYTHON脚本的运行前言 在 oracle 数据库 21C 20C 版本中 ORACLE 数据库加入了机器学习功能 叫 OML 全称 Oracle machine learning 并且加入了对 python 语言的支持 组件名叫 oml4py 这个组件是部署在数据库服务器端

大家好,我是讯享网,很高兴认识大家。

前言

在 oracle 数据库 21C(20C)版本中,ORACLE数据库加入了机器学习功能,叫OML,全称(Oracle machine learning),并且加入了对python语言的支持,组件名叫 oml4py。这个组件是部署在数据库服务器端,然后有客户端,可使用python连接数据库进行机器学习操作,并且支持在oracle数据库存储中创建管理python脚本并运行它。这样,我们可以通过这个功能,给ORACLE数据库添加python函数。以下内容根据oracle官网多篇文档翻译整合加本人实测遇坑优化而来,目前各种搜索引擎都搜不到完整的安装使用用例。

一、安装数据库并启动

安装这个就不细说了,可以自行下载安装,也可以直接使用docker(我之后会考虑做个已安装相关特性的docker镜像出来)

二、安装python

https://docs.oracle.com/en/database/oracle/machine-learning/oml4py/1/mlpug/build-and-install-python-linux-premises-databases.html

  1. 去python官网下载 3.9.5 版本的tgz文件 wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
  2. 解压
  3. 进入 Python-3.9.5 目录
  4. 安装依赖包
yum install libffi-devel yum install openssl-devel yum install tk-devel yum install xz-devel yum install zlib-devel 

讯享网
  1. 编译安装python,“PREFIX”替换为你要安装的目标路径
讯享网./configure --enable-shared --prefix=PREFIX make clean; make make altinstall 

这里如果编译报错 gcc: internal compiler error: Killed (program cc1),是操作系统内存不足引起的,尝试增加内存或者使用swap交换分区

  1. 设置环境变量
export PYTHONHOME=PREFIX export PATH=$PYTHONHOME/bin:$PATH export LD_LIBRARY_PATH=$PYTHONHOME/lib:$LD_LIBRARY_PATH 
讯享网cd PREFIX/bin ln -s python3.9 python3 

既然设置了这个,不把pip3也设置上去?

ln -s pip3.9 pip3 

三、安装python依赖包

https://docs.oracle.com/en/database/oracle/machine-learning/oml4py/1/mlpug/install-required-supporting-packages-linux-premises-databases.html


讯享网

讯享网pip3 install numpy pip3 install pandas pip3 install scipy pip3 install matplotlib pip3 install cx_Oracle pip3 install scikit-learn 

这几个包是官方说的,我总觉得可能少了

四、安装OML4Py服务端到数据库

https://docs.oracle.com/en/database/oracle/machine-learning/oml4py/1/mlpug/install-oml4py-server-linux-premises-oracle-database-21c.html

输入sas回车进入sqlplus

SQL> spool install.txt SQL> alter session set container=PDB1; SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION NULL; SQL> @$ORACLE_HOME/oml4py/server/pyqcfg.sql define permtbl_value = SYSAUX --> Specify a permanent tablespace for the PYQSYS schema define temptbl_value = TEMP --> Specify a temporary tablespace define orahome_value = /u01/app/oracle/product/21.3.0.0/dbhome_1 --> Specify the ORACLE_HOME directory define pythonhome = /opt/Python-3.9.5 --> Specify the PYTHON_HOME directory 

五、在数据库中测试

https://docs.oracle.com/en/database/oracle/machine-learning/oml4py/1/mlpug/pyqeval-function.html

讯享网--创建一个简单的python函数 BEGIN sys.pyqScriptCreate('pyqFun1', 'func = lambda: "Hello World from a lambda!"', FALSE, TRUE); -- V_GLOBAL, V_OVERWRITE END; / --查询用户创建的python函数列表,这里注意使用oci7的客户端会报错,要使用oci8 SELECT name, script, description, cdate from USER_PYQ_SCRIPTS; --执行python函数 SELECT name, value FROM table(pyqEval(NULL, 'XML', 'pyqFun1')); --返回 NAME VALUE ---- --------------------------------------------------  <root><str>Hello World from a lambda!</str></root> --删除python函数 BEGIN sys.pyqScriptDrop('pyqFun1'); END; / 

在这里插入图片描述

如果提示 ORA-06598: INHERIT PRIVILEGES 权限不足,试着先执行一次

GRANT INHERIT PRIVILEGES ON USER SYS TO PUBLIC; 

支持传入参数,支持以值、行、表的形式返回结果,
更多例子详见
https://docs.oracle.com/en/database/oracle/machine-learning/oml4py/1/mlpug/sql-embedded-python-execution1.html

六、最后

最后的最后,不要在生产环境使用21c!按大佬的说法,目前19c才是长期版本,下一个长期版本会是23c。

  • 本文作者: DarkAthena
  • 本文链接: https://www.darkathena.top/archives/oml4py-server-setup
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
小讯
上一篇 2025-01-05 15:52
下一篇 2025-02-27 14:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/60345.html