
oracle
文章平均质量分 52
左直拳
程序猿
展开
-
计算列(还需要输入2个字)
计算列(oracle中叫计算列,sql server中好像叫性列)是一种虚拟列,用于根据其他字段的值,经过指定的逻辑计算,得出一个结果,供读取和使用。操作的时候,不需要给它赋值,但读取的时候,跟其他字段没有区别。原创 2025-01-21 16:48:17 · 331 阅读 · 0 评论 -
oracle创建表脚本中字段使用双引号导致区别大小写问题
原本oracle的话,字段不区分大小写,创建表后好像会自动转成大写;但如果创建时,使用了双引号,那么就会按照创建时的指定,严格区分大小写。像我这种情况,访问时,也需要使用双引号。前几天在某个oracle库上创建了几张表,程序运行时就报错了,提示ORA-00904。将SQL语句直接拿到PL/SQL上运行也报错。我想不出什么好办法,只能删掉重建,重建时将双引号去掉。原因出在创建表时使用的脚本上。该脚本如下,字段都使用了双引号。ORA-00904的意思就是找不到这个字段。原创 2024-12-11 11:08:18 · 292 阅读 · 0 评论 -
oracle中删除指定前缀的表
近期接手做的项目,发觉数据库中有许多多余的表。究其原因,应该是同事贪图方便,将过去做过的项目复制粘贴,然后修修改改。包括数据库也是克隆过来的,然后又没有删除本项目多余的表,结果经过几个轮回,就不知道哪些表需要,哪些不需要了。本来不管它,也不会报错,问题是,表实在太多了,密密麻麻,想找某个表,费时费力,也不利于对本项目的理解和把握。咬咬牙,我辛苦一点,清理一下。幸而大部分表,创建时都加了前缀,比较好识别。那么,删除时有没有可能按照指定的表名前缀,查找出来,然后删除呢?原创 2024-11-29 09:49:04 · 764 阅读 · 0 评论 -
oracle12c的job没有自动执行,手动运行提示任务1%正在运行问题
有个oracle12c上的job,提交到dbms_job,不知道什么时候开始,停下来了,没有自动运行。手动关闭这个job,重新打开,不行;删除JOB,重新创建,也不行。手动运行,可以,但提示“任务1%正在运行”。该job运行一个存储过程。手动运行该存储过程,也没有问题。反正就是不会自动执行,也不知道这个1%是什么意思,是怎么来的。在网上寻寻觅觅,也没有找到这个“任务1%正在运行”问题的解决办法。有的文章说是重启(不知道是重启数据库还是重启服务器,估计是重启服务器,彻底一些);原创 2023-12-06 10:11:26 · 870 阅读 · 0 评论 -
oracle的字段不小心存储了double.NaN导致nhibernate加载数据报illegal access to loading collection error错误问题
发现请求某些数据时,会出现超时、报错现象。是通过NHibernate获取一个ORM对象时报错,报错信息为“illegal access to loading collection error”(非法访问加载数据集合错误)。这个ORM对象是个主表对象,里面映射了从表,一对多;然后从表又有一对多。难道是数据太多了?但又不是所有的数据都会报错,只集中在其中的若干条。经过艰苦的调试,抽丝剥茧,发现又是Double类型字段中不小心保存了Double.NaN数据。原创 2023-04-26 09:06:10 · 241 阅读 · 0 评论 -
oracle字段存入NaN值后查询显示为0问题
今天发现了一件古怪的事情。C#代码运算过程中,不小心将一个Number型字段赋了NaN值,并保存到数据库,之后NHibernate就无法构造这条记录对应的对象了,提示什么。实在搞不懂,只好先记下来,转头去研究茴香豆的茴字,究竟有多少种写法。原创 2023-02-27 17:15:11 · 668 阅读 · 0 评论 -
oracle查找各PDB密码过期账户
连接oracle的时候,又报 ORA-12516: TNS: 监听程序找不到符合协议堆栈要求的可用处理程序 的错误。这种现象之前遇到不少,猜测可能又是某个sde账号密码过期或快过期,导致arcgis不停地连数据库,因而连接耗尽了。这种问题解决起来也简单,将相关账号密码重置就可以了。问题是,是哪个库的账号?我们用的是oracle 12C,一个实例里面有好几个所谓插件数据库。它们共用连接池,一损俱损。可见有三个库的,名为SDE的账号密码过期或快过期了。它们都与arcgis有关。原创 2023-02-17 19:00:13 · 925 阅读 · 0 评论 -
操作系统蓝屏无法启动修复后oracle无法使用问题
昨天蓝屏后无法启动操作系统,经公司里的大神修复后,起死回生,又能重新看到它的桌面了。正常情况下,当我们启动数据库之后,系统会先加载,然后再进入open状态,started -> mounted -> open。首先停掉数据库,然后再启动,可见加载之后,系统报错了,提示有几个区块无法读取。• OPEN – After STARTUP or ALTER DATABASE OPEN ,已开放,外部可正常访问。查找数据库的状态,发现处于mounted状态,正常启动后应该处于open状态。原创 2023-01-18 21:40:03 · 1308 阅读 · 0 评论 -
ORA-39002: 操作无效 ORA-39070: 无法打开日志文件
这么说的话,假如操作系统还没有相关文件夹,我先在oracle里指定,然后才建文件夹,岂不是不行?没做测试,估计是这样的。我反思了一下,觉得可能是文件夹大小写的问题。导库脚本久经考验,不应该有什么问题,但就是报错了。4、于是我在操作系统下,将文件夹由“Temp”改为“temp”,但还是不行。5、于是我又新建了一个c:\temp1,然后执行步骤2,就可以了。网上搜来的结果,是存放导出文件的路径不对,就是没有这个文件夹。1、c盘根目录下有一个文件夹:Temp,注意是大写开头。3、导出的时候,就报错误了。原创 2023-01-17 10:07:02 · 8199 阅读 · 0 评论 -
oracle中的schema和表空间
我一直搞不清oracle里面的schema和表空间。尤其是不知道这个schema是个啥。一般,我们创建表空间,将数据表建在其中,然后导出导入,好像指定的也是这个同名的schema:--创建一个表空间workcreate tablespace work datafile 'D:\YbjzCheck\db\work.ora' size 500m autoextend on;--创建数据库用户workCREATE USER work identified by work DEFAULT TABLESPAC原创 2021-02-25 15:03:13 · 1517 阅读 · 0 评论 -
oracle 字段别名
像 type,level这些字眼都是oracle的保留字,在数据表设计的时候,应该避免将字段采用这样的保留字来命名,否则可能会产生一些异常,带来不便。如果非要用来命名,该咋办呢?,可以用双引号将它引起来,比如create or replace view work.v_alert asselect 0 as "type",--<--看这里----------to_char(id) as sid,to_date(time,'yyyy-MM-dd hh24:mi:ss') as time,re原创 2020-12-12 11:23:52 · 4299 阅读 · 0 评论 -
oracle 12c设置st_shapelib.dll后报ORA-28595: Extproc 代理: DLL 路径无效错误问题
安装一台服务器,JAVA、oracle 、arcgis,按部就班,照单抓药,一条龙服务。但arcgis是10.6的,好高级,没用过,有点儿紧张。就测试了一下 oracle 对空间数据的支持,发现不行。当然不行,要设置sde表空间的libralies,将st_shapelib.dll指向正确的问题:首先,从arcgis的安装目录找到st_shapelib.dll,然后修改oracle,指向它。运行语句测试,失败select sde.ST_AsText(SDE.ST_Geometry('POINT (1原创 2020-11-25 11:35:14 · 597 阅读 · 0 评论 -
nvarchar2导致ora-00600 kpp_concatq 问题
一、问题描述有一条SQL语句忽然在plsql里运行失败,提示ora-00600错误很奇怪,这条语句在昨天并没有啥问题,今天忽然就报错了。语句没改,数据也没动。SQL语句如下:select round(avg(albinism),2) count,stationcode,x,y from (select s.stationcode,s.albinism,t.x,t.y from SDE.SURVEY_CR_IMAGE s inner join SDE.SURVEY_PUBLIC原创 2020-11-21 18:07:04 · 931 阅读 · 0 评论 -
arcgis连接oracle问题
制作地图服务的同事进开发服务器上部署,按照他们之前的指引,按部就班,设置了环境变量path,tns_admin,又设置了oracle免安装客户端的tnsnames.ora,结果arcgis catalog 还是连不上数据库,总提示连接串不对,说无法解释。这个开发服务器简直是我的宝贝,别人猛搞一通俺不乐意;同时因为根深蒂固的鄙视链,我认为开发之外的人员都是色拉。所以我出马了。没想到露怯了,搞了一通,时间还挺长,原以为摧枯拉朽。觉得同事给我的信息,让我学到了新的东西,受益匪浅。三人行必有我师姐焉。总结如下:原创 2020-10-29 18:09:21 · 588 阅读 · 0 评论 -
oracle 12c删除表空间
删除表空间语句如下:--删除空的表空间,但是不包含物理文件drop tablespace tablespace_name;--删除非空表空间,但是不包含物理文件drop tablespace tablespace_name including contents;--删除空表空间,包含物理文件drop tablespace tablespace_name including datafiles;--删除非空表空间,包含物理文件drop tablespace tablespace_name in原创 2020-10-14 12:05:02 · 1824 阅读 · 0 评论 -
命令行重启oracle
早上开发服务器上的oracle又不行。跑到服务器看,oracle服务显示状态为”启动“,而不是”已启动“,那就是启动中咯。其对应的服务按钮状态既不能重新启动也不能停止。是时候进入装逼模式了,用命令行来重启吧,不要动不动就重启机器这么low。C:\Users\Administrator>sqlplus sys/mypwd@orcl12c as sysdba;--重启oracleSQL>shutdown immediate;SQL>startup;就这么简单重启之后,发现不原创 2020-06-18 10:16:28 · 1483 阅读 · 0 评论 -
oracle拆分分区表及重建索引
111原创 2020-05-23 12:05:02 · 2772 阅读 · 1 评论 -
oracle 12c归档模式转非归档模式
开发服务器的硬盘空间不够用了。本来某个分区昨天才清出10G剩余空间,但今天早上oracle已经无法访问,上去看,硬盘空间为0。真很恐怖,啥东西在狂吃硬盘?后来发现是oracle自己。它的RDBMS(\product\12.1.0\dbhome_1\RDBMS)目录下,已经有文件485G之多!绝大部分都是一些归档文件。...原创 2020-05-23 11:05:53 · 468 阅读 · 0 评论 -
oracle账号权限导致拒绝访问和启动(startup)无反应问题
合作伙伴的oracle又连不上了。我又远程上去望闻问切。oracle服务、监听服务都显示正在运行。但本机同样连不上。一阵装模作样,无聊的点击之后,我决定重启oracle服务。不料,重启失败,黄色的惊叹号,提示:拒绝访问!怎么回事?看上去,是权限问题?oracle服务没启动,一切都是白搭。什么startup,什么shutdown,都是扯。没办法了,将oracle所在目录,全部设为everyon...原创 2020-04-21 19:34:27 · 2390 阅读 · 3 评论 -
oracle sga_target参数值过小导致无法启动问题
合作伙伴的oracle无法访问。本机也不行,排除是防火墙之类的原因。但是windows的服务列表上,service 、listener都好好的啊。增加监听地址,搞来搞去,都不行。百思不得姐。无聊中,在命令行方式下,用sqlplus,不指定数据库名,凭dba身份进入,查看里面的插件数据库情况:show pdbs;结果提示数据库不可用。那用"startup"命令强行启动吧,说sga_tar...原创 2020-04-19 12:21:07 · 1585 阅读 · 2 评论 -
oracle 12C 服务器的监听设置
oracle 12c安装好了之后,本机访问没有问题,但局域网其他机器访问不了,报错说没有监听。原因出在服务器的listener.ora这里,它只监听了localhost,没有监听它的局域网IP这个地址。LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = loca...原创 2020-02-21 18:11:21 · 2674 阅读 · 0 评论 -
数据库共享锁(读锁)和排他锁(写锁)
为了保持数据的一致性,数据库提供了事务。但是,这只能解决单个会话的问题,并不能解决并发操作下数据的一致性。并发操作下,数据会出现以下问题:1、修改丢失事务A与事务B从数据库中读入同一数据并修改,事务B提交的结果破坏了事务A提交的结果,导致事务A的修改被丢失。2、脏读事务A修改某一数据,写回磁盘,期间事务B读取同一数据;事务A由于某种原因被撤销,数据回滚,则B读到的数据与库中真实数据不符。...原创 2020-02-07 20:35:16 · 5016 阅读 · 0 评论 -
数据库反规范化设计及物理分区
应对数量过多,可以采用反规范化设计或者物理分区应对。一、反规范化设计规范化设计,范式等级越来越高,表越分越细,在消除冗余数据的同时,不得不关联多表才能获得完整的数据,有时会带来一点性能问题。因此反规范设计,也是一种对策。常见的反规范设计包括1、增加冗余列2、增加派生列增加的列,由同一表内的其他若干字段计算所得?3、重新组表就是调整表设计?4、表分割包括水平分割和垂直分割。1)...原创 2020-02-07 12:10:00 · 959 阅读 · 0 评论 -
CAS 5.1.8 使用oracle数据库认证
我们的账号是用md5加密的,没啥特别,所以对于我们这种情况,修改CAS的配置文件就行了。配置文件是指:application.properties(源码:webapp/resources/application.properties,部署之后是/WEB-INF/classes/application.properties)#注释默认账号#cas.authn.accept.users=casuser原创 2018-02-28 19:36:29 · 1541 阅读 · 0 评论 -
ORACLE ORA-01950 对表空间无权限 错误问题
oracle中,插入记录失败,提示无权限,类似下图:我用的是A账号(默认表空间A),在表空间B中的表插入记录。结果就提示了上面的错误。查询是没问题的,插入则不行。INSERT INTO B.Real_Hyz_Oneminute_Water (FID, STATIONNO, DT, WT, SL, WL, CREATETIME, ID) VALUES (6, 'eeee', sysdate, 0.0原创 2018-03-22 15:37:02 · 38728 阅读 · 8 评论 -
代码里将中文插入oracle 乱码问题
代码中,插入到oracle数据库,中文变乱码。用pl/sql developer,却没事。找来找去,又说调字符集,又说啥的,都不起作用。索性将心一横:我这个代码是直接执行的SQL语句,而oracle的中文字符集为GBK,而我们的程序字符集为UTF-8,那么将SQL语句在执行前,先转换成GBK如何?string pathgbk = Utf8ToGBK(folder.PATH);//含中文的字符串转换成原创 2018-05-07 18:50:26 · 1564 阅读 · 0 评论 -
oracle 12c的数据库导进 11g
从oracle 12c 备份(expdp)出来的包,还原到11g里,想想都知道会有兼容性问题。果不其然,报错了: ORA-39142: 版本号 4.1 (在转储文件 “叉叉叉.expdp” 中) 不 兼容 之类后来才知道,在12C中备份出来时,应指定版本信息,例如我要导进11g的库(具体版本为11.1.0.6.0,打开sqlplus就能看到),则version=11.1.0.6.0语句: 在1原创 2016-03-21 19:26:15 · 8848 阅读 · 0 评论 -
oracle中dblink的clob字段读取问题
oracle中,使用数据库连接(DbLink),源表中的CLOB等大字段是不能在select语句中展现出来的。比如说,有个源表tsource,里面有个大字段photo,那么运行以下语句会报错:select * from tsource@dblink1;那怎么办呢?可以将该表的数据拷贝到本地库。就是这么怪,不能展示,但能传输:create table mysource as select * from原创 2018-01-24 19:09:54 · 3149 阅读 · 0 评论 -
oracle job
oracle的job(作业)咋整?1、创建JOB 1)创建一个存储过程。逻辑处理都在这个存储过程里面。 2)创建一个JOB运行此存储过程-- 创建tablecreate table tab_time( current_time timestamp );-- 创建存储过程create or replace procedure pro_job_pri原创 2017-05-31 14:09:37 · 788 阅读 · 1 评论 -
批量导入数据到oracle
有一些数据需要录入到数据库。这些数据位于excel和word文档里。导入数据嘛,这有啥难的?不过,这些数据并不是从数据库里导出来的,ID还要用序列号生成,我不知道导入的话,该咋整。也许是可以导入的,但我不知道方法。作为一名程序员,当然不可能一条条地录进去,这会玷污了程序员这个称号。我用了一个方法,可以导进去,记录如下: 思路: 1、创建一个临时用的表temp 2、开启原创 2018-01-13 15:30:17 · 722 阅读 · 0 评论 -
开放数据库表让第三方直接操作解决方案
做的项目中,有一个环节是第三方公司将文件推送到我方文件服务器,同时记录日志。这个日志,当然也是保存进我方数据库。这个日志实现,最自然的想法就是调接口。我方提供接口,第三方调用。但大家都嫌麻烦,业主方决定让第三方直接写数据库。这就涉及到权限等问题了。权限应能做到: 1、仅能插入,不能修改、删除 2、为方便和安全计,仅能插入部分字段 3、对第三方,能插入的字段才可见,否则透明思路如原创 2018-01-03 19:09:50 · 2529 阅读 · 1 评论 -
oracle使用小记:dblink、网闸及未设置密码
一、dblink 在本地数据库中连接远程数据库,可以在本地数据库中建立一个DbLink,然后凭此来对远程数据库进行访问。1、建立一个dblinkCREATE database link otherserverCONNECT TO user IDENTIFIED BY passwordUSING '(DESCRIPTION = (ADDRESS_LIST = (ADDRE原创 2017-11-23 19:57:05 · 1532 阅读 · 0 评论 -
oracle 12c误删pdb数据文件导致整个数据库无法打开问题
同事误删了某个插件数据库(PDB)的数据文件,结果整个数据库,包括容器数据库(CDB),以及其他插件数据库都用不了了。1、用sys账号进入实例,可见容器数据库处于mounted状态;插在上面的所有PDB当然也都是mounted。sqlplus sys/pwd@orcl12c as sysdba;2、试图打开CDB,提示有数据库文件未能加载。SQL> alter database open;alte原创 2017-10-26 09:16:19 · 3550 阅读 · 2 评论 -
expdp与impdp导出导入特定表
oracle里指定导入导出表,原本在10g或以前,很简单的:1、导出指定表exp 'sys/pwd@server1 as sysdba' file=c:\temp\base.dmp tables=(schema.table1,schema.table2)2、导入指定表imp 'sys/pwd@server2 as sysdba' file=c:\temp\base.dmp fromus...原创 2018-06-19 19:41:43 · 79012 阅读 · 0 评论 -
oracle 的 deticated server 和 shared server
在配置oracle的tsname的时候,发觉有的有这个"SERVER = DEDICATED",有的又没有。如下:pdbnhzhzs = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.231)(PORT = 1521)) (CONNECT_DATA = (SERVICE_NAME = pdb...原创 2018-10-20 11:28:47 · 607 阅读 · 0 评论 -
数据库连接引发事务自动开启问题
做的一个项目,涉及到两个oracle数据库,A库和B库。主打A库,但有些数据要从B库里读取。于是在A库中建了一个数据库连接(DBLINK),指向B库。于是月亮下去了,毛病出来了。忽然发现,有些数据保存,根本没有提交成功。提示:ORA-01453: SET TRANSACTION 必须是事务处理的第一个语句造成原因:之前的事务没有结束。哪里来的事务呢?后来才发现,这一切的元凶就是数据库...原创 2018-11-14 19:02:26 · 1557 阅读 · 0 评论 -
oracle里的限制返回行数量
这个问题,SQL SERVER是很方便的,使用top就行了。mysql也不赖,limit。但号称龙头老大的oracle呢?不存在的。要曲线救国。使用rownum。这是一个伪列。使用的时候,如果有排序的话,不能直接就用,否则出来的效果很奇怪,要嵌套使用。比如说,我想找考试成绩排名前5的记录,不能这样写:select * from exam where rownum<=5 order by...原创 2019-08-17 12:41:33 · 8047 阅读 · 2 评论 -
plsql developer 无法找到tnsnames.ora和中文乱码问题
【结论】这些问题都可以通过设置系统环境变量来解决。重装了机器,各种揾食架撑要一一安装。哇!好忙呀。其中怎么少得了 plsql developer。plsql developer,oracle的好伴侣,你值得拥有。1、tnsnames.ora原本我的plsql developer是9.x的,无需安装,但好像死活找不到tnsnames.ora,也就是无法连接各种数据库咯。打开它,从它的帮助/......原创 2019-08-14 19:13:07 · 6446 阅读 · 1 评论 -
oracle12c不能导出10g的库
我发现oracle12c的客户端,导不出10g的库。这真是咄咄怪事,居然不向下兼容的。我们知道,10g和12c不一样。10g的导出和还原用的是exp和imp,这两个命令,既可以在服务器执行,也可以在客户机执行;而12c(不记得包不包括11g)了,用的是expdp和impdp,只能在服务器执行。现在我的情况是,服务器既装了10g,又装了12c。现在,想在上面导出10g的数据库,不行了:无论是...原创 2019-08-01 09:23:49 · 890 阅读 · 0 评论 -
oracle导出序列sequence
序列(sequence)是数据库不可分割的一部分,可是,oracle中,好像不能指定导出sequence的?可以在备份中顺带导出,然后还原中顺带导入这个序列号,但只操作序列号是不行的。而且备份还原也太重量级了一点。导出sequence是不可能导出的,这辈子都不可能导出的,但可以换个思路,生成SQL语句来间接导出就可以维持得了职业生涯这样子。网上抄来,将cachesize去掉了,因为发觉会有0...原创 2019-04-22 20:07:29 · 2706 阅读 · 1 评论