oracle
chushiyunen
这个作者很懒,什么都没留下…
展开
-
oracle merge into使用笔记(相当于replace into,也可以用于批量insert或update)
merge into用法原创 2022-08-21 09:42:02 · 1399 阅读 · 0 评论 -
会计笔记()
会计笔记()原创 2022-08-20 21:21:52 · 217 阅读 · 0 评论 -
Oracle中start with...connect by笔记,dual返回多行
oracle connect by用法原创 2022-08-20 21:14:30 · 1223 阅读 · 0 评论 -
Oracle密码过期(the password has expired)解决笔记
Oracle密码过期(the password has expired)解决笔记原创 2022-08-20 08:53:13 · 867 阅读 · 0 评论 -
oracle批量插入笔记
oracle批量插入笔记原创 2022-08-17 10:53:05 · 197 阅读 · 0 评论 -
SQLIntegrityConstraintViolationException: ORA-00001: unique constraint及sequence调整初始值
sequence调整初始值原创 2022-06-10 18:22:59 · 2198 阅读 · 0 评论 -
oracle列别名带双引号笔记
oracle列别名带双引号笔记原创 2022-06-08 16:54:13 · 987 阅读 · 1 评论 -
ORA-12541:TNS:无监听程序
ORA-12541:TNS:无监听程序用navicat连接远程oracle数据库,报这个错。配置listener.ora和tnsnames.ora之后还是报错。奇怪的是同事的机器连oracle都没装,居然不报错,真是怪了。后来发现,hosts文件里面有关于oracle域名的配置,去掉之后,居然能连上了,到现在也不知道啥原因。...原创 2021-05-26 19:56:41 · 184 阅读 · 0 评论 -
创建时间(创建日期)、修改时间(修改日期)设置为自动生成
创建日期的自动生成创建日期的自动生成比较好说:字段默认值设置为 CURRENT_TIMESTAMP ,这样在新增的时候,日期会自动生成。sql语句为:CREATE TABLE T_USER( CREATE_DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP , UPDATE_DATE TIMESTAMP DEFAULT CURRENT_TIMESTAMP )当然,数据库设计工具也可以直接设置。更新日期的自动生成更新日期稍微麻烦一点,因为默认值是新增的原创 2021-04-04 09:36:41 · 3634 阅读 · 0 评论 -
oracle触发器的使用
文章目录基本操作创建触发器Example 9-1 Trigger Uses Conditional Predicates to Detect Triggering Statement(触发器使用条件谓词来检测触发语句)Example 9-13 Trigger Derives New Column Values(触发器派生新列值)Example 9-2 INSTEAD OF TriggerExample 12-10 FORALL Statement for Subset of Collection(集合的子集原创 2021-03-03 18:25:49 · 442 阅读 · 1 评论 -
oracle中的伪列有哪些、rowid等
为什么rowid都是空测试语句如下:select rowid from dual; 发现无结果。这是为什么呢?是因为使用的工具不支持这个字段,加个列别名即可。修正后的语句如下:select rowid as rowid_p from dual;果然有结果了。伪列(pseudocolumns)有哪些CURRVAL, LEVEL, NEXTVAL, ROWID, and ROWNUM....原创 2021-02-26 16:07:39 · 527 阅读 · 0 评论 -
explain plan for执行计划的使用
在要执行的语句前面加 explain plan for。例如:explain plan forselect product_namae,pricefrom product where id ='111';然后查看执行计划:Select * From Table(dbms_xplan.display);查看执行计划错误的写法select dbms_xplan.display from dual; 错这种是不对的。返回一列display,值为 "".""() ,我也看不懂是什么。原创 2021-02-26 15:54:49 · 2380 阅读 · 0 评论 -
oracle的分页函数rownum
oracle分页函数rownum原创 2021-02-26 14:39:11 · 3055 阅读 · 0 评论 -
oracle中is null和‘‘的坑
场景例如type字段有 null、’’、0、1、2、3 几个值,想要筛选出有数据,但是不为3的数据。语句:select * from t_user where type is not null and type !='3' and type !='' ;但是发现查不出数据,这就怪了。排查解决是因为oracle同字段不支持2个!=吗一开始以为oracle同字段不支持2个 != ,那么测试下:select * from t_user where type !='3' and type !=原创 2021-01-12 11:17:57 · 815 阅读 · 0 评论 -
Oracle查询in超过1000条无法处理
场景Oracle查询in超过1000条无法处理,这是oracle本身的特性,所以只能改逻辑或改业务。解决方案拆分为多个1000条以内查询,然后union all可行,这是从代码层面来优化。从设计上进行优化例如权限配置,有几千个机构,采用扁平形式可能会有这个问题。可用办法:1、设计超级帐号,避过冗杂的权限设计。2、设计权限层级,例如上级机构自动用有下级机构的权限,那么只需配置一个上级机构,就可以拥有多个子级的权限。...原创 2021-01-06 17:55:42 · 1532 阅读 · 0 评论 -
Error updating database. Cause: java.sql.SQLSyntaxErrorException: ORA-01745: invalid host/bind vari
报错信息:Error updating database. Cause: java.sql.SQLSyntaxErrorException: ORA-01745: invalid host/bind variable name解决方案这个的问题看上去是报错,实际上可能的原因是sql太长了,超过了最大限制,所以什么奇形怪状的sql都可能出现,就不合规范了。解决方案:修改代码,限制sql语句一次性的数量。例如一次最多拼接1000条。...原创 2020-12-22 17:37:00 · 1406 阅读 · 0 评论 -
nclob字段查询慢
clob、nclob是什么CLOB里存的是2进制,可以存储2G大小的数据。常用函数:判定长度 DBMS_LOB.GETLENGTH(lob)获取文本 DBMS_LOB.SUBSTR(lob,n,pos)DBMS_LOB.SUBSTR(lob,10,1) 表示从第1个字节开始取出10个字节DBMS_LOB.SUBSTR(CLOB_VAR,32767) 表示截取CLOB变量保存的全部数据DBMS_LOB.FILECLOSE(IMG_BFILE) 关闭文件快速查询sql查询思路,使用D原创 2020-12-15 10:19:32 · 674 阅读 · 1 评论 -
oracle报错:ORA-01839: date not valid for month specified(指定月份的日期无效)
场景日期值存的是10位字符串,如2020-02-01,sql筛选时需要选1年以内的。select * from t_userwhereto_date(app_date ,'yyyy-MM-dd') > sysdate-360查看日志发现报错:ORA-01839: date not valid for month specified解决方案这个问题一般是因为该日期不存在,所以解析的时候失败。如果超过了31号,那么还好定位,会报错:月份日的值必须介于1和当月最后一日之间。但是如果是原创 2020-07-22 15:47:09 · 7963 阅读 · 0 评论 -
oracle报错:ORA-00904: “CREATE_DATE“: 标识符无效
场景一直没重视这些小问题,今天着实吃了把狗肉。做完个新接口,进行测试,结果各种报00904错误。解决方案顾名思义,标识符就是名字的意思。出现这个错,就是因为没有找到对应的表名、字段名。可能因为大小写,也可能因为字段拼写错误。表名是大写么oracle数据库是大小写敏感的,设计的时候为了方便直接用的小写。报错了,改为大写。字段是大写么设计时为了方便,字段名也是小写。 报错了,改为大写。这下应该好了把? 还是报错字段名拼写对么后来发现CREATE_DATE 拼写错了,写成了 CRAETE原创 2020-07-07 17:09:18 · 3864 阅读 · 0 评论 -
oracle迁移数据库用dump命令(exp、imp命令)
场景公司需要迁移数据库。有几个表的数据量比较大,有2000万条数据。navicat 迁移navicat的迁移数据库的方式最简单,但是原理是sql导出和插入,实测速度大概3000条/秒 。 3小时只导入了60万条数据。 远远无法满足要求。pl/sql进行迁移用pl/sql的导出dmp导出速度可以达到 10万/秒。但是导入很慢,只有 100条/秒。用pl/sql的导出dpe导出速度可以达到 10万/秒。还是无法满足要求。解决方案决定采用oracle自带的命令行导出方式。单表导出导入单原创 2020-06-24 10:36:16 · 3373 阅读 · 0 评论 -
oracle update 前100条
这个没有好的办法,就是嵌套层表。大巧若拙,笨方法就是好方法:update t_order set status='3' where id in ( select t.id from ( select id from t_order where status='9' order by create_date desc ) t where rownum < 500)...原创 2020-06-22 17:07:56 · 5135 阅读 · 0 评论 -
navicat实现数据库的迁移
创建用户并授权create user jxskdata identified by jxskdata; -- 创建用户并设置密码grant create session to jxskdata; -- 登录权限grant create table to jxskdata; -- 创建表权限grant unlimited tablespace to jxskdata; -- 不限制表空间权限grant connect,resource,dba to jxskdata; -- 这个设置了很多原创 2020-06-17 17:42:39 · 1312 阅读 · 0 评论 -
表或视图不存在 紧接着line 起自MY_LINK
报2行错误:表或视图不存在紧接着line 起自MY_LINK原创 2020-06-17 15:30:15 · 4705 阅读 · 0 评论 -
oracle查看表结构/视图结构
一句话即可:SELECT DBMS_METADATA.GET_DDL('TABLE','MOIRAI_ORG') FROM DUAL;原创 2020-05-15 15:24:26 · 3860 阅读 · 0 评论 -
oracle service_name地址和 sid地址写法不同
场景公司需要切换数据库,批量改完配置文件后发现怎么有的地址前有 // ,是不是哪里改错了 。后来确认了下。 带// 的是使用service_name连接的方式,是没有错的。注意service_name前面有//, service_name前是 左斜杠。sid前面没有 // ,service_name前是 冒号。service_name格式:jdbc:oracle:thin:@//:/&...原创 2020-04-28 15:42:06 · 1083 阅读 · 0 评论 -
oracle explain查看执行计划
hive中可以通过explain来查看执行计划。oracle中可以么,肯定可以啊。需要注意的是oracle中应该用explain plan for 而不是 explain,如下2条语句:explain select 1 from dual; -- 报错: ORA-00905: 缺失关键字explain plan for select 1 from dual; -- 成功执行EXPLAI...原创 2020-04-20 11:41:13 · 1974 阅读 · 1 评论 -
sqlplus格式化输出
sqlplus查询出的结果看起来很不清爽。通过设置,会好很多。常用设置set pagesize 0; --输出每页行数,缺省为24,为了避免分页,可设定为0。set linesize 200; --输出一行字符个数,缺省为80col id for a10; -- 这个如何使用表达式啊设置列宽col id for a10; -- 设置列宽为10个字符col ...原创 2020-04-17 12:33:38 · 3692 阅读 · 0 评论 -
魔兽争霸不死打赢疯狂不死
高手莫笑,请略过。主族不死,打其他倒还好说,基本稳赢。就是打不死,搞不好就输了,爆兵太厉害。最近在turtle rock上试验,胜率蛮高。流派狗流拼发育思路:恐惧+狗 疯狂练级,攀科技,三本狂狗+高等级英雄+腐球。最好抓一波打野,沉睡+围杀干掉一批部队。 基本能赢。骚扰蜘蛛流首发dk去骚扰,家里憋蜘蛛。 骚扰回来练到2级,带着蜘蛛直接压过去。也是最好抓一波打野,电脑只会跑,然后...原创 2020-04-05 08:55:43 · 282 阅读 · 0 评论 -
oracle decode函数的使用
语法:decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)感觉和if else 用法差不多。例如:-- block=1 则 返回blocking,否则为nulldecode(l.block, 1, 'blocking') -- request=0 则 返回 null ,否则默认为blockeddecode(l.request, 0, 'null', 'block...原创 2020-04-01 11:18:20 · 140 阅读 · 0 评论 -
dblink的使用 及 pl/sql操作dblink
要访问另外一个数据库,本地数据库必须创建了远程数据库的dblink, 通过dblink可以像访问本地数据库一样访问远程数据库。过程创建:create public database link FistDBlinkconnect to dbName identified by dbPassword using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =...原创 2020-03-29 07:28:00 · 3956 阅读 · 0 评论 -
oracle sqlplus命令行导出sql结果到文件
导出sql结果使用spool 即可。spool ttt.txt; # select 1 from dual; # 查询语句spool off; # 关闭缓冲,并导出内容到文件小提示:spool ttt.txt; 文件不存在会新建,存在的话,直接清空。执行sql并不会输出内容到文件,spool off之后才会。 所以一定不要忘了spool off。生成的文件在哪里如果...原创 2020-03-28 07:46:47 · 8368 阅读 · 2 评论 -
dbms_rowid.rowid_create的使用
创建rowid:select dbms_rowid.rowid_create(1,ROW_WAIT_OBJ#,ROW_WAIT_FILE#,ROW_WAIT_BLOCK#,ROW_WAIT_ROW#) from v$session where sid='152';然后根据rowid查看操作列:select * from test where rowid='AAANWHAABAAAOjSAA...原创 2020-03-24 17:23:30 · 664 阅读 · 0 评论 -
oracle使用trace查看记录
查看trace文件地址:select tracefile from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat));开启sql_trace功能:alter session set sql_trace=true;随便执行一句sql:select c...原创 2020-03-24 15:46:14 · 987 阅读 · 0 评论 -
oracle v$sqlstats 视图的使用
字段列表列名数据类型SQL_TEXTVARCHAR2SQL_FULLTEXTCLOB this columnSQL_IDVARCHAR2LAST_ACTIVE_TIMEDATELAST_ACTIVE_CHILD_ADDRESSRAWPLAN_HASH_VALUENUMBERPARSE_CALLSNUMBERDISK_RE...原创 2020-03-23 21:40:46 · 861 阅读 · 0 评论 -
sql根据2列进行查询(确定唯一性)
场景例如代码,号码共同确定唯一性。 突然有个变态的需求,入参要10对代码和号码。解决方案错误的写法要特别注意,如下写法是错的,因为这样查出来的数据会多:inv_kind in () and inv_num in ()无论如何这2个条件要并列,以下几种写法都可。多对条件or实现select * from t_ticketwhere (inv_kind='3100191130' a...原创 2020-03-21 16:34:07 · 5173 阅读 · 0 评论 -
oracle命令行设置保存点和回滚到保存点
主要说下savepoint(设置保存点)和rollback to(回滚到) 。该例子是在pl/sql中演示的,navicat的sql界面不支持savepoint和rollback语法。基本语法:savepoint a ; # 设置保存点asavepoint b ; # 设置保存点brollback to a ; # 回滚到acommit ; # 提交例子演示准备工作建表并...原创 2020-03-19 17:07:11 · 1625 阅读 · 1 评论 -
pl/sql 新建表
lock table t_user in share mode; select * from emp for update wait 10;select * from emp for update nowait ;update,insert,delete都会加排他锁。原创 2020-03-19 08:22:03 · 396 阅读 · 0 评论 -
oracle中锁的级别和锁表语句
锁级别列表0:none1:null 空2:Row-S 行共享(RS):共享表锁,sub share3:Row-X 行独占(RX):用于行的修改,sub exclusive4:Share 共享锁(S):阻止其他DML操作,share5:S/Row-X 共享行独占(SRX):阻止其他事务操作,share/sub exclusive6:exclusive 独占(X):独立访问使用,excl...原创 2020-03-19 08:13:19 · 3179 阅读 · 0 评论 -
oracle v$lock视图的使用
v$lock视图。字段列表COLUMN_NAMEDATA_TYPEBLOCKNUMBERCTIMENUMBERREQUESTNUMBERLMODENUMBERID2NUMBERID1NUMBERTYPEVARCHAR2SIDNUMBERKADDRRAWADDRRAW原创 2020-03-17 09:36:45 · 490 阅读 · 0 评论 -
oracle的 xidusn,xidslot,xidsqn
IDUSN XIDSLOT XIDSQNXIDUSN:就是事务的回滚段号XIDSLOT:就是ITL列表中,slot的号XIDSQN:就是表示这个slot被重复使用的次数在v$lock视图中,有两列id1和id2其中id1就是xidusn+xidslot的组合,而id2就是xidsqn的值表示slot实际使用的次数因此可以算出他们的实际值xidusn=trunc(id1/65536)...原创 2020-03-17 08:48:30 · 1193 阅读 · 0 评论