| 
TA的每日心情|  | 奋斗 2025-3-18 14:43
 | 
|---|
 签到天数: 805 天 [LV.10]以坛为家III 管理员   
 
	积分731050 
 | 
 
| ORA-00000: 正常的成功的完成(操作) 
  
 原因1: 正常执行完成。 
  
  
 状态: 部分验证。  
   
     declare v_sqlcode number; v_sqlerrm varchar2(4000); begin 
    
   
   None 原因2: hosts文件配置错误。 
 状态: 未验证,网络汇总。分析: 这种错误通常由于数据库是复制过来的,hosts文件中的ip对应的host name和当前的主机名不一致导致甚至hosts文件丢失,都会导致数据库startup时报此错。  
    ORA-00001: 违反唯一约束条件 (string.string=>[拥有者].[约束名]) 
  
 原因1: UPDATE或INSERT语句试图插入重复的键。对于在DBMS MAC模式下配置的Trusted Oracle,如果在不同级别存在重复条目,您可能会看到此信息。 
  
  
 状态: 已验证。  
  
   
    
  备注: 
   
   唯一约束与主键约束的同: 
     
     都通过唯一索引来限制约束列的唯一性,确保任何使表中约束的列在行与行之间存在重复值的操作失败若无事先创建好唯一索引,都会在创建唯一约束或主键约束时隐式创建同名的唯一约束有约束必定有索引(无法在保持约束存在的情况下删除索引=>ORA-02429: 无法删除用于强制唯一/主键的索引)有索引不一定有约束(只删除约束但不删除索引则仍然会限制索引列的值的唯一性)唯一约束与主键约束的异: 
     
     唯一约束允许在该列或多列上存在NULL值,但主键约束不能存在NULL值一个表只能创建一个主键约束,但可创建多个唯一约束主键可扩展作为外键,唯一约束不可 ORA-00017: 会话被要求设置跟踪事件 
  
 原因1: 当前会话被要求通过另一个会话设置一个跟踪事件 
  
 ORA-00018: 超出最大会话数 
  
 原因1: 所有会话状态对象都在使用中 
  
  
 状态: 部分验证。分析: 很明显,系统中所有会话数目已经达到设置的SESSIONS值,因此准备要创建的会话无法成功创建,而这个会话包括有用户建立连接至数据库是产生的会话、后台进程产生的会话以及各类涉及到硬解析处理数据字典基表的DML、DDL语句产生的递归会话。  
   
    
      
  
   
   | 属性 | 描述 |   
   | 参数类型 | Integer |   
   | 默认值 | 派生公式: 【?~11gR1】="(1.1 * PROCESSES) + 5)"; 【11gR2~12cR2】="(1.5 * PROCESSES) + 22" |   
   | 可修改(不用重启及时生效) | 【?~11gR2】="否"; 【12cR1~12cR2】="可用ALTER SYSTEM修改" |   
   | 取值范围 | 【?~11gR1】="1~2^31"; 【11gR2~12cR2】="1~2^16(即1~65536)" |   
   | 基础参数 | 是 |  ORA-00019: 超出最大许可会话数 
  
 原因1: 所有许可会话都在使用中。 
  
  
 状态: 部分验证。分析: 很明显,系统中并发用户会话已经达到设置的LICENSE_MAX_SESSIONS值,因此准备要创建的用户会话无法创建。  
   
    
    
   如果判断确定是由于LICENSE_MAX_SESSIONS值过小导致,则需修改增大此参数值,【详情参见ORA-00018=>原因1=>措施,将SQL语句中name = 'sessions'修改为name = 'license_max_sessions'即可】如果判断确定LICENSE_MAX_SESSIONS值合理,则需分析确定产生大量会话的原因,是否相关程序代码建立了连接未释放?或者其它原因等。【待完善】    
  
   
   | 属性 | 描述 |   
   | 参数类型 | Integer |   
   | 默认值 | 0 |   
   | 可修改(不用重启及时生效) | 可用ALTER SYSTEM修改 |   
   | 取值范围 | 0~许可会话数 |   
   | 基础参数 | 否 |   
   | Oracle实时应用集群 | 多个实例可以具有不同的值,但是安装数据库的所有实例的总和应小于或等于该数据库许可的会话总数。 |  ORA-00020: 超出最大进程数(string=>[最大进程数]) 
  
 原因1: 所有进程状态对象都在使用中。 
  
  
 状态: 部分验证。分析: 很明显,系统中进程数已经达到设置的PROCESSES值,因此准备要创建的用户会话无法创建。  
   
    
    
   如果判断确定是由于PROCESSES值过小导致,则需修改增大此参数值,【详情参见ORA-00018=>原因1=>措施,将SQL语句中name = 'sessions'修改为name = 'processes'即可】如果判断确定PROCESSES值合理,则需分析确定产生大量进程的原因,是否相关程序代码建立了连接未释放?或者其它原因等。【待完善】    
  
   
   | 属性 | 描述 |   
   | 参数类型 | Integer |   
   | 默认值 | 【?~10gR2】="40~操作系统依赖数"; 【11gR1~11gR2】="100"; 【12cR1~12cR2】="该值是派生的,它通常取决于警报日志中报告的核心数。" |   
   | 可修改(不用重启及时生效) | 否 |   
   | 取值范围 | 6~操作系统依赖数 |   
   | 基础参数 | 是 |   
   | Oracle实时应用集群 | 多个实例可以具有不同的值。 |    ORA-00439: 未启用功能: 【功能名】 
  
 原因1: 指定的功能未启用。 
  
  
 状态: 已验证。分析: ORACLE:你要多给我点钱,知道不!  
   
    
    
   哎,哥们,实在想用此项功能,那就换高版本换企业版之类有这个功能的数据库吧。如果是别人库导过来的,嗯,它的库鄙视了下你的库,擦把汗告诉别人导出时指定下低版本。   ORA-01502: 索引 '(SCHEMA名).(索引名)' 或这类索引的分区处于不可用状态 
  
 原因1: 试图连接访问被"直接负载?"或DDL语句操作标记为不可用状态的索引或索引的分区 
  
  
 状态: 已验证。  
  
   
    
    
   如果需要修复索引或索引分区,通过rebuild进行重建。如果需要去掉索引,通过drop命名删除,如果有约束得先删除约束(如果是创建约束时系统自动创建的索引会在删除约束时一起删除),然后再删除索引(如果是创建约束前手工建立的索引,那么还需要手工维护进行删除) ORA-01722: 无效数字 
  
 原因1: 指定的数字无效 
  
  
 状态: 已验证。  
     
   
    
    
   根据分析的情况,明确是否需要主动转换,是否数据存在问题,该是数值就传数值,该是字符串就添加左右英文单引号包裹成字符串。  
   
   当您使用显式数据类型转换函数时,SQL语句更容易理解。隐式数据类型转换可能会对性能产生负面影响,特别是如果列值的数据类型被隐式转换为基本常量的数据类型,而不是主动转为其它类型。隐式转换要根据需要转换时的上下文来决定,而且在每类场景中不一定产生一样的效果。例如,从datetime值到varchar2值的隐式转换可能会根据NLS_DATE_FORMAT参数的值返回意外的一年。隐式转换的算法可能会随着软件版本和Oracle产品之间的变化而变化。显式转换的变化则更有预见性。如果在索引表达式中产生了隐式数据类型转换,那么Oracle数据库可能不会使用该索引,因为它是为转换前数据类型定义的。这可能会对性能产生负面影响。 ORA-01747: 用户.表.列、表.列或列格式无效 
  
 原因1: 列名为关键字。 | 
 |