![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ORACLE
文章平均质量分 51
huayang183
不积跬步无以至千里
不积小流无以成江海
展开
-
ORA-28002 密码过期解决方案
错误场景:当使用sqlplus进行登录时报错:ORA-28002 密码过期。错误原因:由于oracle 11g 在默认在default概要文件中设置了密码过期天数,“PASSWORD_LIFE_TIME=180”,密码过期后就会报此提示。解决方案:1、查看用户的概要文件名,一般为default 1 sql>SELECTusername,PROFILEFROMdba_users; 2、查看指定概要文件(如default)的密码有效期设置 ...原创 2021-03-09 12:00:44 · 669 阅读 · 1 评论 -
ORA-28000 账号被锁定的解决办法
错误场景:当使用sqlplus进行登录时报错:ORA-28000 账号被锁定。错误原因:由于oracle 11g 在默认在default概要文件中设置了密码最大错误次数为10,“FAILED_LOGIN_ATTEMPTS=10”,密码错误的次数超过10次,账号就会被锁定。解决方案:1.查看用户使用的概要文件名,一般为DEFAULT 1 SQL>selectusername,profilefromdba_users; 2.查看概要文件中设置的密码...原创 2021-03-09 11:56:54 · 442 阅读 · 0 评论 -
oracle创建用户并授权
--创建用户设置密码create user username identified by password;--赋予dba权限grant dba to username;原创 2021-03-05 17:00:34 · 848 阅读 · 3 评论 -
Oracle数据库中IN参数个数超过1000的问题
问题描述:Oracle数据库中IN参数个数超过1000遇到这种情况,想快速解决,数据库有exists关键字的话,可以用exists来代替in关键字。 数据库解决方法:可以拆分sql用whereid in (1,2,...,999)orid in (1000,...)这种方法解决。好的解决方法:1.用表关联代替IN;2.在where条件中使用子查询,如“select*frombwherecin(selectdfrome......)”这样的形式...原创 2020-07-03 11:07:09 · 1971 阅读 · 0 评论 -
Oracle 删除重复数据只留一条
效率低查询及删除重复记录的SQL语句 1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(Id)来判断,只留有rowid最小的记录 DELETE from 表 WHERE (id) IN ( SELECT id FROM 表 GROUP BY id HAVIN.原创 2020-06-28 12:33:15 · 1122 阅读 · 0 评论 -
oracle删除数据释放表空间流程
生产环境:数据库里空间不足,niptest表空间251G,只使用了17G再alter database datafile '...../niptest1' resize 10G;的时候说超出了范围要求由于表变动比较频繁,高水位值比较大(高水位HWM “High Water Mark “:oracle中block有没有使用的分界线,它会随着数据的insert而上升,但它并不会随数据的delete而下降,因此全表扫描的时间并不因数据的delete而减少,相反可能由于块清除反而全表扫描时间增加...原创 2020-05-22 11:12:18 · 10835 阅读 · 0 评论 -
ORACLE:索引中丢失IN或OUT参数
原因是数据库中的字段类型与SQL语句中的类型不匹配造成的,后边的数字,代表第几个参数错误。找到对应参数配置或者SQL中这个参数的类型是否与数据库中匹配,更改后便解决了原创 2020-05-15 12:59:47 · 5555 阅读 · 3 评论 -
Oracle函数索引与普通索引
创建一张表,只有很少量的记录状态为'N',而我们只需要查询状态为'N'的记录SQL> create table test as select 'Y' flag,o.* from dba_objects o;SQL> update test set flag='N' where rownum<10;已更新9行。SQL> commit;提交完成。然后分别创建函数索引和普通索引SQL> create index inx_flag_n on test(decode(f原创 2020-05-13 13:38:35 · 806 阅读 · 0 评论 -
ORACLE 索引的三种状态: VALID、 N/A 、UNUSABLE
valid:当前索引有效 N/A :分区索引有效 unusable:索引失效Oracle异常ORA-01502: 索引或这类索引的分区处于不可用状态 原因: 出现这个问题,可能有人move过表,或者disable 过索引。1. alter table xxxxxx move tablespace xxxxxxx 命令后,索引就会失效。2. alter index index_name unusable,命令使索引失效。解决办法:1. 重建索引才是解决这类问题的完全的方法。 ...原创 2020-05-13 11:16:55 · 10513 阅读 · 0 评论 -
ORACLE索引重建方法与索引的三种状态
一、重建索引的前提1、表上频繁发生update,delete操作;2、表上发生了alter table ..move操作(move操作导致了rowid变化)。二、重建索引的标准1、索引重建是否有必要,一般看索引是否倾斜的严重,是否浪费了空间, 那应该如何才可以判断索引是否倾斜的严重,是否浪费了空间, 对索引进行结构分析(如下):SQL>Analyze index index_name validate structure;2、在执行步骤1的session中查询index_s.原创 2020-05-13 11:13:18 · 2701 阅读 · 0 评论 -
ORACLE中exists与in的区别
--exists支持字段为空select * from t_flight_info a where not exists (select * from M_CITY_PAIR where a.adeps=M_CITY_PAIR.APT1 and a.adess=M_CITY_PAIR.APT2);select * from M_CITY_PAIR where apt1='VTBS' and apt2='ZBDT';--not in 子查询的结果字段不能为NULL,apt1||apt2不能都为空.原创 2020-05-13 10:49:23 · 220 阅读 · 0 评论 -
ORACLE查询不可用状态索引
//查看所有的索引select index_name, table_name, status from user_indexes;//查询失效的索引select index_name from user_indexes where status = 'UNUSABLE';原创 2020-05-12 17:49:40 · 548 阅读 · 0 评论 -
Oracle索引状态查询与索引重建
--检查损坏索引SELECT status, COUNT(*) FROM dba_indexes GROUP BY statusUNIONSELECT status, COUNT(*) FROM dba_ind_partitions GROUP BY statusUNIONSELECT status, COUNT(*) FROM dba_ind_subpartitions GROUP BY status--重建索引alter index pk_kc03 rebuild n.原创 2020-05-12 17:46:16 · 382 阅读 · 0 评论 -
ORACLE 索引失效的原因与解决
一、以下的方法会引起索引失效1,<>2,单独的>,<,(有时会用到,有时不会)3,like "%_" 百分号在前.4,表没分析.5,单独引用复合索引里非第一位置的索引列.6,字符型字段为数字时在where条件里不添加引号.7,对索引列进行运算.需要建立函数索引.8,not in ,not exist.9,当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况。10, 索引失效。11,基于cost成本分析(oracle因为走全表成本会更小.原创 2020-05-12 16:16:32 · 1679 阅读 · 0 评论 -
Oracle数据库块的物理损坏与逻辑损坏
一.物理块损坏:各种各样的块损坏通常是通过ORA-1578报告出来的,详细的信息被记录在alert日志中。物理损坏的例子包括:>坏头>块破坏/不完整 (Fractured Block)>块的checksum不正确 (Bad Checksum)>块的位置错误 (Block Misplaced)>归零的块/ORA-8103二.逻辑块损坏:...原创 2020-04-21 16:46:16 · 577 阅读 · 0 评论 -
Oracle提示“ORA-04098:触发器‘XXX_TRIGGER’无效且未通过重新验证”
1.看提示是base库的触发器有问题了,所以先定位到这个触发器SELECT * FROM DBA_OBJECTS WHERE OBJECT_TYPE='TRIGGER'and OBJECT_NAME = 'ON_LOGON_TRIGGER';它的状态是无效的2.通过pl/sql登录base库,查看触发器Triggers,找到ON_LOGON_TRIGGER...原创 2020-04-13 23:50:44 · 19368 阅读 · 0 评论 -
MyBatis+Oracle实现主键自增长
一、使用selectKey标签<insert id="addLoginLog" parameterType="map" > <selectKey keyProperty="id" resultType="int" order="BEFORE"> select nvl(max(id),0)+1 from ap_...原创 2020-04-13 23:46:18 · 197 阅读 · 0 评论 -
oracle中创建表的自增ID
1、什么是序列呢? 序列是一数据库对象,利用它可生成唯一的整数。一般使用序列自动地生成主码值。一个序列的值是由特别的Oracle程序自动生成,因而序列避免了在运用层实现序列而引起的性能瓶颈。Oracle序列允许同时生成多个序列号,而每一个序列号是唯一的。 当一个序列号生成时,序列是递增,独立于事务的提交或回滚。容许设计缺省序列,不需指定任何子句。该序列为上升序列,由1开始,增量为...原创 2020-04-13 23:45:04 · 325 阅读 · 0 评论 -
MyBatis查询返回类型为int,查询结果为空NULL,报异常解决
例如: <select id="getPersonRecordId" parameterType="java.lang.String" resultType="int"> select role_id from p_person_role where stffe_id = #{stffeId,jdbcType=VARCHAR} </select...原创 2020-04-03 23:53:38 · 1615 阅读 · 0 评论 -
oracle中rownum的三种分页方式
三种分页的写法:1.使用minus,原理就是查询出前100行的数据 减去 查询出前50行的数据 1 2 3 select * from DATA_TABLE_SQL where rownum<=100 minus select * from DATAT_ABLE_SQL where rownum<=50 ...原创 2020-04-03 23:52:24 · 396 阅读 · 0 评论 -
oracle 替换全部空格
使用replace ('原始数据','要替换的内容',''替换成的内容)函数replace('A B C',' ','')原创 2020-03-31 19:21:02 · 1404 阅读 · 0 评论 -
oracle分组后合并(wm_concat)其中一个字段
使用wm_concat函数select TLXCONTENT ,wm_concat(RADDRESS) as RADDRESS from t_sendtlx where cdat between '20200101000000' and '20200330235959' and ctyp='DEP' group by TLXCONTENT;原创 2020-03-30 17:40:43 · 1352 阅读 · 0 评论 -
ORA-14402: 更新分区关键字导致分区的更改
可以通过打开表的row movement属性来允许对分区字段的update操作。alter table XXXXX enable row movement; 更改分区表的分区键值,意味着要删除记录并重新插入一条新的记录,这会引起记录(Record)的移动,记录的Rowid会改变,相关索引需要进行维护。 ...原创 2020-03-14 16:06:20 · 392 阅读 · 0 评论 -
Oracle转义符处理
1,单引号在ORACLE中单引号有两个作用:1)引用字符串;2)对自身转义。引用字符串时,单引号是成对出现的;而对自身的转义,也必定是双数的,所以,一个sql语句中,单引号必定是成对的. Select'abc'a,''b, ''''c, ' '' 'd FromDual; 复杂转义字符串可用连接符||拆分,便于理解。连接符号‘||’左右的单引号没有任何的...原创 2020-03-14 16:04:57 · 1943 阅读 · 0 评论 -
ORACLE查询保留字
select * from v$reserved_words v where v.KEYWORD = 'LEVEL';原创 2020-03-13 16:12:23 · 390 阅读 · 0 评论 -
oracle计算两日期相差多少秒,分钟,小时,天,周,月,年
--计算两个时间差相差多少秒select ceil((sysdate-t.transdate)* 24 * 60 * 60),t.transdate,sysdate from esc_trans_log t--计算两个时间差相差多少分select ceil((sysdate-t.transdate)* 24 * 60),t.transdate,sysdate from esc_trans_...原创 2020-02-27 14:09:19 · 9055 阅读 · 0 评论 -
oracle的LAG和LEAD分析函数
Lag和Lead函数可以在一次查询中取出同一字段的前N行的数据和后N行的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。lag的语法如下:lead的语法如下:lead 和lag 的语法类似以下以lag为例进行讲解!lag(exp_str,offset,defval) over()exp_str 是要做对比的字段offset 是e...原创 2020-02-27 14:08:03 · 411 阅读 · 0 评论 -
ORACLE查看某个表空间里有哪些表
select TABLE_NAME,TABLESPACE_NAME from dba_tables where TABLESPACE_NAME='表空间名';原创 2019-12-11 13:32:25 · 5208 阅读 · 0 评论 -
ORACLE(Linux版本)实时同步数据到MYSQL(Windows版本)解决方案:OGG
OGG:Oracle GoldenGate目录1.源库(100.100.100.210)与目标库(100.100.100.211)环境源库环境:Oracle11.2.0.1.0 +Red Hat Enterprise Linux Server release 6.4目标库环境:Mysql 5.6.16 +Windows Server 2008 R2 Enterprise2...原创 2019-12-03 11:02:35 · 1092 阅读 · 0 评论 -
ORACLE(Linux版本)实时同步数据到MYSQL(Linux版本)解决方案:OGG
OGG:Oracle GoldenGate目录1.源库与目标库环境(这里是部署到同一台服务器上)源库环境:Oracle11.2.0.1.0 +Red Hat Enterprise Linux Server release 6.4目标库环境:Mysql 5.6.46 +Red Hat Enterprise Linux Server release 6.42.源库Oracle...原创 2019-11-30 19:34:05 · 1573 阅读 · 0 评论 -
使用DataX从ORACLE同步数据到MYSQL
[前提]安装python3.7oracle版本:oracle 11gmysql版本:mysql5.71.下载DataXwget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz2.解压DataXtar -zxvf datax.tar.gz3.编写同步脚本进入dataX bin目录...原创 2019-11-27 14:31:28 · 4196 阅读 · 2 评论 -
Oracle中如何查询一个表的所有字段名和数据类型
1.查询语法select A.COLUMN_NAME,A.DATA_TYPE from user_tab_columns Awhere TABLE_NAME='表名'2.查询例子select A.COLUMN_NAME,A.DATA_TYPE from user_tab_columns Awhere TABLE_NAME='PUB_GOODS'添加排序后例子sele...原创 2019-11-27 09:26:13 · 2124 阅读 · 0 评论 -
ORACLE 归档日志打开与关闭
一 、设置为归档方式sql> archive log list; #查看是不是归档方式 sql> alter system set log_archive_start=true scope=spfile; #启用主动归档 sql> alter system set log_archive_dest='location=/oracle/ora9/oradata/a...原创 2019-11-25 10:29:30 · 611 阅读 · 0 评论 -
ORA-12514:tns监听程序当前无法识别连接描述符中请求服务;ORA-03113:通信通道的文件结尾
故障原因:归档日志存储空间已满解决方法:1.删除归档日志参考:https://blog.csdn.net/qq_18671415/article/details/1028930632.关闭归档模式登录oraclesqlplus / as sysdba关闭归档模式sql> archive log list; #查看是否是归档方式 sql> alt...原创 2019-11-25 09:39:29 · 236 阅读 · 0 评论 -
oracle归档日志太多(ORA-00257: archiver error. Connect internal only, until freed)错误的处理方法
1.原因oracle归档日志太多2.解决方法删除一天前的oracle归档日志3.删除步骤1)使用sqlplus登录oraclesqlplus / as sysdba2)查看归档日志使用信息select * from V$FLASH_RECOVERY_AREA_USAGE;[可以看到使用已经达到99.75%]3)查询日志目录位置show ...原创 2019-11-04 11:28:40 · 403 阅读 · 0 评论 -
红帽安装Oracle步骤
目录Linux系统版本:Redhat 6.4 (64bit)Oracle版本: 11g R2一.创建Oracle用户(root用户)二.修改内核参数(root用户)三.修改用户限制(root用户)四.修改用户验证选项(root用户)五.修改用户配置文件(root用户)六.安装目录配置(root用户)七.增加Oracle环境变量(oracle用户)八.O...原创 2019-11-02 17:09:26 · 2742 阅读 · 2 评论 -
ORACLE查看某个表的索引状态
select status,T.* from user_indexes T where table_name='表名'如下图:状态列STATUS说明: valid:当前索引有效 N/A :分区索引 有效 unusable:索引失效...原创 2019-10-22 21:33:29 · 4742 阅读 · 2 评论 -
ORACLE表空间使用量查询SQL
SELECT Upper(F.TABLESPACE_NAME) AS 表空间名 , round(D.TOT_GROOTTE_MB / 1024, 2) AS "总大小(G)" , round((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / 1024, 2) AS "已使用空间(G)" , round(F.TOTAL_BYTES / 1024, 2)...原创 2019-09-17 19:57:28 · 199 阅读 · 0 评论