编辑 | blame | 历史 | 原始文档

Oracle 11g 数据库使用指南

🎯 配置已完成

您的 production_config.json 已经调整为Oracle 11g配置:

"Database": {
  "Enabled": true,
  "Type": "Oracle",
  "ConnectionString": "Data Source=localhost:1521/XE;User Id=PRODUCTION_MES;Password=your_password;Pooling=true;Connection Timeout=60;",
  "AutoCreateTables": true,
  "BatchSize": 100,
  "DataRetentionDays": 90,
  "Tables": {
    "ModbusDataTable": "PRODUCTION_DATA",
    "CommunicationLogTable": "COMMUNICATION_LOG",
    "ErrorLogTable": "ERROR_LOG",
    "StatisticsTable": "STATISTICS"
  }
}

🔧 Oracle数据库准备步骤

1. 创建数据库用户(必须先执行)

使用sys或system用户连接Oracle,执行以下SQL:

-- 连接为sys用户
sqlplus sys/password@localhost:1521/XE as sysdba

-- 创建表空间
CREATE TABLESPACE PRODUCTION_MES_DATA
DATAFILE 'D:\oracle\oradata\XE\production_mes_data.dbf' 
SIZE 500M AUTOEXTEND ON NEXT 10M MAXSIZE 2G;

-- 创建用户
CREATE USER PRODUCTION_MES 
IDENTIFIED BY your_password
DEFAULT TABLESPACE PRODUCTION_MES_DATA
TEMPORARY TABLESPACE TEMP;

-- 授予权限
GRANT CONNECT, RESOURCE TO PRODUCTION_MES;
GRANT CREATE TABLE TO PRODUCTION_MES;
GRANT CREATE SEQUENCE TO PRODUCTION_MES;
GRANT CREATE VIEW TO PRODUCTION_MES;
GRANT UNLIMITED TABLESPACE TO PRODUCTION_MES;

2. 修改连接字符串

根据您的Oracle环境,修改 production_config.json 中的连接字符串:

本地Oracle XE(推荐)

"ConnectionString": "Data Source=localhost:1521/XE;User Id=PRODUCTION_MES;Password=your_actual_password;Pooling=true;Connection Timeout=60;"

远程Oracle服务器

"ConnectionString": "Data Source=your_server_ip:1521/ORCL;User Id=PRODUCTION_MES;Password=your_password;Pooling=true;Connection Timeout=60;"

使用TNS别名

"ConnectionString": "Data Source=YOUR_TNS_NAME;User Id=PRODUCTION_MES;Password=your_password;Pooling=true;Connection Timeout=60;"

📋 数据表结构(自动创建)

程序启动后会自动创建以下表:

PRODUCTION_DATA - 生产数据主表

  • 存储所有Modbus采集的生产数据
  • JSON格式存储控制信号、产品数据、测量数据
  • 支持大数据量存储

COMMUNICATION_LOG - 通信日志表

  • 记录连接、断开、数据接收等事件
  • 便于故障诊断和性能分析

ERROR_LOG - 错误日志表

  • 记录所有通信错误和异常
  • 支持错误级别和解决状态跟踪

STATISTICS - 统计数据表

  • 记录通信质量统计信息
  • 支持性能监控和趋势分析

🚀 使用步骤

1. 准备Oracle环境

  • 确保Oracle 11g服务运行
  • 创建PRODUCTION_MES用户(见上面步骤1)
  • 确认1521端口可访问

2. 配置连接信息

  • 修改 production_config.json 中的连接字符串
  • 更新实际的服务器地址、用户名、密码

3. 启动程序

  • 在程序中选择 production_config.json
  • 点击"连接PLC"
  • 系统会自动创建数据库表并开始数据采集

📊 数据查询示例

查看最新生产数据

SELECT 
    READ_TIME,
    PROJECT_NAME,
    JSON_VALUE(PRODUCT_DATA_JSON, '$.ProductModel') AS 产品型号,
    JSON_VALUE(PRODUCT_DATA_JSON, '$.TestResult') AS 测试结果,
    JSON_VALUE(MEASUREMENT_DATA_JSON, '$.WorkingVoltage') AS 工作电压
FROM PRODUCTION_DATA 
WHERE READ_TIME >= SYSDATE - 1
ORDER BY READ_TIME DESC;

查看通信状态

SELECT 
    LOG_TIME,
    EVENT_TYPE,
    IS_SUCCESS,
    EVENT_DESCRIPTION
FROM COMMUNICATION_LOG 
WHERE LOG_TIME >= SYSDATE - 1
ORDER BY LOG_TIME DESC;

查看错误统计

SELECT 
    ERROR_TYPE,
    COUNT(*) AS 错误次数,
    MAX(ERROR_TIME) AS 最近错误时间
FROM ERROR_LOG 
WHERE ERROR_TIME >= SYSDATE - 7
GROUP BY ERROR_TYPE
ORDER BY COUNT(*) DESC;

⚠️ 注意事项

  1. 用户权限:必须先创建PRODUCTION_MES用户并授权
  2. 表空间:建议创建专用表空间,避免占用SYSTEM表空间
  3. 字符编码:Oracle支持中文字符,无需特殊配置
  4. 连接池:已启用连接池,提高性能
  5. 超时设置:连接超时60秒,适合网络不稳定环境

🔍 故障排除

连接失败

ORA-12541: TNS:no listener

解决:检查Oracle监听器是否启动
cmd lsnrctl status lsnrctl start

用户不存在

ORA-01017: invalid username/password

解决:确认用户已创建且密码正确

权限不足

ORA-00942: table or view does not exist

解决:授予用户CREATE TABLE权限
sql GRANT CREATE TABLE TO PRODUCTION_MES;

📈 性能优化建议

  1. 定期清理数据:设置DataRetentionDays=90,自动清理90天前数据
  2. 创建索引:为READ_TIME等常用字段创建索引
  3. 分区表:数据量大时考虑按时间分区
  4. 统计信息:定期收集表统计信息,优化查询性能

配置已完成,您现在可以使用Oracle 11g数据库进行生产数据采集了!🎉