文章目录

  • 1.事务被回退:, 触发器只能在PL块中调用系统函数
  • 2.新建模式、新建用户
  • 3.神通数据库服务器OSRDB实例 服务启动后停止
  • 4.安装数据库的时候弹出的参数配置程序点不了“下一步”按钮
  • 5.SQL 错误 [40000]: ERROR, 未开启物化视图功能
  • 6.ERROR,Bad numeric input format '1,989.02'
  • 7.神通数据库加密解密操作
  • 8.通过触发器的方式阻止手动修改数据库

1.事务被回退:, 触发器只能在PL块中调用系统函数

当使用insert into 语句插入数据的时候报错的

com.oscar.util.OSQLException: ERROR, 程序逻辑错,事务被回退:, 触发器只能在PL块中调用系统函数

能看到是触发器问题,但是也没找到是哪个地方,问了神通的技术支持也没给回复,我们项目中神通数据库有的版本不报错,通过对比试错发了解决方案如下:

SELECT * FROM INFO_SCHEM.SYS_TRIGGER  WHERE TGNAME LIKE '__MVIEW_LOG_%'
drop TRIGGER XX.__MVIEW_LOG_34487_TRG;    --XX是数据库模式名

2.新建模式、新建用户

--新建模式XXX, 即创建表空间
CREATE TABLESPACE XXX DATAFILE 'D:\ShenTong\odbs\OSRDB\oscarxxx.dbf' SIZE 200M AUTOEXTEND ON NEXT 10M DEFAULT LOGGING INIT 64k NEXT 64k FILL 70 SPLIT 50 ;
--创建用户
CREATE USER XXX WITH  DEFAULT TABLESPACE XXX PASSWORD '123456' ;
GRANT ROLE SYSDBA TO USER XXX ;

3.神通数据库服务器OSRDB实例 服务启动后停止

神通数据库安装的时候有个选项是自动注册为服务,安装成功后默认增加了两个服务项:代理服务和OSRDB实例服务。如果数据库工作台打开后连接不上,connect refused,要先确保这两个服务是开启状态。这里启动实例服务有时候会秒关,刚启动就悄悄给停了,或报错:服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止。
两个原因:

  1. 没有授权文件或者授权文件已经过期,一般是在安装目录下的license文件夹

我本地的授权文件路径:D:\ShenTong\license\oscar.license

  1. 授权文件没有问题,仍启动不了服务。

实例服务已设置自动启动,之前是连接正常的,后来执行了一个错误的新建TABLESPACE表空间的sql(将.dbf放错位置了,不影响db使用但不符合规范),将sql中数据文件改到正确地址执行会报表空间已存在的错误,于是想将原来的.dbf文件删了重新建,关闭神通数据库删文件的时候仍提示文件被占用,于是将实例删了。。。再启动数据库就起不来了,直接启动服务报错:服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止

解决方法:这种情况下报错说明这个服务器实例就不能用了,如果数据库有重要数据且无法备份千万不要做上述删除文件的操作。如果有备份数据或者尚未加入重要数据,可以找到安装目录下bin文件夹中dbconfiger.exe文件执行,先删除原有数据库实例,再新建一个就ok了。
这个时候就看出来定期备份的重要性了。

SQL 错误 [40000]: ERROR, 未开启物化视图功能,如需开启请修改配置参数ENABLE_MVIEW。
com.oscar.util.OSQLException: ERROR, 未开启物化视图功能,如需开启请修改配置参数ENABLE_MVIEW。

4.安装数据库的时候弹出的参数配置程序点不了“下一步”按钮


这里点击页面上点哪里都不懂,下一步按钮始终是置灰的,直接关了这个配置页面实例也启动不了,愁得慌
首先说一下,这个弹窗实际是个障眼法,这个参数配置弹窗是可以拖动改变大小的,鼠标放在右边边框上变成左右箭头后往右拖一下有看全了,实际上有个完成按钮,参数是默认不用修改的。

然后说明一下,这个参数配置弹窗也可以直接点击右上角的X号直接关闭,这样默认实例的参数都是采用默认值,等以后想改哪个参数了再打开参数配置工具就可以了。至于为什么刚才说直接关闭了弹窗实例服务启动不了呢,因为数据库刚刚安装完成,授权文件还没改呢,如果谁的实例服务能启动,这句话当我没说哈(就是默认安装包中的授权文件是没问题的)。

5.SQL 错误 [40000]: ERROR, 未开启物化视图功能

报错信息:

SQL 错误 [40000]: ERROR, 未开启物化视图功能,如需开启请修改配置参数ENABLE_MVIEW。
com.oscar.util.OSQLException: ERROR, 未开启物化视图功能,如需开启请修改配置参数ENABLE_MVIEW。

解决方案:在开始菜单找到神通数据库-参数配置工具(参考上个问题截图),在[参数选项]和[描述]中搜索:ENABLE_MVIEW,定位到此项参数后把参数当前值改为true。

6.ERROR,Bad numeric input format ‘1,989.02’

SQL错误[22018]:ERROR,Bad numeric input format ‘1,989.02’
com.oscar.util.OSQLException:ERROR,Bad numeric input format ‘1,989.02’

  • 分析:通过报错的sql语句定位到报错是在某个表中value数值字段求和的时候产生的,字段定义numeric类型,长度21,小数位数2,所以字段定义也没问题,感觉是数据转换问题,但别的表同样的sql查询方法却没问题。最后定位为生产数据有问题,把字段值输入成文本了,可能神通数据库插入数据的时候校验不严格,而且这个字段正常查的数据也用,逗号(千分符)隔开显示所以忽略了。。。
  • 解决方案:找到报错的那条数据手工改一下。

7.神通数据库加密解密操作

  1. mysql中的md5使用如下oscar自定义函数替代:
CREATE OR REPLACE FUNCTION MD5(
passwd IN VARCHAR2)RETURN VARCHAR2
IS
retval varchar2(32);
BEGIN
retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd)) ;
RETURN retval;
END;
  1. mysql中加密函数aes_encrypt使用如下oscar自定义函数替代:
CREATE FUNCTION aes_encrypt(input IN text,
key IN text)
RETURN text
IS
BEGIN
RETURN ENCRYPT_ORA(input, key, 'aes128_ecb_pkcs5',NULL);
END aes_encrypt;
  1. mysql中的解密函数aes_decrypt使用如下oscar自定义函数替代:
CREATE FUNCTION aes_decrypt(input IN text,
key IN text)
RETURN text
IS
BEGIN
RETURN DECRYPT_ORA(input, key, 'aes128_ecb_pkcs5',NULL);
END aes_decrypt;
  1. mysql中的to_base64()使用oscar中的base64_encoding()替代
  2. mysql中的from_base64()使用oscar中的base64_decoding()替代
    举个项目中常用的例子,在A表中加一个SECRETINFO字段 存放加密后的信息用于防止数据篡改,sql写法如下
UPDATE 模式名.A SET SECRETINFO=base64_encoding(CONCAT(信息密级(随意),ID)) WHERE 1=1;

8.通过触发器的方式阻止手动修改数据库

这里以不允许修改信息密级(公开、机密、秘密、绝密)为例,模式名为SYS,表名为DATAINFO,字段名为MJ,以下代码是触发器方式实现方式:

--不允许直接修改数据  错误码-20600是我随便写的
CREATE or replace TRIGGER datainfo_update_triger before update
on SYS.DATAINFO FOR EACH ROW
beginIF(:NEW.MJ != :OLD.MJ) THENRAISE_APPLICATION_ERROR(-20600,'不能修改表密级');END IF;
END;

上面方法实现了不能修改数据库表中某一条记录的mj字段,但是聪明如我还能想到另一种方式,复制整条记录插入进去,这条修改的法子也给禁掉,上条问题的例子中提到过表里有一个字段放了加密信息,逻辑是把ID字段和密级字段拼到一起加密了,我们再次把要插入的ID和密级加密后与原来的值对比就知道是不是同一条记录了,sql如下:

--不允许复制记录插入
CREATE or replace TRIGGER datainfo_insert_triger before INSERT
on SYS.DATAINFO FOR EACH ROW
beginIF(:NEW.SECRETINFO!= base64_encoding(CONCAT(:NEW.MJ,:NEW.ID))) THENRAISE_APPLICATION_ERROR(-20600,'请确认表密级数据');END IF;
END;

目前就先记录这8个问题,神通数据库是国产数据库,应用范围不如orcle和mysql等广泛,所以网查的资料比较少,少的可怜。但是随着信息安全意识的提高,国产数据库的地位慢慢提高了,如果大家遇到关于神通的问题可以留言讨论一下。

神通数据库常见问题解决方案相关推荐

  1. SQL还原数据库常见问题解决方案集锦

    使用sp_change_users_login排除孤立用户,所谓孤立帐户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户在用户库的sysusers系统表中存在,而在master数据库的sysl ...

  2. 神通数据库官网解决方案 电信行业:中国联通全国集中综合结算系统

    本文来自神通数据库官网http://www.shentongdata.com/index.php?bid=56 系统概述 中国联通全国集中综合结算系统是中国联通首例全国集中建设项目,也是国产数据库在电 ...

  3. pads铺铜不能开启drp_PADS中常见问题解决方案

    PADS中常见问题解决方案 1.走线很细,不是设定值. 解答:有时将预拉线布好线后,所布的线变成了一根很细的线而不是我们所设定的线宽,但是查看它的属性也还是一样的,最小线宽显示值的设定大于route线 ...

  4. python注册登陆程序未响应_SpringBoot实现登录注册常见问题解决方案

    一.用户名密码都正确的情况下被登录拦截器拦截 控制台报错:org.apache.ibatis.executor.ExecutorException: A query was run and no Re ...

  5. mysql8.0.13安装不_Windows环境下MySql8.0.13的安装及常见问题解决方案

    Windows环境下MySql8.0.13的安装及常见问题解决方案 目录 一.引文 二.下载地址 三.安装步骤 3.1.文件解压 3.2.新建并修改my.ini文件 3.3.配置环境变量 3.4.以管 ...

  6. 神通数据库打开服务_数据库周刊30丨数据安全法草案将亮相;2020数据库产业报告;云南电网上线达梦;达梦7误删Redo…...

    摘要:墨天轮数据库周刊第30期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档.本周分享 数据安全法草案将亮相:2020数据库产业报告:云南电网上线达梦:达梦7误删Redo Log:Or ...

  7. java程序及数据库常见问题

    java数据库常见问题 一 常见数据库语法 Mysql 1日期转换 2为null判断 oracle 1日期转换 2为null判断 PLSQL 1日期转换 2为null判断 sqlserver 1日期转 ...

  8. RabbitMQ常见问题解决方案——消息丢失、重复消费、消费乱序、消息积压

    文章目录 背景 RabbitMQ常见问题解决方案 1. RabbitMQ的可靠性(消息丢失问题) 1.1 生产者丢失消息 1.2 RabbitMQ弄丢消息 1.2.1 交换机持久化 1.2.2 队列持 ...

  9. 龙芯+QtCreator+神通数据库+中标麒麟操作系统

    http://www.loongson.cn/news/company/448.html 一.前言 熟悉龙芯的朋友们都知道,在服务器系统应用中,龙芯平台上支持许多国产的数据库,其中包括武汉达梦.神舟通 ...

  10. JWT 身份认证优缺点分析以及常见问题解决方案

    JWT 身份认证优缺点分析以及常见问题解决方案 参考文章: (1)JWT 身份认证优缺点分析以及常见问题解决方案 (2)https://www.cnblogs.com/idoljames/p/1169 ...

最新文章

  1. 树莓派 更新 时间 时区
  2. android api接口封装,生成App接口
  3. php之二叉树,PHP构造二叉树算法示例
  4. sci_loopback_int的例程(中断程序)
  5. SpringCloud Netflix Hystrix
  6. 《Reids 设计与实现》第十五章 集群(中)
  7. aws s3 cli_了解AWS CLI –使用AWS CLI与AWS S3存储桶进行交互
  8. left join条件放在on和where的区别
  9. HTML输入=“文件”接受属性文件类型(CSV)
  10. 软件定制开发的7大好处
  11. django 引入同目录下py文件_第 05 篇:Django 的接客之道
  12. 可靠性工程基础 修订版 课后答案 (刘品)
  13. 均值cvar模型matlab代码,VAR和cvar模型的matlab代码
  14. 面试官常问的web前端问题大全(10道面试真题祝你旗开得胜)
  15. CANoe软件打不开了怎么办?
  16. 银河麒麟高级服务器操作系统V10上.NET Core与Java相同类型MySQL(MariaDB) WebApi简单性能对比
  17. 1.1版走迷宫小游戏(C++)
  18. 解决vue项目路由出现message: “Navigating to current location (XXX) is not allowed“的问题(点击多次跳转)
  19. php100分闯关,有趣!php使用adb自动刷王者农药金币 【冒险模式】
  20. python 火车票查询,Python3实现火车票查询工具

热门文章

  1. 在银行做数据是一种什么体验?
  2. mongoVue破解版
  3. imei模拟修改_教你如何修改任意安卓模拟器的机型IMEI手机号等信息 海马玩 Windroye等适用...
  4. 五款不错的Web前端开发工具,对小白来说完全够用了!
  5. UAT测试后上线出现问题的引起的思考
  6. 图书馆管理系统的c语言,图书馆管理系统 c语言.doc
  7. IDEA中配置Junit4
  8. html网上购物系统界面,网上购物系统界面设计要点有哪些?设计思路是什么?...
  9. 强化学习入门笔记(一)——莫烦Python
  10. 对民办幼儿园管理的几点思考