Oracle graph 图数据库体验-安装篇
服务端安装
环境准备
安装数据库
DOCKER 安装23AI FREE ,参考:
https://container-registry.oracle.com/ords/f?p=113:4:111381387896144:::4:P4_REPOSITORY,AI_REPOSITORY,AI_REPOSITORY_NAME,P4_REPOSITORY_NAME,P4_EULA_ID,P4_BUSINESS_AREA_ID:1863,1863,Oracle%20Database%20Free,Oracle%20Database%20Free,1,0&cs=36-E53gEIBReS4-J2UPGC9syH8VXvEui-xyk9a8dAdTvTNYF8D_rhkh-0AzP9gtmH6tXPVGJlyvyYCRg6rGJ_2Q
docker run -itd --name orcl23ai -h orcl23ai -p 1521:1521 -p 8080:8080 -e ORACLE_PWD=oracle -v /mnt/d/WSL_DOCKER/oracle/23ai/oradata:/opt/oracle/oradata container-registry.oracle.com/database/free:latest
配置yum源 安装JDK和tomcat
cd /etc/yum.repos.d/
sed -i 's|https://yum$ociregion.$ocidomain|https://yum.oracle.com|g' oracle-linux-ol8.repo
yum install jdk
yum install java
配置DB角色及用户权限
--登录
sql sys/oracle@localhost:1521/freepdb1 as sysdba
alter session set container=freepdb1;
-- This procedure creates a list of roles needed for graph.DECLAREPRAGMA AUTONOMOUS_TRANSACTION;role_exists EXCEPTION;PRAGMA EXCEPTION_INIT(role_exists, -01921);TYPE graph_roles_table IS TABLE OF VARCHAR2(50);graph_roles graph_roles_table;BEGINgraph_roles := graph_roles_table('GRAPH_DEVELOPER','GRAPH_ADMINISTRATOR','GRAPH_USER','PGX_SESSION_CREATE','PGX_SERVER_GET_INFO','PGX_SERVER_MANAGE','PGX_SESSION_READ_MODEL','PGX_SESSION_MODIFY_MODEL','PGX_SESSION_NEW_GRAPH','PGX_SESSION_GET_PUBLISHED_GRAPH','PGX_SESSION_COMPILE_ALGORITHM','PGX_SESSION_ADD_PUBLISHED_GRAPH','PGX_SESSION_SET_IDLE_TIMEOUT');FOR elem IN 1 .. graph_roles.count LOOPBEGINdbms_output.put_line('create_graph_roles: ' || elem || ': CREATE ROLE ' || graph_roles(elem));EXECUTE IMMEDIATE 'CREATE ROLE ' || graph_roles(elem);EXCEPTIONWHEN role_exists THENdbms_output.put_line('create_graph_roles: role already exists. continue');WHEN OTHERS THENRAISE;END;END LOOP;EXCEPTIONwhen others thendbms_output.put_line('create_graph_roles: hit error ');raise;END;/
-- This procedure add some grants to the graph roles.DECLAREPRAGMA AUTONOMOUS_TRANSACTION;BEGINEXECUTE IMMEDIATE 'GRANT PGX_SESSION_CREATE TO GRAPH_ADMINISTRATOR';EXECUTE IMMEDIATE 'GRANT PGX_SERVER_GET_INFO TO GRAPH_ADMINISTRATOR';EXECUTE IMMEDIATE 'GRANT PGX_SERVER_MANAGE TO GRAPH_ADMINISTRATOR';EXECUTE IMMEDIATE 'GRANT PGX_SESSION_CREATE TO GRAPH_DEVELOPER';EXECUTE IMMEDIATE 'GRANT PGX_SESSION_NEW_GRAPH TO GRAPH_DEVELOPER';EXECUTE IMMEDIATE 'GRANT PGX_SESSION_GET_PUBLISHED_GRAPH TO GRAPH_DEVELOPER';EXECUTE IMMEDIATE 'GRANT PGX_SESSION_MODIFY_MODEL TO GRAPH_DEVELOPER';EXECUTE IMMEDIATE 'GRANT PGX_SESSION_READ_MODEL TO GRAPH_DEVELOPER';EXECUTE IMMEDIATE 'GRANT PGX_SESSION_SET_IDLE_TIMEOUT TO GRAPH_DEVELOPER';EXECUTE IMMEDIATE 'GRANT PGX_SESSION_CREATE TO GRAPH_USER';EXECUTE IMMEDIATE 'GRANT PGX_SESSION_GET_PUBLISHED_GRAPH TO GRAPH_USER';BEGINEXECUTE IMMEDIATE 'GRANT CREATE PROPERTY GRAPH TO GRAPH_DEVELOPER';EXCEPTION WHEN others thenif sqlcode = -990 thenmdsys.opg_log.debug('grant create property graph to graph_developer: missing privilege, continue');elseraise;end if;END;EXCEPTIONwhen others thendbms_output.put_line('add_graph_roles_grants: hit error ');raise;END;/--授权GRANT GRAPH_DEVELOPER TO hr;GRANT GRAPH_ADMINISTRATOR to hr;
服务端安装
安装
rpm -ivh oracle-graph-24.4.0.x86_64.rpm
配置文件
/etc/oracle/graph/pgx.conf将...
"pgx_realm": {"implementation": "oracle.pg.identity.DatabaseRealm","options": {"jdbc_url": "<REPLACE-WITH-DATABASE-URL-TO-USE-FOR-AUTHENTICATION>","token_expiration_seconds": 3600,修改如下:
...
"pgx_realm": {"implementation": "oracle.pg.identity.DatabaseRealm","options": {"jdbc_url": "jdbc:oracle:thin:@localhost:1521/freepdb1","token_expiration_seconds": 3600,
...
启动
#启动
systemctl start pgx
#停止
systemctl reload pgx
#重载
systemctl daemon-reload#看状态
root@vbox mnt]# systemctl status pgx.service
● pgx.service - Oracle Graph In-Memory ServerLoaded: loaded (/etc/systemd/system/pgx.service; disabled; vendor preset: disabled)Active: active (running) since Fri 2025-01-17 07:55:07 UTC; 27s agoMain PID: 10598 (bash)Tasks: 57 (limit: 50345)Memory: 1.3GCGroup: /system.slice/pgx.service├─10598 /bin/bash start-server└─10638 java --add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED --add-exports=jdk.compiler/com.sun.tools.javac.util=A>Jan 17 07:55:09 vbox bash[10638]: INFO: Starting Servlet engine: [Apache Tomcat/9.0.90]
Jan 17 07:55:17 vbox bash[10638]: Jan 17, 2025 7:55:17 AM org.apache.catalina.startup.ContextConfig getDefaultWebXmlFragment
Jan 17 07:55:17 vbox bash[10638]: INFO: No global web.xml found
Jan 17 07:55:17 vbox bash[10638]: Jan 17, 2025 7:55:17 AM org.apache.jasper.servlet.TldScanner scanJars
Jan 17 07:55:17 vbox bash[10638]: INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in >
Jan 17 07:55:28 vbox bash[10638]: TeeFilter will be ACTIVE on this host [vbox]
Jan 17 07:55:29 vbox bash[10638]: Jan 17, 2025 7:55:29 AM org.glassfish.jersey.server.wadl.WadlFeature configure
Jan 17 07:55:29 vbox bash[10638]: WARNING: JAXBContext implementation could not be found. WADL feature is disabled.
Jan 17 07:55:30 vbox bash[10638]: Jan 17, 2025 7:55:30 AM org.apache.coyote.AbstractProtocol start
Jan 17 07:55:30 vbox bash[10638]: INFO: Starting ProtocolHandler ["https-jsse-nio-7007"]
#看具体错误
journalctl -u pgx.service
客户端配置
## 因为server端启用了https,java对此有校验,需要把证书导入到信任库里面
#本节参考:https://docs.oracle.com/en/database/oracle/property-graph/24.4/spgdg/using-self-signed-server-keystore.html#GUID-AC35D241-59D0-4CFE-B36B-9838E2B62119
#先配置环境变量
[root@vbox bin]# cat ~/.bash_profile
# .bash_profile# Get the aliases and functions
if [ -f ~/.bashrc ]; then. ~/.bashrc
fi# User specific environment and startup programs
#export JAVA_HOME=/home/oracle/java/jdk-21.0.5
PATH=$PATH:$HOME/binexport PATH
export PGX_SERVER_KEYSTORE_PASSWORD=changeit#导入证书到信任库
[root@vbox bin]# find / -name "*cacerts*"
find: ‘/proc/12992’: No such file or directory
find: ‘/run/user/1000/doc’: Permission denied
find: ‘/run/user/1000/gvfs’: Permission denied
/etc/pki/ca-trust/extracted/edk2/cacerts.bin
/etc/pki/ca-trust/extracted/java/cacerts
/etc/pki/java/cacerts
/etc/java/java-11-openjdk/java-11-openjdk-11.0.22.0.7-2.0.1.el8.x86_64/lib/security/cacerts
/etc/java/java-1.8.0-openjdk/java-1.8.0-openjdk-1.8.0.432.b06-2.0.1.el8.x86_64/lib/security/cacerts
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.432.b06-2.0.1.el8.x86_64/jre/lib/security/cacerts
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.432.b06-2.0.1.el8.x86_64/jre/lib/security/cacerts.upstream
/home/oracle/java/jdk-21.0.5/lib/security/cacerts
/opt/oracle/product/23ai/dbhomeFree/javavm/jdk/jdk11/lib/security/cacerts
/opt/oracle/product/23ai/dbhomeFree/javavm/lib/security/cacerts
/opt/oracle/product/23ai/dbhomeFree/jdk/lib/security/cacerts
[root@vbox bin]# echo $JAVA_HOME
/home/oracle/java/jdk-21.0.5
[root@vbox bin]# keytool -importkeystore -srckeystore /etc/oracle/graph/server_keystore.jks -destkeystore $JAVA_HOME/lib/security/cacerts -deststorepass changeit -srcstorepass changeit -noprompt
Importing keystore /etc/oracle/graph/server_keystore.jks to /home/oracle/java/jdk-21.0.5/lib/security/cacerts...
Entry for alias pgx successfully imported.
Import command completed: 1 entries successfully imported, 0 entries failed or cancelled
[root@vbox bin]# keytool -importkeystore -srckeystore /etc/oracle/graph/server_keystore.jks -destkeystore $JAVA_HOME/lib/security/cacerts -deststorepass changeit -srcstorepass changeit -noprompt^C
[root@vbox bin]# export JAVA_HOME=/etc/java/java-11-openjdk/java-11-openjdk-11.0.22.0.7-2.0.1.el8.x86_64
[root@vbox bin]# echo $JAVA_HOME
/etc/java/java-11-openjdk/java-11-openjdk-11.0.22.0.7-2.0.1.el8.x86_64
[root@vbox bin]# keytool -importkeystore -srckeystore /etc/oracle/graph/server_keystore.jks -destkeystore $JAVA_HOME/lib/security/cacerts -deststorepass changeit -srcstorepass changeit -noprompt
Importing keystore /etc/oracle/graph/server_keystore.jks to /etc/java/java-11-openjdk/java-11-openjdk-11.0.22.0.7-2.0.1.el8.x86_64/lib/security/cacerts...
Entry for alias pgx successfully imported.
Import command completed: 1 entries successfully imported, 0 entries failed or cancelledWarning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /etc/java/java-11-openjdk/java-11-openjdk-11.0.22.0.7-2.0.1.el8.x86_64/lib/security/cacerts -destkeystore /etc/java/java-11-openjdk/java-11-openjdk-11.0.22.0.7-2.0.1.el8.x86_64/lib/security/cacerts -deststoretype pkcs12".
(failed reverse-i-search)`demoad': keytool -importkeystore -srckeystore /etc/oracle/graph/server_keystore.jks -destkeystore $JAVA_HOME/lib/security/cacerts -^Cststorepass changeit -srcstorepass changeit -noprompt
#重启
systemctl daemon-reload
systemctl restart pgx
systemctl stop pgx
systemctl start pgx
systemctl status pgx.service
然后再浏览器中打开 https://localhost:7007/dash
用户名和密码就是刚开始的时候配置数据库的用户名和密码
参考文档
https://docs.oracle.com/en/database/oracle/property-graph/24.4/spgdg/oracle-graph-server-and-client-installation.html#SPGDG-GUID-55880457-D6B1-47D7-A05A-1E95DE9ABFC5
相关文章:

Oracle graph 图数据库体验-安装篇
服务端安装 环境准备 安装数据库 DOCKER 安装23AI FREE ,参考: https://container-registry.oracle.com/ords/f?p113:4:111381387896144:::4:P4_REPOSITORY,AI_REPOSITORY,AI_REPOSITORY_NAME,P4_REPOSITORY_NAME,P4_EULA_ID,P4_BUSINESS_AREA_ID:1…...
Nginx:从入门到实战使用教程
全方位解析Nginx:从入门到实战使用教程 Nginx安装、配置详细教程 文章目录 全方位解析Nginx:从入门到实战使用教程导语一、Nginx简介二、Nginx安装与配置 1. 在CentOS系统上安装Nginx:2. 在Ubuntu系统上安装Nginx:3. Nginx配置文…...

网络安全:信息时代的守护者
随着互联网的快速发展,网络安全问题日益成为全球关注的焦点。无论是个人用户、企业组织还是政府部门,网络安全都已成为保障信息安全、保护隐私、确保社会秩序的基石。在这个数字化时代,如何应对复杂多变的网络安全威胁,成为了我们…...
Visual Studio Code + Stm32 (IAR)
记录一下, 以前看别人在 vsc 下配置 stm32 工程非常麻烦。 最近,突然发现, iar 官方出了两个插件, iar build 、 iar C-Spy 安装之后,配置一下 iar 软件路径。 然后,直接打开工程目录,编译…...
JavaScript语言的正则表达式
JavaScript语言的正则表达式详解 正则表达式(Regular Expression,简称Regex或RegExp)是一种强大的文本处理工具,可以在字符串中执行模式匹配和替换操作。在JavaScript中,正则表达式是处理字符串时不可或缺的部分&…...
R语言的编程范式
R语言的编程范式探讨 引言 R语言作为一种专门用于统计分析和数据可视化的编程语言,近年来得到了广泛的应用。无论是在学术研究、企业分析,还是在数据科学的各个领域,R语言凭借其强大的数据处理能力和丰富的图形化工具,吸引了大批…...
CentOS9 安装Docker+Dpanel+onlyoffice(https、更改字体、字号、去除限制)的避坑笔记
CentOS9 安装Dockeronlyoffice(https、更改字体、字号、去除限制)的避坑笔记 一、安装Docker二、更新docker镜像源:三、安装Dpanel四、安装onlyoffice五、更改字体和字号六、去除限制 动手前,预防遭遇各种莫名奇妙的问题ÿ…...

Excel 技巧11 - 如何使用Excel作成简单的排班表(★★),weekday 函数,TEXT函数
本文讲了如何在Excel中制作简单的排班表。 1,排班表Layout效果 - B2 单元格找那个输入 日期 - C3 - AG3 输入日,就是该月份的几号,比如1月5号,就输入5 如果是周六周日,背景色显示为绿色 - B4 ~ 输入员工名称 当 B2…...

StarRocks 怎么让特定的SQL路由到FE master节点的
背景 本文基于 StarRocks 3.1.7 大家都知道对于Starrocks来说 FE 是分 master和follower的,而只有master节点才能对元数据进行写操作。但是为什么呢?哪里有体现呢? 这其中的原因在网上是搜不到的,所以大家只知道只有master节点才…...
在Windows/Linux/MacOS C++程序中打印崩溃调用栈和局部变量信息
打印崩溃调用栈和局部变量信息的方法有所不同。以下是针对 Windows、Linux 和 MacOS 的示例代码。 Windows 在 Windows 上,可以使用 Windows API 来捕获异常并打印调用栈。 #include <windows.h> #include <DbgHelp.h> #include <stdio.h> #in…...

解决npm install安装出现packages are looking for funding run `npm fund` for details问题
当我们运行npm install时,可能会收到类似以下的提示信息:“x packages are looking for funding.” 这并不是错误提示,也不会影响项目的正常运行。其实实在提醒有一些软件包正在寻求资金支持。 根据提示输入npm fund可以查看详细的信息&#…...

豆包MarsCode:小C点菜问题
问题描述 思路分析 这道题的核心任务是找出所有不超过给定价格 m 的菜肴中,最常见的菜肴价格,最后返回该价格的出现次数。 1. 题意理解: 给定一个最大价格 m,小C只会选择价格不超过 m 的菜。菜单上有 n 道菜,每道菜…...
K8S中Pod控制器之CronJob(CJ)控制器
CronJob 控制器是 Kubernetes 中用于周期性执行任务的一种控制器,它基于 Job 控制器来创建和管理作业。以下是 CronJob 的一些关键特点: 周期性调度:CronJob 允许您定义一个基于时间的调度,类似于 Linux 的 cron 工具,…...

FRP内网穿透0.61.1新版教程
在上一篇zerotier讲述了如何实现虚拟局域网搭建,这篇会讲述FRP内网穿透的使用教程 那么frp与zerotier的区别是什么呢?(说人话) FRP 主要用于内网服务向外网的单向暴露。 ZeroTier 用于构建一个虚拟的私有网络,实现多点…...
亲测解决`data_array` is not of type `MetaTensor, assuming affine to be identity
这个问题是由于orientation的数据增强在scaling之后导致的,解决方法是将这两个数据增强的顺序调换。 问题原文 lib/python3.10/site-packages/monai/transforms/spatial/array.py:623: UserWarning: `data_array` is...

python+pygame+pytmx+map editor开发一个tiled游戏demo 05使用object层初始化player位置
代码 import mathimport pygame# 限制物体在屏幕内 import pytmxdef limit_position_to_screen(x, y, width, height):"""限制物体在屏幕内"""x max(0, min(x, SCREEN_WIDTH - width)) # 限制x坐标y max(0, min(y, SCREEN_HEIGHT - height))…...

Git实用指南:忽略文件、命令别名、版本控制、撤销修改与标签管理
目录 1.忽略特殊文件 1.1.那如何配置我们需要忽略的文件的呢? 1.2.如何检验效果? 2.给命令配置别名 3.基本操作之版本回退 3.1.使用场景: 3.2.使用方法: 4.撤销修改 情况一:对于工作区的代码,还没…...

wordpress安装完后台无格式解决方法(样式加载不出来)
刚安装的wordpress,进入后台后,没有样式。 1.如果ip进入,可能一切正常 2.域名进入,遇到这种情况概率大(经过了nginx代理) 正常访问文章的话是没问题的,只是管理后台存在这样的代码,样式没加载出来。 美国随机地址生成器:美国随机地址生成器(随机地址生成器 - 生成全…...

数据库管理-第285期 Oracle 23ai:深入浅出向量索引(20250117)
数据库管理285期 20245-01-17 数据库管理-第285期 Oracle 23ai:深入浅出向量索引(20250117)1 HNSW事务支持解读 2 IVF分区支持解读 3 混合向量索引何时选择混合向量索引为何选择混合向量索引 总结 数据库管理-第285期 Oracle 23ai:…...
日志(elk stack)基础语法学习,零基础学习
ELK Stack 是一组开源的日志管理工具,包括 Elasticsearch、Logstash 和 Kibana。Elasticsearch 用于存储和搜索日志数据,Logstash 用于收集和处理日志数据,而 Kibana 提供了一个强大的可视化界面来分析和监控这些数据。以下是 ELK Stack 的基…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...

听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...