您的 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"
}
}
使用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;
根据您的Oracle环境,修改 production_config.json 中的连接字符串:
"ConnectionString": "Data Source=localhost:1521/XE;User Id=PRODUCTION_MES;Password=your_actual_password;Pooling=true;Connection Timeout=60;"
"ConnectionString": "Data Source=your_server_ip:1521/ORCL;User Id=PRODUCTION_MES;Password=your_password;Pooling=true;Connection Timeout=60;"
"ConnectionString": "Data Source=YOUR_TNS_NAME;User Id=PRODUCTION_MES;Password=your_password;Pooling=true;Connection Timeout=60;"
程序启动后会自动创建以下表:
production_config.json 中的连接字符串production_config.jsonSELECT
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;
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;
配置已完成,您现在可以使用Oracle 11g数据库进行生产数据采集了!🎉