神通数据库常见问题解决方案
文章目录
- 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,要先确保这两个服务是开启状态。这里启动实例服务有时候会秒关,刚启动就悄悄给停了,或报错:服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止。
两个原因:
- 没有授权文件或者授权文件已经过期,一般是在安装目录下的license文件夹
我本地的授权文件路径:D:\ShenTong\license\oscar.license
- 授权文件没有问题,仍启动不了服务。
实例服务已设置自动启动,之前是连接正常的,后来执行了一个错误的新建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.神通数据库加密解密操作
- 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;
- 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;
- 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;
- mysql中的to_base64()使用oscar中的base64_encoding()替代
- 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等广泛,所以网查的资料比较少,少的可怜。但是随着信息安全意识的提高,国产数据库的地位慢慢提高了,如果大家遇到关于神通的问题可以留言讨论一下。
神通数据库常见问题解决方案相关推荐
- SQL还原数据库常见问题解决方案集锦
使用sp_change_users_login排除孤立用户,所谓孤立帐户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户在用户库的sysusers系统表中存在,而在master数据库的sysl ...
- 神通数据库官网解决方案 电信行业:中国联通全国集中综合结算系统
本文来自神通数据库官网http://www.shentongdata.com/index.php?bid=56 系统概述 中国联通全国集中综合结算系统是中国联通首例全国集中建设项目,也是国产数据库在电 ...
- pads铺铜不能开启drp_PADS中常见问题解决方案
PADS中常见问题解决方案 1.走线很细,不是设定值. 解答:有时将预拉线布好线后,所布的线变成了一根很细的线而不是我们所设定的线宽,但是查看它的属性也还是一样的,最小线宽显示值的设定大于route线 ...
- python注册登陆程序未响应_SpringBoot实现登录注册常见问题解决方案
一.用户名密码都正确的情况下被登录拦截器拦截 控制台报错:org.apache.ibatis.executor.ExecutorException: A query was run and no Re ...
- mysql8.0.13安装不_Windows环境下MySql8.0.13的安装及常见问题解决方案
Windows环境下MySql8.0.13的安装及常见问题解决方案 目录 一.引文 二.下载地址 三.安装步骤 3.1.文件解压 3.2.新建并修改my.ini文件 3.3.配置环境变量 3.4.以管 ...
- 神通数据库打开服务_数据库周刊30丨数据安全法草案将亮相;2020数据库产业报告;云南电网上线达梦;达梦7误删Redo…...
摘要:墨天轮数据库周刊第30期发布啦,每周1次推送本周数据库相关热门资讯.精选文章.干货文档.本周分享 数据安全法草案将亮相:2020数据库产业报告:云南电网上线达梦:达梦7误删Redo Log:Or ...
- java程序及数据库常见问题
java数据库常见问题 一 常见数据库语法 Mysql 1日期转换 2为null判断 oracle 1日期转换 2为null判断 PLSQL 1日期转换 2为null判断 sqlserver 1日期转 ...
- RabbitMQ常见问题解决方案——消息丢失、重复消费、消费乱序、消息积压
文章目录 背景 RabbitMQ常见问题解决方案 1. RabbitMQ的可靠性(消息丢失问题) 1.1 生产者丢失消息 1.2 RabbitMQ弄丢消息 1.2.1 交换机持久化 1.2.2 队列持 ...
- 龙芯+QtCreator+神通数据库+中标麒麟操作系统
http://www.loongson.cn/news/company/448.html 一.前言 熟悉龙芯的朋友们都知道,在服务器系统应用中,龙芯平台上支持许多国产的数据库,其中包括武汉达梦.神舟通 ...
- JWT 身份认证优缺点分析以及常见问题解决方案
JWT 身份认证优缺点分析以及常见问题解决方案 参考文章: (1)JWT 身份认证优缺点分析以及常见问题解决方案 (2)https://www.cnblogs.com/idoljames/p/1169 ...
最新文章
- 树莓派 更新 时间 时区
- android api接口封装,生成App接口
- php之二叉树,PHP构造二叉树算法示例
- sci_loopback_int的例程(中断程序)
- SpringCloud Netflix Hystrix
- 《Reids 设计与实现》第十五章 集群(中)
- aws s3 cli_了解AWS CLI –使用AWS CLI与AWS S3存储桶进行交互
- left join条件放在on和where的区别
- HTML输入=“文件”接受属性文件类型(CSV)
- 软件定制开发的7大好处
- django 引入同目录下py文件_第 05 篇:Django 的接客之道
- 可靠性工程基础 修订版 课后答案 (刘品)
- 均值cvar模型matlab代码,VAR和cvar模型的matlab代码
- 面试官常问的web前端问题大全(10道面试真题祝你旗开得胜)
- CANoe软件打不开了怎么办?
- 银河麒麟高级服务器操作系统V10上.NET Core与Java相同类型MySQL(MariaDB) WebApi简单性能对比
- 1.1版走迷宫小游戏(C++)
- 解决vue项目路由出现message: “Navigating to current location (XXX) is not allowed“的问题(点击多次跳转)
- php100分闯关,有趣!php使用adb自动刷王者农药金币 【冒险模式】
- python 火车票查询,Python3实现火车票查询工具
热门文章
- 在银行做数据是一种什么体验?
- mongoVue破解版
- imei模拟修改_教你如何修改任意安卓模拟器的机型IMEI手机号等信息 海马玩 Windroye等适用...
- 五款不错的Web前端开发工具,对小白来说完全够用了!
- UAT测试后上线出现问题的引起的思考
- 图书馆管理系统的c语言,图书馆管理系统 c语言.doc
- IDEA中配置Junit4
- html网上购物系统界面,网上购物系统界面设计要点有哪些?设计思路是什么?...
- 强化学习入门笔记(一)——莫烦Python
- 对民办幼儿园管理的几点思考