参考:FreeIT-Oracle教程
实用sql
0.1、update内容中含有单引号
方案:用两个单引号代替一个单引号
select to_char('aa''否''aa') from dual;--aa'否'aa
0.2、找表
-- 找表
select a.OWNER 表所属用户,a.TABLE_NAME 表明,a.* from all_tables a where a.TABLE_NAME like upper('%zyy%');
0.3、找最大的表和表空间
-- 分析各个表空间的大小
SELECT a.tablespace_name "表空间名称",total / (1024 * 1024) "表空间大小(M)",free / (1024 * 1024) "表空间剩余大小(M)",(total - free) / (1024 * 1024) "表空间使用大小(M)",total / (1024 * 1024 * 1024) "表空间大小(G)",free / (1024 * 1024 * 1024) "表空间剩余大小(G)",(total - free) / (1024 * 1024 * 1024) "表空间使用大小(G)",round((total - free) / total, 4) * 100 "使用率 %"
FROM (SELECT tablespace_name, SUM(bytes) freeFROM dba_free_spaceGROUP BY tablespace_name) a,(SELECT tablespace_name, SUM(bytes) totalFROM dba_data_filesGROUP BY tablespace_name) b
WHERE a.tablespace_name = b.tablespace_name;
--查找特定的表空间,占用最大空间的表
select t.owner, t.segment_name, t.tablespace_name, bytes / 1024 / 1024 / 1024 as sizes, q.num_rows, t.segment_type
from dba_segments tleft join dba_tables qon t.segment_name = q.table_nameand t.owner = q.owner
where t.segment_type = 'TABLE'and t.tablespace_name = 'CCPP' --需要查看的表空间
order by bytes / 1024 / 1024 / 1024 desc
0.4、消除数字转字符异常
SELECT to_char(00.00800) FROM dual;-- .008
SELECT to_char(1111.008, 'fm99999.9999') FROM dual;-- 1111.008
1、基础
1.1、关键字
1.1.1、select 查询数据
-- select命令结构
select *|列名|表达式 from 表名 where 条件 order by 列名-- 查询学生信息表(stuinfo)中“李四”同学的基本信息
select t.* from STUDENT.STUINFO t where t.stuname = '李四';-- 查询班级“C201801”所有同学信息,按年龄进行升序展示
select t.* from STUDENT.STUINFO t where t.classno = 'C201801' ORDER BY T.AGE ASC;-- 备份查询数据
-- 备份查询数据命令结构
create table 表名 as select 语句
-- 备份学生信息表(stuinfo)的数据:
create table student.stuinfo_2018 as select * from student.stuinfo ;
1.1.2、insert into 插入
-- insert 命令结构:
insert into 表名(列名1,列名2,列名3.....)values(值1,值2,值3.....);
语法解析:
- 1、列名可以省略,当列名不填时,默认的是表中的所有列,列的顺序是按照建表的顺序进行排列的。
- 2、列名的数量和值的数量要一致,并且值的类型要和列的类型一一对应。
- 3、当表当中某些字段设置了某些约束的情况下,必须按照字段的约束来进行该值的插入,例如:学生信息表(STUINFO)当中设置有主键(主键字段是STUID),因此该字段必须具有唯一性,不能和原有的数据重复。age、stuname、calassno等字段是必填字段,因此是必须有值的。
-- insert插入一个select的结果集
-- 语法结构如下:
INSERT INTO 表 SELECT 子句
-- 把上一章节利用Oracle查询(select)语句备份的表stuinfo_2018的数据
-- 一次插入表stuinfo当中:
delete from student.stuinfo t where t.stuid in (select b.stuid from student.stuinfo_2018 b );
insert into student.stuinfo select * from student.stuinfo_2018;
select * from student.stuinfo;
1.1.3、update 更新
-- update命令结构
update 表名 set 列名1=值1,列名2=值2,列名3=值3..... where 条件
-- 更新学生“张三”的年龄和身份证信息:
update student.stuinfo tset t.age = '24', t.idnumber = '3503021994XXXXXXXX'where t.stuname = '张三';
commit;
select * from student.stuinfo t where t.stuname='张三';
-- 利用另外一张表关联更新本表数据的命令结构如下
update 表1 set 列名=(select 列名 from 表2 where 表1.列名=表2.列名) where exists (select 1 from 表2 where 表1.列名=表2.列名)
--利用备份表stuinfo_2018更新回学生“张三”的年龄和身份证:
update student.stuinfo tset (age, idnumber) =(select age, idnumber from student.stuinfo_2018 b where b.stuid = t.stuid)where exists (select 1from student.stuinfo_2018 bwhere b.stuid = t.stuidand b.stuname = '张三');select *from student.stuinfo t where t.stuname='张三';
1.1.4、delete 删除
Oracle中对表数据的删除是利用delete命令进行的。
当delete from不加where条件时,表示是把表中的数据全部删除。
-- delete命令结构:
delete from 表名 where 条件
-- 删除学生信息表(stuinfo)中学生“张三”的数据:
delete from stuinfo t where t.stuname='张三';
truncate 命令
truncate命令也是数据删除命令,他是直接把Oracle表数据一次删除的命令,truncate命令是一个DDL(数据库定义语言)命令,不同于delete是DML(数据操纵语言)命令。
-- truncate命令结构:
truncate table 表名;
-- 删除学生信息备份表(stuinfo_2018):
truncate table stuinfo_2018;
他们的区别:
-
1、TRUNCATE 是 DDL 命令,命令执行完就提交,删除的数据不能恢复; DELETE 命令是 DML 命令,命令执行完需提交后才能生效,删除后的数据可以通过日志文件恢复。
-
2、如果表中的数据量较大,TRUNCATE的速度比DELETE速度快很多。
-
3、truncate删除将重新设置表索引的初始大小,而delete不能。
-
4、delete能够触发表上相关的delete触发器,而truncate则不会触发。
-
5、delete删除的原理是一次一条从表中删除数据,并将删除操作当做事物记录在数据库的日志当中,以便进行数据回滚。而truncate是一次性进行数据页的删除,因此执行速度快,但是不能回滚。
总结:truncate命令是属于DDL命令,一次性删除表中所有数据,并且数据不能恢复,在实际开发过程当中truncate命令慎用。
1.1.5、运算符
Oracle算术运算符包括+、-、*、/
四个,其中/获得的结果是浮点数。
select b.coursename, sum(a.score) / count(1)from score a, course bwhere a.courseid = b.courseidand a.courseid = 'R20180101'group by b.coursename;
Oracle关系运算符
Oracle关系运算符在where条件语句当中经常使用到
符号 | 解释 | 符号 | 解释 |
---|---|---|---|
= | 等于 | <>或者!= | 不等于 |
> | 大于 | >= | 大于或者等于 |
< | 小于 | <= | 小于或者等于 |
Oracle逻辑运算符 | |||
AND、OR、NOT |
1.1.6、字符串连接符||
select '姓名:' || c.stuname || ', 课程:' || b.coursename || ', 成绩:' || a.score || '分。' as sxcjfrom score a, course b, stuinfo cwhere a.courseid = b.courseidand a.stuid = c.stuid
1.1.7、distinct 去重
Oracle DISTINCT关键字的作用可以对Oracle查询结果进行重复数据的消除。
-- DISTINCT语法结构:
SELECT DISTINCT 列1,列2,列3... from 表名;
-- 查询学生成绩表中课程“数学(2018上学期)”的所有出现的成绩,不重复:
select distinct b.coursename, t.scorefrom score t, course bwhere t.courseid = b.courseidand t.courseid = 'R20180101';
1.1.8、条件查询(in、like、between、=)
- ①、=操作符
在条件查询语句中“=”表示列值等于一个固定值所查询出的结果。 - ②、IN操作符
在 Where 子句中可以使用 IN 操作符来查询其列值在指定的列表中的查询结果。 - ③、between…and
在 WHERE 子句中,可以使用 BETWEEN…AND 操作符来查询列值包含在指定区间内的查询结果 。
--查询学生成绩表“score”中课程id为“R20180101”,成绩在70-95之间的学生信息。
select t.stuid,t.courseid,t.score,b.stuname,b.sex,b.age,b.classno,b.gradefrom score t, stuinfo bwhere t.stuid = b.stuidand t.courseid = 'R20180101'and t.score between '70' and '95'
- ④、like模糊查询
在Oracle条件查询where条件之中,当遇到查询值不清楚时,可以利用模糊查询LIKE关键字进行where条件的模糊查询。
LIKE 关键字通过字符匹配检索出所需要的数据行。字符匹配操作可以使用通配符“%”和“” :
1、%:表示零个或者多个任意字符。
2、:代表一个任意字符。
3、\:指转义字符,“%”在字符串中表示一个字符“%”。
select * from STUINFO t where t.stuname like '张%';
select * from STUINFO t where t.stuname like '张_';
1.1.9、集合运算
oralce的集合运算包括:intersect(交集)、uinion all(交集重复)、uinion(交集不重复)、minus(补集)。
①、intersect,返回两个查询共有的记录。
②、uinion all,返回各个查询的所有记录,包括重复记录。
③、uinion,返回各个查询的所有记录,不包括重复记录 (重复的记录只取一条)。
④、minus,返回第一个查询检索出的记录减去第二个查询检索出的记录之后剩余的记录。
-- 交集
select * from stuinfo
intersect
select * from stuinfo_2018;-- 并集重复
select * from stuinfo
union all
select * from stuinfo_2018;-- 并集不重复
select * from stuinfo
union
select * from stuinfo_2018;-- 补集
select * from stuinfo
minus
select * from stuinfo_2018;
1.1.10、create table 建表语句
-- Create table 创建stuinfo(学生信息表)
create table STUDENT.stuinfo
(stuid varchar2(11) not null,--学号:'S'+班号(7位数)+学生序号(3位数)(1)stuname varchar2(50) not null,--学生姓名sex char(1) not null,--性别age number(2) not null,--年龄classno varchar2(7) not null,--班号:'C'+年级(4位数)+班级序号(2位数)stuaddress varchar2(100) default '地址未录入',--地址 (2)grade char(4) not null,--年级enroldate date,--入学时间idnumber varchar2(18) default '身份证未采集' not null--身份证
)
tablespace USERS --(3)storage(initial 64Kminextents 1maxextents unlimited);
-- Add comments to the table
comment on table STUDENT.stuinfo --(4)is '学生信息表';
-- Add comments to the columns
comment on column STUDENT.stuinfo.stuid -- (5)is '学号';
comment on column STUDENT.stuinfo.stunameis '学生姓名';
comment on column STUDENT.stuinfo.sexis '学生性别';
comment on column STUDENT.stuinfo.ageis '学生年龄';
comment on column STUDENT.stuinfo.classnois '学生班级号';
comment on column STUDENT.stuinfo.stuaddressis '学生住址';
comment on column STUDENT.stuinfo.gradeis '年级';
comment on column STUDENT.stuinfo.enroldateis '入学时间';
comment on column STUDENT.stuinfo.idnumberis '身份证号';--stuinfo(学生信息表)添加约束
-- 创建/重新创建主键、唯一键和外键约束
alter table STUDENT.STUINFOadd constraint pk_stuinfo_stuid primary key (STUID);--把stuid当做主键,主键字段的数据必须是唯一性的(学号是唯一的)-- 创建/重新创建检查约束
alter table STUDENT.STUINFOadd constraint ch_stuinfo_agecheck (age>0 and age<=50);--给字段年龄age添加约束,学生的年龄只能0-50岁之内的alter table STUDENT.STUINFOadd constraint ch_stuinfo_sexcheck (sex='1' or sex='2');alter table STUDENT.STUINFOadd constraint ch_stuinfo_GRADEcheck (grade>='1900' and grade<='2999');
1.1.11、连接查询
内关联:
外关联:左外关联、右外关联、全外关联。(+)
1、内连接
①、等值连接:=
。
②、不等连接:关系运算符包括>、>=、<=、!>、!<、<>
。
-- 查询学生信息表(stuinfo)的学生信息,
--关联查询该学生的班级信息(class)。
select a.stuid,a.stuname,a.classno,b.classno,b.classname,b.monitorid,b.monitorname,b.classaddressfrom stuinfo a, class bwhere a.classno = b.classno;
2、外连接
外连接,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行。
- ①、left join(左联接)等价于(left outer join)返回包括左表中的所有记录和右表中联结字段相等的记录。
- ②、right join(右联接)等价于(right outer join)返回包括右表中的所有记录和左表中联结字段相等的记录。
- ③、full join (全连接)等价于(full outer join)查询结果等于左外连接和右外连接的和。
-- left join(左联接)
--左外连接(stuinfo表中数据都存在,stuinfo_2018不在stuinfo中
--存在的学生相关字段为null值)
select a.*, b.stuid, b.stunamefrom stuinfo aleft join stuinfo_2018 bon a.stuid = b.stuid;
--左外连接(利用(+)在右边)另外一种写法
select a.*, b.stuid, b.stunamefrom stuinfo a,stuinfo_2018 b where a.stuid=b.stuid(+);
--右外连接(stuinfo_2018表中数据都存在,
--stuinfo不在stuinfo_2018存在的学生相关字段为null值)
select a.*, b.stuid, b.stunamefrom stuinfo aright join stuinfo_2018 bon a.stuid = b.stuid;
--右外连接(利用(+)在左边)另外一种写法
select a.*, b.stuid, b.stunamefrom stuinfo a,stuinfo_2018 b where a.stuid(+)=b.stuid;
--(全外连接(stuinfo、stuinfo_2018表中数据都存在,--stuinfo不在stuinfo_2018存在的学生相关字段为null值,--stuinfo_2018不在stuinfo存在的学生相关字段为null值)
select a.*, b.stuid, b.stunamefrom stuinfo afull join stuinfo_2018 bon a.stuid = b.stuid;
1.1.12、伪列
Oracle的伪列是Oracle表在存储的过程中或查询的过程中,表会有一些附加列,称为伪列。伪列就像表中的字段一样,但是表中并不存储。伪列只能查询,不能增删改。Oracle的伪列有:rowid、rownum。
1、rowid
Oracle表中的每一行在数据文件中都有一个物理地址, ROWID 伪列返回的就是该行的物理地址。使用 ROWID 可以快速的定位表中的某一行。 ROWID 值可以唯一的标识表中的一行。通过Oracle select 查询出来的ROWID,返回的就是该行数据的物理地址。
select t.*,t.rowid from stuinfo t ;
2、rownum
ORACLE ROWNUM表示的Oracle查询结果集的顺序,ROWNUM为每个查询结果集的行标识一个行号,第一行返回1,第二行返回2,依次顺序递增。
ROWNUM 与 ROWID 不同, ROWID 是插入记录时生成, ROWNUM 是查询数据时生成。ROWID 标识的是行的物理地址。 ROWNUM 标识的是查询结果中的行的次序。
select t.stuid,t.stuname,t.sex,t.classno,t.stuaddress ,rownum from stuinfo t ;
--返回学生信息表中(stuinfo)中学生年龄最低的前四位同学。
select * from (select t.stuid, t.stuname, t.sex, t.classno, t.stuaddress, t.age, rownumfrom stuinfo torder by t.age asc) where rownum <=4;
1.2、数据类型
数据类型 | 类型解释 |
---|---|
VARCHAR2(length) | 字符串类型:存储可变的长度的字符串,length:是字符串的最大长度,默认不填的时候是1,最大长度不超过4000。 |
CHAR(length) | 字符串类型:存储固定长度的字符串,length:字符串的固定长度大小,默认是1,最大长度不超过2000。 |
NUMBER(a,b) | 数值类型:存储数值类型,可以存整数,也可以存浮点型。a代表数值的最大位数:包含小数位和小数点,b代表小数的位数。例子: number(6,2),输入123.12345,实际存入:123.12 。 number(4,2),输入12312.345,实际春如:提示不能存入,超过存储的指定的精度。 |
DATA | 时间类型:存储的是日期和时间,包括年、月、日、时、分、秒。例子: 内置函数sysdate获取的就是DATA类型 |
TIMESTAMP | 时间类型:存储的不仅是日期和时间,还包含了时区。例子: 内置函数systimestamp获取的就是timestamp类型 |
CLOB | 大字段类型:存储的是大的文本,比如:非结构化的txt文本,字段大于4000长度的字符串。 |
BLOB | 二进制类型:存储的是二进制对象,比如图片、视频、声音等转换过来的二进制对象 |
2、服务
2.1、OracleService+服务名(ORCL)
该服务是Oracle数据库的基础,只有启动该服务才能正常使用Oracle数据库。
2.2、OracleOraDb11g_home1TNSlistener
该服务为Oracle客户端提供监听程序的服务,只有启动该服务,本地的客户端程序才能通过监听连接到数据库,和数据库进行交互。
2.3、Oracle ORCL VSS Writer Service
Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备(比如磁盘,阵列等)创建高保真的时间点映像,即映射拷贝(shadow copy)。它可以在多卷或者单个卷上创建映射拷贝,同时不会影响到系统的性能。(非必须启动)
2.4、OracleMTSRecoveryService
服务端控制。该服务允许数据库充当一个微软事务服务器MTS、COM/COM+对象和分布式环境下的事务的资源管理器。(非必须启动)
2.5、OracleOraDb11g_home1ClrAgent
Oracle数据库 .NET扩展服务的一部分。 (非必须启动)
2.6、OracleJobSchedulerORCL
Oracle作业调度(定时器)服务,ORCL是Oracle实例标识。(非必须启动)
2.7、提示:
在使用第三方客户端连接Oracle数据库时,OracleOraDb11g_home1TNSlistener 服务必须启动,才能连接到远程数据库!
3、用户
oracle用户的概念对于Oracle数据库至关重要,在现实环境当中一个服务器一般只会安装一个Oracle实例,一个Oracle用户代表着一个用户群,他们通过该用户登录数据库,进行数据库对象的创建、查询等开发。
每一个用户对应着该用户下的N多对象,因此,在实际项目开发过程中,不同的项目组使用不同的Oracle用户进行开发,不相互干扰。也可以理解为一个Oracle用户既是一个业务模块,这些用户群构成一个完整的业务系统,不同模块间的关联可以通过Oracle用户的权限来控制,来获取其它业务模块的数据和操作其它业务模块的某些对象。
3.1、用户权限
系统权限:比如:create session可以和数据库进行连接权限、create table、create view 等具有创建数据库对象权限。
对象权限:比如:对表中数据进行增删改查操作,拥有数据库对象权限的用户可以对所拥有的对象进行相应的操作。
3.2、数据库角色
oracle数据库角色是若干系统权限的集合,常用的数据库角色如下:
①、CONNECT角色:connect角色是Oracle用户的基本角色,connect权限代表着用户可以和Oracle服务器进行连接,建立session(会 话)。
②、RESOURCE角色:resouce角色是开发过程中常用的角色。 RESOURCE给用户提供了可以创建自己的对象,包括:表、视图、序列、过程、触发器、索引、包、类型等。
③、DBA角色:DBA角色是管理数据库管理员该有的角色。它拥护系统了所有权限,和给其他用户授权的权限。SYSTEM用户就具有DBA权限。
因此,在实际开发过程当中可以根据需求,把某个角色或系统权限赋予某个用户。
语法:
-- 授权
--GRANT 对象权限 on 对象 TO 用户
grant select, insert, update, delete on JSQUSER to STUDENT;--GRANT 系统权限 to 用户
grant select any table to STUDENT;--GRANT 角色 TO 用户
grant connect to STUDENT;--授权connect角色
grant resource to STUDENT;--授予resource角色--取消用户权限
-- Revoke 对象权限 on 对象 from 用户
revoke select, insert, update, delete on JSQUSER from STUDENT;-- Revoke 系统权限 from 用户
revoke SELECT ANY TABLE from STUDENT;-- Revoke 角色(role) from 用户
revoke RESOURCE from STUDENT;--Oracle用户的其他操作
--修改用户信息
alter user STUDENTidentified by ****** --修改密码account lock;--修改用户处于锁定状态或者解锁状态 (LOCK|UNLOCK )
提示:
系统权限只能通过DBA用户授权,对象权限有拥有该对象权限的对象授权(不一定是本身对象)!用户不能自己给自己授权!
4、函数
4.1、字符型函数
函数 | 说明 | 案例 | 结果 |
---|---|---|---|
ASCII(X) | 求字符X的ASCII码 | select ASCII(‘A’) FROM DUAL; | 65 |
CHR(X) | 求ASCII码对应的字符 | select CHR(65) FROM DUAL; | ‘A’ |
LENGTH(X) | 求字符串X的长度 | select LENGTH(‘ORACLE技术圈’)from DUAL; | 9 |
CONCATA(X,Y) | 返回连接两个字符串X和Y的结果 | select CONCAT(‘ORACLE’,‘技术圈’) from DUAL; | ORACLE技术圈 |
INSTR(X,Y[,START]) | 查找字符串X中字符串Y的位置,可以指定从Start位置开始搜索,不填默认从头开始 | SELECT INSTR(‘ORACLE技术圈’,‘技术’) FROM DUAL; | 7 |
LOWER(X) | 把字符串X中大写字母转换为小写 | SELECT LOWER(‘ORACLE技术圈’) FROM DUAL; | oracle技术圈 |
UPPER(X) | 把字符串X中小写字母转换为大写 | SELECT UPPER(‘Oracle技术圈’) FROM DUAL; | ORACLE技术圈 |
INITCAP(X) | 把字符串X中所有单词首字母转换为大写,其余小写。 | SELECT INITCAP('ORACLE is good ') FROM DUAL; | Oracle Is Good |
LTRIM(X[,Y]) | 去掉字符串X左边的Y字符串,Y不填时,默认的是字符串X左边去空格 | SELECT LTRIM(‘–ORACLE技术圈’,‘-’) FROM DUAL; | ORACLE技术圈 |
RTRIM(X[,Y]) | 去掉字符串X右边的Y字符串,Y不填时,默认的是字符串X右边去空格 | SELECT RTRIM(‘ORACLE技术圈–’,‘-’) FROM DUAL; | ORACLE技术圈 |
TRIM(X[,Y]) | 去掉字符串X两边的Y字符串,Y不填时,默认的是字符串X左右去空格 | SELECT TRIM(‘–ORACLE技术圈–’,‘-’) FROM DUAL; | ORACLE技术圈 |
REPLACE(X,old,new) | 查找字符串X中old字符,并利用new字符替换 | SELECT REPLACE(‘ORACLE技术圈’,‘技术圈’,‘技术交流’) FROM DUAL; | ORACLE技术交流 |
SUBSTR(X,start[,length]) | 截取字符串X,从start位置(其中start是从1开始)开始截取长度为length的字符串,length不填默认为截取到字符串X末尾 | SELECT SUBSTR(‘ORACLE技术圈’,1,6) FROM DUAL; | ORACLE |
RPAD(X,length[,Y]) | 对字符串X进行右补字符Y使字符串长度达到length长度 | SELECT RPAD(‘ORACLE’,9,‘-’) from DUAL; | ORACLE— |
LPAD(X,length[,Y]) | 对字符串X进行左补字符Y使字符串长度达到length长度 | SELECT LPAD(‘ORACLE’,9,‘-’) from DUAL; | —ORACLE |
-- 查询字节长度(4)
select lengthb('你好') from dual;
-- 查询普通长度(2)
select length('你好') from dual;
-- 普通字符串截取函数
substr
-- 按照字节 字符串截取函数
substrb
-- 查询字符集
-- 字符集设置成ZHS16GBK:汉字占2个字节。字符集设置成AL32UTF8:汉字占3个字节。
select * from v$nls_parameters t where t.PARAMETER='NLS_CHARACTERSET';
4.2、日期型函数
Oracle日期类型函数是操作日期、时间类型的相关数据,返回日期时间类型或数字类型结果,常用的函数有:SYSDATE()、ADD_MONTHS()、LAST_DAY()、TRUNC()、ROUND()等等。
4.2.1、系统日期、时间函数
①、SYSDATE函数:该函数没有参数,可以得到系统的当前时间。
案例代码:select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
②、SYSTIMESTAMP函数:该函数没有参数,可以得到系统的当前时间,该时间包含时区信息,精确到微秒。
select systimestamp from dual;
4.2.2、数据库时区函数
DBTIMEZONE函数:该函数没有输入参数,返回数据库时区。
select dbtimezone from dual;
4.2.3、给日期加上指定的月份函数
ADD_MONTHS(r,n)函数:该函数返回在指定日期r上加上一个月份数n后的日期。其中
r:指定的日期。
n:要增加的月份数,如果N为负数,则表示减去的月份数。
select to_char(add_months(to_date('2018-11-12','yyyy-mm-dd'),1),'yyyy-mm-dd'),to_char(add_months(to_date('2018-10-31','yyyy-mm-dd'),1),'yyyy-mm-dd'),to_char(add_months(to_date('2018-09-30','yyyy-mm-dd'),1),'yyyy-mm-dd') from dual;
结果:(如果指定的日期是月份的最后一天,返回的也是新的月份的最后一天,如果新的月份比指定的月份日期少,将会自动调回有效日期)
4.2.4、月份最后一天函数
LAST_DAY®函数:返回指定r日期的当前月份的最后一天日期。
select last_day(sysdate) from dual;
4.2.5、指定日期后一周的日期函数
NEXT_DAY(r,c)函数:返回指定R日期的后一周的与r日期字符(c:表示星期几)对应的日期。
select next_day(to_date('2018-11-12','yyyy-mm-dd'),'星期四') from dual;
4.2.6、返回指定日期中特定部分的函数
EXTRACT(time)函数:返回指定time时间当中的年、月、日、分等日期部分。
select extract( year from timestamp '2018-11-12 15:36:01') as year,extract( month from timestamp '2018-11-12 15:36:01') as month, extract( day from timestamp '2018-11-12 15:36:01') as day, extract( minute from timestamp '2018-11-12 15:36:01') as minute,extract( second from timestamp '2018-11-12 15:36:01') as secondfrom dual;
4.2.7、返回两个日期间的月份数
MONTHS_BETWEEN(r1,r2)函数:该函数返回r1日期和r2日期直接的月份。当r1>r2时,返回的是正数,假如r1和r2是不同月的同一天,则返回的是整数,否则返回的小数。当r1<r2时,返回的是负数。
select months_between(to_date('2018-11-12', 'yyyy-mm-dd'),to_date('2017-11-12', 'yyyy-mm-dd')) as zs, --整数months_between(to_date('2018-11-12', 'yyyy-mm-dd'),to_date('2017-10-11', 'yyyy-mm-dd')) as xs, --小数months_between(to_date('2017-11-12', 'yyyy-mm-dd'),to_date('2018-10-12', 'yyyy-mm-dd')) as fs --负数from dual;
4.2.8、日期截取函数
ROUND(r[,f])函数:将日期r按f的格式进行四舍五入。如果f不填,则四舍五入到最近的一天。
select sysdate, --当前时间round(sysdate, 'yyyy') as year, --按年round(sysdate, 'mm') as month, --按月round(sysdate, 'dd') as day, --按天round(sysdate) as mr_day, --默认不填按天round(sysdate, 'hh24') as hour --按小时from dual;
4.3、数值型函数
函数 | 解释 | 案例 | 结果 |
---|---|---|---|
ABS(X) | 求数值X的绝对值 | select abs(-9) from dual; | 9 |
COS(X) | 求数值X的余弦 | select cos(1) from dual; | 0.54030230586814 |
ACOS(X) | 求数值X的反余弦 | select acos(1) from dual; | 0 |
CEIL(X) | 求大于或等于数值X的最小值 | select ceil(7.8) from dual; | 8 |
FLOOR(X) | 求小于或等于数值X的最大值 | select floor(7.8) from dual; | 7 |
log(x,y) | 求x为底y的对数 | select log(2,8) from dual; | 3 |
mod(x,y) | 求x除以y的余数 | select mod(13,4) from dual; | 1 |
power(x,y) | 求x的y次幂 | select power(2,4) from dual; | 16 |
sqrt(x) | 求x的平方根 | select sqrt(16) from dual; | 4 |
round(x[,y]) | 求数值x在y位进行四舍五入。 y不填时,默认为y=0; 当y>0时,是四舍五入到小数点右边y位。 当y<0时,是四舍五入到小数点左边` |
y | `位。 |
trunc(x[,y]) | 求数值x在y位进行直接截取, y不填时,默认为y=0; 当y>0时,是截取到小数点右边y位。 当y<0时,是截取到小数点左边` |
y | `位。 |
4.4、转换函数
Oracle转换函数是进行不同数据类型转换的函数,是我们平常数据库开发过程当中用的最多的内置函数。常用的函数有to_char()、to_number()、to_date()等等。详细分析如下表:
函数 | 解释 | 案例 | 结果 |
---|---|---|---|
asciistr(x) | 把字符串x转换为数据库字符集对应的ASCII值 | select asciistr(‘Oracle技术圈’) from dual; | Oracle\6280\672F\5708 |
bin_to_num(x1[x2…]) | 把二进制数值转换为对应的十进制数值 | select bin_to_num(1,0,0) from dual; | 4 |
cast(x as type) | 数据类型转换函数,该函数可以把x转换为对应的type的数据类型,基本上用于数字,字符,时间类型安装数据库规则进行互转, | select cast(‘123’ as number) num,cast(123 as varchar2(3)) as ch,cast(to_date(‘20181112’,‘yyyymmdd’) as varchar2(12)) as time from dual; | 123/‘123’/12-11月-18 (三列值,用"/"隔开) |
convert(x,d_chset[,r_chset]) | 字符串在字符集间的转换函数,对字符串x按照原字符集r_chset转换为目标字符集d_chset,当r_chset不填时,默认选择数据库服务器字符集。 | select CONVERT(‘oracle技术圈’,‘US7ASCII’,‘ZHS16GBK’) from dual; | oracle??? |
to_char(x[,f]) | 把字符串或时间类型x按格式f进行格式化转换为字符串。 | select to_char(123.46,‘999.9’) from dual; select to_char(sysdate,‘yyyy-mm-dd’) from dual; |
123.5 2018-11-13 |
to_date(x[,f]) | 可以把字符串x按照格式f进行格式化转换为时间类型结果。 | select to_date(‘2018-11-13’,‘yyyy-mm-dd’) from dual; | 2018/11/13 |
to_number(x[,f]) | 可以把字符串x按照格式f进行格式化转换为数值类型结果。 | select to_number(‘123.74’,‘999.99’) from dual | 123.74 |
4.5、聚合函数
Oracle聚合函数同时可以对多行数据进行操作,并返回一个结果。比如经常用来计算一些分组数据的总和和平均值之类,常用函数有AVG()、SUM()、MIN()、MAX()等等。
4.5.1、AVG函数
AVG([distinct ] expr):该函数可以求列或列组成的表达式expr的平均值,返回的是数值类型。其中 distinct是可选参数,表示是否去掉重复行。
select * from stuinfo;
select avg(t.age) from stuinfo t;--按照班级求各班学生的平均年龄(其中年龄大于等于30岁的不计入在内)
select classno, avg(t.age)from stuinfo twhere t.age < 30group by t.classno;
4.5.2、COUNT函数
count(|[distinct]expr)函数可以用来计算查询结果的条数或行数。函数中必须指定列名或者表达式expr,不然就要全选使用号。
--查询学生信息表中所有的学生的个数
select count(*) from stuinfo;
4.5.3、MAX/MIN函数
MAX([distinct] expr)、MIN([distinct] expr)函数可以返回指定列或列组成的表达式expr中的最大值或最小值。该函数也通常和where条件、group by分组结合在一起使用。
-- 求学生信息表中年龄最大的学生的年龄
select max(age) from stuinfo;
4.5.4、SUM函数
SUM([distinct] expr)函数可以对指定列或列组成的表达式expr进行求和,假如不使用分组group by ,那就是按照整表作为一个分组。
--正好利用sum函数求和乘以人数进行求学生的平均年龄
select classno, sum(age), count(*), sum(age) / count(*), avg(age)from stuinfo twhere t.age < 30group by t.classno;
5、子查询
5.1、单行子查询
select *from stuinfo twhere t.classno in (select b.classnofrom class bwhere b.classname = '信息科学2班(18)');/*虽然在这利用内关联也可以查出结果,而且效率更好,但是在一些没有关联关系的时候可以利用子查询 */
select t.*from stuinfo t, class bwhere t.classno = b.classnoand b.classname = '信息科学2班(18)';
5.2、多行子查询
select * from stuinfo t where t.classno in (select b.classno from class b);-- ANY/ALL关键字案例展示
--年龄只要大于当中子查询的最小值26岁即可
select * from stuinfo t where t.age>any(26,27,28);
--年龄必须大于子查询当中的最大值28岁才可以
select * from stuinfo t where t.age>all(26,27,28);
6、视图
oracle视图可以理解为数据库中一张虚拟的表,他是通过一张或者多张基表进行关联查询后组成一个虚拟的逻辑表。查询视图,本质上是对表进行关联查询。
视图的本身是不包含任何数据,只是一个查询结果,当基表的数据发生变化时,视图里面的数据也会跟着发生变化。我们经常在实际开发过程中遇到的视图可以大概分为三种:单表视图、多表关联视图、视图中含有子视图。
6.1、视图的作用和优势
既然视图在实际开发过程当中被广泛使用到,它到底有哪些作用和优势呢?
1、使数据简单化:可以将复杂的查询创建成视图,提供给他人使用,他人就不需要去理解其中复杂性的业务关系或逻辑关系。这样对视图的使用人员来说,就简化了数据的,屏蔽了数据的复杂性。
2、表结构设计的补充:系统刚刚开始设计时,大部分程序是直接访问表结构的数据的,但是随着业务的变化、系统的更新等,造成了某些表结构的不适用,这时候去修改表结构对系统的影响太大,开发成本较高,这个时候可以创建视图来对表结构的设计进行补充,降低开发成本。程序可以直接通过查询视图得到想要的数据。
3、增加安全性:视图可以把表中指定的字段展示给用户,而不必把表中所有字段一起展示给用户。在实际开发中,视图经常作为数据的提供方式,设置为只读权限提供给第三方人员进行查询使用。
7、索引
Oracle索引(index)最大的作用是用来优化数据库查询的效率,提升数据库的查询性能。就好比书的目录一样,可以通过目录来直接定位所需内容存在的页数,大大提高检索效率。
Oracle数据库中如果某列出现在查询的条件中,而该列的数据是无序的,查询时只能从第一行开始一行一行的匹配。创建索引就是对某些特定列中的数据进行排序或归类,生成独立的索引表。在某列上创建索引后,如果该列出现在查询条件中,Oracle 会自动的引用该索引,先从索引表中查询出符合条件记录的 ROWID,由于 ROWID 是记录的物理地址,因此可以根据 ROWID 快速的定位到具体的记录,当表中的数据非常多时,引用索引带来的查询效率非常可观 。
7.1、何时建立索引:
既然我们都知道建立索引有利于查询速率的提升,那是不是所有字段都可以加上索引。这是万万不行的,建立索引不仅仅要浪费空间来存储索引表,当数据量较少时,直接查询数据比经过查询索引表再定位到表数据的速度更快。索引可以提高查询的效率,但是在数据增删改时需要更新索引,因此索引对增删改时会有负面影响。所以要根据实际情况, 考虑好再建立索引。
那何时建立索引,下面大概介绍几点,其余的得在实际应用和开发过程中,酌情考虑:
1、Oracle 数据库会为表的主键和包含唯一约束的列自动创建索引,所以在建立唯一约束时,可以考虑该列是否必要建立。是否经常要作为查询条件。
2、如果某个表的数据量较大(十几二十万以上),某列经常作为where的查询条件,并且检索的出来的行数经常是小于总表的5%,那该列可以考虑建立索引。
3、对于两表连接的字段,应该考虑建立索引。如果经常在某表的一个字段进行Order By 则也经过进行索引。
4、不应该在小表上建立索引。上面也说过,小表之间查询的数据会比建立索引的查询速度更快,但是在某些字段,如性别:只有男、女和未知三种数据时,可以考虑位图索引,可以增加查询效率。
5、经常进行DML操作,即经常进行增删改的操作的表,创建表索引时就要权衡一下,因为建索引会导致进行DML操作时速度变慢。所以可以根据实际情况,选择某些字段建立索引,而不能盲目乱建。
8、ora错误代码大全
-- 常见错误
ORA-00051: 等待资源超时
ORA-00060: 等待资源时检测到死锁
-- 大全
ORA-00001: 违反唯一约束条件 (.)
ORA-00017: 请求会话以设置跟踪事件
ORA-00018: 超出最大会话数
ORA-00019: 超出最大会话许可数
ORA-00020: 超出最大进程数 ()
ORA-00021: 会话附属于其它某些进程;无法转换会话
ORA-00022: 无效的会话 ID;访问被拒绝
ORA-00023: 会话引用进程私用内存;无法分离会话
ORA-00024: 单一进程模式下不允许从多个进程注册
ORA-00025: 无法分配
ORA-00026: 丢失或无效的会话 ID
ORA-00027: 无法删去当前会话
ORA-00028: 您的会话己被删去
ORA-00029: 会话不是用户会话
ORA-00030: 用户会话 ID 不存在。
ORA-00031: 标记要删去的会话
ORA-00032: 无效的会话移植口令
ORA- 00033: 当前的会话具有空的移植口令
ORA-00034: 无法在当前 PL/SQL 会话中
ORA-00035: LICENSE_MAX_USERS 不能小于当前用户数
ORA-00036: 超过递归SQL() 级的最大值
ORA-00037: 无法转换到属于不同服务器组的会话
ORA-00038: 无法创建会话: 服务器组属于其它用户
ORA-00050: 获取入队时操作系统出错
ORA-00051: 等待资源超时
ORA-00052: 超出最大入队资源数 ()
ORA-00053: 超出最大入队数
ORA-00054: 资源正忙,要求指定 NOWAIT
ORA-00055: 超出 DML 锁的最大数
ORA-00056: 对象 ‘.’ 上的 DDL 锁以不兼容模式挂起
ORA-00057: 超出临时表锁的最大数
ORA-00058: DB_BLOCK_SIZE 必须为才可安装此数据库(非 )
ORA-00059: 超出 DB_FILES 的最大值
ORA-00060: 等待资源时检测到死锁
ORA-00061: 另一个例程设置了不同的 DML_LOCKS
ORA-00062: 无法获得 DML 全表锁定;DML_LOCKS 为 0
ORA-00063: 超出 LOG_FILES 的最大数
ORA-00064: 对象过大以至无法分配在此 O/S (,)
ORA-00065: FIXED_DATE 的初始化失败
ORA-00066: LOG_FILES 为 但需要成为 才可兼容
ORA-00067: 值 对参数 无效;至少必须为
ORA-00068: 值 对参数 无效,必须在 和 之间
ORA-00069: 无法获得锁定 – 禁用了表锁定
ORA-00070: 命令无效
ORA-00071: 进程号必须介于 1 和 之间
ORA-00072: 进程"不活动"
ORA-00073: 命令 介于 和 个参数之间时使用
ORA-00074: 未指定进程
ORA-00075: 在此例程未找到进程 “”
ORA-00076: 未找到转储
ORA-00077: 转储 无效
ORA-00078: 无法按名称转储变量
ORA-00079: 未找到变量
ORA-00080: 层次 指定的全局区域无效
ORA-00081: 地址范围 [,) 不可读
ORA-00082: 的内存大小不在有效集合 [1], [2], [4] 之内
ORA-00083: 警告: 可能损坏映射的 SGA
ORA-00084: 全局区域必须为 PGA, SGA 或 UGA
ORA-00085: 当前调用不存在
ORA-00086: 用户调用不存在
ORA-00087: 命令无法在远程例程上执行
ORA-00088: 共享服务器无法执行命令
ORA-00089: ORADEBUG 命令中无效的例程号
ORA-00090: 未能将内存分配给群集数据库 ORADEBUG 命令
ORA-00091: LARGE_POOL_SIZE 至少必须为
ORA-00092: LARGE_POOL_SIZE 必须大于 LARGE_POOL_MIN_ALLOC
ORA-00093: 必须介于 和 之间
ORA-00094: 要求整数值
ORA-00096: 值 对参数 无效,它必须来自 之间
ORA-00097: 使用 Oracle SQL 特性不在 SQL92 级中
ORA-00099: 等待资源时发生超时,可能是 PDML 死锁所致
ORA-00100: 未找到数据
ORA-00101: 系统参数 DISPATCHERS 的说明无效
ORA-00102: 调度程序无法使用网络协议
ORA-00103: 无效的网络协议;供调度程序备用
ORA-00104: 检测到死锁;全部公用服务器已锁定等待资源
ORA-00105: 未配置网络协议 的调度机制
ORA-00106: 无法在连接到调度程序时启动/关闭数据库
ORA-00107: 无法连接到 ORACLE 监听器进程
ORA-00108: 无法设置调度程序以同步进行连接
ORA-00111: 由于服务器数目限制在 , 所以没有启动所有服务器
ORA-00112: 仅能创建多达 (最多指定) 个调度程序
ORA-00113: 协议名 过长
ORA-00114: 缺少系统参数 SERVICE_NAMES 的值
ORA-00115: 连接被拒绝;调度程序连接表已满
ORA-00116: SERVICE_NAMES 名过长
ORA-00117: 系统参数 SERVICE_NAMES 的值超出范围
ORA-00118: 系统参数 DISPATCHERS 的值超出范围
ORA-00119: 系统参数 的说明无效
ORA-00120: 未启用或安装调度机制
ORA-00121: 在缺少 DISPATCHERS 的情况下指定了 SHARED_SERVERS
ORA-00122: 无法初始化网络配置
ORA-00123: 空闲公用服务器终止
ORA-00124: 在缺少 MAX_SHARED_SERVERS 的情况下指定了 DISPATCHERS
ORA-00125: 连接被拒绝;无效的演示文稿
ORA-00126: 连接被拒绝;无效的重复
ORA-00127: 调度进程 不存在
ORA-00128: 此命令需要调度进程名
ORA-00129: 监听程序地址验证失败 ‘’
ORA-00130: 监听程序地址 ‘’ 无效
ORA-00131: 网络协议不支持注册 ‘’
ORA-00132: 语法错误或无法解析的网络名称 ‘’
ORA-00150: 重复的事务处理 ID
ORA-00151: 无效的事务处理 ID
ORA-00152: 当前会话与请求的会话不匹配
ORA-00153: XA 库中的内部错误
ORA-00154: 事务处理监视器中的协议错误
ORA-00155: 无法在全局事务处理之外执行工作
ORA-00160: 全局事务处理长度 超出了最大值 ()
ORA-00161: 事务处理的分支长度 非法 (允许的最大长度为 )
ORA-00162: 外部 dbid 的长度 超出了最大值 ()
ORA-00163: 内部数据库名长度 超出了最大值 ()
ORA-00164: 在分布式事务处理中不允许独立的事务处理
ORA-00165: 不允许对远程操作进行可移植分布式自治转换
ORA-00200: 无法创建控制文件
ORA-00201: 控制文件版本 与 ORACLE 版本 不兼容
ORA-00202: 控制文件: ‘’
ORA-00203: 使用错误的控制文件
ORA-00204: 读控制文件时出错 (块 ,# 块 )
ORA-00205: 标识控制文件出错,有关详情,请检查警告日志
ORA-00206: 写控制文件时出错 (块 ,# 块 )
ORA-00207: 控制文件不能用于同一数据库
ORA-00208: 控制文件的名称数超出限制
ORA-00209: 控制文件块大小不匹配,有关详情,请检查警告日志
ORA-00210: 无法打开指定的控制文件
ORA-00211: 控制文件与先前的控制文件不匹配
ORA-00212: 块大小 低于要求的最小大小 ( 字节)
ORA-00213: 不能重新使用控制文件;原文件大小为 ,还需
ORA-00214: 控制文件 ‘’ 版本 与文件 ‘’ 版本 不一致
ORA-00215: 必须至少存在一个控制文件
ORA-00216: 无法重新调整从 8.0.2 移植的控制文件大小
ORA-00217: 从 9.0.1 进行移植无法重新调整控制文件的大小
ORA-00218: 控制文件的块大小 与 DB_BLOCK_SIZE () 不匹配
ORA-00219: 要求的控制文件大小 超出了允许的最大值
ORA-00220: 第一个例程未安装控制文件,有关详情,请检查警告日志
ORA-00221: 写入控制文件出错
ORA-00222: 操作将重新使用当前已安装控制文件的名称
ORA-00223: 转换文件无效或版本不正确
ORA-00224: 控制文件重设大小尝试使用非法记录类型 ()
ORA-00225: 控制文件的预期大小 与实际大小 不同
ORA-00226: 备用控制文件打开时不允许进行操作
ORA-00227: 控制文件中检测到损坏的块: (块 ,# 块 )
ORA-00228: 备用控制文件名长度超出了最大长度
ORA-00229: 操作不允许: 已挂起快照控制文件入队
ORA-00230: 操作不允许: 无法使用快照控制文件入队
ORA-00231: 快照控制文件未命名
ORA-00232: 快照控制文件不存在, 已损坏或无法读取
ORA-00233: 控制文件副本已损坏或无法读取
ORA-00234: 标识或打开快照或复制控制文件时出错
ORA-00235: 控制文件固定表因并发更新而不一致
ORA-00236: 快照操作不允许: 挂上的控制文件为备份文件
ORA-00237: 快照操作不允许: 控制文件新近创建
ORA-00238: 操作将重用属于数据库一部分的文件名
ORA-00250: 未启动存档器
ORA-00251: LOG_ARCHIVE_DUPLEX_DEST 不能是与字符串 相同的目的地
ORA-00252: 日志 在线程 上为空,无法存档
ORA-00253: 字符限制在 以内,归档目的字符串 超出此限制
ORA-00254: 存档控制字符串 ‘’ 时出错
ORA-00255: 存档日志 (线程 , 序列 # ) 时出错
ORA-00256: 无法翻译归档目的字符串
ORA-00257: 存档器错误。在释放之前仅限于内部连接
ORA-00258: NOARCHIVELOG 模式下的人工存档必须标识日志
ORA-00259: 日志 (打开线程 ) 为当前日志,无法存档
ORA-00260: 无法找到联机日志序列 (线程 )
ORA-00261: 正在存档或修改日志 (线程 )
ORA-00262: 当前日志 (关闭线程 ) 无法切换
ORA-00263: 线程 没有需要存档的记录
ORA-00264: 不要求恢复
ORA-00265: 要求例程恢复,无法设置 ARCHIVELOG 模式
ORA-00266: 需要存档日志文件名
ORA-00267: 无需存档日志文件名
ORA-00268: 指定的日志文件不存在 ‘’
ORA-00269: 指定的日志文件为线程 的一部分 (非 )
ORA-00270: 创建存档日志 时出错
ORA-00271: 没有需要存档的日志
ORA-00272: 写存档日志 时出错
ORA-00273: 未记录的直接加载数据的介质恢复
ORA-00274: 非法恢复选项
ORA-00275: 已经开始介质恢复
ORA-00276: CHANGE 关键字已指定但未给出更改编号
ORA-00277: UNTIL 恢复标志 的非法选项
ORA-00278: 此恢复不再需要日志文件 ‘’
ORA-00279: 更改 (在 生成) 对于线程 是必需的
ORA-00280: 更改 对于线程 是按序列 # 进行的
ORA-00281: 不能使用调度进程执行介质恢复
ORA-00282: UPI 调用不被支持,请使用 ALTER DATABASE RECOVER
ORA-00283: 恢复会话因错误而取消
ORA-00284: 恢复会话仍在进行
ORA-00285: TIME 未作为字符串常数给出
ORA-00286: 无可用成员,或成员无有效数据
ORA-00287: 未找到指定的更改编号 (在线程 中)
ORA-00288: 要继续恢复,请键入 ALTER DATABASE RECOVER CONTINUE
ORA-00289: 建议:
ORA-00290: 操作系统出现存档错误。请参阅下面的错误
ORA-00291: PARALLEL 选项要求数字值
ORA-00292: 未安装并行恢复功能
ORA-00293: 控制文件与重做日志不同步
ORA-00294: 无效的存档日志格式标识 ‘’
ORA-00295: 数据文件号 无效,必须介于 1 与 之间
ORA-00296: 已超出 RECOVER DATAFILE LIST 的最大文件数 ()
ORA-00297: 必须在 RECOVER DATAFILE START 之前指定 RECOVER DATAFILE LIST
ORA-00298: 丢失或无效的 TIMEOUT 间隔
ORA- 00299: 必须在数据文件 上使用文件级介质恢复
ORA-00300: 指定的重做日志块大小 非法 - 超出限制
ORA-00301: 添加日志文件 ‘’ 时出错 - 无法创建文件
ORA-00302: 日志超出限制
ORA-00303: 无法处理多次中断的重做
ORA-00304: 请求的 INSTANCE_NUMBER 在使用中
ORA-00305: 日志 (线程 ) 不一致;属于另一个数据库
ORA-00306: 此数据库中的例程限制
ORA-00307: 请求的 INSTANCE_NUMBER 超出限制,最大为
ORA-00308: 无法打开存档日志 ‘’
ORA-00309: 日志属于错误的数据库
ORA-00310: 存档日志包含序列 ;要求序列
ORA-00311: 无法从存档日志读取标题
ORA-00312: 联机日志 线程 : ‘’
ORA-00313: 无法打开日志组 (线程 ) 的成员
ORA-00314: 日志 (线程 ),预计序号 与 不匹配
ORA-00315: 日志 (线程 ),标题中的线程 # 错误
ORA-00316: 日志 (线程 ),标题中的类型 不是日志文件
ORA-00317: 标题中的文件类型 不是日志文件
ORA-00318: 日志 (线程 ),预计文件大小 与 不匹配
ORA-00319: 日志 (线程 ) 具有错误的日志重置状态
ORA-00320: 无法从日志 (线程 ) 读取文件标题
ORA-00321: 日志 (线程 ),无法更新日志文件标题
ORA-00322: 日志 (线程 ) 不是当前副本
ORA-00323: 线程 的当前日志不可用而所有其它日志均需要存档
ORA-00324: 日志文件 ‘’ 的翻译名 ‘’ 太长, 字符超出 限制
ORA-00325: 已归档线程 的日志,标题中的线程 # 错误
ORA-00326: 日志在更改 开始,需要更早的更改
ORA-00327: 日志 (线程 ),实际大小 小于需要的
ORA-00328: 归档日志在更改 结束,需要稍后的更改
ORA-00329: 归档日志在更改 开始,需要更改
ORA-00330: 归档日志在更改 结束,需要更改
ORA-00331: 日志版本 与 ORACLE 版本 不兼容
ORA-00332: 归档日志过小 - 可能未完全归档
ORA-00333: 重做日志读取块 计数 出错
ORA-00334: 归档日志: ‘’
ORA-00335: 联机日志 : 没有此编号的日志,日志不存在
ORA-00336: 大小为 的日志文件块数小于最小 块数
ORA-00337: 日志文件 ‘’ 不存在且未指定大小
ORA-00338: 日志 (线程 ) 比控制文件更新
ORA-00339: 归档日志未包含任何重做
ORA-00340: 处理联机日志 (线程 ) 时出现 I/O 错误
ORA-00341: 日志 (线程 ),标题中的日志 # 错误
ORA-00342: 归档日志在上一个 RESETLOGS 之前创建程序包
ORA-00343: 错误过多,已关闭日志成员
ORA-00344: 无法重新创建联机日志 ‘’
ORA-00345: 重做日志写入块 计数 出错
ORA-00346: 日志成员标记为 STALE
ORA-00347: 日志 (线程 ),预计块大小 与 不匹配
ORA-00348: 单一进程重做失败;必须中止例程
ORA-00349: 无法获得 ‘’ 的块大小
ORA-00350: 日志 (线程 ) 中需要归档
ORA-00351: recover-to 时间无效
ORA-00352: 线程 的所有日志均需要归档 - 无法启用
ORA-00353: 日志损坏接近块 更改 时间
ORA-00354: 损坏重做日志块标题
ORA-00355: 更改编号无次序
ORA-00356: 更改说明中的长度不一致
ORA-00357: 日志文件指定了过多成员,最大为
ORA-00358: 指定了过多文件成员,最大为
ORA-00359: 日志文件组 不存在
ORA-00360: 非日志文件成员:
ORA-00361: 无法删除最后一个日志成员 (组 )
ORA-00362: 组成组 中的有效日志文件要求输入成员
ORA-00363: 日志不是归档版本
ORA-00364: 无法将标题写入新日志成员
ORA-00365: 指定日志不是正确的下一个日志
ORA-00366: 日志 (线程 ),文件标题中的校验和错误
ORA-00367: 日志文件标题中的校验和错误
ORA-00368: 重做日志块中的校验和错误
ORA-00369: 线程 的当前日志不可用且其它日志已被清除
ORA-00370: Rcbchange 操作过程中可能出现死锁
ORA-00371: 共享池内存不足
ORA-00372: 此时无法修改文件
ORA-00373: 联机日志版本 与 ORACLE 版本 不兼容
ORA-00374: 参数 db_block_size = 无效; 它必须是 的倍数, 范围为 […]
ORA-00375: 无法获得默认 db_block_size
ORA-00376: 此时无法读取文件
ORA-00377: 文件 的频繁备份导致写操作延迟
ORA-00378: 无法按指定创建缓冲池
ORA-00379: 缓冲池 中无法提供 K 块大小的空闲缓冲区
ORA-00380: 无法指定 db_k_cache_size, 因为 K 是标准块大小
ORA-00381: 无法将新参数和旧参数同时用于缓冲区高速缓存的大小说明
ORA-00382: 不是有效的块大小, 有效范围为 […]
ORA-00383: DEFAULT 高速缓存的块大小 不能减少至零
ORA-00384: 没有足够的内存来增加高速缓存的大小
ORA-00385: cannot enable Very Large Memory with new buffer cache parameters
ORA-00390: 日志 (线程 ) 正被清除,无法成为当前日志
ORA-00391: 所有线程必须同时转换为新的日志格式
ORA-00392: 日志 (线程 ) 正被清除,不允许操作
ORA-00393: 脱机数据文件的恢复需要日志 (线程 )
ORA-00394: 在尝试存档时重新使用联机日志
ORA-00395: ‘克隆’ 数据库的联机日志必须重命名
ORA-00396: 错误 需要退回到单次遍历恢复
ORA-00397: 对于文件 (块 ), 检测到写入丢失情况
ORA-00398: 由于重新配置而中止了线程恢复
ORA-00399: 重做日志中的更改说明已损坏
ORA-00400: 无效的版本值 (对于参数 )
ORA-00401: 此版本不支持参数 的值
ORA-00402: 版本 的数据库更改无法用于版本
ORA-00403: () 不同于其它例程 ()
ORA-00404: 未找到转换文件: ‘’
ORA-00405: 兼容类型”"
ORA-00406: COMPATIBLE 参数需要为 或更大
ORA-00407: 不允许从版本 . 到 . 滚动升级
ORA-00408: 参数 设置为 TRUE
ORA-00409: COMPATIBLE 必须是 或更高值才能使用 AUTO SEGMENT SPACE MANAGEMENT
ORA-00436: 没有 ORACLE软件使用权,请与 Oracle 公司联系获得帮助
ORA-00437: 没有 ORACLE 软件功能使用权,请与 Oracle 公司联系获得帮助
ORA-00438: 未安装 选项
ORA-00439: 未启用特性:
ORA-00443: 背景进程 “” 未启动
ORA-00444: 背景进程 “” 启动时失败
ORA-00445: 背景进程 “” 在 秒之后仍没有启动
ORA-00446: 背景进程意外启动
ORA-00447: 背景进程出现致命错误
ORA-00448: 背景进程正常结束
ORA-00449: 背景进程 ‘’ 因错误 异常终止
ORA-00470: LGWR 进程因错误而终止
ORA-00471: DBWR 进程因错误而终止
ORA-00472: PMON 进程因错误而终止
ORA-00473: ARCH 进程因错误而终止
ORA-00474: SMON 进程因错误而终止
ORA-00475: TRWR 进程因错误而终止
ORA-00476: RECO 进程因错误而终止
ORA-00477: SNP* 进程因错误而终止
ORA-00478: SMON 进程由于 错误终止
ORA-00480: LCK* 进程因错误而终止
ORA-00481: LMON 进程因错误而终止
ORA-00482: LMD* 进程因错误而终止
ORA-00483: 关闭进程过程中异常终止
ORA-00484: LMS* 进程因错误而终止
ORA-00485: DIAG 进程由于 错误终止
ORA-00486: 功能不可用
ORA-00568: 超出中断处理程序的最大数
ORA-00574: osndnt: $CANCEL 失败 (中断)
ORA-00575: osndnt: $QIO 失败 (发送 out-of-band 中断)
ORA-00576: 带内中断协议错误
ORA- 00577: 带外中断协议错误
ORA-00578: 重置协议错误
ORA-00579: osndnt: 服务器收到连接请求格式不正确
ORA-00580: 协议版本不匹配
ORA-00581: osndnt: 无法分配上下文区域
ORA-00582: osndnt: 无法撤消分配上下文区域
ORA-00583: osndnt: T R N L O G 失 败 O R A − 00584 : 无 法 关 闭 连 接 O R A − 00585 : 主 机 名 称 格 式 错 误 O R A − 00586 : o s n d n t : L I B TRNLOG 失败 ORA-00584: 无法关闭连接 ORA-00585: 主机名称格式错误 ORA-00586: osndnt: LIBTRNLOG失败ORA−00584:无法关闭连接ORA−00585:主机名称格式错误ORA−00586:osndnt:LIBASN_WTH_MBX 失败
ORA-00587: 无法连接到远程主机
ORA-00588: 来自主机的信息过短
ORA-00589: 来自主机的信息数据长度错误
ORA-00590: 来自主机的信息类型错误
ORA-00591: 写入的字节数错误
ORA-00592: osndnt: $QIO 失败 (邮箱队列)
ORA-00593: osndnt: $DASSGN 失败 (网络设备)
ORA-00594: osndnt: $DASSGN 失败 (邮箱)
ORA-00595: osndnt: $QIO 失败 (接收)
ORA-00596: osndnt: $QIO 失败 (发送)
ORA-00597: osndnt: $QIO 失败 (邮箱队列)
ORA-00598: osndnt: KaTeX parse error: Expected 'EOF', got '#' at position 5411: …件 时出现 IO 错误 (块 #̲ ) ORA-01115: 从…logmnr_contents 中选择之前必须调用 dbms_logmnr.start_logmnr()
ORA-01307: 当前无活动的 LogMiner 会话
ORA-01308: 未设置初始化参数 utl_file_dir
ORA-01309: 会话无效
ORA-01310: lcr_mine 函数不支持请求的返回类型
ORA-01311: mine_value 函数的调用非法
ORA-01312: 指定的表/列不存在
ORA-01313: LogMiner 字典列类型不同于指定的类型
ORA-01314: 要挖掘的列名字面上应是字符串
ORA-01315: 日志文件在选取过程中已被添加或移去
ORA-01316: 已连接到 Logminer 会话中
ORA-01317: 未连接到 Logminer 会话中
ORA-01318: Logminer 会话未启动
ORA-01319: Logminer 会话属性无效
ORA-01320: Logminer 字典属性无效
ORA-01321: SCN 范围没有完全包含在所列日志文件中
ORA-01322: 这样的表不存在
ORA-01323: 状态无效
ORA-01324: 由于 DB_ID 匹配出错, 无法添加文件
ORA-01325: 要构建日志流, 必须启用“归档日志”模式
ORA-01326: 要构建日志流, 兼容性必须大于等于 8.2
ORA-01327: 无法按构建的要求锁定系统字典 (锁为排他锁)
ORA-01328: 一次只能进行一个构建操作
ORA-01329: 无法截断所需的构建表
ORA-01330: 加载所需的构建表时出现问题
ORA-01331: 运行构建时出现一般错误
ORA-01332: Logminer 字典内部错误
ORA-01333: 无法构建 Logminer 字典
ORA-01334: logminer 字典进程上下文无效或缺失
ORA-01335: 此功能尚未实现
ORA-01336: 无法打开指定的字典文件
ORA-01337: 日志文件的兼容版本不同
ORA-01338: 其他进程已附加到 LogMiner 会话
ORA-01339: 日志文件过旧
ORA-01340: NLS error
ORA-01341: LogMiner 内存不足
ORA-01342: LogMiner 由于无法暂存检查点数据而无法恢复会话
ORA-01343: LogMiner - 遇到崩溃的重做块
ORA-01344: LogMiner 协调器已挂接
ORA-01345: 必须启用补充日志数据以纳入到日志流中
ORA-01346: 从属 LogMiner 会话依赖于存在补充性的记录数据
ORA-01347: 未找到补充日志数据
ORA-01348: LogMiner 测试事件
ORA-01349: LogMiner 跟踪事件
ORA-01350: 必须指定表空间名
ORA-01351: 为 Logminer 字典提供的表空间不存在
ORA-01352: 为 Logminer 溢出提供的表空间不存在
ORA-01353: 正在退出 Logminer 会话
ORA-01370: 指定的重启 SCN 太旧
ORA-01371: 未找到完整的 LogMiner 目录
ORA-01372: 用于指定 LogMiner 操作的进程数不足
ORA-01373: insufficient memory for staging persistent LogMiner session
ORA-01374: log_parallelism greater than 1 not supported in this release
ORA-01400: 无法将 NULL 插入 ()
ORA-01401: 插入的值对于列过大
ORA-01402: 视图 WITH CHECK OPTIDN 违反 where 子句
ORA-01403: 未找到数据
ORA-01404: ALTER COLUMN 将使索引过大
ORA-01405: 读取的列值为 NULL
ORA-01406: 读取的列值被截断
ORA-01407: 无法更新 () 为 NULL
ORA-01408: 此列列表已编制索引
ORA-01409: 不可以使用 NOSORT 选项;行不是按升序排列
ORA-01410: 无效的 ROWID
ORA-01411: 无法在指示器中存储列长度
ORA-01412: 此数据类型不允许零长度
ORA-01413: 压缩十进制数字缓冲区中的非法值
ORA-01414: 尝试对数组赋值时的无效数组长度
ORA-01415: 太多不同的聚组函数
ORA-01416: 两表无法彼此外部连接
ORA-01417: 表可以外部连接到至多一个其它的表
ORA-01418: 指定的索引不存在
ORA-01419: datdts: 非法的格式代码
ORA-01420: datstd: 非法的格式代码
ORA-01421: datrnd/dattrn: 非法的精确度规定
ORA-01422: 实际返回的行数超出请求的行数
ORA-01423: 检查实际读取的多余行时出错
ORA-01424: 换码符之后缺少或非法字符
ORA-01425: 换码符必须是长度为 1 的字符串
ORA-01426: 数字溢出
ORA-01427: 单行子查询返回多于一个行
ORA-01428: 参数’‘超出范围
ORA-01429: 索引组织表: 没有存储溢出行段的数据段
ORA-01430: 表中已经存在要添加的列
ORA-01431: GRANT 命令中的内部不一致
ORA-01432: 要删除的公用同义词不存在
ORA-01433: 要创建的同义词已经定义
ORA-01434: 要删除的隐含同义词不存在
ORA-01435: 用户不存在
ORA-01436: 用户数据中的 CONNECT BY 循环
ORA-01437: 无法连接 CONNECT BY
ORA-01438: 值大于此列指定的允许精确度
ORA-01439: 要更改数据类型,则要修改的列必须为空 (empty)
ORA-01440: 要减小精确度或标度,则要修改的列必须为空 (empty)
ORA-01441: 无法减小列长度, 因为一些值过大
ORA-01442: 要修改为 NOT NULL 的列已经是 NOT NULL
ORA-01443: 内部不一致;结果视图列中的数据类型非法
ORA-01444: 内部不一致;内部数据类型映射为无效外部类型
ORA-01445: 无法从没有键值保存表的连接视图中选择 ROWID
ORA-01446: 无法从含 DISTINCT, GROUP BY 等子句的视图中选择 ROWID
ORA-01447: ALTER TABLE 语句无法用于聚簇列
ORA-01448: 在更改要求的类型之前必须删除索引
ORA-01449: 列包含 NULL 值;无法将其改变为 NOT NULL
ORA-01450: 超出最大的关键字长度 ()
ORA-01451: 要修改为 NULL 的列无法修改为 NULL
ORA-01452: 无法 CREATE UNIQUE INDEX;找到重复的关键字
ORA-01453: SET TRANSACTION 必须是事务处理的第一个语句
ORA-01454: 无法将列转换为数值数据类型
ORA-01455: 转换列溢出整数数据类型
ORA-01456: 不可以在 READ ONLY 事务处理中执行插入/删除/更新操作
ORA-01457: 转换列溢出十进制数据类型
ORA-01458: 内部变量字符串长度非法
ORA-01459: 变量字符串长度非法
ORA-01460: 转换请求无法实现或不合理
ORA-01461: 仅可以为插入 LONG 列的 LONG 值赋值
ORA-01462: 不能插入超出 4000 个字符的文字型字符串
ORA-01463: 不能使用当前约束条件修改列数据类型
ORA-01464: 表或视图的循环授权(授予原始授权者)
ORA-01465: 无效的十六进制数字
ORA-01466: 无法读数据 - 表定义已更改
ORA-01467: 分类 (sort) 关键字过长
ORA-01468: 一个谓词只能引用一个外部连接表
ORA-01469: PRIOR 后面只能跟列名
ORA-01470: In-list 迭代不支持混合运算符
ORA-01471: 无法创建与对象同名的同义词
ORA-01472: 无法将 CONNECT BY 用于 DISTINCT,GROUP BY 等的视图
ORA-01473: CONNECT BY 子句中不能具有子查询
ORA-01474: START WITH 或 PRIOR 不能没有 CONNECT BY
ORA- 01475: 必须对游标重新进行语法分析以更改赋值变量的数据类型
ORA-01476: 除数为 0
ORA-01477: 用户数据区域描述符过大
ORA-01478: 数组赋值不可以包括任何 LONG 列
ORA-01479: 缓冲区中的最后一个字符不是 Null
ORA-01480: STR 赋值变量缺少空后缀
ORA-01481: 无效的数字格式模型
ORA-01482: 不受支持的字符集
ORA-01483: DATE 或 NUMBER 赋值变量的长度无效
ORA-01484: 数组仅可以与 PL/SQL 语句关联
ORA-01485: 编译赋值长度不同于执行赋值长度
ORA-01486: 数组元素的大小过大
ORA-01487: 给定缓冲区的压缩十进制数字过大
ORA-01488: 输入数据中的无效半字节或字节
ORA-01489: 字符串连接的结果过长
ORA-01490: 无效的 ANALYZE 命令
ORA-01491: CASCADE 选项无效
ORA-01492: LIST 选项无效
ORA-01493: 指定的 SAMPLE 大小无效
ORA-01494: 指定的 SIZE 无效
ORA-01495: 未找到指定的链接行表
ORA-01496: 指定的链接行表不正确
ORA-01497: 非法的 ANALYZE CLUSTER 选项
ORA-01498: 块检查失败 - 请参阅跟踪文件
ORA-01499: 表/索引交叉引用失败 - 请参阅跟踪文件
ORA-01500: 无法获得日期/时间
ORA-01501: CREATE DATABASE 失败
ORA-01502: 索引’.‘或这类索引的分区处于不可用状态
ORA-01503: CREATE CONTROLFILE 失败
ORA-01504: 数据库名’‘与参数 db_name ‘‘不匹配
ORA- 01505: 添加日志文件时出错
ORA-01506: 缺少或非法数据库名
ORA-01507: 未安装数据库
ORA-01508: 无法创建数据库;文件’‘的行出错
ORA-01509: 指定的名称’‘与实际名称’‘不匹配
ORA-01510: 删除日志文件时出错
ORA-01511: 重命名日志/数据文件时出错
ORA-01512: 重命名日志文件时出错 - 未找到新文件
ORA-01513: 操作系统返回无效的当前时间
ORA-01514: 日志说明中出现错误: 没有此类日志
ORA-01515: 删除日志组时出错: 没有此类日志
ORA-01516: 不存在的日志文件, 数据文件或临时文件 ‘’
ORA-01517: 日志成员: ‘’
ORA-01518: CREATE DATABASE 必须指定多于一个日志文件
ORA-01519: 在处理文件’‘的邻近行时出错
ORA-01520: 要添加的数据文件数 () 超出限制
ORA-01521: 添加数据文件时出错
ORA-01522: 要重命名的文件’‘不存在
ORA-01523: 无法将数据文件重命名为’’ - 文件已是数据库的一部分
ORA-01524: 无法将数据文件创建为’’ - 文件已是数据库的一部分
ORA-01525: 重命名数据文件时出错
ORA-01526: 打开文件’‘时出错
ORA-01527: 读文件出错
ORA-01528: 处理 SQL 语句时出现 EOF
ORA-01529: 关闭文件’‘时出错
ORA-01530: 例程已安装数据库
ORA-01531: 例程已打开数据库
ORA-01532: 无法创建数据库;例程在他处启动
ORA-01533: 无法重命名文件’’;文件不属于表空间
ORA-01534: 回退段’‘不存在
ORA-01535: 回退段’‘已经存在
ORA-01536: 超出表空间’‘的空间限量
ORA-01537: 无法添加数据文件’’ - 文件已是数据库的一部分
ORA-01538: 无法获得任何回退段
ORA-01539: 表空间’‘未联机
ORA-01540: 表空间’‘未脱机
ORA-01541: 系统表空间无法脱机;如有必要请关闭
ORA-01542: 表空间’‘脱机,无法在其中分配空间
ORA-01543: 表空间 ‘’ 已经存在
ORA-01544: 无法删除系统回退段
ORA-01545: 指定的回退段’‘不可用
ORA-01546: 表空间包含活动回退段’’
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01548: 已找到活动回退段’’,终止删除表空间
ORA-01549: 表空间非空,请使用 INCLUDING CONTENTS 选项
ORA-01550: 无法删除系统表空间
ORA-01551: 扩展回退段,释放用的块
ORA-01552: 非系统表空间’‘无法使用系统回退段
ORA-01553: MAXEXTENTS 不得小于当前分配的区
ORA-01554: 超出事务处理表的事务处理空间
ORA-01555: 快照过旧: 回退段号 在名称为 “” 过小
ORA-01556: 回退段的 MINEXTENTS 必须大于 1
ORA-01557: 回退段的区必须至少为块
ORA-01558: 超出回退段中的事务处理标识(号)
ORA-01559: 回退段的 MAXEXTENTS 值必须大于 1
ORA-01560: LIKE 样式包含的字符不完整或非法
ORA-01561: 无法删除指定表空间中的所有对象
ORA-01562: 扩展回退段号失败
ORA-01563: 回退段是 PUBLIC,需要使用 PUBLIC 关键字
ORA-01564: 回退段不是 PUBLIC
ORA-01565: 标识文件’‘时出错
ORA-01566: 文件在 DROP LOGFILE 中被指定了多次
ORA-01567: 删除日志时将在线索中保留少于两个日志文件
ORA-01568: 无法在 PUBLIC 设置空间限量
ORA-01569: 对于系统字典表来说,数据文件过小
ORA-01570: MINEXTENTS 不得大于当前分配的区
ORA-01571: 重做版本与 ORACLE 版本不兼容
ORA-01572: 回退段 ‘’ 无法联机, 区已超出
ORA-01573: 正在关闭例程,不允许继续更改
ORA-01574: 超出并发事务处理的最大数
ORA-01575: 等待空间管理资源超时
ORA-01576: 例程锁定协议版本与 ORACLE 版本不兼容
ORA-01577: 无法添加日志文件’’ - 文件已是数据库的一部分
ORA-01578: ORACLE 数据块损坏(文件号,块号)
ORA-01579: 恢复过程中出现写错误
ORA-01580: 创建控制备份文件时出错
ORA-01581: 尝试使用已分配的回退段 () 新区 ()
ORA-01582: 无法打开要备份的控制文件
ORA-01583: 无法获得要备份的控制文件的块大小
ORA-01584: 无法获得要备份的控制文件的文件大小
ORA-01585: 标识备份文件时出错
ORA-01586: 无法打开要备份的目标文件
ORA-01587: 复制控制文件的备份文件时出错
ORA-01588: 要打开数据库则必须使用 RESETLOGS 选项
ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项
ORA-01590: 段可用列表数 () 超出最大数
ORA-01591: 锁定已被有问题的分配事务处理挂起
ORA-01592: 将第 7 版回退段 () 转换为 Oracle 8 版格式时出错
ORA-01593: 回退段最佳大小 ( blks) 小于计算的初始大小 ( blks)
ORA-01594: 尝试放回已释放的回退段 () 区 ()
ORA-01595: 释放区 () 回退段 () 时出错
ORA-01596: 无法在参数中指定系统
ORA-01597: 无法改变联机或脱机系统回退段
ORA-01598: 回退段’‘未联机
ORA-01599: 无法获得回退段 (), 高速缓存空间已满
ORA-01600: 至多只有一个"“在子句”"()中
ORA-01601: 子句""()中的存储桶大小非法
ORA-01603: 子句""()中的分组大小非法
ORA-01604: 子句""()中的编号范围非法
ORA-01605: 子句""()中缺少编号
ORA-01606: gc_files_to_locks 不同于另一已安装例程的参数
ORA-01608: 无法将回退段’‘联机,其状态为 ()
ORA-01609: 日志是线程的当前日志 - 无法删除成员
ORA-01610: 使用 BACKUP CONTROLFILE 选项的恢复必须已完成
ORA-01611: 线程编号无效 - 必须介于 1 和之间
ORA-01612: 线程已经启用
ORA-01613: 线程只有日志 - 要求至少启用 2 个日志
ORA-01614: 线程正忙 - 无法启用
ORA-01615: 线程已安装 - 无法禁用
ORA-01616: 线程已打开 - 无法禁用
ORA-01617: 无法安装: 不是有效的线程编号
ORA-01618: 线程未启用 - 无法安装
ORA-01619: 线程已由另一例程安装
ORA-01620: 没有可用于安装的公用线程
ORA-01621: 数据库打开时无法重命名当前日志的成员
ORA-01622: 必须指定线程编号 - 没有特定默认值
ORA-01623: 日志是线程的当前日志 - 无法删除
ORA-01624: 线程的紧急恢复需要日志
ORA-01625: 回退段’‘不属于此例程
ORA-01626: 回退段号’‘无法处理更多事务处理
ORA-01627: 回退段号’‘未联机
ORA-01628: 已达到 max # extents ()(回退段)
ORA-01629: 已达到 max # extents (),此时正在保存表空间的撤消
ORA-01630: 表空间中的 temp 段达到 max # extents()
ORA-01631: 表.达到 max # extents ()
ORA-01632: 索引.达到 max # extents ()
ORA-01633: 此操作需要 Real Application Clusters 选件
ORA- 01634: 回退段号’‘即将脱机
ORA-01635: 指定的回退段编号 ‘’ 不可用
ORA-01636: 回退段’‘已联机
ORA-01637: 回退段’‘正被另一例程 (#) 使用
ORA-01638: 参数 不允许 ORACLE 版本 装载群集数据库
ORA-01640: 无法将活动事务处理的表空间设置为只读
ORA-01641: 表空间’‘未联机- 无法添加数据文件
ORA-01642: 只读表空间’‘无需开始备份
ORA-01643: 系统表空间无法设置为只读
ORA-01644: 表空间’‘已经是只读
ORA-01645: 上次尝试设置读写已完成一半
ORA-01646: 表空间’‘不是只读 - 无法设置为读写
ORA-01647: 表空间’‘是只读,无法在其中分配空间
ORA-01648: 日志是禁用线程的当前日志
ORA-01649: 不允许进行备份控制文件操作
ORA-01650: 回退段无法通过(在表空间中)扩展
ORA-01651: 无法通过(在表空间中)扩展保存撤消段
ORA-01652: 无法通过(在表空间中)扩展 temp 段
ORA-01653: 表.无法通过(在表空间中)扩展
ORA-01654: 索引.无法通过(在表空间中)扩展
ORA-01655: 群集 . 无法通过 (在表空间 中) 扩展
ORA-01656: 最大区数 () 已在群集 . 中达到
ORA-01657: 无效的 SHRINK 选项值
ORA-01658: 无法为表空间中的段创建 INITIAL 区
ORA-01659: 无法分配超出的 MINEXTENTS(在表空间中)
ORA-01660: 表空间’‘已是永久性
ORA-01661: 表空间’‘已是临时性
ORA-01662: 表空间’‘非空且无法设置为暂时性
ORA-01663: 表空间’‘的内容不断变动
ORA-01664: 扩展排序段的事务处理已终止
ORA-01665: 控制文件不是一个备用控制文件
ORA-01666: 控制文件用于备用数据库
ORA-01667: 无法添加任何其它表空间: 超出限制
ORA-01668: 对于数据文件的脱机,备用数据库要求使用 DROP 选项
ORA-01669: 备用数据库控制文件不一致
ORA-01670: 备用数据库恢复需要新数据文件
ORA-01671: 控制文件是备份文件,无法设置备用控制文件
ORA-01672: 控制文件可能缺少文件或具有额外文件
ORA-01673: 未标识数据文件
ORA-01674: 数据文件是一个旧的原型而非当前文件
ORA-01675: max_commit_propagation_delay 与其它例程不一致
ORA-01676: ‘‘的备用文件名转换超出的最大长度
ORA-01677: 备用文件名转换参数不同于其它例程
ORA-01678: 参数 必须是一对样式字符串和取代字符串
ORA-01679: 数据库必须以 EXCLUSIVE 安装且未打开以激活
ORA-01680: 无法通过(在表空间中)扩展 LOB 段
ORA-01681: max # extents () 已在表空间中的 LOB 段达到
ORA-01682: 只读 DB 无法在表空间中分配临时空间
ORA-01683: 索引.分区无法通过(在表空间中)扩展
ORA-01684: max # extents () 已在表.分区中达到
ORA-01685: max # extents () 已在索引.分区中达到
ORA-01686: max # files () 对于表空间已达到
ORA-01687: 表空间’‘的指定记录属性与现有属性相同
ORA-01688: 表.分区无法通过(在表空间中)扩展
ORA-01689: 子句""()中出现语法错误
ORA-01690: 排序区太小
ORA-01691: Lob 段.无法通过(在表空间中)扩展
ORA-01692: Lob 段.分区无法通过(在表空间中)扩展
ORA-01693: max # extents () 已在 lob 段.中达到
ORA-01694: max # extents () 已在 lob 段.分区中达到
ORA-01695: 将回退段转换为版本 8.0.2 时出错
ORA-01696: 控制文件不是 ‘克隆’ 控制文件
ORA-01697: 控制文件用于 ‘克隆’ 数据库
ORA-01698: ‘克隆’ 数据库仅可以具有 SYSTEM 联机回退段
ORA-01699: 正在导入表空间’‘以用于时间点恢复
ORA-01700: 列表中的用户名重复
ORA-01701: 此处不允许有群集
ORA-01702: 此处不允许有视图
ORA-01703: 缺少 SYNONYM 关键字
ORA-01704: 文字字符串过长
ORA-01705: 无法在关联列中指定外部连接
ORA-01706: 用户函数的结果值过大
ORA-01707: 缺少 LIST 关键字
ORA-01708: 需要 ACCESS 或 SESSION
ORA-01709: 程序不存在
ORA-01710: 缺少 OF 关键字
ORA-01711: 列出的权限重复
ORA-01712: 您不能授予不具有的权限
ORA-01713: 该权限的 GRANT OPTION 不存在
ORA-01714: 执行用户函数时出错
ORA-01715: UNIQUE 不可以与簇索引一起使用
ORA-01716: NOSORT 不可以与簇索引一起使用
ORA-01717: seccta: 访问已过时的模式标记无效
ORA-01718: NOAUDIT 不允许 BY ACCESS | SESSION 子句
ORA-01719: OR 或 IN 操作数中不允许外部连接运算符 (+)
ORA-01720: 授权选项对于’.‘不存在
ORA-01721: USERENV(COMMITSCN) 在事务处理中调用了多次
ORA-01722: 无效数字
ORA-01723: 不允许长度为 0 的列
ORA-01724: 浮点(数)精确度超出范围(1 到 126)
ORA-01725: 此处不允许 USERENV(‘COMMITSCN’)
ORA-01726: 此处不允许有表
ORA-01727: 数字精度说明符超出范围(1 到 38)
ORA-01728: 数字标度说明符超出范围(-84 到 127)
ORA-01729: 需要数据库链接名
ORA-01730: 指定的列名数无效
ORA-01731: 出现循环的视图定义
ORA-01732: 此视图的数据操纵操作非法
ORA-01733: 此处不允许虚拟列
ORA-01734: 非法的参数 - EXTENT MIN 高于 EXTENT MAX
ORA-01735: 非法的 ALTER TABLE 选项
ORA-01736: 需要 [NOT] SUCCESSFUL
ORA-01737: 有效模式: [ROW] SHARE, [[SHARE] ROW] EXCLUSIVE, SHARE UPDATE
ORA-01738: 缺少 IN 关键字
ORA-01739: 缺少 MODE 关键字
ORA-01740: 标识中缺少双引号
ORA-01741: 非法的零长度标识
ORA-01742: 备注错误终止
ORA-01743: 仅能编制纯函数的索引
ORA-01744: 不合理的 INTO
ORA-01745: 无效的主机/赋值变量名
ORA-01746: 此处不允许指示符变量
ORA-01747: 无效的用户.表.列,表.列,或列规格
ORA-01748: 此处只允许简单的列名
ORA-01749: 用户不可以自/至自己 GRANT/REVOKE 权限
ORA-01750: UPDATE/REFERENCES 仅可以从整个表而不能按列 REVOKE
ORA-01751: 无效的转储撤消选项
ORA-01752: 不能从没有一个键值保存表的视图中删除
ORA-01753: 列定义与聚簇列定义不兼容
ORA-01754: 表只能包含一个 LONG 类型的列
ORA-01755: 必须指定区编号或块编号
ORA-01756: 括号内的字符串没有正确结束
ORA-01757: 必须指定对象编号
ORA-01758: 要添加法定 (NOT NULL) 列,则表必须为空
ORA-01759: 未正确定义用户函数
ORA-01760: 函数的参数非法
ORA-01761: DML 操作与连结中的唯一表不对应
ORA-01762: vopdrv: FROM 中没有视图查询块
ORA-01763: 更新或删除涉及到外部连结表
ORA-01764: 连结的新更新值不能保证为唯一
ORA-01765: 不允许指定表的所有者名
ORA-01766: 此上下文中不允许有字典表
ORA-01767: UPDATE …SET 表达式必须是子查询
ORA-01768: 数字字符串过长
ORA-01769: 重复的 CLUSTER 选项说明
ORA-01770: CREATE CLUSTER 命令中不允许有 CLUSTER 选项
ORA-01771: 选项对聚簇表非法
ORA-01772: 必须指定 LEVEL 的值
ORA-01773: 此 CERATE TABLE 中没有指定列的数据类型
ORA-01774: 转储撤消选项指定了多次
ORA-01775: 同义词的循环嵌套链
ORA-01776: 无法通过连接视图修改多个基表
ORA-01777: 此系统中不允许 WITH GRANT OPTION
ORA-01778: 超出最大子查询的嵌套层
ORA-01779: 无法修改与非键值保存表对应的列
ORA-01780: 要求文字字符串
ORA-01781: UNRECOVERABLE 不能指定没有 AS SELECT
ORA-01782: 不能为群集或聚簇表指定 UNRECOVERABLE
ORA-01783: 只可以指定 RECOVERABLE 或 UNRECOVERABLE 子句
ORA-01784: 不能指定 RECOVERABLE 具有禁用的数据库介质恢复
ORA-01785: ORDER BY 项必须是 SELECT-list 表达式的数目
ORA- 01786: 此查询表达式不允许 FOR UPDATE
ORA-01787: 每个查询块只允许有一个子句
ORA-01788: 此查询块中要求 CONNECT BY 子句
ORA-01789: 查询块具有不正确的结果列数
ORA-01790: 表达式必须具有与对应表达式相同的数据类型
ORA-01791: 不是 SELECTed 表达式
ORA-01792: 表或视图中的最大列数为 1000
ORA-01793: 索引列的最大数为 32
ORA-01794: 群集列的最大数目为 32
ORA-01795: 列表中的最大表达式数为 1000
ORA-01796: 此运算符不能与列表一起使用
ORA-01797: 此运算符后面必须跟 ANY 或 ALL
ORA-01798: 缺少 EXCEPTION 关键字
ORA-01799: 列不可以外部连接到子查询
ORA-01800: 日期格式中的文字过长以致无法处理
ORA-01801: 日期格式对于内部缓冲区过长
ORA-01802: Julian 日期超出范围
ORA-01803: 无法获得日期/时间
ORA-01804: 时区信息无法初始化
ORA-01810: 格式代码出现两次
ORA-01811: Julian 日期导致年度中的日无法使用
ORA-01812: 只可以指定一次年度
ORA-01813: 只可以指定一次小时
ORA-01814: AM/PM 因使用 A.M./P.M. 而发生冲突
ORA-01815: BC/AD 因使用 B.C./A.D. 而发生冲突
ORA-01816: 只可以指定一次月份
ORA-01817: 只可以指定一次周中的日
ORA-01818: ‘HH24’ 导致上下午指示符无法使用
ORA-01819: 带符号的年度导致 BC/AD 无法使用
ORA-01820: 格式代码无法以日期输入格式显示
ORA-01821: 日期格式无法识别
ORA-01822: 此日历的纪元格式代码无效
ORA-01830: 日期格式图片在转换整个输入字符串之前结束
ORA-01831: 年度与 Julian 日期发生冲突
ORA-01832: 年度中的日与 Julian 日期发生冲突
ORA-01833: 月份与 Julian 日期发生冲突
ORA-01834: 月份中的日与 Julian 日期发生冲突
ORA-01835: 周中的日与 Julian 日期发生冲突
ORA-01836: 小时与日中的秒发生冲突
ORA-01837: 小时中的分与日中的秒发生冲突
ORA-01838: 分中的秒与日中的秒发生冲突
ORA-01839: 指定月份的日期无效
ORA-01840: 输入值对于日期格式不够长
ORA-01841: (全)年度值必须介于 -4713 和 +9999 之间,且不为 0
ORA-01842: 季度值必须介于 1 和 4 之间
ORA-01843: 无效的月份
ORA-01844: 年度中的周值必须介于 1 和 52 之间
ORA-01845: 月份中的周值必须介于 1 和 5 之间
ORA-01846: 周中的日无效
ORA-01847: 月份中日的值必须介于 1 和当月最后一日之间
ORA-01848: 年度中的日值必须介于 1 和 365 之间(闰年为 366)
ORA-01849: 小时值必须介于 1 和 12 之间
ORA-01850: 小时值必须介于 0 和 23 之间
ORA-01851: 分钟值必须介于 0 和 59 之间
ORA-01852: 秒值必须介于 0 和 59 之间
ORA-01853: 日中的秒值必须介于 0 和 86399 之间
ORA-01854: julian 日期必须介于 1 和 5373484 之间
ORA-01855: 要求 AM/A.M. 或 PM/P.M.
ORA-01856: 要求 BC/B.C. 或 AD/A.D.
ORA-01857: 无效的时区
ORA-01858: 在要求输入数字处找到非数字字符
ORA-01859: 在要求输入字母处找到非字母字符
ORA-01860: 年度中的周值必须介于 1 和 53 之间
ORA-01861: 文字与格式字符串不匹配
ORA-01862: 数字值与格式项目的长度不匹配
ORA-01863: 年度不支持当前日历
ORA-01864: 日期超出当前日历的范围
ORA-01865: 无效的纪元
ORA-01866: 日期时间类无效
ORA-01867: 间隔无效
ORA-01868: 间隔的前导精度太小
ORA-01869: 保留以供将来使用
ORA-01870: 间隔或日期时间不是相互可比较的
ORA-01871: 秒数必须少于 60
ORA-01872: 保留以供将来使用
ORA-01873: 间隔的前导精度太小
ORA-01874: 时区小时必须在 -12 和 13 之间
ORA-01875: 时区分钟必须在 -59 和 59 之间
ORA-01876: 年份必须不少于 -4713
ORA-01877: 内部缓冲区的字符串太长
ORA-01878: 在日期时间或间隔中没有找到指定的字段
ORA-01879: hh25 字段必须在 0 和 24 之间
ORA-01880: 零点几秒必须在 0 和 999999999 之间
ORA-01881: 时区区域 ID %d 无效
ORA-01882: 未找到时区区域
ORA-01883: 在区域转换过程中禁用了重叠
ORA-01890: 检测到 NLS 错误
ORA-01891: 日期时间/间隔内部错误
ORA-01898: 精确度说明符过多
ORA-01899: 错误的精度说明符
ORA-01900: 需要 LOGFILE 关键字
ORA-01901: 需要 ROLLBACK 关键字
ORA-01902: 需要 SEGMENT 关键字
ORA-01903: 需要 EVENTS 关键字
ORA-01904: 需要 DATAFILE 关键字
ORA-01905: 需要 STORAGE 关键字
ORA-01906: 需要 BACKUP 关键字
ORA-01907: 需要 TABLESPACE 关键字
ORA-01908: 需要 EXISTS 关键字
ORA-01909: 需要 REUSE 关键字
ORA-01910: 需要 TABLES 关键字
ORA-01911: 需要 CONTENTS 关键字
ORA-01912: 需要 ROW 关键字
ORA-01913: 需要 EXCLUSIVE 关键字
ORA-01914: 审计选项对于序号无效
ORA-01915: 审计选项对于视图无效
ORA-01917: 用户或角色 ‘’ 不存在
ORA-01918: 用户’‘不存在
ORA-01919: 角色’‘不存在
ORA-01920: 用户名’‘与另外一个用户名或角色名发生冲突
ORA-01921: 角色名’‘与另一个用户名或角色名发生冲突
ORA-01922: 必须指定 CASCADE 以删除’’
ORA-01923: CASCADE 已中止,对象被另一用户锁定
ORA-01924: 角色’‘未被授权或不存在
ORA-01925: 超出已启用角色的最大数
ORA-01926: 无法将 WITH GRANT OPTION GRANT 角色
ORA-01927: 无法 REVOKE 您未授权的权限
ORA-01928: 未对 GRANT 选项授权所有权限
ORA-01929: 没有要 GRANT 的权限
ORA-01930: 不支持审计对象
ORA-01931: 无法将授予角色
ORA-01932: ADMIN 选项未授权给角色’’
ORA-01933: 无法使用角色权限来创建存储对象
ORA-01934: 检测到循环的角色授权
ORA-01935: 缺少用户或角色名
ORA-01936: 不能在创建用户或角色时指定所有者
ORA-01937: 缺少或无效的角色名
ORA-01938: 必须为 CREATE USER 指定 IDENTIFIED BY
ORA-01939: 只可以指定 ADMIN OPTION
ORA-01940: 无法删除当前已连接的用户
ORA-01941: 需要 SEQUENCE 关键字
ORA-01942: 无法同时指定 IDENTIFIED BY 和 EXTERNALLY
ORA-01943: 已经指定 IDENTIFIED BY
ORA- 01944: 已经指定 IDENTIFIED EXTERNALLY
ORA-01945: 已经指定 DEFAULT ROLE[S]
ORA-01946: 已经指定 DEFAULT TABLESPACE
ORA-01947: 已经指定 TEMPORARY TABLESPACE
ORA-01948: 标识符的名称长度 () 超过最大长度 ()
ORA-01949: 需要 ROLE 关键字
ORA-01950: 表空间’‘中无权限
ORA-01951: ROLE ‘‘未授予’’
ORA-01952: 系统权限未授予’’
ORA-01953: 命令不再有效,请参阅 ALTER USER
ORA-01954: DEFAULT ROLE 子句对 CREATE USER 无效
ORA-01955: DEFAULT ROLE ‘‘未授予用户
ORA-01956: 使用 OS_ROLES 时命令无效
ORA-01957: 需要的 MIN 或 MAX 关键字未找到
ORA-01958: 必须为 LAYER 选项提供整数
ORA-01959: 必须为 OPCODE 选项提供整数
ORA-01960: 无效的转储日志文件选项
ORA-01961: 无效的转储选项
ORA-01962: 必须指定文件号或日志序号
ORA-01963: 必须指定块编号
ORA-01964: 必须为 TIME 选项指定时间
ORA-01965: 必须指定 PERIOD
ORA-01967: 无效的 CREATE CONTROLFILE 选项
ORA-01968: 仅指定 RESETLOGS 或 NORESETLOGS 一次
ORA-01969: 您必须指定 RESETLOGS 或 NORESETLOGS
ORA-01970: 您必须为 CREATE CONTROLFILE 指定数据库名
ORA-01971: 非法的 ALTER TRACING 选项
ORA-01972: 必须为 ALTER TRACING ENABLE 或 DISABLE 指定字符串
ORA-01973: 缺少更改编号
ORA-01974: 非法的存档选项
ORA-01975: 更改编号中的字符非法
ORA-01976: 缺少更改编号
ORA-01977: 缺少线程编号
ORA-01978: 缺少序号
ORA-01979: 角色’‘缺少口令或口令无效
ORA-01980: OS ROLE 初始化过程中出错
ORA-01981: 必须指定 CASCADE CONSTRAINTS 以执行此撤消
ORA- 01982: 审计选项对于视图无效
ORA-01983: 无效的 DEFAULT 审计选项
ORA-01984: 无效的程序/程序包/函数审计选项
ORA-01985: 因超出 LICENSE_MAX_USERS 参数而无法创建用户
ORA-01986: 无效的 OPTIMIZER_GOAL 选项
ORA-01987: 客户 OS 用户名过长
ORA-01988: 不允许远程 os 登录
ORA-01989: 操作系统未授权角色’’
ORA-01990: 打开口令文件’‘时出错
ORA-01991: 无效的口令文件’’
ORA-01992: 关闭口令文件’‘时出错
ORA-01993: 写口令文件’‘时出错
ORA-01994: GRANT 失败: 无法添加用户至公用口令文件
ORA-01995: 读口令文件’‘时出错
ORA-01996: GRANT 失败: 口令文件’‘已满
ORA-01997: GRANT 失败: 用户’‘由外部标识
ORA-01998: REVOKE 失败: 用户 SYS 始终具有 SYSOPER 和 SYSDBA
ORA-01999: 口令文件模式已由’‘更改为’’
ORA-02000: 缺少关键字
ORA-02001: 用户 SYS 不允许创建可用列表组的索引
ORA-02002: 写入审记线索时出错
ORA-02003: 无效的 USERENV 参数
ORA-02004: 违反安全性
ORA-02005: 隐含 (-1) 长度对数据类型的定义和赋值无效
ORA-02006: 无效的压缩十进制格式字符串
ORA-02007: 不能使用含 REBUILD 的 ALLOCATE 或 DEALLOCATE 选项
ORA-02008: 已指定非数字列的非零标度
ORA-02009: 指定的文件大小不得为 0
ORA-02010: 缺少主机连接字符串
ORA-02011: 重复的数据库链接名
ORA-02012: 缺少 USING 关键字
ORA-02013: 缺少 CONNECT 关键字
ORA-02014: 不能从具有 DISTINCT, GROUP BY 等的视图选择 UPDATE FOR
ORA-02015: 不能从远程表选择 FOR UPDATE
ORA-02016: 不能在远程数据库中使用 START WITH 子查询
ORA-02017: 要求整数值
ORA-02018: 同名的数据库链接具有开放连接
ORA-02019: 未找到远程数据库的连接说明
ORA-02020: 过多的数据库链接在使用中
ORA-02021: 不允许对远程数据库进行 DDL 操作
ORA-02022: 远程语句的远程对象具有未优化的视图
ORA-02023: 远程数据库无法对 START WITH 或 CONNECT BY 谓词求值
ORA-02024: 未找到数据库链接
ORA-02025: SQL 语句的所有表均必须在远程数据库中
ORA-02026: 缺少 LINK 关键字
ORA-02027: 不支持 LONG 列的多行 UPDATE
ORA-02028: 服务器不支持行数的准确读取
ORA-02029: 缺少 FLLE 关键字
ORA-02030: 只能从固定的表/视图查询
ORA-02031: 没有 ROWID 适用于固定表或外部组织的表
ORA-02032: 聚簇表无法在簇索引建立之前使用
ORA-02033: 此簇的簇索引已经存在
ORA-02034: 不允许加速赋值
ORA-02035: 非法的成组操作组合
ORA-02036: 自动游标打开的变量描述过多
ORA-02037: 未初始化的加速赋值存储
ORA-02038: 不允许对数组类型定义
ORA-02039: 不允许对数组类型赋值
ORA-02040: 远程数据库不支持两段式提交
ORA-02041: 客户数据库未开始一个事务处理
ORA-02042: 分布式事务处理过多
ORA-02043: 必须在执行之前结束当前事务处理
ORA-02044: 事务处理管理器登录被拒绝: 事务处理正在进行
ORA-02045: 全局事务处理中的本地会话过多
ORA-02046: 分布式事务处理已经开始
ORA-02047: 无法连接运行中的分布式事务处理
ORA-02048: 尝试不登录而开始分布式事务处理
ORA-02049: 超时: 分布式事务处理等待锁定
ORA-02050: 事务处理已重算,某些远程 DBs 可能有问题
ORA-02051: 同一事务处理中的另一会话失败
ORA-02052: 远程事务处理在失败
ORA-02053: 事务处理已提交,某些远程 DBs 可能有问题
ORA-02054: 事务处理有问题
ORA-02055: 分布式更新操作失效;要求回退
ORA-02056: 2PC: : 无效的两段命令编号(源于)
ORA-02057: 2PC: : 无效的两段恢复状态编号(源于)
ORA-02058: 未找到 ID的准备事务处理
ORA-02059: ORA-2PC-CRASH-TEST- 在提交备注中
ORA-02060: 选择指定了分布表连接的更新
ORA-02061: 锁定表指定了分布式表的列表
ORA-02062: 分布式恢复收到 DBID ,预计为
ORA-02063: 紧接着(源于)
ORA-02064: 不支持分布式操作
ORA-02065: 非法的 ALTER SYSTEM 选项
ORA-02066: DISPATCHERS 文本缺失或无效
ORA-02067: 要求事务处理或保存点回退
ORA-02068: 以下严重错误源于
ORA-02069: 此操作的 global_names 参数必须设置为 TRUE
ORA-02070: 数据库不支持此上下文中的
ORA-02071: 初始化远程数据库的功能时出错
ORA-02072: 分布式数据库网络协议匹配错误
ORA-02073: 远程更新中不支持序号
ORA-02074: 无法在分布式事务处理中
ORA-02075: 另一例程已更改事务处理的状态
ORA-02076: 序列与更新表或 long 列位于不同的地方
ORA-02077: 选择的 long 列必须来自于同一地方的表
ORA-02078: ALTER SYSTEM FIXED_DATE 的设置无效
ORA-02079: 没有新的会话可与提交的分布式事务处理连接
ORA-02080: 数据库链接正在使用中
ORA-02081: 数据库链接未打开
ORA-02082: 回送数据库链接必须具有连结限定词
ORA-02083: 数据库名称含有非法字符 ‘’
ORA-02084: 数据库名不全
ORA-02085: 数据库链接与相连结
ORA-02086: 数据库 (链路) 名过长
ORA-02087: 对象被同一事务处理的另一进程锁定
ORA-02088: 未安装分布式数据库选项
ORA-02089: COMMIT 不允许在附属会话中
ORA-02090: 网络错误: 试图 callback+passthru
ORA-02091: 事务处理已重算
ORA-02092: 超出分布式事务处理的事务处理表槽
ORA-02093: TRANSACTIONS_PER_ROLLBACK_SEGMENT() 大于最大的可能数 ()
ORA-02094: 未安装复制选项
ORA-02095: 无法修改指定的初始化参数
ORA-02096: 此选项的指定初始化参数不可修改
ORA-02097: 无法修改参数,因为指定的值无效
ORA-02098: 对索引表引用 (: I) 进行语法分析时出错
ORA-02099: 内部使用,不得打印
ORA-02100: PCC: 内存不足 (如无法分配)
ORA-02101: PCC: 不一致的游标高速缓存 (uce/cuc 不匹配)
ORA-02102: PCC: 不一致的游标高速缓存 (此 uce 无 cur 条目)
ORA-02103: PCC: 不一致的游标高速缓存 (超出 cuc 的引用范围)
ORA-02104: PCC: 不一致的主高速缓存 (cuc 不可用)
ORA-02105: PCC: 不一致的游标高速缓存 (高速缓存中无 cuc 条目)
ORA-02106: PCC: 不一致的游标高速缓存 (OraCursor nr 已坏)
ORA-02107: PCC: 对运行时库来说此程序过旧: 请重新对其编译
ORA-02108: PCC: 无效的描述符传送给运行时库
ORA-02109: PCC: 不一致的主高速缓存 (超出位置引用范围)
ORA-02110: PCC: 不一致的主高速缓存 (无效的 sqi 类型)
ORA-02111: PCC: 堆栈 (Heap) 一致性错误
ORA-02112: PCC: SELECT…INTO 返回过多行
ORA-02140: 无效的表空间名称
ORA-02141: 无效的 OFFLINE 选项
ORA-02142: 缺少或无效的 ALTER TABLESPACE 选项
ORA-02143: 无效的 STORAGE 选项
ORA-02144: 未指定 ALTER CLUSTER 的选项
ORA-02145: 缺少 STORAGE 选项
ORA-02146: SHARED 指定了多次
ORA-02147: 与 SHARED/EXCLUSIVE 选项冲突
ORA-02148: EXCLUSIVE 指定了多次
ORA-02149: 指定的分区不存在
9、关于锁
/*
ORACLE里锁有以下几种模式:v$locked_object.LOCKED_MODE
0:none
1:null 空
2:Row-S 行共享(RS):共享表锁,sub share
3:Row-X 行独占(RX):用于行的修改,sub exclusive
4:Share 共享锁(S):阻止其他DML操作,share
5:S/Row-X 共享行独占(SRX):阻止其他事务操作,share/sub exclusive
6:exclusive 独占(X):独立访问使用,exclusive数字越大锁级别越高, 影响的操作越多。1级锁有:Select,有时会在v$locked_object出现。
2级锁有:Select for update,Lock For Update,Lock Row Share
select for update当对话使用for update子串打开一个游标时,所有返回集中的数据行都将处于行级(Row-X)独占式锁定,其他对象只能查询这些数据行,不能进行update、delete或select for update操作。
3级锁有:Insert, Update, Delete, Lock Row Exclusive
没有commit之前插入同样的一条记录会没有反应, 因为后一个3的锁会一直等待上一个3的锁, 我们必须释放掉上一个才能继续工作。
4级锁有:Create Index, Lock Share
locked_mode为2,3,4不影响DML(insert,delete,update,select)操作, 但DDL(alter,drop等)操作会提示ora-00054错误。
00054, 00000, "resource busy and acquire with NOWAIT specified"
// *Cause: Resource interested is busy.
// *Action: Retry if necessary.
5级锁有:Lock Share Row Exclusive
具体来讲有主外键约束时update / delete ... ; 可能会产生4,5的锁。
6级锁有:Alter table, Drop table, Drop Index, Truncate table, Lock Exclusive
*/
-- 查死锁sql
/*
无法直接获取IP。
间接的方法有3种
1、可以根据v$session 视图中的机器名自己找办法获取IP
2、自己看listener的日志,根据连接时间获取客户端IP
3、写一个logon触发器,登陆的时候将IP写到日志表里面,或者使用dbms_application_info.set_client_info设置后查询v$session视图的CLIENT_INFO列即可。
*/
--
select a.SESSION_ID,b.LOGON_TIME,b.PREV_EXEC_START,d.SQL_TEXT,d.ACTION,c.OBJECT_NAME,c.OBJECT_TYPE,a.ORACLE_USERNAME,a.OS_USER_NAME,a.LOCKED_MODE 级别,b.MACHINE,b.PROGRAM 程序,b.TERMINAL,b.MODULE,b.STATUS,b.STATE,b.SERVER,b.*from v$locked_object a,v$session b,dba_objects c,v$sqlarea dwhere a.SESSION_ID=b.SID and a.OBJECT_ID=c.OBJECT_ID and b.SQL_ADDRESS=d.ADDRESS(+) and b.SQL_HASH_VALUE=d.HASH_VALUE(+)