Oracle 11g数据库详解(2017-01-23更新)

Oracle 11g数据库详解

整理者:赤勇玄心行天道

QQ:280604597

Email:280604597@qq.com

大家有什么不明白的地方,或者想要详细了解的地方可以联系我,我会认真回复的。

你可以随意转载,无需注明出处!

写文档实属不易,我希望大家能捐助我,继续支持我的工作,我会继续努力帮助大家,金额随意,1块也行,感谢!

支付宝:280604597@qq.com

QQ红包

1   简介

Data数据:描述事物的符号记录。

Data Base数据库(简称DB):存放数据的仓库。

Data Base Management System数据库管理系统(简称DBMS):位于用户与操作系统之间的数据管理软件,具有:

1)   数据定义功能

用户使用数据库管理系统提供的数据定义语言(Data Definition Language,简称DDL)对数据库中的数据对象进行定义。例如:对表进行Create创建、Alter修改、Drop删除、等操作。

2)   数据操纵功能

用户使用数据库管理系统提供的数据操纵语言(Data Manipulation Language,简称DML)对数据库中的数据对象进行操纵。数据操纵语言包括:Select查询、Insert插入、Delete删除、Update修改、CALL、EXPLAIN PLAN、LOCK TABLE、MERGE。

3)   数据库的运行管理

数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用及发生故障后的系统恢复。

4)   数据库的建立与维护功能

它包括数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等。

Data Base System数据库系统(简称DBS):一般由Data Base数据库、Data Base Management System数据库管理系统、Data Base Administrator数据库管理员(简称DBA)、应用系统、用户构成的一整套系统。

 

Oracle官方帮助网页:http://docs.oracle.com/en/

Oracle数据库官方帮助网页:http://docs.oracle.com/en/database/database.html

 

数据库操作主要有以下几步:

1、  启动、停止数据库

2、  连接、断开数据库

3、  创建、修改、删除数据库用户

4、  表空间

5、  新建、修改、删除表

6、  查询、插入、修改、删除表数据

7、  新建、修改、删除视图

8、  新建、修改、删除存储过程

9、  新建、修改、删除触发器

 

数据库操作工具和方法主要有以下几种:

1、  SQL*Plus,SQL*Plus是一个只能与Oracle数据库进行交互的客户端工具。需要操作系统安装Oracle数据库的客户端软件,安装完后,直接在操作系统的控制台下使用。

2、  Oracle Enterprise Manager,简称OEM。

3、  Pro*C/C++。

4、  OCI库。

5、  OCCI库。

6、  OCILIB库,http://vrogier.github.io/ocilib/download/。

2   Oracle 11g安装与卸载

2.1 Oracle安装程序简介

Oracle安装程序下载地址:http://pan.baidu.com/s/1jIyEQAa

 

 

注意:如果一共只有6个安装程序的,就是没有Oracle Grid Infrastructure这个安装程序。

2.2 Linux下安装Oracle 11g数据库的服务端

安装前须知

1)   安装前需要先确认数据库字符集。如果实在无法知道,就用"Simplified Chinese_CHINA.ZHS16GBK"(简体中文GBK字符)。

2)   确保硬盘的可用空间至少20GB。可以使用df命令查看可用空间。

3)   确定linux系统上有oranavi工具,没有请联系Email:280604597@qq.com。

 

1、 上传oracle11g安装程序

 

用ftp或光盘将安装程序上传到机器。

 

2、 启动oracle11g安装程序

 

[root@localhost ~]# su  -  root

[root@localhost ~]# mv  database/  /                  //移动数据库安装程序到根目录

[root@localhost ~]# chmod  -R  777  /database         //修改数据库安装程序权限

[root@localhost ~]# xhost   127.0.0.1   0.0

[root@localhost ~]# oranavi

注意:如果没有oranavi这个命令,需安装oranavi-11.3.3-6.AXS4.x86_64.rpm包

3、 安装界面步骤截图

 

 

 

 

 

 

oracle操作系统用户密码一般为oracle。

 

 

 

 

 

 

 

安装程序稍后启动。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

数据库口令一般为oracle。

 

 

 

 

 

 

 

 

4、 修改本机其他用户对数据库的使用权限

[root@localhost ~]# su - oracle

[root@localhost ~]# chmod -R 777 $ORACLE_BASE

 

注意:此步主要是允许本机其他用户对oracle数据库文件有读权限,如果不执行此步,会导致本机其他用户无法使用sqlplus、tnsname.ora和listener.ora。

 

5、 删除安装程序

 

请先确定以后是否还需要安装程序,如果不需要最好删除,安装程序占用4-5 GB空间。

[root@localhost ~]# sudo rm -rf database/

 

 

2.3 Linux下卸载Oracle 11g数据库的服务端和客户端

  1. 1.  关闭数据库

 

[oracle@OracleTest oracle]$ sqlplus / as sysdba

SQL> shutdown immediate

SQL> exit

 

  1. 2.  关闭数据库监听服务

 

[oracle@OracleTest oracle]$ lsnrctl stop

 

  1. 3.  停止HTTP服务

 

[root@OracleTest /root]# service httpd stop

 

  1. 4.  用su或者重新登录到root(如想重新安装可以保留oracle用户,省得输入环境变量了)

 

  1. 5.  删除相关文件

 

[root@OracleTest /root]# rm -rf $ORACLE_BASE          //删除Oracle安装目录,根据环境变量删除

[root@OracleTest /root]# rm -f /usr/local/bin/dbhome

[root@OracleTest /root]# rm -f /usr/local/bin/oraenv

[root@OracleTest /root]# rm -f /usr/local/bin/coraenv

[root@OracleTest /root]# rm -f /etc/oratab

[root@OracleTest /root]# rm -f /etc/oraInst.loc

 

  1. 6.  删除环境变量

删除/etc/sysconfig/httpd文件里的ORACLE相关环境变量

删除oracle用户的主目录下的.bash_profile和.bashrc文件里的ORACLE相关环境变量

 

  1. 7.  将oracle用户删除(若要重新安装,可以不删除)

[root@OracleTest /root]# userdel -r oracle

 

  1. 8.  将用户组删除(若要重新安装,可以不删除)

[root@OracleTest /root]# groupdel oinstall

[root@OracleTest /root]# groupdel dba

 

  1. 9.  将启动服务删除

[root@OracleTest /root]# chkconfig --del dbora

 

到此为止重启后,你的Linux系统下的Oracle数据库已完全删除了!

 

如果要再次安装, 最好先做一些备份工作。

包括用户的登录脚本,数据库自动启动关闭的脚本,和Listener自动启动的脚本。

要是有可能连创建数据库的脚本也保存下来。

 

 

2.4 Windows下卸载Oracle 10g数据库的服务端和客户端

注意:删除时,若发现某项不存在,则跳过该步;若发现某项无法删除,重新启动计算机后再试。

 

  1. 1.  停止服务

控制面板->管理工具->服务->停止所有Oracle单词开头的服务。

 

  1. 2.  删除聚集同步服务CSS(cluster Synchronization Services)

输入Shell控制台命令:localconfig delete

 

  1. 3.  删除ODBC数据源

注意:若要重新安装或没有配置过,就跳过此步。

控制面板->管理工具->数据源(ODBC)->删除所有Oracle相关的ODBC的DSN数据源。

 

  1. 4.  卸载Oracle产品

开始->程序->Oracle - OraHome81->Oracle Installation Products->Universal Installer->卸装所有Oracle产品->按照提示的步骤进行。

注意:如果此步无法操作,需要设置Universal Installer可执行文件的兼容性的兼容模式为Windows Server 2003 (Service Park 1)。

 

  1. 5.  清理注册表

打开注册表编辑器:开始->运行->输入regedit->回车。

删除HKEY_CLASSES_ROOT下的所有EnumOra、Ora、Orcl单词开头的节点

删除HKEY_LOCAL_MACHINE\SOFTWARE下的ORACLE节点

删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下的所有Oracle和OraWeb单词开头的节点

删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application下的所有Oracle单词开头的节点

删除HKEY_CURRENT_USER\SOFTWARE\Microsoft\windows\CurrentVersion\Explorer\MenuOrder\Start Menu\Programs下的所有Oracle单词开头的节点

删除HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI下的所有Oracle单词开头的节点

 

  1. 6.  删除环境变量

控制面板->系统->高级->环境变量

删除CLASSPATH和PATH环境变量的值中有关Oracle的内容

删除ORACLE_HOME环境变量

删除系统盘:\windows\win.ini文件中[ORACLE]章节及其所有节点

 

  1. 7.  清理开始菜单

从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标。

 

  1. 8.  清理残余文件

删除文件夹:Oracle的安装目录,一般为某分区的根目录下的Oracle文件夹

删除文件夹:系统盘:\Program Files\Oracle

删除文件夹:系统盘:\Program Files (x86)\Oracle

删除文件夹:系统盘:\WINNT\Oracle

删除文件夹:系统盘:\Documents and Settings\安装Oracle的用户名\Oracle

删除文件:系统盘:\Documents and Settings\安装Oracle的用户名\Local Settings\Temp\*下的所有文件

 

  1. 9.  卸载完毕

 

 

2.5 Windows下卸载Oracle 11g数据库的服务端和客户端

注意:删除时,若发现某项不存在,则跳过该步;若发现某项无法删除,重新启动计算机后再试

 

  1. 1.  停止服务

输入Shell控制台命令:

sc stop OracleDBConsoleorcl

sc stop OracleJobSchedulerORCL

sc stop OracleMTSRecoveryService

sc stop OracleOraDB11g_home1ClrAgent

sc stop OracleOraDB11g_home1_32bitClrAgent

sc stop OracleOraDb11g_home1TNSListener

sc stop OracleOraDb11g_home1_32bitTNSListener

sc stop OracleRemExecService

sc stop OracleServiceORCL

sc stop OracleVssWriterORCL

 

  1. 2.  删除ODBC数据源

注意:若要重新安装或没有配置过,就跳过此步。

控制面板->管理工具->数据源(ODBC)->删除所有Oracle相关的ODBC的DSN数据源

 

  1. 3.  卸载Oracle产品

开始->程序->Oracle - OraDb11g->Oracle Installation Products->Universal Installer->卸装所有Oracle产品->按照提示的步骤进行。

注意:如果此步无法操作,需要设置Universal Installer可执行文件的兼容性的兼容模式为Windows Server 2003 (Service Park 1)。

 

  1. 4.  清理服务

输入Shell控制台命令:

sc delete OracleDBConsoleorcl

sc delete OracleJobSchedulerORCL

sc delete OracleMTSRecoveryService

sc delete OracleOraDB11g_home1ClrAgent

sc delete OracleOraDB11g_home1_32bitClrAgent

sc delete OracleOraDb11g_home1TNSListener

sc delete OracleOraDb11g_home1_32bitTNSListener

sc delete OracleRemExecService

sc delete OracleServiceORCL

sc delete OracleVssWriterORCL

 

  1. 5.  清理注册表

打开注册表编辑器:开始->运行->输入regedit->回车

1)   删除HKEY_CLASSES_ROOT下的所有EnumOra、Ora、Orcl单词开头的节点

2)   删除HKEY_LOCAL_MACHINE\SOFTWARE下的ORACLE节点

3)   删除HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MenuOrder\Start Menu2\Programs下的所有Oracle单词开头的节点

4)   删除HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI下的所有Oracle单词开头的节点

5)   删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下的所有Oracle和OraWeb单词开头的节点

6)   删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application下的所有Oracle单词开头的节点

 

  1. 6.  删除环境变量

控制面板->系统->高级->环境变量

1)   删除CLASSPATH和PATH环境变量的值中有关Oracle的内容

2)   删除ORACLE_HOME、ORACLE_SID环境变量

3)   删除系统盘:\windows\win.ini文件中[ORACLE]章节及其所有节点

 

  1. 7.  清理开始菜单

从桌面上、STARTUP(启动)组、程序菜单中,删除所有有关Oracle的组和图标

 

  1. 8.  清理残余文件

1)   删除文件夹:Oracle的安装目录,一般为某分区的根目录下的Oracle或app文件夹下

2)   执行删除文件夹命令:

rmdir /S /Q "%SYSTEMDRIVE%\Program Files\Oracle"

rmdir /S /Q "%SYSTEMDRIVE%\Program Files (x86)\Oracle"

rmdir /S /Q "%SYSTEMDRIVE%\WINNT\Oracle"

rmdir /S /Q "%SYSTEMDRIVE%\Windows\inf\Oracle Data Provider for .NET"

rmdir /S /Q "%SYSTEMDRIVE%\Windows\inf\Oracle11"

rmdir /S /Q "%SYSTEMDRIVE%\Windows\System32\config\systemprofile\Oracle"

rmdir /S /Q "%SYSTEMDRIVE%\Documents and Settings\安装Oracle的用户名\Oracle"

3)   删除文件:%TEMP%环境变量所指向的文件夹下的所有文件

 

  1. 9.  卸载完毕

 

 

2.6 Linux下开机启动Oracle 11g数据库

  1. 1.  创建启动oracle11g数据库脚本

 

[root@localhost ~]# su - oracle

[oracle@localhost ~]$ cd ~

[oracle@localhost ~]$ vi startoracle.sh

 

输入以下字符:

#!/bin/bash

 

lsnrctl start

sqlplus / as sysdba<<EOF

startup

exit

<<EOF

emctl start dbconsole

输入结束

 

[oracle@localhost ~]$ chmod +x startoracle.sh

 

  1. 2.  创建关闭oracle11g数据库脚本

 

[root@localhost ~]# su - oracle

[oracle@localhost ~]$ cd /home/oracle

[oracle@localhost ~]$ vi stoporacle.sh

 

输入以下字符:

#!/bin/bash

 

lsnrctl stop

sqlplus / as sysdba<<EOF

shutdown immediate

exit

<<EOF

emctl stop dbconsole

输入结束

 

[oracle@localhost ~]$ chmod +x stoporacle.sh

 

  1. 3.  将启动oracle11g数据库脚本添加到系统开机启动脚本

 

[root@localhost ~]# vi /etc/rc.d/rc.local

 

在文件中新建一行,添加以下内容:

su - oracle -c "bash ~/startoracle.sh"

保存退出vi。

 

2.7 Oracle安装后必做的事

查看最大进程数:

show  parameter  processes

 

sessions                          integer        170(默认值)

 

查看最大会话数:

show   parameter   session

 

processes                         integer        150(默认值)

 

修改最大进程数和最大会话数,否则可能会导致ORA-00018:超出最大会话数 和 ORA-00020:超出最大进程数(一般sessions = processes * 1.1 + 5):

alter system set processes=1000 scope=spfile;

alter system set sessions=1105 scope=spfile;

shutdown immediate;

startup;

 

修改DEFAULT配置文件的用户密码有效天数为无限:

alter  profile  DEFAULT  limit  password_life_time  unlimited;

3   Oracle数据库软件结构

一个操作系统可以安装多个Oracle数据库软件,不同的数据库软件对应有不同的数据库名,但是不建议这么安装,因为会出现各种意想不到的问题。

一个Oracle数据库软件可以包括多个Instance数据库实例,不同的实例对应有不同的实例名。

一个Instance数据库实例可以包括多个User数据库用户。

一个User数据库用户有且只有一个Schema模式方案,且User数据库用户名和Schema模式方案名是相同的。

一个Schema模式方案可以包括多个Object数据库对象,比如:表对象、索引对象、存储过程对象、等。

User数据库用户名主要是在连接数据库和权限时使用。

Schema模式方案名主要是在访问Object数据库对象时使用。

4   SQL*Plus命令

4.1 启动SQL*Plus

4.1.1 Windows操作系统

打开Shell终端控制台,输入:sqlplus [选项]

 

使用 SQL*Plus 执行 SQL, PL/SQL 和 SQL*Plus 语句。

 

用法 1: sqlplus -H | -V

 

    -H             显示 SQL*Plus 版本和用法帮助。

    -V             显示 SQL*Plus 版本。

 

用法 2: sqlplus [ [<option>] [{logon | /nolog}] [<start>] ]

 

  <option> 为: [-C <version>] [-L] [-M "<options>"] [-R <level>] [-S]

 

    -C <version>   将受影响的命令的兼容性设置为

                   <version> 指定的版本。该版本具有

                   "x.y[.z]" 格式。例如, -C 10.2.0

    -L             只尝试登录一次, 而不是在出错时再次提示。

    -M "<options>" 设置输出的自动 HTML 标记。选项的格式为:

                   HTML [ON|OFF] [HEAD text] [BODY text] [TABLE text]

                   [ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}]

    -R <level>     设置受限模式, 以禁用与文件系统交互的SQL*Plus 命令。

                   级别可以是 1, 2 或 3。

                   最高限制级别为 -R 3,该级别禁用与文件系统交互的所有用户命令。

    -S             设置无提示模式,该模式隐藏命令的 SQL*Plus 标帜,提示和回显的显示。

 

  <logon> 为: {<username>[/<password>][@<connect_identifier>] | / }

              [AS {SYSDBA | SYSOPER | SYSASM}] [EDITION=value]

 

    指定数据库帐户用户名, 口令和数据库连接的连接标识符。如果没有连接标识符, SQL*Plus 将连接到默认数据库。

 

    AS SYSDBA, AS SYSOPER 和 AS SYSASM 选项是数据库管理权限。

 

    <connect_identifier> 的形式可以是 Net 服务名或轻松连接。

 

      @[<net_service_name> | [//]Host[:Port]/<service_name>]

 

        <net_service_name> 是服务的简单名称, 它解析为连接描述符。

 

        示例: 使用 Net 服务名连接到数据库, 且数据库 Net 服务名为 ORCL。

 

           sqlplus myusername/mypassword@ORCL

 

        Host 指定数据库服务器计算机的主机名或 IP地址。

 

        Port 指定数据库服务器上的监听端口。

 

        <service_name> 指定要访问的数据库的服务名。

 

        示例: 使用轻松连接连接到数据库, 且服务名为 ORCL。

 

           sqlplus myusername/mypassword@Host/ORCL

 

    /NOLOG 选项可启动 SQL*Plus 而不连接到

    数据库。

 

    EDITION 指定会话版本的值。

 

 

  <start> 为: @<URL>|<filename>[.<ext>] [<parameter> ...]

 

    使用将分配给脚本中的替代变量的指定参数

    从 Web 服务器 (URL) 或本地文件系统 (filename.ext)

    运行指定的 SQL*Plus 脚本。

 

在启动 SQL*Plus 并且执行 CONNECT 命令后, 将运行站点概要文件 (例如, $ORACLE_HOME/sqlplus/admin/glogin.sql) 和用户概要文件(例如, 工作目录中的 login.sql)。这些文件包含 SQL*Plus 命令。

4.1.2 Linux操作系统

4.2 内部命令

4.2.1 set

4.2.1.1   set  show[mode]  {on | off}

设置在执行set命令时是否输出原值和新值,默认为off。

 

例如:set  showmode  on,执行set echo on命令,会输出:

原值:  echo OFF

新值:  echo ON

 

例如:set  showmode  off,执行set echo on命令,不会有输出。

4.2.1.2   set  auto[commit]  {on | imm[ediate] | off | 0~2000000000}

Controls when Oracle Database commits pending changes to the database after SQL or PL/SQL commands.

 

ON commits pending changes to the database after Oracle Database executes each successful INSERT, UPDATE, or DELETE, or PL/SQL block. OFF suppresses automatic committing so that you must commit changes manually (for example, with the SQL command COMMIT). IMMEDIATE functions in the same manner as ON. n commits pending changes to the database after Oracle Database executes n successful SQL INSERT, UPDATE, or DELETE commands, or PL/SQL blocks. n cannot be less than zero or greater than 2,000,000,000. The statement counter is reset to zero after successful completion of n INSERT, UPDATE or DELETE commands or PL/SQL blocks, a commit, a rollback, or a SET AUTOCOMMIT command.

 

SET AUTOCOMMIT does not alter the commit behavior when SQL*Plus exits. Any uncommitted data is committed by default.

 

Note:

For this feature, a PL/SQL block is considered one transaction, regardless of the actual number of SQL commands contained within it.

 

设置执行SQL语句后是否立即自动提交,默认为off。

设置为on或immediate,表示要立即自动提交。

设置为off或0,表示不要立即自动提交。

设置为1~2000000000,表示当执行了多少条SQL语句之后立即自动提交。

4.2.1.3   set  array[size]  {1~5000}

Sets the number of rows that SQL*Plus will fetch from the database at one time.

 

Valid values are 1 to 5000. A large value increases the efficiency of queries and subqueries that fetch many rows, but requires more memory. Values over approximately 100 provide little added performance. ARRAYSIZE has no effect on the results of SQL*Plus operations other than increasing efficiency.

 

设置游标每次批量抽取的条数,默认为15。

理论上,本参数设置得越高,查询语句的结果就抽取得越快,内存占用越大。

这是游标是指直接执行查询语句时,SQL*Plus命令抽取结果时使用的游标,与PL/SQL代码块中的游标无关。

4.2.1.4   set  copyc[ommit]  {0~5000}

Controls the number of batches after which the COPY command commits changes to the database.

 

COPY commits rows to the destination database each time it copies n row batches. Valid values are zero to 5000. You can set the size of a batch with the ARRAYSIZE variable. If you set COPYCOMMIT to zero, COPY performs a commit only at the end of a copy operation.

 

设置在使用copy命令时每复制完多少行提交一次,最好设置为与arraysize一样的数量,默认为0。

设置为1~5000,表示每复制完多少行提交一次。

设置为0,表示全部复制完毕才提交。

4.2.1.5   set  copytypecheck  {on | off}

Sets the suppression of the comparison of datatypes while inserting or appending to tables with the COPY command.

 

设置在使用copy命令进行insert插入或appending追加时是否进行数据类型比较。

4.2.1.6   set  lin[esize]  {1~32767}

设置标准输出和重定向输出的每行数据的最大长度,默认为80。

4.2.1.7   set  pages[ize]  {0~50000}

设置标准输出和重定向输出的每页最大行数,设置为0表示不分页,默认为14。

4.2.1.8   set  pau[se]  {on | off | text}

Enables you to control scrolling of your terminal when running reports. You need to first, SET PAUSE text, and then SET PAUSE ON if you want text to appear each time SQL*Plus pauses.

 

SET PAUSE ON pauses output at the beginning of each PAGESIZE number of lines of report output. Press Return to view more output. SET PAUSE text specifies the text to be displayed each time SQL*Plus pauses. Multiple words in text must be enclosed in single quotes.

 

You can embed terminal-dependent escape sequences in the PAUSE command. These sequences allow you to create inverse video messages or other effects on terminals that support such characteristics.

 

设置标准输出和重定向输出的每页数据前是否先输出一段字符,并暂停,默认为off。

如果设置为不分页,则本参数无意义。

输出暂停后,按回车键继续。

这一段字符默认为空,例如:执行set  pause  "***"可以修改为"***"。

4.2.1.9   set  hea[ding]  {on|off}

设置标准输出和重定向输出时,是否输出字段名,默认为on。

注意:如果set  pagesize  0,即使set  heading  on,也不会输出字段名,只能自己写select语句输出了。

 

例如:set  heading  on,执行select * from dual;语句,会输出:

D

-

X

 

例如:set  heading  off,执行select * from dual;语句,会输出:

X

4.2.1.10 set  num[width]  {2~50}

设置标准输出和重定向输出的NUMBER类型字段的最大位数,默认为10。

当输出NUMBER字段的位数超过最大位数时,将会转换为科学计数法。

4.2.1.11 set  long  {1~2000000000}

设置标准输出和重定向输出的LONG类型字段的最大位数,默认为80。

4.2.1.12 set  space  {0~10}

设置标准输出和重定向输出的每个字段之间间隔多少个空格,默认为1。

4.2.1.13 set  feed[back]  {0~50000 | on | off}

设置标准输出和重定向输出在输出了多少行及以上数据时,输出已选择多少行的反馈信息,默认为6。

设置为0或off表示不输出反馈信息。

 

例如:set  feedback  5,当查询语句输出等于或大于5行数据的时候会输出一个“8 rows selected.”或“已选择 8 行。”的反馈。如果输出少于5行数据则没有此反馈。

4.2.1.14 set  term[out]  {on | off}

设置在执行SQL脚本时,标准输出是否输出数据,默认为on。

设置为off可以省去输出数据所占用的时间。

本命令只对执行SQL脚本时有效,直接执行SQL命令时不受影响,重定向输出也不受影响。

 

例如:set  termout  off,当执行SQL脚本中的select语句时,不会标准输出查询到的数据。

4.2.1.15 set  echo  {on|off}

设置在执行SQL脚本时,标准输出和重定向输出是否输出SQL语句,默认为off。

本命令只对执行SQL脚本时有效,直接执行SQL命令时不受影响,重定向输出也不受影响。

 

例如:set echo off,当执行SQL脚本中的select语句时,不会输出select语句,只输出执行结果。

 

例如:set echo on,当执行SQL脚本中的select语句时,会先输出select语句,再输出执行结果。

4.2.1.16 set  trim[out]  {on|off}

设置是否去除标准输出每行的拖尾空格,默认为on。

4.2.1.17 set  trims[pool]  {on|off}

设置是否去除标重定向输出每行的拖尾空格,默认为off。

4.2.1.18 set  ver[ify]  {on|off}

设置在输入&代替变量后,是否标准输出和重定向输出原值和新值的反馈信息,默认为on。

 

例如:set  verify  on,执行SELECT &name FROM DUAL;语句,会输出:

输入 name 的值:  1

原值    1: SELECT &name FROM DUAL

新值    1: SELECT 1 FROM DUAL

 

例如:set  verify  off,执行SELECT &name FROM DUAL;语句,会输出:

输入 name 的值:  1

4.2.1.19 set  tim[ing]  {on|off}

设置是否标准输出和重定向输出执行SQL语句的已用时间,默认为off。

 

例如:set  timing  on,执行select * from user_tables;语句,会输出:

……(省略输出的数据)

 

已用时间: 00: 00: 00.86

4.2.1.20 set  serverout[put]  {on|off}  [size  {2000~1000000|unlimited}]  [for[mat]  {wra[pped]|wor[d_wrapped]|tru[ncated]}]

设置是否标准输出和重定向输出执行PL/SQL代码的结果,默认为off。

 

例如:set  serveroutput  on,执行PL/SQL代码中的dbms_output.put()和dbms_output.put_line()就会输出结果。

 

例如:set  serveroutput  off,执行PL/SQL代码中的dbms_output.put()和dbms_output.put_line()就不会有输出。

 

SET APPI[NFO]{ON | OFF | text}

 

Sets automatic registering of scripts through the DBMS_APPLICATION_INFO package.

SET AUTOP[RINT] {ON | OFF}

 

Sets the automatic printing of bind variables.

SET AUTORECOVERY [ON | OFF]

 

ON sets the RECOVER command to automatically apply the default filenames of archived redo log files needed during recovery.

SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

 

Displays a report on the execution of successful SQL DML statements (SELECT, INSERT, UPDATE, DELETE or MERGE).

SET BLO[CKTERMINATOR] {. | c | ON | OFF}

 

Sets the non-alphanumeric character used to end PL/SQL blocks to c.

SET CMDS[EP] {; | c | ON | OFF}

 

Sets the non-alphanumeric character used to separate multiple SQL*Plus commands entered on one line to c.

SET COLSEP { | text}

 

Sets the text to be printed between selected columns.

SET CON[CAT] {. | c | ON | OFF}

 

Sets the character you can use to terminate a substitution variable reference if you wish to immediately follow the variable with a character that SQL*Plus would otherwise interpret as a part of the substitution variable name.

SET COPYTYPECHECK {ON | OFF}

 

Sets the suppression of the comparison of datatypes while inserting or appending to tables with the COPY command.

SET DEF[INE] {& | c | ON | OFF}

 

Sets the character used to prefix variables to c.

SET DESCRIBE [DEPTH {1 | n | ALL}] [LINENUM {ON | OFF}] [INDENT {ON | OFF}]

 

Sets the depth of the level to which you can recursively describe an object.

SET ECHO {ON | OFF}

 

Controls whether the START command lists each command in a script as the command is executed.

SET EDITF[ILE] file_name[.ext]

 

Sets the default filename for the EDIT command.

SET EMB[EDDED] {ON | OFF}

 

Controls where on a page each report begins.

SET ERRORL[OGGING] {ON | OFF} [TABLE [schema.]tablename] [TRUNCATE] [IDENTIFIER identifier]

 

Enables recording of SQL, PL/SQL and SQL*Plus errors to an error log table which you can query later.

SET ESC[APE] {\ | c | ON | OFF}

 

Defines the character you enter as the escape character.

SET ESCCHAR {@ | ? | % | $ | OFF}

 

Specifies a special character to escape in a filename. Prevents character translation causing an error.

SET EXITC[OMMIT] {ON | OFF}

 

Specifies whether the default EXIT behavior is COMMIT or ROLLBACK.

SET FEED[BACK] {6 | n | ON | OFF}

 

Displays the number of records returned by a query when a query selects at least n records.

SET FLAGGER {OFF | ENTRY | INTERMED[IATE] | FULL}

 

Checks to make sure that SQL statements conform to the ANSI/ISO SQL92 standard.

SET FLU[SH] {ON | OFF}

 

Controls when output is sent to the user's display device.

SET HEA[DING] {ON | OFF}

 

Controls printing of column headings in reports.

SET HEADS[EP] { | c | ON | OFF}

 

Defines the character you enter as the heading separator character.

SET INSTANCE [instance_path | LOCAL]

 

Changes the default instance for your session to the specified instance path.

SET LIN[ESIZE] {80 | n}

 

Sets the total number of characters that SQL*Plus displays on one line before beginning a new line.

SET LOBOF[FSET] {1 | n}

 

Sets the starting position from which BLOB, BFILE, CLOB and NCLOB data is retrieved and displayed.

SET LOGSOURCE [pathname]

 

Specifies the location from which archive logs are retrieved during recovery.

SET LONG {80 | n}

 

Sets maximum width (in bytes) for displaying LONG, BLOB, BFILE, CLOB, NCLOB and XMLType values; and for copying LONG values.

SET LONGC[HUNKSIZE] {80 | n}

 

Sets the size (in bytes) of the increments in which SQL*Plus retrieves a LONG, BLOB, BFILE, CLOB, NCLOB or XMLType value.

SET MARK[UP] HTML [ON | OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON | OFF}] [SPOOL {ON | OFF}] [PRE[FORMAT] {ON | OFF}]

 

Outputs HTML marked up text.

SET NEWP[AGE] {1 | n | NONE}

 

Sets the number of blank lines to be printed from the top of each page to the top title.

SET NULL text

 

Sets the text that represents a null value in the result of a SQL SELECT command.

SET NUMF[ORMAT] format

 

Sets the default format for displaying numbers.

SET NUM[WIDTH] {10 | n}

 

Sets the default width for displaying numbers.

SET PAGES[IZE] {14 | n}

 

Sets the number of lines in each page.

SET RECSEP {WR[APPED] | EA[CH] | OFF}

 

RECSEP tells SQL*Plus where to make the record separation.

SET RECSEPCHAR { | c}

 

Display or print record separators.

SET SERVEROUT[PUT] {ON | OFF} [SIZE {n | UNL[IMITED]}] [FOR[MAT] {WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]}]

 

Controls whether to display the output (that is, DBMS_OUTPUT PUT_LINE) of stored procedures or PL/SQL blocks in SQL*Plus.

SET SHIFT[INOUT] {VIS[IBLE] | INV[ISIBLE]}

 

Enables correct alignment for terminals that display shift characters.

SET SHOW[MODE] {ON | OFF}

 

Controls whether SQL*Plus lists the old and new settings of a SQL*Plus system variable when you change the setting with SET.

SET SQLBL[ANKLINES] {ON | OFF}

 

Controls whether SQL*Plus puts blank lines within a SQL command or script.

SET SQLC[ASE] {MIX[ED] | LO[WER] | UP[PER]}

 

Converts the case of SQL commands and PL/SQL blocks just prior to execution.

SET SQLCO[NTINUE] {> | text}

 

Sets the character sequence SQL*Plus displays as a prompt after you continue a SQL*Plus command on an additional line using a hyphen (–).

SET SQLN[UMBER] {ON | OFF}

 

Sets the prompt for the second and subsequent lines of a SQL command or PL/SQL block.

SET SQLPLUSCOMPAT[IBILITY] {x.y[.z]}

 

Sets the behavior or output format of VARIABLE to that of the release or version specified by x.y[.z].

SET SQLPRE[FIX] {# | c}

 

Sets the SQL*Plus prefix character.

SET SQLP[ROMPT] {SQL> | text}

 

Sets the SQL*Plus command prompt.

SET SQLT[ERMINATOR] {; | c | ON | OFF}

 

Sets the character used to end and execute SQL commands to c.

SET SUF[FIX] {SQL | text}

 

Sets the default file that SQL*Plus uses in commands that refer to scripts.

SET TAB {ON | OFF}

 

Determines how SQL*Plus formats white space in terminal output.

SET TERM[OUT] {ON | OFF}

 

Controls the display of output generated by commands executed from a script.

SET TI[ME] {ON | OFF}

 

Controls the display of the current time.

SET TIMI[NG] {ON | OFF}

 

Controls the display of timing statistics.

SET TRIM[OUT] {ON | OFF}

 

Determines whether SQL*Plus puts trailing blanks at the end of each displayed line.

SET TRIMS[POOL] {ON | OFF}

 

Determines whether SQL*Plus puts trailing blanks at the end of each spooled line.

SET UND[ERLINE] {- | c | ON | OFF}

 

Sets the character used to underline column headings in SQL*Plus reports to c.

SET VER[IFY] {ON | OFF}

 

Controls whether SQL*Plus lists the text of a SQL statement or PL/SQL command before and after SQL*Plus replaces substitution variables with values.

SET WRA[P] {ON | OFF}

 

Controls whether SQL*Plus truncates the display of a SELECTed row if it is too long for the current line width.

SET XMLOPT[IMIZATIONCHECK] [ON|OFF]

 

Specifies that only fully optimized XML queries and DML operations are executed. Only to assist in developing and debugging, not for production.

SET XQUERY BASEURI {text}

 

Defines the base URI to use. This is useful to change the prefix of the file to access when writing generic XQuery expressions.

SET XQUERY ORDERING {UNORDERED | ORDERED | DEFAULT}

 

Controls the ordering of results from an XQuery.

SET XQUERY NODE {BYVALUE | BYREFERENCE | DEFAULT}

 

Sets the preservation mode for notes created or returned.

SET XQUERY CONTEXT {text}

 

Specifies an XQuery context item which can be either a node or a value.

SET APPI[NFO]{ON | OFF | text}

Sets automatic registering of scripts through the DBMS_APPLICATION_INFO package.

 

This enables the performance and resource usage of each script to be monitored by your DBA. The registered name appears in the MODULE column of the V$SESSION and V$SQLAREA virtual tables. You can also read the registered name using the DBMS_APPLICATION_INFO.READ_MODULE procedure.

 

ON registers scripts invoked by the @, @@ or START commands. OFF disables registering of scripts. Instead, the current value of text is registered. text specifies the text to register when no script is being run or when APPINFO is OFF, which is the default. The default for text is "SQL*Plus". If you enter multiple words for text, you must enclose them in quotes. The maximum length for text is limited by the DBMS_APPLICATION_INFO package.

 

The registered name has the format nn@xfilename where: nn is the depth level of script; x is '<' when the script name is truncated, otherwise, it is blank; and filename is the script name, possibly truncated to the length allowed by the DBMS_APPLICATION_INFO package interface.

 

For more information on the DBMS_APPLICATION_INFO package, see the Oracle Database Performance Tuning Guide.

 

Example

 

To display the value of APPINFO, as it is SET OFF by default, enter

 

SET APPINFO ON

SHOW APPINFO

APPINFO is ON and set to "SQL*Plus"

 

To change the default text, enter

 

SET APPINFO 'This is SQL*Plus'

To make sure that registration has taken place, enter

 

VARIABLE MOD VARCHAR2(50)

VARIABLE ACT VARCHAR2(40)

EXECUTE DBMS_APPLICATION_INFO.READ_MODULE(:MOD, :ACT);

PL/SQL procedure successfully completed.

 

PRINT MOD

MOD

---------------------------------------------------

This is SQL*Plus

 

To change APPINFO back to its default setting, enter

 

SET APPINFO OFF

 

SET AUTO[COMMIT]{ON | OFF | IMM[EDIATE] | n}

Controls when Oracle Database commits pending changes to the database after SQL or PL/SQL commands.

 

ON commits pending changes to the database after Oracle Database executes each successful INSERT, UPDATE, or DELETE, or PL/SQL block. OFF suppresses automatic committing so that you must commit changes manually (for example, with the SQL command COMMIT). IMMEDIATE functions in the same manner as ON. n commits pending changes to the database after Oracle Database executes n successful SQL INSERT, UPDATE, or DELETE commands, or PL/SQL blocks. n cannot be less than zero or greater than 2,000,000,000. The statement counter is reset to zero after successful completion of n INSERT, UPDATE or DELETE commands or PL/SQL blocks, a commit, a rollback, or a SET AUTOCOMMIT command.

 

SET AUTOCOMMIT does not alter the commit behavior when SQL*Plus exits. Any uncommitted data is committed by default.

 

Note:

For this feature, a PL/SQL block is considered one transaction, regardless of the actual number of SQL commands contained within it.

SET AUTOP[RINT] {ON | OFF}

Sets the automatic printing of bind variables.

 

ON or OFF controls whether SQL*Plus automatically displays bind variables (referenced in a successful PL/SQL block or used in an EXECUTE command).

 

See PRINT for more information about displaying bind variables.

 

SET AUTORECOVERY [ON | OFF]

ON sets the RECOVER command to automatically apply the default filenames of archived redo log files needed during recovery.

 

No interaction is needed, provided the necessary files are in the expected locations with the expected names. The filenames used are derived from the values of the initialization parameters LOG_ARCHIVE_DEST and LOG_ARCHIVE_FORMAT.

 

OFF, the default option, requires that you enter the filenames manually or accept the suggested default filename given. See RECOVER for more information about database recovery.

 

Example

 

To set the recovery mode to AUTOMATIC, enter

 

SET AUTORECOVERY ON

RECOVER DATABASE

SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]

Displays a report on the execution of successful SQL DML statements (such as SELECT, INSERT, UPDATE, DELETE or MERGE).

 

The report can include execution statistics and the query execution path.

 

SQL*Plus report output may differ for DML if dynamic sampling is in effect.

 

OFF does not display a trace report. ON displays a trace report. TRACEONLY displays a trace report, but does not print query data, if any. EXPLAIN shows the query execution path by performing an EXPLAIN PLAN. STATISTICS displays SQL statement statistics. Information about EXPLAIN PLAN is documented in the Oracle Database SQL Language Reference.

 

Using ON or TRACEONLY with no explicit options defaults to EXPLAIN STATISTICS.

 

The TRACEONLY option may be useful to suppress the query data of large queries. If STATISTICS is specified, SQL*Plus still fetches the query data from the server, however, the data is not displayed.

 

The AUTOTRACE report is printed after the statement has successfully completed.

 

Information about Execution Plans and the statistics is documented in the Oracle Database Performance Tuning Guide.

 

When SQL*Plus produces a STATISTICS report, a second connection to the database is automatically created. This connection is closed when the STATISTICS option is set to OFF, or you log out of SQL*Plus.

 

The formatting of your AUTOTRACE report may vary depending on the version of the server to which you are connected and the configuration of the server. The additional information and tabular output of AUTOTRACE PLAN is supported when connecting to Oracle Database 10g (Release 10.1) or later. When you connect to an earlier database, the older form or AUTOTRACE reporting is used.

 

AUTOTRACE is not available when FIPS flagging is enabled.

 

See Tracing Statements for more information on AUTOTRACE.

 

SET BLO[CKTERMINATOR] {. | c | ON | OFF}

Sets the character used to end PL/SQL blocks to c.

 

It cannot be an alphanumeric character or a whitespace. To execute the block, you must issue a RUN or / (slash) command.

 

OFF means that SQL*Plus recognizes no PL/SQL block terminator. ON changes the value of c back to the default period (.), not the most recently used character.

 

SET CMDS[EP] {; | c | ON | OFF}

Sets the non-alphanumeric character used to separate multiple SQL*Plus commands entered on one line to c.

 

ON or OFF controls whether you can enter multiple commands on a line. ON automatically sets the command separator character to a semicolon (;).

 

Example

 

To specify a title with TTITLE and format a column with COLUMN, both on the same line, enter

 

SET CMDSEP +

TTITLE LEFT 'SALARIES' + COLUMN SALARY FORMAT $99,999

SELECT LAST_NAME, SALARY FROM EMP_DETAILS_VIEW

WHERE JOB_ID = 'SH_CLERK';

SALARIES

LAST_NAME                   SALARY

------------------------- --------

Taylor                      $3,200

Fleaur                      $3,100

Sullivan                    $2,500

Geoni                       $2,800

Sarchand                    $4,200

Bull                        $4,100

Dellinger                   $3,400

Cabrio                      $3,000

Chung                       $3,800

Dilly                       $3,600

Gates                       $2,900

Perkins                     $2,500

Bell                        $4,000

Everett                     $3,900

McCain                      $3,200

Jones                       $2,800

 

SALARIES

LAST_NAME                   SALARY

------------------------- --------

Walsh                       $3,100

Feeney                      $3,000

OConnell                    $2,600

Grant                       $2,600

 

20 rows selected.

 

SET COLSEP { | text}

Sets the column separator character printed between columns in output.

 

If the COLSEP variable contains blanks or punctuation characters, you must enclose it with single quotes. The default value for text is a single space.

 

In multi-line rows, the column separator does not print between columns that begin on different lines. The column separator does not appear on blank lines produced by BREAK ... SKIP n and does not overwrite the record separator. See SET RECSEP {WR[APPED] | EA[CH] | OFF} for more information.

 

Example

 

To set the column separator to "|" enter

 

SET MARKUP HTML PREFORMAT ON

SET COLSEP '|'

SELECT LAST_NAME, JOB_ID, DEPARTMENT_ID

FROM EMP_DETAILS_VIEW

WHERE DEPARTMENT_ID = 20;

LAST_NAME                |JOB_ID    |DEPARTMENT_ID

-------------------------|----------|-------------

Hartstein                |MK_MAN    |           20

Fay                      |MK_REP    |           20

 

SET CON[CAT] {. | c | ON | OFF}

Sets the character used to terminate a substitution variable reference when SQL*Plus would otherwise interpret the next character as a part of the variable name.

 

SQL*Plus resets the value of CONCAT to a period when you switch CONCAT on.

 

SET COPYTYPECHECK {ON | OFF}

Sets the suppression of the comparison of datatypes while inserting or appending to tables with the COPY command.

 

This is to facilitate copying to DB2, which requires that a CHAR be copied to a DB2 DATE.

 

SET DEF[INE] {& | c | ON | OFF}

Sets the character used to prefix substitution variables to c.

 

ON or OFF controls whether SQL*Plus will scan commands for substitution variables and replace them with their values. ON changes the value of c back to the default '&', not the most recently used character. The setting of DEFINE to OFF overrides the setting of the SCAN variable.

 

See SET SCAN {ON|OFF} (obsolete) for more information on the SCAN variable.

 

SET DESCRIBE [DEPTH {1 | n | ALL}] [LINENUM {ON | OFF}] [INDENT {ON | OFF}]

Sets the depth of the level to which you can recursively describe an object.

 

The valid range of the DEPTH clause is from 1 to 50. If you SET DESCRIBE DEPTH ALL, then the depth will be set to 50, which is the maximum level allowed. You can also display the line number and indentation of the attribute or column name when an object contains multiple object types. Use the SET LINESIZE command to control the width of the data displayed.

 

See DESCRIBE for more information about describing objects.

 

Example

 

To create an object type ADDRESS, enter

 

CREATE TYPE ADDRESS AS OBJECT

  ( STREET  VARCHAR2(20),

    CITY    VARCHAR2(20)

  );

/

Type created

 

To create the table EMPLOYEE that contains a nested object, EMPADDR, of type ADDRESS, enter

 

CREATE TABLE EMPLOYEE

  (LAST_NAME VARCHAR2(30),

   EMPADDR ADDRESS,

   JOB_ID VARCHAR2(20),

   SALARY NUMBER(7,2)

  );

/

Table created

 

To describe the table EMPLOYEE to a depth of two levels, and to indent the output and display line numbers, enter:

 

SET DESCRIBE DEPTH 2 LINENUM ON INDENT ON

DESCRIBE employee

       Name                            Null?    Type

       ------------------------------- -------- --------------------------

1      LAST_NAME                                VARCHAR2(30)

2      EMPADDR                                  ADDRESS

3    2   STREET                                 VARCHAR2(20)

4    2   CITY                                   VARCHAR2(20)

5      JOB_ID                                   VARCHAR2(20)

6      SALARY                                   NUMBER(7,2)

 

SET ECHO {ON | OFF}

Controls whether or not to echo commands in a script that is executed with @, @@ or START. ON displays the commands on screen. OFF suppresses the display. ECHO does not affect the display of commands you enter interactively or redirect to SQL*Plus from the operating system.

 

SET EDITF[ILE] file_name[.ext]

Sets the default filename for the EDIT command. See EDIT for more information about the EDIT command. The default filename for the EDIT command is afiedt.buf which is the SQL buffer. The buffer has no command history list and does not record SQL*Plus commands.

 

You can include a path and/or file extension. See SET SUF[FIX] {SQL | text} for information on changing the default extension. The default filename and maximum filename length are operating system specific.

 

SET EMB[EDDED] {ON | OFF}

Controls where on a page each report begins.

 

OFF forces each report to start at the top of a new page. ON enables a report to begin anywhere on a page. Set EMBEDDED to ON when you want a report to begin printing immediately following the end of the previously run report.

 

SET ERRORL[OGGING] {ON | OFF} [TABLE [schema.]tablename] [TRUNCATE] [IDENTIFIER identifier]

Turns SQL*Plus error logging ON or OFF. Error logging records SQL, PL/SQL and SQL*Plus errors and associated parameters in an error log table. You can then query the log table to review errors resulting from a query. When error logging is ON, errors are recorded whether the query is run interactively or from a script. This is particularly useful for capturing errors generated from long running queries and avoids capturing all output using the SPOOL command, or having to remain present during the run.

 

By default, errors are written to a the table SPERRORLOG in your schema. If this table does not exist, it is created automatically. You can also use the TABLE schema.tablename option to specify other tables to use. When using a table other than SPERRORLOG, it must already exist, and you must have access to it. See Creating a User Defined Error Log Table.

 

If an internal error occurs, to avoid recursion errors caused by the errorlog calling itself, errorlogging is automatically set OFF.

 

Error logging is set OFF by default.

 

ON

 

Writes ORA, PLS and SP2 errors to the default table, SPERRORLOG.

 

OFF

 

Disables error .

 

TABLE [schema.]tablename

 

Specifies a user defined table to use instead of the default, SPERRORLOG. If you omit schema. the table is created in the current schema. The table you specify must exist, and you must have access permissions.

 

If the table specified does not exist, or you do not have access, an error message is displayed and the default table, SPERRORLOG, is used.

 

TRUNCATE

 

Clears all existing rows in the error log table and begins recording errors from the current session.

 

IDENTIFIER identifier

 

A user defined string to identify errors. You can use it to identify errors from a particular session or from a particular version of a query.

 

Creating a User Defined Error Log Table

 

You can create one or more error log tables to use other than the default. Before specifying a user defined error log table with the TABLE schema.tablename option, you must create it and ensure that you have permissions to access it. The error log table has the following column definitions:

 

Table 12-4 SQL*Plus Error Log Column Definitions

 

Column  Type    Description

username

 

VARCHAR(256)

 

Oracle account name.

 

timestamp

 

TIMESTAMP

 

Time when the error occurred.

 

script

 

VARCHAR(1024)

 

Name of the originating script if applicable.

 

identifier

 

VARCHAR(256)

 

User defined identifier string.

 

message

 

CLOB

 

ORA, PLA or SP2 error message. No feed back messages are included. For example, "PL/SQL Block Created" is not recorded.

 

statement

 

CLOB

 

The statement causing the error.

 

 

Using User Defined Error Log Tables

 

To use a user defined log table, you must have permission to access the table, and you must issue the SET ERRORLOGGING command with the TABLE schema.tablename option to identify the error log table and the schema if applicable.

 

Querying Error Log Tables

 

To view the records recorded in an error log table, you query the columns you want to view as for any table. The columns available are shown in Table 12-4, "SQL*Plus Error Log Column Definitions".

 

Example

 

To use the default error log table to record query errors from a script, myfile.sql, which contains the following:

 

VARIABLE U REFCURSOR

BEGIN

  OPEN :U FOR SELECT * FROM DEPT;

END;

/

 

SHOW ERRORS PROCEDURE 'SSS'

 

SET GARBAGE

 

SELECT *

FROM

GARBAGE

;

Enter the following:

 

SET ERRORLOGGING ON

@myfile

which produces the following output:

 

open :u for select * from dept;

                          *

ERROR at line 2:

ORA-6550: line 2, column 29:

PLS-00201: ORA-00942: table or view does not exist

ORA-6550: line 2, column 16:

PL/SQL: SQL Statement ignored

 

ERROR:

ORA-00907: missing right parenthesis

 

SP2-0158: unknown SET option "garbage"

 

garbage

*

ERROR at line 3:

ORA-00942: table or view does not exist

 

To view the errror log written to the default error log table, SPERRORLOG, enter:

 

SELECT TIMESTAMP, USERNAME, SCRIPT, IDENTIFIER, STATEMENT, MESSAGE

FROM SPERRORLOG;

which produces the following output:

 

TIMESTAMP   USERNAME    SCRIPT  IDENTIFIER  STATEMENT   MESSAGE

Mon May 08 21:30:03 2006    SYSTEM  d:\myfile.sql      open :u for select * from dept; ORA-06550: line 2, column 27:

Mon May 08 21:30:05 2006    SYSTEM  d:\myfile.sql      open :u for select * from dept; PL/SQL: ORA-00942: table or view does not exist

Mon May 08 21:30:05 2006    SYSTEM  d:\myfile.sql      open :u for select * from dept; ORA-06550: line 2, column 13:

Mon May 08 21:30:05 2006    SYSTEM  d:\myfile.sql      open :u for select * from dept; PL/SQL: SQL Statement ignored

Mon May 08 21:30:06 2006    SYSTEM  d:\myfile.sql      show errors procedure "sss" ORA-00907: missing right parenthesis

Mon May 08 21:30:09 2006    SYSTEM  d:\myfile.sql      set garbage SP2-0158: unknown SET option "garbage"

Mon May 08 21:30:10 2006    SYSTEM  d:\myfile.sql      garbage ORA-00942: table or view does not exist

Example 2

 

To use a user defined error log table to record query errors from a script, myfile.sql, which contains the following:

 

VARIABLE U REFCURSOR

BEGIN

  OPEN :U FOR SELECT * FROM DEPT;

END;

/

 

SHOW ERRORS PROCEDURE 'SSS'

 

SET GARBAGE

 

SELECT *

FROM

GARBAGE

;

Enter the following:

 

SET ERRORLOGGING ON

@MYFILE

which produces the following output:

 

open :u for select * from dept;

                          *

ERROR at line 2:

ORA-6550: line 2, column 29:

PLS-00201: ORA-00942: table or view does not exist

ORA-6550: line 2, column 16:

PL/SQL: SQL Statement ignored

 

ERROR:

ORA-00907: missing right parenthesis

 

SP2-0158: unknown SET option "garbage"

 

garbage

*

ERROR at line 3:

ORA-00942: table or view does not exist

 

To view the errror log written to the default error log table, SPERRORLOG, enter:

 

SELECT TIMESTAMP, USERNAME, SCRIPT, IDENTIFIER, STATEMENT, MESSAGE

FROM SPERRORLOG;

which produces the following output:

 

TIMESTAMP   USERNAME    SCRIPT  IDENTIFIER  STATEMENT   MESSAGE

Mon May 08 21:30:03 2006    SYSTEM  d:\myfile.sql      open :u for select * from dept; ORA-06550: line 2, column 27:

Mon May 08 21:30:05 2006    SYSTEM  d:\myfile.sql      open :u for select * from dept; PL/SQL: ORA-00942: table or view does not exist

Mon May 08 21:30:05 2006    SYSTEM  d:\myfile.sql      open :u for select * from dept; ORA-06550: line 2, column 13:

Mon May 08 21:30:05 2006    SYSTEM  d:\myfile.sql      open :u for select * from dept; PL/SQL: SQL Statement ignored

Mon May 08 21:30:06 2006    SYSTEM  d:\myfile.sql      show errors procedure "sss" ORA-00907: missing right parenthesis

Mon May 08 21:30:09 2006    SYSTEM  d:\myfile.sql      set garbage SP2-0158: unknown SET option "garbage"

Mon May 08 21:30:10 2006    SYSTEM  d:\myfile.sql      garbage ORA-00942: table or view does not exist

Example 3

 

To use an error log table other than the default:

 

Create the error log table you want to use

 

Specify the table you want to use with the TABLE option of the SET ERRORLOGGING ON command.

 

The error log table must have the column definitions defined in Table 12-4, "SQL*Plus Error Log Column Definitions".

 

John wants to use an error log table named john_sperrorlog. John would run the following SQL statements to create the new error log table:

 

DROP TABLE john_sperrorlog;  

CREATE TABLE john_sperrorlog(username   VARCHAR(256),

timestamp  TIMESTAMP,

script     VARCHAR(1024),

identifier VARCHAR(256),

message    CLOB,

statement  CLOB);

John then issues the following SET command to enable error logging using the newly created error log table

 

SET ERRORLOGGING ON TABLE john_sperrorlog

All error logging for John is now recorded to john_sperrorlog, and not to the default error log table, SPERRORLOG.

 

Access privileges for the error log table are handled in the same way as for any user table. See the Oracle Database SQL Language Reference for more information about granting access to tables.

 

SET ESC[APE] {\ | c | ON | OFF}

Defines the character used as the escape character.

 

OFF undefines the escape character. ON enables the escape character. ON changes the value of c back to the default "\".

 

You can use the escape character before the substitution character (set through SET DEFINE) to indicate that SQL*Plus should treat the substitution character as an ordinary character rather than as a request for variable substitution.

 

Example

 

If you define the escape character as an exclamation point (!), then

 

SET ESCAPE !

ACCEPT v1 PROMPT 'Enter !&1:'

displays this prompt:

 

Enter &1:

 

To set the escape character back to the default value of \ (backslash), enter

 

SET ESCAPE ON

SET ESCCHAR {@ | ? | % | $ | OFF}

Specifies a character to be escaped and not interpreted when used in a file name for the SPOOL, START, @, RUN and EDIT commands. These special characters are translated to the following:

 

While it is not recommended that these characters are used in filenames, if you have legacy files that do use them, it might be useful to include a SET ESCCHAR command in your GLogin file to implement it across your site.

 

Example

 

If you include the character '$' in your filename, then

 

SET ESCCHAR $

RUN MYFILE$

behaves normally.

 

SET EXITC[OMMIT] {ON | OFF}

Specifies whether the default EXIT behavior is COMMIT or ROLLBACK.

 

The default setting is ON, which means that work is committed on exit, whether you expected it to be committed or not. Set EXITCOMMIT OFF to rollback work on exit.

 

Table 12-5 shows the exit action associated with combinations of SET commands (AUTOCOMMIT & EXITCOMMIT) and the EXIT command.

 

Table 12-5 Exit Behavior: AUTOCOMMIT, EXITCOMMIT, EXIT

 

AUTOCOMMIT  EXITCOMMIT  EXIT    Exit Behavior

ON

 

ON

 

-

 

COMMIT

 

ON

 

OFF

 

-

 

COMMIT

 

OFF

 

ON

 

-

 

COMMIT

 

OFF

 

OFF

 

-

 

ROLLBACK

 

ON

 

ON

 

COMMIT

 

COMMIT

 

ON

 

ON

 

ROLLBACK

 

COMMIT

 

ON

 

OFF

 

COMMIT

 

COMMIT

 

ON

 

OFF

 

ROLLBACK

 

COMMIT

 

OFF

 

ON

 

COMMIT

 

COMMIT

 

OFF

 

ON

 

ROLLBACK

 

ROLLBACK

 

OFF

 

OFF

 

COMMIT

 

COMMIT

 

OFF

 

OFF

 

ROLLBACK

 

ROLLBACK

 

 

SET FEED[BACK] {6 | n | ON | OFF}

Displays the number of records returned by a script when a script selects at least n records.

 

ON or OFF turns this display on or off. Turning feedback ON sets n to 1. Setting feedback to zero is equivalent to turning it OFF.

 

SET FEEDBACK OFF also turns off the statement confirmation messages such as 'Table created' and 'PL/SQL procedure successfully completed' that are displayed after successful SQL or PL/SQL statements.

 

SET FLAGGER {OFF | ENTRY | INTERMED[IATE] | FULL}

Checks to make sure that SQL statements conform to the ANSI/ISO SQL92 standard.

 

If any non-standard constructs are found, the Oracle Database Server flags them as errors and displays the violating syntax. This is the equivalent of the SQL language ALTER SESSION SET FLAGGER command.

 

You may execute SET FLAGGER even if you are not connected to a database. FIPS flagging will remain in effect across SQL*Plus sessions until a SET FLAGGER OFF (or ALTER SESSION SET FLAGGER = OFF) command is successful or you exit SQL*Plus.

 

When FIPS flagging is enabled, SQL*Plus displays a warning for the CONNECT, DISCONNECT, and ALTER SESSION SET FLAGGER commands, even if they are successful.

 

SET FLU[SH] {ON | OFF}

Controls when output is sent to the user's display device. OFF enables the operating system to buffer output. ON disables buffering. FLUSH only affects display output, it does not affect spooled output.

 

Use OFF only when you run a script non-interactively (that is, when you do not need to see output and/or prompts until the script finishes running). The use of FLUSH OFF may improve performance by reducing the amount of program I/O.

 

SET HEA[DING] {ON | OFF}

Controls printing of column headings in reports.

 

ON prints column headings in reports; OFF suppresses column headings.

 

The SET HEADING OFF command does not affect the column width displayed, it only suppresses the printing of the column header itself.

 

Example

 

To suppress the display of column headings in a report, enter

 

SET HEADING OFF

If you then run a SQL SELECT command

 

SELECT LAST_NAME, SALARY

FROM EMP_DETAILS_VIEW

WHERE JOB_ID = 'AC_MGR';

the following output results:

 

Higgins 12000

 

To turn the display of column headings back on, enter

 

SET HEADING ON

SET HEADS[EP] { | c | ON | OFF}

Defines the character used as a line break in column headings.

 

The heading separator character cannot be alphanumeric or white space. You can use the heading separator character in the COLUMN command and in the old forms of BTITLE and TTITLE to divide a column heading or title onto more than one line. ON or OFF turns heading separation on or off. When heading separation is OFF, SQL*Plus prints a heading separator character like any other character. ON changes the value of c back to the default "|".

 

SET INSTANCE [instance_path | LOCAL]

Changes the default instance for your session to the specified instance path.

 

Using the SET INSTANCE command does not connect to a database. The default instance is used for commands when no instance is specified. Any commands preceding the first use of SET INSTANCE communicate with the default instance.

 

To reset the instance to the default value for your operating system, you can either enter SET INSTANCE with no instance_path or SET INSTANCE LOCAL.

 

Note, you can only change the instance when you are not currently connected to any instance. That is, you must first make sure that you have disconnected from the current instance, then set or change the instance, and reconnect to an instance in order for the new setting to be enabled.

 

This command may only be issued when Oracle Net is running. You can use any valid Oracle Net connect identifier as the specified instance path. See your operating system-specific Oracle Database documentation for a complete description of how your operating system specifies Oracle Net connect identifiers. The maximum length of the instance path is 64 characters.

 

Example

 

To set the default instance to "PROD1" enter

 

DISCONNECT

SET INSTANCE PROD1

To set the instance back to the default of local, enter

 

SET INSTANCE local

You must disconnect from any connected instances to change the instance.

 

SET LIN[ESIZE] {80 | n}

Sets the total number of characters that SQL*Plus displays on one line before beginning a new line.

 

It also controls the position of centered and right-aligned text in TTITLE, BTITLE, REPHEADER and REPFOOTER. Changing the linesize setting can affect text wrapping in output from the DESCRIBE command. DESCRIBE output columns are typically allocated a proportion of the linesize. Decreasing or increasing the linesize may give unexpected text wrapping in your display. You can define LINESIZE as a value from 1 to a maximum that is system dependent.

 

SET LOBOF[FSET] {1 | n}

Sets the starting position from which BLOB, BFILE, CLOB and NCLOB data is retrieved and displayed.

 

Example

 

To set the starting position from which a CLOB column's data is retrieved to the 22nd position, enter

 

SET LOBOFFSET 22

The CLOB data will wrap on your screen; SQL*Plus will not truncate until the 23rd character.

 

SET LOGSOURCE [pathname]

Specifies the location from which archive logs are retrieved during recovery.

 

The default value is set by the LOG_ARCHIVE_DEST initialization parameter in the Oracle Database initialization file, init.ora. Using the SET LOGSOURCE command without a pathname restores the default location.

 

Example

 

To set the default location of log files for recovery to the directory "/usr/oracle10/dbs/arch" enter

 

SET LOGSOURCE "/usr/oracle10/dbs/arch"

RECOVER DATABASE

SET LONG {80 | n}

Sets maximum width (in bytes) for displaying BLOB, BFILE, CLOB, LONG, NCLOB and XMLType values; and for copying LONG values.

 

Querying LONG columns requires enough local memory to store the amount of data specified by SET LONG, irrespective of the value of the SET LONGCHUNKSIZE command. This requirement does not apply when querying LOBs.

 

It is recommended that you do not create tables with LONG columns. LONG columns are supported only for backward compatibility. Use LOB columns (BLOB, BFILE, CLOB, NCLOB) instead. LOB columns have fewer restrictions than LONG columns and are still being enhanced.

 

The maximum value of n is 2,000,000,000 bytes. It is important to check that the memory required by your SET LONG command is available on your machine, for example:

 

SET LONG 2000000000

assumes that available RAM (random access memory) on the machine exceeds 2 gigabytes.

 

Example

 

To set the maximum number of bytes to fetch for displaying and copying LONG values, to 500, enter

 

SET LONG 500

The LONG data will wrap on your screen; SQL*Plus will not truncate until the 501st byte. The default for LONG is 80 bytes.

 

SET LONGC[HUNKSIZE] {80 | n}

Sets the size (in bytes) of the increments SQL*Plus uses to retrieve a BLOB, BFILE, CLOB, LONG, NCLOB or XMLType value.

 

LONGCHUNKSIZE is not used for object relational queries such as CLOB, or NCLOB.

 

Example

 

To set the size of the increments in which SQL*Plus retrieves LONG values to 100 bytes, enter

 

SET LONGCHUNKSIZE 100

The LONG data will be retrieved in increments of 100 bytes until the entire value is retrieved or the value of SET LONG is reached, whichever is the smaller.

 

SET MARK[UP] HTML [ON | OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON | OFF}] [SPOOL {ON | OFF}] [PRE[FORMAT] {ON | OFF}]

Outputs HTML marked up text.

 

To be effective, SET MARKUP commands that change values in dynamic report output must occur before statements that produce query output. The first statement that produces query output triggers the output of information affected by SET MARKUP such as HEAD and TABLE settings. Subsequent SET MARKUP commands have no effect on the information already sent to the report.

 

SET MARKUP only specifies that SQL*Plus output will be HTML encoded. You must use SET MARKUP HTML ON SPOOL ON and the SQL*Plus SPOOL command to create and name a spool file, and to begin writing HMTL output to it. SET MARKUP has the same options and behavior as SQLPLUS -MARKUP.

 

See MARKUP Options for detailed information. For examples of usage, see SET MARK[UP] HTML [ON | OFF] [HEAD text] [BODY text] [TABLE text] [ENTMAP {ON | OFF}] [SPOOL {ON | OFF}] [PRE[FORMAT] {ON | OFF}], and Generating HTML Reports from SQL*Plus.

 

Use the SHOW MARKUP command to view the status of MARKUP options.

 

Example

 

The following is a script which uses the SET MARKUP HTML command to enable HTML marked up text to be spooled to a specified file:

 

Note:

The SET MARKUP example command is laid out for readability using line continuation characters "–" and spacing. Command options are concatenated in normal entry.

Use your favorite text editor to enter the commands necessary to set up the HTML options and the query you want for your report.

 

SET MARKUP HTML ON SPOOL ON HEAD "<TITLE>SQL*Plus Report</title> -

<STYLE TYPE='TEXT/CSS'><!--BODY {background: ffffc6} --></STYLE>"

SET ECHO OFF

SPOOL employee.htm

SELECT FIRST_NAME, LAST_NAME, SALARY

FROM EMP_DETAILS_VIEW

WHERE SALARY>12000;

SPOOL OFF

SET MARKUP HTML OFF

SET ECHO ON

As this script contains SQL*Plus commands, do not attempt to run it with / (slash) from the buffer because it will fail. Save the script in your text editor and use START to execute it:

 

START employee.sql

As well as writing the HTML spool file, employee.htm, the output is also displayed on screen because SET TERMOUT defaults to ON. You can view the spool file, employee.htm, in your web browser. It should appear something like the following:

 

Description of markup.gif follows

Description of the illustration markup.gif

 

SET NEWP[AGE] {1 | n | NONE}

Sets the number of blank lines to be printed from the top of each page to the top title. A value of zero places a formfeed at the beginning of each page (including the first page) and clears the screen on most terminals. If you set NEWPAGE to NONE, SQL*Plus does not print a blank line or formfeed between the report pages.

 

SET NULL text

Sets the text displayed whenever a null value occurs in the result of a SQL SELECT command.

 

Use the NULL clause of the COLUMN command to override the setting of the NULL variable for a given column. The default output for a null is blank ("").

 

SET NUMF[ORMAT] format

Sets the default format for displaying numbers. See the FORMAT clause of the COLUMN command for number format descriptions. Enter a number format for format. To use the default field width and formatting model specified by SET NUMWIDTH, enter

 

SET NUMFORMAT ""

SET NUM[WIDTH] {10 | n}

Sets the default width for displaying numbers. See the FORMAT clause of the COLUMN command for number format descriptions.

 

COLUMN FORMAT settings take precedence over SET NUMFORMAT settings, which take precedence over SET NUMWIDTH settings.

 

SET PAGES[IZE] {14 | n}

Sets the number of lines on each page of output. You can set PAGESIZE to zero to suppress all headings, page breaks, titles, the initial blank line, and other formatting information.

 

SET RECSEPCHAR { | c}

Defines the character to display or print to separate records.

 

A record separator consists of a single line of the RECSEPCHAR (record separating character) repeated LINESIZE times. The default is a single space.

 

SET SERVEROUT[PUT] {ON | OFF} [SIZE {n | UNL[IMITED]}] [FOR[MAT] {WRA[PPED] | WOR[D_WRAPPED] | TRU[NCATED]}]

Controls whether to display output (that is, DBMS_OUTPUT.PUT_LINE) of stored procedures or PL/SQL blocks in SQL*Plus. The DBMS_OUTPUT line length limit is 32767 bytes.

 

OFF suppresses the output of DBMS_OUTPUT.PUT_LINE. ON displays the output.

 

ON uses the SIZE and FORMAT of the previous SET SERVEROUTPUT ON SIZE n FORMAT f, or uses default values if no SET SERVEROUTPUT command was previously issued in the current connection.

 

SIZE sets the number of bytes of the output that can be buffered within the Oracle Database server. The default is UNLIMITED. n cannot be less than 2000 or greater than 1,000,000.

 

Resources are not pre-allocated when SERVEROUTPUT is set. As there is no performance penalty, use UNLIMITED unless you want to conserve physical memory.

 

Every server output line begins on a new output line.

 

When WRAPPED is enabled SQL*Plus wraps the server output within the line size specified by SET LINESIZE, beginning new lines when required.

 

When WORD_WRAPPED is enabled, each line of server output is wrapped within the line size specified by SET LINESIZE. Lines are broken on word boundaries. SQL*Plus left justifies each line, skipping all leading whitespace.

 

When TRUNCATED is enabled, each line of server output is truncated to the line size specified by SET LINESIZE.

 

For detailed information about using UTL_FILE and associated utilities, see the Oracle Database PL/SQL Packages and Types Reference .

 

For more information on DBMS_OUTPUT.PUT_LINE, see your Oracle Database Advanced Application Developer's Guide.

 

Example

 

To enable text display in a PL/SQL block using DBMS_OUTPUT.PUT_LINE, enter

 

SET SERVEROUTPUT ON

The following example shows what happens when you execute an anonymous procedure with SET SERVEROUTPUT ON:

 

BEGIN

  DBMS_OUTPUT.PUT_LINE('Task is complete');

END;

/

Task is complete.

PL/SQL procedure successfully completed.

 

The following example shows what happens when you create a trigger with SET SERVEROUTPUT ON:

 

CREATE TABLE SERVER_TAB (Letter CHAR);

CREATE TRIGGER SERVER_TRIG BEFORE INSERT OR UPDATE -

OR DELETE

ON SERVER_TAB

BEGIN

DBMS_OUTPUT.PUT_LINE('Task is complete.');

END;

/

Trigger Created.

 

INSERT INTO SERVER_TAB VALUES ('M');

DROP TABLE SERVER_TAB;

/* Remove SERVER_TAB from database */

Task is complete.

1 row created.

 

To set the output to WORD_WRAPPED, enter

 

SET SERVEROUTPUT ON FORMAT WORD_WRAPPED

SET LINESIZE 20

BEGIN

  DBMS_OUTPUT.PUT_LINE('If there is nothing left to do');

  DBMS_OUTPUT.PUT_LINE('shall we continue with plan B?');

END;

/

If there is nothing

left to do

shall we continue

with plan B?

 

To set the output to TRUNCATED, enter

 

SET SERVEROUTPUT ON FORMAT TRUNCATED

SET LINESIZE 20

BEGIN

  DBMS_OUTPUT.PUT_LINE('If there is nothing left to do');

  DBMS_OUTPUT.PUT_LINE('shall we continue with plan B?');

END;

/

If there is nothing

shall we continue wi

 

SET SHIFT[INOUT] {VIS[IBLE] | INV[ISIBLE]}

Enables correct alignment for terminals that display shift characters. The SET SHIFTINOUT command is useful for terminals which display shift characters together with data (for example, IBM 3270 terminals). You can only use this command with shift sensitive character sets (for example, JA16DBCS).

 

Use VISIBLE for terminals that display shift characters as a visible character (for example, a space or a colon). INVISIBLE is the opposite and does not display any shift characters.

 

Example

 

To enable the display of shift characters on a terminal that supports them, enter

 

SET SHIFTINOUT VISIBLE

SELECT LAST_NAME, JOB_ID FROM EMP_DETAILS_VIEW

WHERE SALARY > 12000;

LAST_NAME      JOB_ID

---------- ----------

:JJOO:       :AABBCC:

:AA:abc       :DDEE:e

 

where ":" = visible shift character uppercase represents multibyte characters

 

lowercase represents singlebyte characters

 

SET SHOW[MODE] {ON | OFF}

Controls whether SQL*Plus lists the old and new settings of a SQL*Plus system variable when you change the setting with SET. ON lists the settings; OFF suppresses the listing. SHOWMODE ON has the same behavior as the obsolete SHOWMODE BOTH.

 

SET SQLBL[ANKLINES] {ON | OFF}

Controls whether SQL*Plus puts blank lines within a SQL command or script. ON interprets blank lines and new lines as part of a SQL command or script. OFF, the default value, does not allow blank lines or new lines in a SQL command or script or script.

 

Enter the BLOCKTERMINATOR to stop SQL command entry without running the SQL command. Enter the SQLTERMINATOR character to stop SQL command entry and run the SQL statement.

 

Example

 

To allow blank lines in a SQL statement, enter

 

SET SQLBLANKLINES ON

REM Using the SQLTERMINATOR (default is ";")

REM Could have used the BLOCKTERMINATOR (default is ".")

SELECT *

 

FROM

 

DUAL

 

;

The following output results:

 

D

-

X

 

SET SQLC[ASE] {MIX[ED] | LO[WER] | UP[PER]}

Converts the case of SQL commands and PL/SQL blocks just prior to execution.

 

SQL*Plus converts all text within the command, including quoted literals and identifiers, to uppercase if SQLCASE equals UPPER, to lowercase if SQLCASE equals LOWER, and makes no changes if SQLCASE equals MIXED.

 

SQLCASE does not change the SQL buffer itself.

 

SET SQLCO[NTINUE] {> | text}

Sets the character sequence SQL*Plus displays as a prompt after you continue a SQL*Plus command on an additional line using a hyphen (–).

 

Example

 

To set the SQL*Plus command continuation prompt to an exclamation point followed by a space, enter

 

SET SQLCONTINUE '! '

SQL*Plus will prompt for continuation as follows:

 

TTITLE 'MONTHLY INCOME' -

! RIGHT SQL.PNO SKIP 2 -

! CENTER 'PC DIVISION'

The default continuation prompt is "> ".

 

SET SQLN[UMBER] {ON | OFF}

Sets the prompt for the second and subsequent lines of a SQL command or PL/SQL block. ON sets the prompt to be the line number. OFF sets the prompt to the value of SQLPROMPT.

 

SET SQLPLUSCOMPAT[IBILITY] {x.y[.z]}

Sets the behavior to that of the release or version specified by x.y[.z].

 

Where x is the version number, y is the release number, and z is the update number. For example, 8.1.7, 9.0.1 or 10.2. The features affected by SQLPLUSCOMPATIBILITY are tabulated in the SQL*Plus Compatibility Matrix shown. You can also set the value of SQLPLUSCOMPATIBILITY using the -C[OMPATIBILITY] argument of the SQLPLUS command when starting SQL*Plus from the command line.

 

The default setting for SQLPLUSCOMPATIBILITY is the value of the SQL*Plus client.

 

It is recommended that you add SET SQLPLUSCOMPATIBILITY 11.2 to your scripts to maximize their compatibility with future versions of SQL*Plus.

 

SQL*Plus Compatibility Matrix

The SQL*Plus Compatibility Matrix tabulates behavior affected by each SQL*Plus compatibility setting. SQL*Plus compatibility modes can be set in three ways:

 

You can include a SET SQLPLUSCOMPATIBILITY command in your site or user profile. On installation, there is no SET SQLPLUSCOMPATIBILITY setting in glogin.sql. Therefore the default compatibility is 11.2.

 

You can use the SQLPLUS -C[OMPATIBILITY] {x.y[.z]} command argument at startup to set the compatibility mode of that session.

 

You can use the SET SQLPLUSCOMPATIBILITY {x.y[.z]} command during a session to set the SQL*Plus behavior you want for that session.

 

The following table shows the release of SQL*Plus which introduced the behavior change, and hence the minimum value of SQLPLUSCOMPATIBILITY to obtain that behavior. For example, to obtain the earlier behavior of the VARIABLE command, you must either use a version of SQL*Plus earlier than 9.0.1, or you must use a SQLPLUSCOMPATIBILITY value of less than 9.0.1. The lowest value that can be set for SQLPLUSCOMPATIBILITY is 7.3.4

 

Table 12-6 Compatibility Matrix

 

Value   Consequence When available

>=10.1

 

SHOW ERRORS sorts PL/SQL error messages using new columns only available in Oracle Database 10g.

 

10.1

 

>=10.1

 

SPOOL Options CREATE, REPLACE, SAVE were added which may affect filename parsing on some platforms.

 

10.1

 

>=10.1

 

SET SQLPROMPT

 

10.1

 

>=10.1

 

Whitespace characters are allowed in Windows file names that are enclosed in quotes. Some other special punctuation characters are now disallowed in Windows.

 

10.1

 

>=10.1

 

Glogin/login files are called for each reconnect.

 

10.1

 

  <10.1

 

Uses the obsolete DOC> prompt when echoing /* comments.

 

10.1

 

>= 9.2

 

A wide column defined FOLD_AFTER may be displayed at the start of a new line. Otherwise it is incorrectly put at the end of the preceding line with a smaller width than expected.

 

9.2.

 

>= 9.0

 

Whitespace before a slash ("/") in a SQL statement is ignored and the slash is taken to mean execute the statement. Otherwise the slash is treated as part of the statement, for example, as a division sign.

 

9.0.1.4.

 

>= 9.0

 

The length specified for NCHAR and NVARCHAR2 types is characters. Otherwise the length may represent bytes or characters depending on the character set.

 

9.0.1

 

 

SET SQLPRE[FIX] {# | c}

Sets the SQL*Plus prefix character. While you are entering a SQL command or PL/SQL block, you can enter a SQL*Plus command on a separate line, prefixed by the SQL*Plus prefix character. SQL*Plus will execute the command immediately without affecting the SQL command or PL/SQL block that you are entering. The prefix character must be a non-alphanumeric character.

 

SET SQLP[ROMPT] {SQL> | text}

Sets the SQL*Plus command prompt. SET SQLPROMPT substitute variables dynamically. This enables the inclusion of runtime variables such as the current connection identifier. Substitution variables used in SQLPROMPT do not have to be prefixed with '&', and they can be used and accessed like any other substitution variable. Variable substitution is not attempted for the default prompt, "SQL> ".

 

Variable substitution occurs each time SQLPROMPT is SET. If SQLPROMPT is included in glogin.sql, then substitution variables in SQLPROMPT are refreshed with each login or connect.

 

Example

 

To change your SQL*Plus prompt to display your connection identifier, enter:

 

SET SQLPROMPT "_CONNECT_IDENTIFIER > "

To set the SQL*Plus command prompt to show the current user, enter

 

SET SQLPROMPT "_USER > "

To change your SQL*Plus prompt to display your the current date, the current user and the users privilege level, enter:

 

SET SQLPROMPT "_DATE _USER _PRIVILEGE> "

To change your SQL*Plus prompt to display a variable you have defined, enter:

 

DEFINE mycon = Prod1

SET SQLPROMPT "mycon> "

Prod1>

 

Text in nested quotes is not parsed for substitution. To have a SQL*Plus prompt of your username, followed by "@", and then your connection identifier, enter:

 

SET SQLPROMPT "_USER'@'_CONNECT_IDENTIFIER > "

SET SQLT[ERMINATOR] {; | c | ON | OFF}

Sets the character used to end script or data entry for PL/SQL blocks or SQL statements, to execute the script, and to load it into the buffer.

 

It cannot be an alphanumeric character or a whitespace. OFF means that SQL*Plus recognizes no command terminator; you terminate a SQL command by entering an empty line or a slash (/). If SQLBLANKLINES is set ON, you must use the BLOCKTERMINATOR to terminate a SQL command. ON resets the terminator to the default semicolon (;).

 

SET SUF[FIX] {SQL | text}

Sets the default file extension that SQL*Plus uses in commands that refer to scripts. SUFFIX does not control extensions for spool files.

 

Example

 

To change the default command-file extension from the default, .SQL to .TXT, enter

 

SET SUFFIX TXT

If you then enter

 

GET EXAMPLE

SQL*Plus will look for a file named EXAMPLE.TXT instead of EXAMPLE.SQL.

 

SET TAB {ON | OFF}

Determines how SQL*Plus formats white space in terminal output. OFF uses spaces to format white space in the output. ON uses the TAB character. TAB settings are every eight characters. The default value for TAB is system dependent.

 

SET TERM[OUT] {ON | OFF}

Controls the display of output generated by commands in a script that is executed with @, @@ or START. OFF suppresses the display so that you can spool output to a file without displaying the output on screen. ON displays the output on screen. TERMOUT OFF does not affect output from commands you enter interactively or redirect to SQL*Plus from the operating system.

 

SET TI[ME] {ON | OFF}

Controls the display of the current time. ON displays the current time before each command prompt. OFF suppresses the time display.

 

SET TIMI[NG] {ON | OFF}

Controls the display of timing statistics.

 

ON displays timing statistics on each SQL command or PL/SQL block run. OFF suppresses timing of each command.

 

See TIMING for information on timing multiple commands.

 

Example

 

The format of timing statistics is dependent on the operating system. In Linux and Windows, the timing statistics are in 24 hour format displaying hours, minutes, seconds and hundredths of seconds

 

SET SUFFIX TXT

If you enter

 

GET EXAMPLE

SQL*Plus displays output like

 

GET EXAMPLE

SET TRIM[OUT] {ON | OFF}

Determines whether SQL*Plus puts trailing blanks at the end of each displayed line. ON removes blanks at the end of each line, improving performance especially when you access SQL*Plus from a slow communications device. OFF enables SQL*Plus to display trailing blanks. TRIMOUT ON does not affect spooled output.

 

SET TRIMS[POOL] {ON | OFF}

Determines whether SQL*Plus puts trailing blanks at the end of each spooled line. ON removes blanks at the end of each line. OFF enables SQL*Plus to include trailing blanks. TRIMSPOOL ON does not affect terminal output.

 

SET UND[ERLINE] {- | c | ON | OFF}

Sets the character used to underline column headings in reports. The underline character cannot be an alphanumeric character or a white space. ON or OFF turns underlining on or off. ON changes the value of c back to the default "-".

 

SET VER[IFY] {ON | OFF}

Controls whether to list the text of a SQL statement or PL/SQL command before and after replacing substitution variables with values. ON lists the text; OFF suppresses the listing.

 

SET WRA[P] {ON | OFF}

Controls whether to truncate the display of a selected row if it is too long for the current line width. OFF truncates the selected row; ON enables the selected row to wrap to the next line.

 

Use the WRAPPED and TRUNCATED clauses of the COLUMN command to override the setting of WRAP for specific columns.

 

SET XMLOPT[IMIZATIONCHECK] [ON|OFF]

Controls whether only XML queries and DML operations that are fully optimized are executed. ON prevents the execution of any XML query or DML operation that cannot be fully optimized and writes the reason in the trace file. OFF does not prevent the execution of such queries and operations. OFF is the default.

 

SET XMLOPT[IMIZATIONCHECK] ON is only to assist during development and debugging an XML query or DML operation.

 

SET XQUERY BASEURI {text}

Specifies the base URI used to resolve relative URIs in functions. It enables the prefix of the file accessed by an XQuery to be changed.

 

To unset the BASEURI, set an empty string, for example:

 

SET XQUERY BASEURI ''

Take care to enter valid values as values are checked only when an XQUERY command is issued.

 

Example

 

SET XQUERY BASEURI '/public/scott'

XQUERY for $i in doc("foo.xml") return $i

/

This is equivalent to:

 

XQuery declare base-uri "/public/hr";

for $i in doc("foo.xml") return $i

SET XQUERY ORDERING {UNORDERED | ORDERED | DEFAULT}

Sets the ordering of output from an XQuery. There are three values:

 

UNORDERED specifies that results are sorted in the order they are retrieved from the database.

 

ORDERED specifies that results are sorted as defined by the XQuery.

 

DEFAULT specifies the database default. In Oracle Database 10g the default is UNORDERED.

 

When SET XQUERY ORDERING is not set, the default is DEFAULT (UNORDERED).

 

Example

 

SET XQUERY ORDERING ORDERED

XQUERY for $i in doc("foo.xml") return $i

/

This is equivalent to:

 

XQuery declare ordering ordered;

for $i in doc("foo.xml") return $i

/

SET XQUERY NODE {BYVALUE | BYREFERENCE | DEFAULT}

Sets the node identity preservation mode. The preservation mode applies to all expressions that either create a new node (such as element constructors) or return an item or sequence containing nodes (such as path expressions). There are three values:

 

BYVALUE specifies that the node identity need not be preserved. This means that any node operation such as creation, or that is returned as a result of an expression is deep copied and loses its context from the original tree. Subsequent operations on this node that test for node identity, parent or sibling axes or ordering will be undefined.

 

BYREFERENCE specifies that node identities are to be preserved. Subsequent operations on this node preserve the node's context and definition.

 

DEFAULT specifies the database default. In Oracle Database 10g the default is BYVALUE.

 

When SET XQUERY NODE is not set, the default is DEFAULT (BYVALUE).

 

Example

 

SET XQUERY NODE BYREFERENCE

XQUERY for $i in doc("foo.xml") return $i

/

This is equivalent to:

 

XQuery declare node byreference;

for $i in doc("foo.xml") return $i

/

SET XQUERY CONTEXT {text}

Specifies an XQuery context item expression. A context item expression evaluates to the context item, which may be either a node (as in the expression fn:doc("bib.xml")//book[fn:count(./author)>1]), or an atomic value (as in the expression (1 to 100)[. mod 5 eq 0]).

 

To unset the XQUERY CONTEXT, set an empty string, for example:

 

SET XQUERY CONTEXT ''

Take care to enter valid values as values are checked only when an XQUERY command is issued.

 

Example

 

SET XQUERY CONTEXT 'doc("foo.xml")'

XQUERY for $i in /a return $i

/

This is equivalent to:

 

XQuery for $i in /a return $i

passing XMLQuery("doc('foo.xml')")

/

 

4.2.2 host

格式

描述

ho[st]  [command]

执行操作系统的命令,如果command参数为空,则转到Shell终端控制台。

 

例如:在Windows执行ipconfig命令查看IP地址:

host ipconfig

 

例如:转到操作系统的Shell终端控制台:

host

 

4.2.3 copy

首先看一下文档里的语法定义:

COPY {FROM database | TO database | FROM database TO database}{APPEND|CREATE|INSERT|REPLACE} destination_table [(column, column, column, ...)]USING query

 

    下面对语法逐一说明:

 

1、DATABASE

 

    database 对应以下的语法格式是:username[/password]@connect_identifier

 

    注意:如果不加密码,则sqlplus会提示你输入密码。考虑到安全性,则应该不写密码。

 

2、FROM|TO子句

 

    可以注意到,在这个语法里,FROM 和 TO 两个子句都是可以单独出现的(当然一起出现是最常见的情况)。当没有指定 FROM/TO 子句,则使用当前连接的数据库。

 

    无论是 FROM 还是 TO 子句中连接的数据库,都不能是 SYSDBA 或 SYSOPER 权限的用户。

 

3、COPY类型

 

    APPEND

    表存在则INSERT,不存在则CREATE

    Inserts the rows from query into destination_table if the table exists. If destination_table does not exist, COPY creates it.

 

    CREATE

    新建一个表,如果表存在则出错

    Inserts the rows from query into destination_table after first creating the table. If destination_table already exists, COPY returns an error.

 

    INSERT

    向表中插入记录

    Inserts the rows from query into destination_table. If destination_table does not exist, COPY returns an error. When using INSERT, the USING query must select one column for each column in destination_table.

 

    REPLACE

    无论表是否存在,均清空然后CREATE

    Replaces destination_table and its contents with the rows from query. If destination_table does not exist, COPY creates it. Otherwise, COPY drops the existing table and replaces it with a table containing the copied data.

 

4、destination_table

 

    注意指定目标表的同时,是可以指定其字段的,但是其字段数目和类型(如果已经存在)必须与后面的query中相一致,否则报错。

 

------------------------------------

 

    下面举例说明:

 

SQL> COPY FROM HR/HR @HQ TO JOHN/kkk @WEST REPLACE WESTEMPLOYEES USING SELECT * FROM EMPLOYEES;

 

    别的没什么可说的,但是要注意如果使用新建表的时候,新建的表的字段属性,都是与原表相同的。在一般的情况下这都是没有什么问题的,但是会有一种比较特殊的情况,就是例如:原始库的字符集为ZHS16GBK,而目标库的字符集为UTF-8,因为UTF-8中一个汉字占3个字节,而ZHS16GBK是2个。所以当原始库中的一个属性为varchar2(2)且为一个汉字的字段,就无法导入到UTF-8库中了,会报错:ORA-12899: value too large for column ...

 

    遇到这种情况,建议修改原始库的字段属性,如果没有权限,则可以在目标库中手工建立一下表,将字段属性调整到合适,然后使用INSERT或者APPEND类型COPY。

 

    另注:select * from nls_database_parameters; 查看字符集

4.2.4 其他命令

1.remark 告诉SQLPLUS接下来的文字是注释,不是指令

2.set headseq 标题分隔符标识一个告诉SQLPLUS将一个标题分为两行或者更多行的字符

3.ttitle 设置报表每一页的头标题

4.btitle 设置报表每一页的尾标题

5.column 给SQLPLUS各种关于列的标题、格式和处理的指令

6.break on 告诉SQLPLUS在报表的各部分间插入空格,或者将小计和总计断开

7.compute sum 令SQLPLU计算小计

8.set linesize 为报表的行设置最大字符数

9.set pagesize 为页设置最大行数

10.set newpage 设置页与页之间的空行数

11.spool 将在屏幕上显示的报表写入一个文件中

12./**/ 在SQL项内标记一个注释的开头和结尾,类似与remark

13.-- 在SQL项内标记联机注释的开始,将该标记开始到本行末尾的一切内容都视为注释。类似于remark。

14.set pause 使屏幕显示在页与页之间停顿

15.save 把正在建立的SQL查询保存到一个选中的文件中

16.host 向主操作系统发送命令

17.start或@ 告诉SQLPLUS执行已经从存储到文件中的指令

18.edit 离开SQLPLUS并进入到所选择的编辑器

19.define_editor告知SQLPLUS你所选择的编辑器

20.exit或quit 终止SQLPLUS

 

注:

⑴column可以更改select语句中任何列的格式和标题。

column Name format a20

a20告知SQLPLUS这是一个字母列,而不是数字列,Name列显示的宽度设置为20

⑵break on命令必须和order by语句一起使用

⑶每个compute avg命令必须有一个相关的break on

类似的还有compute sum,compute count,compute max等

⑷seb newpage确切地说应该称为“设置空白行”。

⑸spool 假脱机,spool off告知停止假脱机。

⑹命令行编辑器

当输入一条SQL语句时,SQLPLUS会在输入的同时记住每一行,并存储于一个SQL buffer中。

例如输入如下查询:

select Featuer,Section,Page

from NEWSPAPER

where Secton='F';

SQLPLUS会报错,检查发现Feature拼错了,不用重新输入整个查询,用命令行编辑器即可:

list

SQLPLUS命令会将输入的查询列出:

1 select Featuer,Section,Page

2 from NEWSPAPER

3* where Secton='F';

 

*号表示这行是可以编辑的,要想修改第一行,list 1 命令将调出相应的内容:

list 1

1* select Featuer,Section,Page

 

这时可以输入如下命令来更改:

change /Featuer/Feature

1* select Featuer,Section,Page

再输入list命令检查整个查询:

list

1 select Feature,Section,Page

2 from NEWSPAPER

3* where Secton='F';

 

确认正确后输入一个斜线(/)将运行查询。此斜线与change命令或编辑器无关,它只是告知

SQLPLUS在缓冲区中执行SQL。

 

 

命令行编辑器还可以删除行,命令为del。如果输入delete的话,这个命令将删除所有的行。

如果想要清除整个select语句,可以输入如下命令:

clear buffer

 

如果想在当前行追加内容,可以用append 命令,append命令把追加的内容房子当前行的末端,

中间不留空隙。

 

还可以在当前行后面再输入一个全新的行,用命令input。

 

命令行编辑器只能编辑SQL语句,不能编辑sqlplus命令。

 

⑺检查SQLPLUS环境变量

检查某个特定的列是如何定义的:

column 列名

如果column后面没有跟任何列名,则将列出所有的列;

 

同样可以对ttitle、btitle、break和compute进行检查,方法同column。

 

检查set命令的设置可以用show命令来进行查看:

show headsep

show linesize

show pagesize

show newpage

 

ttitle和btitle设置可以用ttitle off 和btitle off 命令来禁止。

 

columns、breaks和computes的设置可以通过clear columns、clear breaks和clear computes

命令进行清除。

4.3 注释

用SQL*Plus在执行带有注释的SQL语句时,只能写在SQL语句当中,不能将注释写在分号之后,因为SQL*Plus认为分号只能出现在SQL语句的结尾,SQL语句当中的分号被认为是SQL语句中的字符。

 

正确写法:

SQL> /*这是注释*/ select * from dual /*这是注释*/ ;

 

正确写法:

SQL> select * from dual  --这是注释

  2  ;

 

错误写法:

SQL> select * from dual; /*这是注释*/

  2  ;

 

错误写法:

SQL> select * from dual; --这是注释

5   启动、停止数据库

数据库在启动后,才能开始操作和使用。

数据库的监听服务在启动后,才能接受远程连接数据库。

数据库的OEM服务在启动后,才能使用Oracle Enterprise Manager。

 

数据库在停止后,将无法操作和使用。

数据库的监听服务在停止后,将无法接受远程连接数据库。

数据库的OEM服务在停止后,将无法使用Oracle Enterprise Manager。

 

有以下几种启动方式:

1、startup nomount

读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。 这种方式启动常用于修复数据库、重建控制文件、重建数据库 等等

 

2、startup mount dbname

Oracle以这种方式启动后完成如下操作:

数据库日志归档、

数据库介质恢复、

使数据文件联机或脱机,

重新定位数据文件、重做日志文件。

 

执行“nomount”,然后打开控制文件,确认数据文件和联机日志文件的位置,

但此时不对数据文件和日志文件进行校验检查。

 

3、startup open dbname

先执行“nomount”,然后执行“mount”,再打开包括Redo log文件在内的所有数据库文件,

这种方式下可访问数据库中的数据。

 

4、startup,等于以下三个命令

startup nomount

alter database mount

alter database open

 

5、startup restrict

约束方式启动

这种方式能够启动数据库,但只允许具有一定特权的用户访问

非特权用户访问时,会出现以下提示:

ERROR:

ORA-01035: ORACLE 只允许具有 RESTRICTED SESSION 权限的用户使用

 

6、startup force

强制启动方式

当不能关闭数据库时,可以用startup force来完成数据库的关闭

先关闭数据库,再执行正常启动数据库命令

 

7、startup pfile=参数文件名

带初始化参数文件的启动方式

先读取参数文件,再按参数文件中的设置启动数据库

例:startup pfile=E:Oracleadminoradbpfileinit.ora

 

8、startup EXCLUSIVE

 

启动数据库三个步骤状态:Nomount,Mount,Open

Nomount:startup nomount; 仅仅通过初始化文件,分配出SGA区,启动数据库后台进程,没有打开控制文件和数据文件。不能任何访问数据库。
 1,确定oracle_sid。

 2,找到正确的参数文件。

 3,按照参数文件中描述的大小分配内存。

 4,启动后台进程。

 5,初始化v$..的字典。

 6,将启动的过程写入到bdump\*.log。

 7,数据库到started状态。

 8,修改参数,建立数据库,建立数据文件。

Mount:alter database mount; MOUNT数据库,仅仅给DBA进行管理操作,不允许数据库的用户访问。仅仅只是当前实例的控制文件被打开,数据文件未打开。
 1,确定控制文件位置。

 2,校验控制文件的一致性。

 3,读控制文件到内存。

 4,写bdump\*.log文件。

 5,能备份和恢复,改文件的名称和位置。

Open:alter database open; STARTUP缺省的参数就是OPEN,打开数据库,允许数据库的访问。当前实例的控制文件中所描述的所有文件都已经打开。

 1,确定数据文件的位置。

 2,校验数据文件一致性。

 3,如不一致使用日志文件恢复到一致。

 4,写bdump\*.log文件。

 5,在该状态下能访问数据。

 

STARTUP PFILE= filename:以filename为初始化文件启动数据库,不是采用缺省初始化文件。
STARTUP FORCE:中止当前数据库的运行,并开始重新正常的启动数据库。
STARTUP RESTRICT:只允许具有RESTRICTED SESSION权限的用户访问数据库。
STARTUP RECOVER:数据库启动,并开始介质恢复。

 

 

数据库在停止有四个方式:NORMAL、TRANSACTIONAL、IMMEDIATE、ABORT。默认是NORMAL。

SHUTDOWN NORMAL不允许新的连接、等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。

SHUTDOWN TRANSACTIONAL不允许新的连接、不等待会话结束、等待事务结束、做一个检查点并关闭数据文件。启动时不需要实例恢复。

SHUTDOWN IMMEDIATE不允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭数据文件。没有结束的事务是自动rollback的。启动时不需要实例恢复。

SHUTDOWN ABORT不允许新的连接、不等待会话结束、不等待事务结束、不做检查点且没有关闭数据文件。相当于强杀进程,再次启动时自动进行实例恢复,但有可能会无法恢复。

 

 

normal

transation

immediate

abort

允许新的连接

不执行

不执行

不执行

不执行

等待会话结束

执行

不执行

不执行

不执行

正在执行的事务

执行

执行

不执行,回退

不执行,不回退

存盘

执行

执行

执行

不执行

停止数据库

执行

执行

执行

执行

关闭速度

慢------------>快

 

5.1 Windows操作系统

5.1.1 启动数据库

启动数据库:用SQL*Plus连接本机的数据库后,输入:startup

启动监听服务:在数据库服务器的Shell终端控制台下,输入:lsnrctl start

启动OEM服务:在数据库服务器的Shell终端控制台下,输入:emctl start dbconsole

5.1.2 停止数据库

停止OEM服务:在数据库服务器的Shell终端控制台下,输入:emctl stop dbconsole

停止监听服务:在数据库服务器的Shell终端控制台下,输入:lsnrctl stop

停止数据库:用SQL*Plus连接本机的数据库后,输入:shutdown immediate

5.2 Linux操作系统

5.2.1 启动数据库

启动数据库:用SQL*Plus连接本机的数据库后,输入:startup

启动监听服务:在数据库服务器的命令行下,输入:lsnrctl start

启动OEM服务:在数据库服务器的命令行下,输入:emctl start dbconsole

5.2.2 停止数据库

停止数据库:用SQL*Plus连接本机的数据库后,输入:shutdown immediate

停止监听服务:在数据库服务器的命令行下,输入:lsnrctl stop

停止OEM服务:在数据库服务器的命令行下,输入:emctl stop dbconsole

6   连接数据库、断开数据库

6.1 用户登录验证机制

提示:在Linux系统下,修改数据库服务端的IP地址后,会出现无法连接的情况,需要将/etc/hosts里主机名对应的旧IP地址修改为新IP地址,然后重启监听服务即可。

 

连接Oracle服务端时有三种数据库用户登录验证机制:

1、操作系统验证

2、密码文件验证

3、数据库验证

 

操作系统验证

该验证模式只适用于本机登录,就是判断当前连接数据库服务端的操作系统用户是不是在OSDBA数据库管理员组,如果在,就验证通过,如果不在,就验证失败,并提示ORA-01031权限不足。

该验证方式会忽略掉用户名和密码,不论提供什么用户名和密码,只要验证通过,登录的就是SYS用户,并且不能选择用户。

一般权限用户的登录验证都数据库验证,因为用户名和密码都是存储在数据库当中的。然而,SYS用户(具有SYSDBA和SYSOPER权限的用户)却不是数据库验证。在oracle数据没有启动的时候,SYS用户就可以连接到数据库,并对其进行启动等操作,所以不可能是数据库验证。SYS用户采用的是第一种和第二种验证方式。

 

1 sqlplus /nolog,conn / as sysdba 之所以能够登录,在于oracle登录时的身份认证方式。可以试一下这个:sqlplus /nolog,conn abcd/sss as sysdba,你发现也能够登录成功。

2 oracle在登录时,有三种身份认证方式:操作系统身份认证、密码文件认证、数据库认证。而conn /as sysdba是属于操作系统认证。    为什么这样说呢?你当前电脑开机时登录的用户,也就是进入操作系统的用户,例如是gooooal,它在你电脑的ora_dba组中。可以在“我的电脑”单击右键,找到“管理”,选择“本地用户和组”,发现有一个组叫“ora_dba”,双击它,看到成员列表中有“gooooal”。    也就是在conn /as sysdba,oracle会进行操作系统验证,发现你当前登录的用户就属于ora_dba组,因此才可以登录成功。    你可以把ora_dba组中的“gooooal”用户删除,再conn /as sysdba,就发现进不去了。

3 密码文件验证可以查阅相关资料,百度oracle的身份验证方式,就可以查到相关资料。

4 其实在linux或unix环境下,安装oracle是要设置很多东西的,比如用户和用户组的设置等,不像在windows下,安装傻瓜化了。

5 关于安全性,如果将oracle安装在本地,其实你本地就是oracle服务器,所以权限高一些。你用哪个用户来启动oracle实例?哪个用户来mount数据库?哪个用户来打开数据库?从而才能进行之后的select等sql操作?  在oracle实例等还没有启动的时候,oracle数据库里面建的用户肯定是不能使用的。所以才会有操作系统身份验证。用这个用户,来启动oracle实例、转载数据库等。之后才能做oracle表的增删改查。

6.2 连接数据库

6.2.1 SQL*Plus

6.2.1.1   Windows操作系统

6.2.1.2   Linux操作系统

连接远程数据库:

1)   输入Shell命令:sqlplus 用户名/密码@连接描述符。例如:sqlplus test/test@orcl,表示使用test用户名和test密码通过orcl连接描述符连接数据库。

2)   操作系统会自动根据$PATH环境变量去运行$ORACLE_HOME/bin/sqlplus可执行文件。如果$PATH环境变量或$ORACLE_HOME环境变量不对,会导致无法执行sqlplus命令。

3)   sqlplus会自动去找$ORACLE_HOME/network/admin/tnsnames.ora文件里配置的连接描述符。

4)   sqlplus会自动使用指定的用户名、密码和连接描述符连接远程数据库,连接成功后会出现SQL命令的交互界面“SQL>”。

 

注意:如果连接失败,检查远程的数据库是否已经启动,远程的监听服务是否已经启动,连接描述符配置文件tnsnames.ora是否有读取权限,连接描述符是否配置正确,用户名和密码是否正确,密码是否过期,用户是否具有connect权限等。

 

连接本机数据库:

1)   在命令行下输入:sqlplus / as sysdba

2)   操作系统会自动根据$PATH环境变量去运行$ORACLE_HOME/bin/sqlplus可执行文件。

3)   连接成功后会出现SQL> 交互界面。

提示:本机数据库可以在关闭状态下用此方法连接,但如果用连接远程数据库的方法来连接本机数据库,要求数据库必须已经启动。

6.2.2 OEM

用浏览器打开OEM的URL地址,输入数据库用户名和密码,点击登录即可完成连接。

查看OEM的URL地址:查看$ORACLE_HOME\install下的readme.txt

6.2.3 OCILIB

 

#include <stdio.h>

#include "ocilib.h"

 

int main (int argc, char ** argv)

{

    if (OCI_Initialize (NULL, NULL, OCI_ENV_DEFAULT) == 0)//如果初始化OCILIB库失败,就报错

    {

        return -1;

    }

   

    OCI_Connection * ociConn;

   

    ociConn = OCI_ConnectionCreate ("192.168.227.128", "test", "test", OCI_SESSION_DEFAULT);//连接数据库

    if (ociConn == 0)//如果连接数据库失败,就报错

    {

        return -1;

    }

   

    OCI_ConnectionFree (ociConn);//断开数据库

   

    return 0;

}

 

6.3 断开数据库

6.3.1 SQL*Plus

输入SQL命令:exit或quit,表示断开并退出sqlplus。

输入SQL命令:disconnect,表示只断开、但不退出sqlplus。

6.3.2 OEM

点击网页的右上角的注销按钮,即可断开数据库。断开后可以再次登录,或关闭浏览器。

6.4 tnsnames.ora连接描述符配置文件说明

6.4.1 TNS简介

TNS全称Transparence Network Substrate,直译为透明网络底层,也称连接描述符。

Oracle数据库客户端就是通过连接描述符来知道如何连接数据库服务器的。

6.4.2 配置文件路径

本配置文件在Oracle数据库安装路径下的network下的admin下的tnsnames.ora

6.4.3 文件格式说明

 

表示一个空格,一个都不能少,也不能多

表示连接描述符的名字,不区分大小写

表示数据库服务器的IP地址

表示数据库服务器的端口号,一般不用改

表示直连方式连接数据库服务器,一般不用改

表示数据库服务名,使用SQL> show parameter service_name;命令查看

注意:配置多个连接描述符时,每一个之间间隔一空行。

6.5 sqlnet.ora连接方式配置文件说明

6.5.1 简介

本配置文件主要是配置数据库客户端如何连接数据库服务端。例如配置连接超时时间、接收数据超时时间、发送数据超时时间、服务器查找方式等。

6.5.2 配置文件路径

本配置文件在Oracle数据库安装路径下的network下的admin下的sqlnet.ora

6.5.3 文件格式说明

SQLNET.RECV_TIMEOUT = 1  //配置接收数据超时时间,单位秒

SQLNET.SEND_TIMEOUT = 1  //配置发送数据超时时间,单位秒

SQLNET.INBOUND_CONNECT_TIMEOUT = 1  //配置连接超时时间,单位秒

SQLNET_ALLOWED_LOGON_VERSIONS = (11,10,9,8)  //允许连接的数据库服务端版本号

6.6 listener.ora监听服务配置文件说明

6.6.1 简介

本配置文件主要是配置数据库服务端的监听服务。

6.6.2 配置文件路径

本配置文件在Oracle数据库安装路径下的network下的admin下的listener.ora

6.6.3 文件格式说明

暂无。

6.7 Windows下ODBC访问Oracle数据库

假如Oracle 数据库安装在IP 为 192.168.0.20 的服务器上,实例名为"MyTestInstance",并添加用户mytestuser 和密码 password1,以备下文作为范例使用。服务器上可以配置多个实例,每个实例就是一个逻辑上独立的数据库。

客户端是指需要访问服务端的Oracle数据库的计算机,它可以与服务器是同一台机器,它也可以是网络能够访问到该服务器的任何其它计算机。

下面讨论如何在Windows客户端机上配置 Oracle 9i ODBC 来访问远程Oracle 9i数据库。

 

通过ODBC来访问Oracle的原理如图所示:

 

客户程序----> ODBC ----> Oracle OCI ------> Oracle 服务器

 

首先,在客户端上装一个 Oracle OCI (Oracle Call Interface),它是真正直接与远程Oracle服务器打交到,实现数据传输的组件。为了使用ODBC的统一方式来访问Oracle数据库,还必须装一个Oracle ODBC driver. 它接收客户程序的数据库访问请求,并把ODBC类型的请求转换为对Oracle OCI的请求。OCI实现操纵Oracle数据库,并将查询结果或其它结果返回给ODBC driver, ODBCdriver 最后将结果返回给客户程序。换句话说,客户通过ODBC来访问数据库,而ODBC则是通过调用OCI的API来实现其功能的。

 

以刚才所述的服务器设置为基础,下面给出客户端Oracle ODBC的配置步骤。

 

步骤1:安装Oracle 客户端运行时库,其中包括 Oracle OCI.

 

步骤2:设置 OCI 访问信息

 

OCI访问Oracle 服务器需要知道

 

1,服务器IP地址或主机名,(主机名)

 

2,服务器的监听端口, (端口号)

 

3,欲访问的数据库实例名。 (服务标识/服务名)

 

把这三个信息组成的信息集合起个名字就叫数据源名(服务命名)。

 

这些信息可以通过 Oracle Net Manager 来设置。在它的设置界面中用的名词分别被列在对应的括号中。

 

本例设置如下:

 

服务命名: ABCD (随便字符串)

 

主机名: 192.168.0.20

 

端口号: 1521 (必须与服务器端的一致,这里是缺省值)

 

服务标识/服务名: MyTestInstance

 

以后 Oracle ODBC driver 只需要提供给OCI服务命名(本例为ABCD),OCI就知道如何去访问真正的数据库了。

 

步骤3:设置ODBC DSN,即 ODBC数据源

 

进入控制面板/管理工具/数据源(ODBC)/系统DSN

 

点击添加,选择 MicroSoft ODBC for Oracle,.然后弹出一个对话框,填写如下内容。

 

1,数据源名称: MyOracleSrc 可随便起,客户程序将用它。

 

2, 描述:一段说明文字,自己能看懂即可。

 

3,用户名称: mytestuser 你最终需要访问的数据库所认可的用户名。

 

4,服务器:ABCD (即OCI设置中的服务命名。这是中文版最容易引起误解的地方。笔者开始就误以为要填写Oracle服务器的主机名)

 

步骤4: 客户程序通过ODBC访问数据库的方法

 

客户程序访问数据库时需要三个信息:

 

1,数据源: MyOracleSrc ,即ODBC DSN中设置的数据源名称

 

2,用户名: mytestuser

 

3,密码: password1

 

这样,就可以访问到192.168.0.20上的数据库 MyTestInstance.

 

为了验证ODBC设置是否成功,可是使用DB查询分析器试用版照步骤4来进行简单的测试。

7   查看数据库的服务名、实例名、端口号

7.1 SQL*Plus

如果无法连接数据库,就建议使用连接本机数据库方式连接。

 

查看服务名:

在SQL>下输入:select global_name from global_name;

在SQL>下输入:show parameter service_name;

 

查看实例名:

在SQL>下输入:select instance_name from v$instance;

 

查看端口号:

8   管理数据库连接

8.1 查看数据库连接

v$session表里存放所有的数据库连接信息,使用select命令对此表的数据进行查看。其中:

username字段:此连接使用的数据库用户名。

sid字段:此连接的会话ID(Session ID)。

machine字段:此连接的远端主机名。

port字段:此连接的远端端口号。

 

注意:此视图需要DBA权限才能查看此表。

9   数据库用户

Oracle数据库的每一个用户对应一个用户配置文件,用户配置文件控制着用户的一些行为、权限和资源占用等。

一般的用户都是对应DEFAULT这个用户配置文件,也可以修改对应的用户配置文件名。

Oracle数据库还有一个用户配置文件是否生效开关,如果为TRUE表示开启用户配置文件,如果为FALSE表示关闭用户配置文件,但是用户配置文件里有些配置是不由此开关控制,始终开启(详见6.7.5)。

9.1 创建数据库用户

注意:新用户必须赋予connect或dba系统权限后,才能远程连接。

9.1.1 SQL*Plus

在SQL>下输入:

create  user  用户名  identified  by  "密码"

[default  tablespace  默认表空间名称]

[temporary  tablespace  临时表空间名称]

[profile  用户配置文件名称]

[account  用户锁定方式]

[quota  表空间配额大小1  on  表空间名称1]

[quota  表空间配额大小2  on  表空间名称2]

[quota  表空间配额大小3  on  表空间名称3]

……;

 

用户锁定方式可以为:unlock、lock。

表空间配额大小可以为:0、unlimited、10m、50m、等等。

 

9.2 删除数据库用户

注意:不能删除当前已连接的用户。

9.2.1 SQL*Plus

在SQL>下输入:drop  user  用户名  cascade;

9.3 修改数据库用户的用户名

注意:修改用户名有风险,可能会导致所有的用户不能使用。

9.3.1 SQL*Plus

在SQL>下输入:sqlplus  /  as  sysdba

 

在SQL>下输入:select  user,user#  from  user$  where  user  =  '旧用户名大写';  --找到旧用户名对应的user#

 

在SQL>下输入:UPDATE  USER$  SET  NAME  =  '新用户名大写'  WHERE  USER#  =  旧用户名对应的user#;

 

在SQL>下输入:COMMIT;

 

在SQL>下输入:ALTER SYSTEM CHECKPOINT;

 

在SQL>下输入:ALTER SYSTEM FLUSH SHARED_POOL;

 

新用户名已经可以正常使用了,旧用户名已经没有了。

9.4 修改数据库用户的密码

9.4.1 SQL*Plus

在SQL>下输入:alter  user  用户名  identified  by  "新密码";

9.5 修改数据库用户的默认临时表空间

如果被修改的用户正在使用当前默认的临时表空间,是可以进行修改的,只是正在执行的语句还是用以前的临时表空间,以后执行的语句就会用修改后的临时表空间了。

9.5.1 SQL*Plus

在SQL>下输入:alter  user  用户名  temporary  tablespace  临时表空间名称;

9.6 数据库用户权限和角色

9.6.1 权限简介

权限分两种,一种是系统权限,一种是对象权限。

 

系统权限是指数据库系统规定的用户使用数据库的权限,权限作用于用户。

只有拥有DBA权限的用户才能给用户赋予或收回系统权限。

可以通过select * from system_privilege_map;查询oracle数据库所有的系统权限。

 

对象权限是指某种权限用户对其它用户的表或视图的存取权限,权限作用于用户下的表或视图。

 

权限传递是指被赋予权限的用户还可以赋予此权限给其他用户,增加WITH ADMIN OPTION选项即可。

9.6.1.1   系统权限汇总

群集权限:

CREATE CLUSTER:在自己的模式方案中创建、更改和删除群集。

CREATE ANY CLUSTER:在任何模式方案中创建群集。

ALTER ANY CLUSTER:在任何模式方案中更改群集。

DROP ANY CLUSTER:在任何模式方案中删除群集。

 

数据库权限:

ALTER DATABASE:运行ALTER DATABASE语句,更改数据库的配置。

ALTER SYSTEM:运行ALTER SYSTEM语句,更改系统的初始化参数。

AUDIT SYSTEM:运行AUDIT SYSTEM和NOAUDIT SYSTEM语句,审计SQL。

AUDIT ANY:运行AUDIT和NOAUDIT语句,对任何模式方案的对象进行审计。

 

索引权限:

CREATE ANY INDEX:在任何模式方案中创建索引。

注意:没有CREATE INDEX权限,因为CREATE TABLE权限包含了CREATE INDEX权限。

ALTER ANY INDEX:在任何模式方案中更改索引。

DROP ANY INDEX:任何模式方案中删除索引。

CREATE INDEXTYPE:

CREATE ANY INDEXTYPE:

ALTER ANY INDEXTYPE:

EXECUTE ANY INDEXTYPE:

DROP ANY INDEXTYPE:

 

过程权限:

CREATE PROCEDURE:在自己的模式方案中创建、更改或删除过程、函数和包。

CREATE ANY PROCEDURE:在任何模式方案中创建过程、函数和包。

ALTER ANY PROCEDURE:在任何模式方案中更改过程、函数和包。

DROP ANY PROCEDURE:在任何模式方案中删除过程、函数或包。

EXECUTE ANY PROCEDURE:在任何模式方案中执行或者引用过程。

DEBUG ANY PROCEDURE:

 

用户配置文件权限:

CREATE PROFILE:创建用户配置文件。

ALTER PROFILE:更改用户配置文件。

DROP PROFILE:删除用户配置文件。

 

角色权限:

CREATE ROLE:创建角色。

ALTER ANY ROLE:更改任何角色。

DROP ANY ROLE:删除任何角色。

GRANT ANY ROLE:向其他角色或用户授予任何角色。

注意:没有对应的REVOKE ANY ROLE权限。

 

回退段权限:

CREATE ROLLBACK SEGMENT:创建回退段。

注意:没有对撤销段的权限。

ALTER ROLLBACK SEGMENT:更改回退段。

DROP ROLLBACK SEGMENT:删除回退段。

 

序列权限:

CREATE SEQUENCE:在自己的模式方案中创建、更改、删除和选择序列。

CREATE ANY SEQUENCE:在任何模式方案中创建序列。

ALTER ANY SEQUENCE:在任何模式方案中更改序列。

DROP ANY SEQUENCE:在任何模式方案中删除序列。

SELECT ANY SEQUENCE:在任何模式方案中从任何序列中进行选择。

 

会话权限:

CREATE SESSION:创建会话,登录进入(连接到)数据库。

ALTER SESSION:运行ALTER SESSION语句,更改会话的属性。

ALTER RESOURCE COST:更改概要文件中的计算资源消耗的方式。

RESTRICTED SESSION:在数据库处于受限会话模式下连接到数据。

 

同义词权限:

CREATE SYNONYM:在自己的模式方案中创建、删除同义词。

CREATE ANY SYNONYM:在任何模式方案中创建专用同义词。

CREATE PUBLIC SYNONYM:创建公共同义词。

DROP ANY SYNONYM:在任何模式方案中删除同义词。

DROP PUBLIC SYNONYM:删除公共同义词。

 

表权限:

CREATE TABLE:在自己的模式方案中创建、更改和删除表。赋予或收回后,立即生效,无需重连。

CREATE ANY TABLE:在任何模式方案中创建表。赋予或收回后,立即生效,无需重连。第一次赋予本权限后,还需要执行alter system set O7_DICTIONARY_ACCESSIBILITY=true scope=spfile;语句,并重启数据库,才能生效。

ALTER ANY-TABLE:在任何模式方案中更改表。

DROP ANY TABLE:在任何模式方案中删除表。赋予或收回后,立即生效,无需重连。第一次赋予本权限后,还需要执行alter system set O7_DICTIONARY_ACCESSIBILITY=true scope=spfile;语句,并重启数据库,才能生效。

COMMENT ANY TABLE:在任何模式方案中为任何表、视图或者列添加注释。

SELECT ANY TABLE:在任何模式方案中查询任何表中的记录。赋予或收回后,立即生效,无需重连。第一次赋予本权限后,还需要执行alter system set O7_DICTIONARY_ACCESSIBILITY=true scope=spfile;语句,并重启数据库,才能生效。

INSERT ANY TABLE:在任何模式方案中向任何表插入新记录。

UPDATE ANY TABLE:在任何模式方案中更改任何表中的记录。

DELETE ANY TABLE:在任何模式方案中删除任何表中的记录。

UNDER ANY TABLE:

LOCK ANY TABLE:在任何模式方案中锁定任何表。

FLASHBACK ANY TABLE:允许使用AS OF子句对任何模式方案中的表、视图执行一个SQL语句的闪回查询。

 

表空间权限:

CREATE TABLESPACE:创建表空间。

ALTER TABLESPACE:更改表空间。

DROP TABLESPACE:删除表空间,包括表、索引和表空间的群集。

MANAGE TABLESPACE:管理表空间,使表空间处于ONLINE(联机)、OFFLINE(脱机)、BEGIN BACKUP(开始备份)、END BACKUP(结束备份)状态。

UNLIMITED TABLESPACE:不受配额限制地使用表空间。赋予或收回后,立即生效,无需重连。

注意:只能将UNLIMITED TABLESPACE授予账户而不能授予角色。

 

用户权限:

CREATE USER:创建用户。

ALTER USER:更改用户。

BECOME USER:当执行完全装入时,成为另一个用户。

DROP USER:删除用户。

 

视图权限:

CREATE VIEW:在自己的模式方案中创建、更改和删除视图。

CREATE ANY VIEW:在任何模式方案中创建视图。

DROP ANY VIEW:在任何模式方案中删除视图。

MERGE ANY VIEW:

UNDER ANY VIEW:

COMMENT ANY TABLE:在任何模式方案中为任何表、视图或者列添加注释。

FLASHBACK ANY TABLE:允许使用AS OF子句对任何模式方案中的表、视图执行一个SQL语句的闪回查询。

 

实体化视图权限:

CREATE MATERIALIZED VIEW

CREATE ANY MATERIALIZED VIEW:

ALTER ANY MATERIALIZED VIEW:

DROP ANY MATERIALIZED VIEW:

 

触发器权限:

CREATE TRIGGER:在自己的模式方案中创建、更改和删除触发器。

CREATE ANY TRIGGER:在任何模式方案中创建触发器。

ALTER ANY TRIGGER:在任何模式方案中更改触发器。

DROP ANY TRIGGER:在任何模式方案中删除触发器。

ADMINISTER DATABASE TRIGGER:允许创建ON DATABASE触发器。在能够创建ON DATABASE触发器之前,还必须先拥有CREATE TRIGGER或CREATE ANY TRIGGER权限。

 

数据库链接权限:

CREATE DATABASE LINK:

CREATE PUBLIC DATABASE LINK:

ALTER DATABASE LINK:

ALTER PUBLIC DATABASE LINK:

DROP PUBLIC DATABASE LINK:

 

专用权限:

SYSOPER

(系统操作员权限)

STARTUP

SHUTDOWN

ALTER DATABASE MOUNT/OPEN

ALTER DATABASE BACKUP CONTROLFILE

ALTER DATABASE BEGIN/END BACKUP

ALTER DATABASE ARCHIVELOG

RECOVER DATABASE

RESTRICTED SESSION

CREATE SPFILE/PFILE

SYSDBA

(系统管理员权限)

SYSOPER的所有权限,并带有WITH ADMIN OPTION子句

CREATE DATABASE

RECOVER DATABASE UNTIL

 

其他权限:

ANALYZE ANY:对任何模式方案中的任何表、群集或者索引执行ANALYZE语句。

GRANT ANY OBJECT PRIVILEGE:授予任何模式方案上的任何对象上的对象权限。

注意:没有对应的REVOKE ANY OBJECT PRIVILEGE。

GRANT ANY PRIVILEGE:授予任何系统权限。

注意:没有对应的REVOKE ANY PRIVILEGE。

SELECT ANY DICTIONARY:允许从sys用户所拥有的数据字典表中进行选择。

ADMINISTER ANY SQL TUNING SET

ADMINISTER DATABASE TRIGGER

ADMINISTER RESOURCE MANAGER

ADMINISTER SQL MANAGEMENT OBJECT

ADMINISTER SQL TUNING SET

ADVISOR

ALTER ANY ASSEMBLY

ALTER ANY CUBE

ALTER ANY CUBE DIMENSION

ALTER ANY DIMENSION

ALTER ANY EDITION

ALTER ANY EVALUATION CONTEXT

ALTER ANY LIBRARY

ALTER ANY MINING MODEL

ALTER ANY OPERATOR

ALTER ANY OUTLINE

ALTER ANY RULE

ALTER ANY RULE SET

ALTER ANY SQL PROFILE

ALTER ANY TABLE

ALTER ANY TYPE

ALTER RESOURCE COST

ANALYZE ANY

ANALYZE ANY DICTIONARY

BACKUP ANY TABLE

CHANGE NOTIFICATION

COMMENT ANY MINING MODEL

COMMENT ANY TABLE

CREATE ANY ASSEMBLY

CREATE ANY CONTEXT

CREATE ANY CUBE

CREATE ANY CUBE BUILD PROCESS

CREATE ANY CUBE DIMENSION

CREATE ANY DIMENSION

CREATE ANY DIRECTORY

CREATE ANY EDITION

CREATE ANY EVALUATION CONTEXT

CREATE ANY JOB

CREATE ANY LIBRARY

CREATE ANY MEASURE FOLDER

CREATE ANY MINING MODEL

CREATE ANY OPERATOR

CREATE ANY OUTLINE

CREATE ANY RULE

CREATE ANY RULE SET

CREATE ANY SQL PROFILE

CREATE ANY TABLE

CREATE ANY TYPE

CREATE ASSEMBLY

CREATE CUBE

CREATE CUBE BUILD PROCESS

CREATE CUBE DIMENSION

CREATE DIMENSION

CREATE EVALUATION CONTEXT

CREATE EXTERNAL JOB

CREATE JOB

CREATE LIBRARY

CREATE MEASURE FOLDER

CREATE MINING MODEL

CREATE OPERATOR

CREATE RULE

CREATE RULE SET

CREATE TABLE

CREATE TYPE

DEBUG CONNECT SESSION

DELETE ANY CUBE DIMENSION

DELETE ANY MEASURE FOLDER

DEQUEUE ANY QUEUE

DROP ANY ASSEMBLY

DROP ANY CONTEXT

DROP ANY CUBE

DROP ANY CUBE BUILD PROCESS

DROP ANY CUBE DIMENSION

DROP ANY DIMENSION

DROP ANY DIRECTORY

DROP ANY EDITION

DROP ANY EVALUATION CONTEXT

DROP ANY LIBRARY

DROP ANY MEASURE FOLDER

DROP ANY MINING MODEL

DROP ANY OPERATOR

DROP ANY OUTLINE

DROP ANY RULE

DROP ANY RULE SET

DROP ANY SQL PROFILE

DROP ANY TYPE

ENQUEUE ANY QUEUE

EXECUTE ANY ASSEMBLY

EXECUTE ANY CLASS

EXECUTE ANY EVALUATION CONTEXT

EXECUTE ANY LIBRARY

EXECUTE ANY OPERATOR

EXECUTE ANY PROGRAM

EXECUTE ANY RULE

EXECUTE ANY RULE SET

EXECUTE ANY TYPE

EXECUTE ASSEMBLY

EXEMPT ACCESS POLICY

EXEMPT IDENTITY POLICY

EXPORT FULL DATABASE

FLASHBACK ARCHIVE ADMINISTER

FORCE ANY TRANSACTION

FORCE TRANSACTION

GLOBAL QUERY REWRITE

GRANT ANY OBJECT PRIVILEGE

GRANT ANY PRIVILEGE

IMPORT FULL DATABASE

INSERT ANY CUBE DIMENSION

INSERT ANY MEASURE FOLDER

MANAGE ANY FILE GROUP

MANAGE ANY QUEUE

MANAGE FILE GROUP

MANAGE SCHEDULER

ON COMMIT REFRESH

QUERY REWRITE

READ ANY FILE GROUP

RESUMABLE

SELECT ANY CUBE

SELECT ANY CUBE DIMENSION

SELECT ANY DICTIONARY

SELECT ANY MINING MODEL

SELECT ANY TRANSACTION

UNDER ANY TYPE

UPDATE ANY CUBE

UPDATE ANY CUBE BUILD PROCESS

UPDATE ANY CUBE DIMENSION

9.6.1.2   对象权限汇总

select:可以查询表数据。

update:可以更新表数据。

insert:可以插入表数据。

delete:可以删除表数据。

alter:可以修改表。

index:可以创建索引。

all:所有权限。

execute:可以执行存储过程。

9.6.2 赋予系统权限

9.6.2.1  SQL*Plus

禁止传递系统权限:在SQL>下输入:grant  系统权限  to  用户名;

允许传递系统权限:在SQL>下输入:grant  系统权限  to  用户名  with  admin  option;

 

注意:多个权限之间用‘,’逗号隔开。

9.6.3 收回系统权限

如果使用WITH ADMIN OPTION为某个用户赋予可传递的系统权限,收回后将不能再使用权限传递,那么对于已经被这个用户赋予相同权限的所有用户来说,不会级联收回这些用户的相同权限。

系统权限无级联,即A赋予B权限,B赋予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。

9.6.3.1  SQL*Plus

在SQL>下输入:revoke  系统权限  from  用户名;

 

注意:多个权限之间用‘,’逗号隔开。

9.6.4 查看系统权限

9.6.4.1  SQL*Plus

查看当前用户拥有哪些系统权限:

在SQL>下输入:select * from session_privs;

 

查看全部用户拥有哪些权限:

SQL> select * from dba_role_privs;

SQL> select * from dba_sys_privs;

SQL> select * from role_sys_privs;

9.6.5 赋予对象权限

9.6.5.1  SQL*Plus

禁止传递对象权限:在SQL>下输入:grant  对象权限  on  对象名  to  用户名;

允许传递对象权限:在SQL>下输入:grant  对象权限  on  对象名  to  用户名  with grant option;

 

注意:多个权限之间用‘,’逗号隔开。

9.6.6 收回对象权限

如果使用WITH GRANT OPTION为某个用户赋予可传递的对象权限,收回后将不能再使用权限传递,那么对于已经被这个用户赋予相同权限的所有用户来说,同时还会级联收回这些用户的相同权限。

对象权限有级联,即A赋予B权限,B赋予C权限,如果A收回B的权限,C的权限也会被收回;对象权限可以跨用户回收,即A可以直接收回C用户的权限。

9.6.6.1  SQL*Plus

在SQL>下输入:revoke  对象权限  on  表或视图名  from  用户名;

 

注意:多个权限之间用‘,’逗号隔开。

9.6.7 查看对象权限

9.6.7.1  SQL*Plus

用户可以查询的表:

在SQL>下输入:select  owner, table_name  from  all_tables;

 

用户创建的表:

在SQL>下输入:select  table_name  from  user_tables;

 

获权可以存取的表(被赋予对象权限的):

在SQL>下输入:select  grantor, table_schema, table_name, privilege  from  all_tab_privs;

 

授出权限的表(赋予对象权限):

在SQL>下输入:select  grantee, owner, table_name, privilege  from  user_tab_privs;

9.6.8 角色

系统角色

DBA:全部特权,是系统最高权限,可以创建数据库结构,没有此权限则不可以。

RESOURCE:允许用户创建各种对象的系统权限集合,包括:create cluster、create procedure、create sequence、create table、create trigger、create type、create operator、create indextype。

CONNECT:允许用户远程登录的系统权限集合,包括:create session。

 

注意:

可以通过select * from dba_sys_privs where grantee='RESOURCE';查询角色具体包括哪些系统权限。

赋予了角色,收回时也必须指定角色来一次性全部收回,不能单独只收回其中某个系统权限。

赋予和收回角色后,需要重连,才能生效。

9.7 锁定数据库用户

在SQL>下输入:alter  user  用户名  account  lock;

 

注意:只能是具有DBA权限的用户才能执行此命令。

 

每一个数据库用户都可以被锁定,锁定后此用户就无法登陆了,解锁后又可以继续登陆了。锁定后,此用户会被提示ORA-28000错误。

如果所有的DBA权限用户都被锁定了,就用sqlplus登陆本机数据库后,执行解锁命令。

9.7.1 查看数据库用户锁定时间

在SQL>下输入:select  username,lock_date  from  dba_users  where  username='用户名大写';

 

注意:可以查看Oracle服务器的此时段的listener.log日志,就可以知道是什么原因导致的锁定。

9.8 解锁数据库用户

在SQL>下输入:alter  user  用户名  account  unlock;

 

注意:只能是具有DBA权限的用户才能执行此命令。

9.9 用户配置文件

9.9.1 创建用户配置文件

在SQL>下输入:create  profile  用户配置文件名称  limit;

9.9.2 查看数据库用户对应的用户配置文件名

在SQL>下输入:select  username,profile  from  dba_users  where  username='用户名大写';

PROFILE列对应此用户的用户配置文件名。

 

查看所有用户对应的用户配置文件名:

在SQL>下输入:select  username,profile  from  dba_users;

9.9.3 修改数据库用户对应的用户配置文件名

在SQL>下输入:alter  user  用户名  profile  用户配置文件名称;

9.9.4 查看用户配置文件各项资源

在SQL>下输入:select  *  from  dba_profiles  where  profile='用户配置文件名称大写';

例如:select  *  from  dba_profiles  where  profile='DEFAULT';表示查看DEFAULT用户配置文件。

配置文件里各项资源说明:

RESOURCE_NAME资源名

作用

是否受控于用户配置文件生效开关

生效方式

COMPOSITE_LIMIT

用于指定会话的总计资源消耗

UNLIMITED为不限制

 

 

SESSIONS_PER_USER

用于指定每个用户的最大并发会话个数

UNLIMITED为不限制

精确无误差

实时

CPU_PER_SESSION

用于指定每个会话可以占用的最大CPU时间

UNLIMITED为不限制

 

 

CPU_PER_CALL

限制每次调用(解析,执行或提取数据)可占用的最大CPU时间(单位:百分之一秒)

UNLIMITED为不限制

 

 

LOGICAL_READS_PER_SESSION

用于指定会话的最大逻辑读取次数

UNLIMITED为不限制

 

 

LOGICAL_READS_PER_CALL

用于限制每次调用的最大逻辑I/O次数

UNLIMITED为不限制

 

 

IDLE_TIME

用于指定会话的最大空闲时间

UNLIMITED为不限制

 

 

CONNECT_TIME

用于指定会话的最大连接时间

UNLIMITED为不限制

 

 

PRIVATE_SGA

用于指定会话在共享池中可以分配的最大总计私有空间

UNLIMITED为不限制

 

 

FAILED_LOGIN_ATTEMPTS

用于指定连续登陆失败的最大次数

达到最大次数后,用户会被锁定,登陆时提示ORA-28000

UNLIMITED为不限制

精确无误差

实时

PASSWORD_LIFE_TIME

用于指定密码有效天数

最少为1,UNLIMITED为不限制

如果已经有用户被提示ORA-28002错误,需要重新修改一次密码,即使此资源已经设置为UNLIMITED

精确无误差

否,始终开启

 

PASSWORD_REUSE_TIME

用于指定密码可重用时间

UNLIMITED为不限制

 

 

PASSWORD_REUSE_MAX

用于指定在重用密码之前口令需要改变的次数

UNLIMITED为不限制

 

 

PASSWORD_VERIFY_FUNCTION

用于是否要禁用口令校验函数

NULL为禁用

 

 

PASSWORD_LOCK_TIME

用于指定帐户被锁定的天数

 

 

PASSWORD_GRACE_TIME

用于指定密码到期后,还可以继续登陆的宽限天数

UNLIMITED为不限制

 

 

9.9.5 修改用户配置文件文件各项资源

在SQL>下输入:alter  profile  用户配置文件名  limit  资源名  限制值;

注意:修改用户配置文件后,无需重启数据库,实时生效。

 

例如:修改DEFAULT配置文件的用户密码有效天数为无限:

alter  profile  DEFAULT  limit  password_life_time  unlimited;

9.9.6 修改用户配置文件生效开关

查看:在SQL>下输入:show  parameter  resource;

NAME列为resource_limit行的对应VALUE列的值,TRUE表示开启,FALSE表示关闭。

开启:在SQL>下输入:alter  system  set  resource_limit=true;

关闭:在SQL>下输入:alter  system  set  resource_limit=false;

 

注意:修改用户配置文件生效开关后,无需重启数据库,实时生效。

10 数据库表

10.1  新建表

10.1.1   SQL*Plus

10.1.2   OEM

10.1.3   OCILIB

10.2  修改表

10.2.1   SQL*Plus

修改表名称:alter  table  旧的表名称  rename  to  新的表名称;

 

添加表字段:alter  table  表名称  add  (字段名称  数据类型  [default  默认值][null/not null],…);

注意:添加的表字段只能放在表的最后一个字段。

 

修改表字段:alter  table  表名称  modify  (字段名称  数据类型  [default 默认值][null/not null],…);

 

修改表字段名称:alter  table  表名称  rename  column  旧的字段名称  to  新的字段名称;

 

删除表字段:alter  table  表名称  drop  (字段名称);

10.2.2   OEM

10.2.3   OCILIB

10.3  删除表

10.3.1   SQL*Plus

drop  table  表名称  cascade;

 

注意:要删除的表如果有外键约束,则先要删除子表才能删除父表。

10.3.2   OEM

10.3.3   OCILIB

10.4  新建主键约束

10.4.1   SQL*Plus

alter  table  表名称  add  constraint  约束名称  primary  key  (字段名称1, 字段名称2, …);

10.5  新建唯一性约束

10.5.1   SQL*Plus

alter  table  表名称  add  constraint  约束名称  unique(字段名称1, 字段名称2, …);

 

注意:字段内容为空的字段是永远不会违反唯一性约束。因为一个空值(null)的含义是该列当前的状态是不存在,所以它永远不可能会与另外一个空值相等。

注意:在Oracle中,唯一性约束最多可以有32个字段。

注意:如果唯一性约束由多个字段组成,其中的部分字段可以包含空值。

注意:Oracle中不允许在同一字段上既创建主键约束又创建唯一性约束。

10.6  删除约束

10.6.1   SQL*Plus

删除唯一性约束:

alter  table  表名称  drop  constraint  约束名称;

10.7  锁表与解锁表

10.7.1   SQL*Plus

查看锁表进程SQL语句1:

select sess.sid,sess.serial#,lo.oracle_username,lo.os_user_name,ao.object_name,lo.locked_mode

    from v$locked_object lo,dba_objects ao,v$session sess

        where ao.object_id = lo.object_id and lo.session_id = sess.sid;

 

查看锁表进程SQL语句2:

select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;

 

杀掉锁表进程:

如有以上SQL语句查询出有记录,表示有表已经被锁,记录下SID和serial#字段,用以下SQL语句即可解锁:

alter  system  kill  session  'SID,serial#';

10.7.2   OEM

10.7.3   OCILIB

10.8  查询表结构

ALL_TAB_COLUMNS表记录了所有表的字段信息,其中:

TABLE_NAME字段:表示表名称。

COLUMN_NAME字段:表示此表的此字段的名称。

DATA_TYPE字段:表示此表的此字段的类型。

DATA_LENGTH字段:表示此表的此字段的长度。

COLUMN_ID字段:表示此表的此字段的序号,1表示第一个字段,2表示第二个字段,以此类推。

 

在SQL>下输入:select * from ALL_TAB_COLUMNS where TABLE_NAME = '表名称大写';

10.9  系统表

dba_开头.....

dba_users    数据库用户信息

   dba_segments 表段信息

   dba_extents   数据区信息

   dba_objects   数据库对象信息

   dba_tablespaces  数据库表空间信息

   dba_data_files   数据文件设置信息

   dba_temp_files  临时数据文件信息

   dba_rollback_segs  回滚段信息

   dba_ts_quotas  用户表空间配额信息

   dba_free_space数据库空闲空间信息

   dba_profiles  数据库用户资源限制信息

   dba_sys_privs  用户的系统权限信息

   dba_tab_privs用户具有的对象权限信息

   dba_col_privs用户具有的列对象权限信息

   dba_role_privs用户具有的角色信息

   dba_audit_trail审计跟踪记录信息

   dba_stmt_audit_opts审计设置信息

   dba_audit_object  对象审计结果信息

   dba_audit_session会话审计结果信息

   dba_indexes用户模式的索引信息

user_开头

   user_objects  用户对象信息

   user_source  数据库用户的所有资源对象信息

   user_segments  用户的表段信息

   user_tables   用户的表对象信息

   user_tab_columns  用户的表列信息

   user_constraints  用户的对象约束信息

   user_sys_privs  当前用户的系统权限信息

   user_tab_privs  当前用户的对象权限信息

   user_col_privs  当前用户的表列权限信息

   user_role_privs  当前用户的角色权限信息

   user_indexes  用户的索引信息

   user_ind_columns用户的索引对应的表列信息

   user_cons_columns  用户的约束对应的表列信息

   user_clusters  用户的所有簇信息

   user_clu_columns 用户的簇所包含的内容信息

   user_cluster_hash_expressions   散列簇的信息

v$开头

   v$database   数据库信息

   v$datafile  数据文件信息

   v$controlfile控制文件信息

   v$logfile  重做日志信息

   v$instance  数据库实例信息

   v$log  日志组信息

   v$loghist 日志历史信息

   v$sga  数据库SGA信息

   v$parameter 初始化参数信息

   v$process  数据库服务器进程信息

   v$bgprocess  数据库后台进程信息

   v$controlfile_record_section  控制文件记载的各部分信息

   v$thread  线程信息

   v$datafile_header  数据文件头所记载的信息

   v$archived_log归档日志信息

   v$archive_dest  归档日志的设置信息

   v$logmnr_contents  归档日志分析的DML DDL结果信息

   v$logmnr_dictionary  日志分析的字典文件信息

   v$logmnr_logs  日志分析的日志列表信息

   v$tablespace  表空间信息

   v$tempfile  临时文件信息

   v$filestat  数据文件的I/O统计信息

   v$undostat  Undo数据信息

   v$rollname  在线回滚段信息

   v$session  信息

   v$transaction 事务信息

   v$rollstat   回滚段统计信息

   v$pwfile_users  特权用户信息

   v$sqlarea    当前查询过的sql语句访问过的资源及相关的信息

   v$sql         与v$sqlarea基本相同的相关信息

   v$sysstat   数据库系统状态信息

all_开头

   all_users  数据库所有用户的信息

   all_objects  数据库所有的对象的信息

   all_def_audit_opts  所有默认的审计设置信息

   all_tables  所有的表对象信息

   all_indexes所有的数据库对象索引的信息

session_开头

   session_roles   会话的角色信息

   session_privs   会话的权限信息

index_开头

   index_stats  索引的设置和存储信息

伪表

   dual  系统伪列表信息,是一个虚拟表,oracle保证dual里面永远只有一条记录。

10.10 索引

一.索引介绍

 

1.1 索引的创建语法:

 

CREATE UNIUQE | BITMAP INDEX <schema>.<index_name>

      ON <schema>.<table_name>

           (<column_name> | <expression> ASC | DESC,

            <column_name> | <expression> ASC | DESC,...)

     TABLESPACE <tablespace_name>

     STORAGE <storage_settings>

     LOGGING | NOLOGGING

     COMPUTE STATISTICS

     NOCOMPRESS | COMPRESS<nn>

     NOSORT | REVERSE

     PARTITION | GLOBAL PARTITION<partition_setting>

 

相关说明

 

1)UNIQUE | BITMAP:指定UNIQUE为唯一索引,BITMAP为位图索引,省略为B-Tree索引。

2)<column_name> | <expression> ASC | DESC:可以对多列进行联合索引,当为expression时即“基于函数的索引”。

3)TABLESPACE:指定存放索引的表空间(索引和原表不在一个表空间时效率更高)。

4)STORAGE:可进一步设置表空间的存储参数。

5)LOGGING | NOLOGGING:是否对索引产生重做日志(对大表尽量使用NOLOGGING来减少占用空间并提高效率)。

6)COMPUTE STATISTICS:创建新索引时收集统计信息。

7)NOCOMPRESS | COMPRESS<nn>:是否使用“键压缩”(使用键压缩可以删除一个键列中出现的重复值)。

8)NOSORT | REVERSE:NOSORT表示与表中相同的顺序创建索引,REVERSE表示相反顺序存储索引值。

9)PARTITION | NOPARTITION:可以在分区表和未分区表上对创建的索引进行分区。

 

1.2 索引特点:

 

第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

 

1.3 索引不足:

 

第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。

第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

一个基表不能建太多的索引;

空值不能被索引

只有唯一索引才真正提高速度,一般的索引只能提高30%左右。

 

1.4 应该建索引列的特点:

 

1)在经常需要搜索的列上,可以加快搜索的速度;

2)在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;

3)在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;

4)在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;

5)在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;

6)在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。

 

1.5 不应该建索引列的特点:

 

第一,对于那些在查询中很少使用或者参考的列不应该创建索引。这是因为,既然这些列很少使用到,因此有索引或者无索引,并不能提高查询速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。

第二,对于那些只有很少数据值的列也不应该增加索引。这是因为,由于这些列的取值很少,例如人事表的性别列,在查询的结果中,结果集的数据行占了表中数据行的很大比例,即需要在表中搜索的数据行的比例很大。增加索引,并不能明显加快检索速度。

第三,对于那些定义为blob数据类型的列不应该增加索引。这是因为,这些列的数据量要么相当大,要么取值很少。

第四,当修改性能远远大于检索性能时,不应该创建索引。这是因为,修改性能和检索性能是互相矛盾的。当增加索引时,会提高检索性能,但是会降低修改性能。当减少索引时,会提高修改性能,降低检索性能。因此,当修改性能远远大于检索性能时,不应该创建索引。

 

1.6 限制索引

 

限制索引是一些没有经验的开发人员经常犯的错误之一。在SQL中有很多陷阱会使一些索引无法使用。下面讨论一些常见的问题:

 

   1.6.1  使用不等于操作符(<>、!=)

   下面的查询即使在cust_rating列有一个索引,查询语句仍然执行一次全表扫描。

   select cust_Id,cust_name from customers where cust_rating <> 'aa';

 

把上面的语句改成如下的查询语句,这样,在采用基于规则的优化器而不是基于代价的优化器(更智能)时,将会使用索引。

 

  select cust_Id,cust_name from customers where cust_rating < 'aa' or cust_rating > 'aa';

 

  特别注意:通过把不等于操作符改成OR条件,就可以使用索引,以避免全表扫描。

 

   1.6.2 使用IS NULL 或IS NOT NULL

 

   使用IS NULL 或IS NOT NULL同样会限制索引的使用。因为NULL值并没有被定义。在SQL语句中使用NULL会有很多的麻烦。因此建议开发人员在建表时,把需要索引的列设成NOT NULL。如果被索引的列在某些行中存在NULL值,该行就不会被索引(除非索引是一个位图索引,关于位图索引在稍后在详细讨论)。

 

   1.6.3 使用函数

 

   如果不使用基于函数的索引,那么在SQL语句的WHERE子句中对存在索引的列使用函数时,会使优化器忽略掉这些索引。下面的查询不会使用索引(只要它不是基于函数的索引)

 

 select empno,ename,deptno from emp  where  trunc(hiredate)='01-MAY-81';

 

   把上面的语句改成下面的语句,这样就可以通过索引进行查找。

 

select empno,ename,deptno from emp where  hiredate<(to_date('01-MAY-81')+0.9999);

 

1.6.4 比较不匹配的数据类型

 

也是比较难于发现的性能问题之一。 注意下面查询的例子,account_number是一个VARCHAR2类型,在account_number字段上有索引。

 

下面的语句将执行全表扫描:

 

 select bank_name,address,city,state,zip from banks where account_number = 990354;

 

  Oracle可以自动把where子句变成to_number(account_number)=990354,这样就限制了索引的使用,改成下面的查询就可以使用索引:

 

 select bank_name,address,city,state,zip from banks where account_number ='990354';

 

特别注意:不匹配的数据类型之间比较会让Oracle自动限制索引的使用,即便对这个查询执行Explain Plan也不能让您明白为什么做了一次“全表扫描”。

 

1.7 查询索引

 

查询DBA_INDEXES视图可得到表中所有索引的列表,注意只能通过USER_INDEXES的方法来检索模式(schema)的索引。访问USER_IND_COLUMNS视图可得到一个给定表中被索引的特定列。

 

1.8 组合索引

 

当某个索引包含有多个已索引的列时,称这个索引为组合(concatented)索引。在Oracle9i引入跳跃式扫描的索引访问方法之前,查询只能在有限条件下使用该索引。比如:表emp有一个组合索引键,该索引包含了empno、ename和deptno。在Oracle9i之前除非在where之句中对第一列(empno)指定一个值,否则就不能使用这个索引键进行一次范围扫描。

 

   特别注意:在Oracle9i之前,只有在使用到索引的前导索引时才可以使用组合索引!

 

1.9 ORACLE ROWID

 

通过每个行的ROWID,索引Oracle提供了访问单行数据的能力。ROWID其实就是直接指向单独行的线路图。如果想检查重复值或是其他对ROWID本身的引用,可以在任何表中使用和指定rowid列。

 

1.10 选择性

 

   使用USER_INDEXES视图,该视图中显示了一个distinct_keys列。比较一下唯一键的数量和表中的行数,就可以判断索引的选择性。选择性越高,索引返回的数据就越少。

 

1.11 群集因子(Clustering Factor)

 

  Clustering Factor位于USER_INDEXES视图中。该列反映了数据相对于已建索引的列是否显得有序。如果Clustering Factor列的值接近于索引中的树叶块(leaf block)的数目,表中的数据就越有序。如果它的值接近于表中的行数,则表中的数据就不是很有序。

 

1.12 二元高度(Binary height)

 

  索引的二元高度对把ROWID返回给用户进程时所要求的I/O量起到关键作用。在对一个索引进行分析后,可以通过查询DBA_INDEXES的B- level列查看它的二元高度。二元高度主要随着表的大小以及被索引的列中值的范围的狭窄程度而变化。索引上如果有大量被删除的行,它的二元高度也会增加。更新索引列也类似于删除操作,因为它增加了已删除键的数目。重建索引可能会降低二元高度。

 

1.13 快速全局扫描

 

  从Oracle7.3后就可以使用快速全局扫描(Fast Full Scan)这个选项。这个选项允许Oracle执行一个全局索引扫描操作。快速全局扫描读取B-树索引上所有树叶块。初始化文件中的DB_FILE_MULTIBLOCK_READ_COUNT参数可以控制同时被读取的块的数目。

 

1.14 跳跃式扫描

 

  从Oracle9i开始,索引跳跃式扫描特性可以允许优化器使用组合索引,即便索引的前导列没有出现在WHERE子句中。索引跳跃式扫描比全索引扫描要快的多。

 

下面的比较他们的区别:

 

SQL> set timing on

 

SQL> create index TT_index on TT(teamid,areacode);

 

索引已创建。

 

已用时间:  00: 02: 03.93

 

SQL> select count(areacode) from tt;

 

COUNT(AREACODE)

 

---------------

 

 7230369

 

已用时间:  00: 00: 08.31

 

SQL> select /*+ index(tt TT_index )*/ count(areacode) from tt;

 

COUNT(AREACODE)

 

---------------

 

7230369

 

已用时间:  00: 00: 07.37

 

1.15 索引的类型

 

B-树索引    位图索引   HASH索引     索引编排表

 

反转键索引 基于函数的索引  分区索引   本地和全局索引

 

二. 索引分类

 

Oracle提供了大量索引选项。知道在给定条件下使用哪个选项对于一个应用程序的性能来说非常重要。一个错误的选择可能会引发死锁,并导致数据库性能急剧下降或进程终止。而如果做出正确的选择,则可以合理使用资源,使那些已经运行了几个小时甚至几天的进程在几分钟得以完成,这样会使您立刻成为一位英雄。下面就将简单的讨论每个索引选项。

 

 

 

下面讨论的索引类型:

 

B树索引(默认类型)

 

位图索引

 

HASH索引

 

索引组织表索引

 

反转键(reverse key)索引

 

基于函数的索引

 

分区索引(本地和全局索引)

 

位图连接索引

 

 

 

2.1  B树索引(默认类型)

 

 B树索引在Oracle中是一个通用索引。在创建索引时它就是默认的索引类型。B树索引可以是一个列的(简单)索引,也可以是组合/复合(多个列)的索引。B树索引最多可以包括32列。

 

在下图的例子中,B树索引位于雇员表的last_name列上。这个索引的二元高度为3;接下来,Oracle会穿过两个树枝块(branch block),到达包含有ROWID的树叶块。在每个树枝块中,树枝行包含链中下一个块的ID号。

 

树叶块包含了索引值、ROWID,以及指向前一个和后一个树叶块的指针。Oracle可以从两个方向遍历这个二叉树。B树索引保存了在索引列上有值的每个数据行的ROWID值。Oracle不会对索引列上包含NULL值的行进行索引。如果索引是多个列的组合索引,而其中列上包含NULL值,这一行就会处于包含NULL值的索引列中,且将被处理为空(视为NULL)。

 

 

 

技巧:索引列的值都存储在索引中。因此,可以建立一个组合(复合)索引,这些索引可以直接满足查询,而不用访问表。这就不用从表中检索数据,从而减少了I/O量。

 

B-tree 特点:

 

  适合与大量的增、删、改(OLTP)

 

不能用包含OR操作符的查询;

 

适合高基数的列(唯一值多)

 

典型的树状结构;

 

每个结点都是数据块;

 

大多都是物理上一层、两层或三层不定,逻辑上三层;

 

叶子块数据是排序的,从左向右递增;

 

在分支块和根块中放的是索引的范围;

 

 

 

2.2  位图索引

 

位图索引非常适合于决策支持系统(Decision Support System,DSS)和数据仓库,它们不应该用于通过事务处理应用程序访问的表。它们可以使用较少到中等基数(不同值的数量)的列访问非常大的表。尽管位图索引最多可达30个列,但通常它们都只用于少量的列。

 

例如,您的表可能包含一个称为Sex的列,它有两个可能值:男和女。这个基数只为2,如果用户频繁地根据Sex列的值查询该表,这就是位图索引的基列。当一个表内包含了多个位图索引时,您可以体会到位图索引的真正威力。如果有多个可用的位图索引,Oracle就可以合并从每个位图索引得到的结果集,快速删除不必要的数据。

 

 

 

Bitmapt 特点:

 

适合与决策支持系统;

 

做UPDATE代价非常高;

 

非常适合OR操作符的查询;

 

基数比较少的时候才能建位图索引;

 

 

 

技巧:对于有较低基数的列需要使用位图索引。性别列就是这样一个例子,它有两个可能值:男或女(基数仅为2)。位图对于低基数(少量的不同值)列来说非常快,这是因为索引的尺寸相对于B树索引来说小了很多。因为这些索引是低基数的B树索引,所以非常小,因此您可以经常检索表中超过半数的行,并且仍使用位图索引。

 

当大多数条目不会向位图添加新的值时,位图索引在批处理(单用户)操作中加载表(插入操作)方面通常要比B树做得好。当多个会话同时向表中插入行时不应该使用位图索引,在大多数事务处理应用程序中都会发生这种情况。

 

示例

 

下面来看一个示例表PARTICIPANT,该表包含了来自个人的调查数据。列Age_Code、Income_Level、Education_Level和Marital_Status都包括了各自的位图索引。下图显示了每个直方图中的数据平衡情况,以及对访问每个位图索引的查询的执行路径。图中的执行路径显示了有多少个位图索引被合并,可以看出性能得到了显著的提高。

 

 

 

如上图图所示,优化器依次使用4个单独的位图索引,这些索引的列在WHERE子句中被引用。每个位图记录指针(例如0或1),用于指示表中的哪些行包含位图中的已知值。有了这些信息后,Oracle就执行BITMAP AND操作以查找将从所有4个位图中返回哪些行。该值然后被转换为ROWID值,并且查询继续完成剩余的处理工作。注意,所有4个列都有非常低的基数,使用索引可以非常快速地返回匹配的行。

 

 

 

技巧:在一个查询中合并多个位图索引后,可以使性能显著提高。位图索引使用固定长度的数据类型要比可变长度的数据类型好。较大尺寸的块也会提高对位图索引的存储和读取性能。

 

 

 

下面的查询可显示索引类型。

 

SQL> select index_name, index_type from user_indexes;

 

INDEX_NAME         INDEX_TYPE

 

------------------------------ ----------------------

 

TT_INDEX            NORMAL

 

IX_CUSTADDR_TP    NORMAL

 

B树索引作为NORMAL列出;而位图索引的类型值为BITMAP。

 

 

 

技巧:如果要查询位图索引列表,可以在USER _INDEXES视图中查询index_type列。

 

建议不要在一些联机事务处理(OLTP)应用程序中使用位图索引。B树索引的索引值中包含ROWID,这样Oracle就可以在行级别上锁定索引。位图索引存储为压缩的索引值,其中包含了一定范围的ROWID,因此Oracle必须针对一个给定值锁定所有范围内的ROWID。这种锁定类型可能在某些DML语句中造成死锁。SELECT语句不会受到这种锁定问题的影响。

 

位图索引的使用限制:

 

基于规则的优化器不会考虑位图索引。

 

当执行ALTER TABLE语句并修改包含有位图索引的列时,会使位图索引失效。

 

位图索引不包含任何列数据,并且不能用于任何类型的完整性检查。

 

位图索引不能被声明为唯一索引。

 

位图索引的最大长度为30。

 

 

 

技巧:不要在繁重的OLTP环境中使用位图索引

 

 

 

2.3  HASH索引

 

使用HASH索引必须要使用HASH集群。建立一个集群或HASH集群的同时,也就定义了一个集群键。这个键告诉Oracle如何在集群上存储表。在存储数据时,所有与这个集群键相关的行都被存储在一个数据库块上。如果数据都存储在同一个数据库块上,并且将HASH索引作为WHERE子句中的确切匹配,Oracle就可以通过执行一个HASH函数和I/O来访问数据——而通过使用一个二元高度为4的B树索引来访问数据,则需要在检索数据时使用4个I/O。如下图所示,其中的查询是一个等价查询,用于匹配HASH列和确切的值。Oracle可以快速使用该值,基于HASH函数确定行的物理存储位置。

 

HASH索引可能是访问数据库中数据的最快方法,但它也有自身的缺点。集群键上不同值的数目必须在创建HASH集群之前就要知道。需要在创建HASH集群的时候指定这个值。低估了集群键的不同值的数字可能会造成集群的冲突(两个集群的键值拥有相同的HASH值)。这种冲突是非常消耗资源的。冲突会造成用来存储额外行的缓冲溢出,然后造成额外的I/O。如果不同HASH值的数目已经被低估,您就必须在重建这个集群之后改变这个值。

 

ALTER CLUSTER命令不能改变HASH键的数目。HASH集群还可能浪费空间。如果无法确定需要多少空间来维护某个集群键上的所有行,就可能造成空间的浪费。如果不能为集群的未来增长分配好附加的空间,HASH集群可能就不是最好的选择。如果应用程序经常在集群表上进行全表扫描,HASH集群可能也不是最好的选择。由于需要为未来的增长分配好集群的剩余空间量,全表扫描可能非常消耗资源。

 

在实现HASH集群之前一定要小心。您需要全面地观察应用程序,保证在实现这个选项之前已经了解关于表和数据的大量信息。通常,HASH对于一些包含有序值的静态数据非常有效。

 

技巧:HASH索引在有限制条件(需要指定一个确定的值而不是一个值范围)的情况下非常有用。

 

 

 

2.4  索引组织表

 

索引组织表会把表的存储结构改成B树结构,以表的主键进行排序。这种特殊的表和其他类型的表一样,可以在表上执行所有的DML和DDL语句。由于表的特殊结构,ROWID并没有被关联到表的行上。

 

对于一些涉及精确匹配和范围搜索的语句,索引组织表提供了一种基于键的快速数据访问机制。基于主键值的UPDATE和DELETE语句的性能也同样得以提高,这是因为行在物理上有序。由于键列的值在表和索引中都没有重复,存储所需要的空间也随之减少。

 

如果不会频繁地根据主键列查询数据,则需要在索引组织表中的其他列上创建二级索引。不会频繁根据主键查询表的应用程序不会了解到使用索引组织表的全部优点。对于总是通过对主键的精确匹配或范围扫描进行访问的表,就需要考虑使用索引组织表。

 

 

 

技巧:可以在索引组织表上建立二级索引。

 

 

 

2.5  反转键索引

 

当载入一些有序数据时,索引肯定会碰到与I/O相关的一些瓶颈。在数据载入期间,某部分索引和磁盘肯定会比其他部分使用频繁得多。为了解决这个问题,可以把索引表空间存放在能够把文件物理分割在多个磁盘上的磁盘体系结构上。

 

为了解决这个问题,Oracle还提供了一种反转键索引的方法。如果数据以反转键索引存储,这些数据的值就会与原先存储的数值相反。这样,数据1234、1235和1236就被存储成4321、5321和6321。结果就是索引会为每次新插入的行更新不同的索引块。

 

 

 

技巧:如果您的磁盘容量有限,同时还要执行大量的有序载入,就可以使用反转键索引。

 

不可以将反转键索引与位图索引或索引组织表结合使用。因为不能对位图索引和索引组织表进行反转键处理。

 

 

 

 

 

2.6  基于函数的索引

 

可以在表中创建基于函数的索引。如果没有基于函数的索引,任何在列上执行了函数的查询都不能使用这个列的索引。例如,下面的查询就不能使用JOB列上的索引,除非它是基于函数的索引:

 

select * from emp where UPPER(job) = 'MGR';

 

下面的查询使用JOB列上的索引,但是它将不会返回JOB列具有Mgr或mgr值的行:

 

select * from emp where job = 'MGR';

 

 

 

可以创建这样的索引,允许索引访问支持基于函数的列或数据。可以对列表达式UPPER(job)创建索引,而不是直接在JOB列上建立索引,如:

 

create index EMP$UPPER_JOB on emp(UPPER(job));

 

 

 

尽管基于函数的索引非常有用,但在建立它们之前必须先考虑下面一些问题:

 

能限制在这个列上使用的函数吗?如果能,能限制所有在这个列上执行的所有函数吗

 

是否有足够应付额外索引的存储空间?

 

在每列上增加的索引数量会对针对该表执行的DML语句的性能带来何种影响?

 

基于函数的索引非常有用,但在实现时必须小心。在表上创建的索引越多,INSERT、UPDATE和DELETE语句的执行就会花费越多的时间。

 

 

 

注意:对于优化器所使用的基于函数的索引来说,必须把初始参数QUERY _REWRITE _ ENABLED设定为TRUE。

 

 

 

示例:

 

select  count(*) from  sample where ratio(balance,limit) >.5;

 

Elapsed time: 20.1 minutes

 

 

 

create index ratio_idx1 on sample (ratio(balance, limit));

 

 

 

select  count(*) from  sample where ratio(balance,limit) >.5;

 

Elapsed time: 7 seconds!!!

 

 

 

2.7  分区索引

 

分区索引就是简单地把一个索引分成多个片断。通过把一个索引分成多个片断,可以访问更小的片断(也更快),并且可以把这些片断分别存放在不同的磁盘驱动器上(避免I/O问题)。B树和位图索引都可以被分区,而HASH索引不可以被分区。可以有好几种分区方法:表被分区而索引未被分区;表未被分区而索引被分区;表和索引都被分区。不管采用哪种方法,都必须使用基于成本的优化器。分区能够提供更多可以提高性能和可维护性的可能性

 

有两种类型的分区索引:本地分区索引和全局分区索引。每个类型都有两个子类型,有前缀索引和无前缀索引。表各列上的索引可以有各种类型索引的组合。如果使用了位图索引,就必须是本地索引。把索引分区最主要的原因是可以减少所需读取的索引的大小,另外把分区放在不同的表空间中可以提高分区的可用性和可靠性。

 

在使用分区后的表和索引时,Oracle还支持并行查询和并行DML。这样就可以同时执行多个进程,从而加快处理这条语句。

 

2.7.1.本地分区索引(通常使用的索引)

 

可以使用与表相同的分区键和范围界限来对本地索引分区。每个本地索引的分区只包含了它所关联的表分区的键和ROWID。本地索引可以是B树或位图索引。如果是B树索引,它可以是唯一或不唯一的索引。

 

这种类型的索引支持分区独立性,这就意味着对于单独的分区,可以进行增加、截取、删除、分割、脱机等处理,而不用同时删除或重建索引。Oracle自动维护这些本地索引。本地索引分区还可以被单独重建,而其他分区不会受到影响。

 

 

 

2.7.1.1 有前缀的索引

 

有前缀的索引包含了来自分区键的键,并把它们作为索引的前导。例如,让我们再次回顾participant表。在创建该表后,使用survey_id和survey_date这两个列进行范围分区,然后在survey_id列上建立一个有前缀的本地索引,如下图所示。这个索引的所有分区都被等价划分,就是说索引的分区都使用表的相同范围界限来创建。

 

 

 

技巧:本地的有前缀索引可以让Oracle快速剔除一些不必要的分区。也就是说没有包含WHERE条件子句中任何值的分区将不会被访问,这样也提高了语句的性能。

 

2.7.1.2 无前缀的索引

 

无前缀的索引并没有把分区键的前导列作为索引的前导列。若使用有同样分区键(survey_id和survey_date)的相同分区表,建立在survey_date列上的索引就是一个本地的无前缀索引,如下图所示。可以在表的任一列上创建本地无前缀索引,但索引的每个分区只包含表的相应分区的键值。

 

 

 

如果要把无前缀的索引设为唯一索引,这个索引就必须包含分区键的子集。在这个例子中,我们必须把包含survey和(或)survey_id的列进行组合(只要survey_id不是索引的第一列,它就是一个有前缀的索引)。

 

技巧:对于一个唯一的无前缀索引,它必须包含分区键的子集。

 

2.7.2. 全局分区索引

 

全局分区索引在一个索引分区中包含来自多个表分区的键。一个全局分区索引的分区键是分区表中不同的或指定一个范围的值。在创建全局分区索引时,必须定义分区键的范围和值。全局索引只能是B树索引。Oracle在默认情况下不会维护全局分区索引。如果一个分区被截取、增加、分割、删除等,就必须重建全局分区索引,除非在修改表时指定ALTER TABLE命令的UPDATE GLOBAL INDEXES子句。

 

2.7.2.1 有前缀的索引

 

通常,全局有前缀索引在底层表中没有经过对等分区。没有什么因素能限制索引的对等分区,但Oracle在生成查询计划或执行分区维护操作时,并不会充分利用对等分区。如果索引被对等分区,就必须把它创建为一个本地索引,这样Oracle可以维护这个索引,并使用它来删除不必要的分区,如下图所示。在该图的3个索引分区中,每个分区都包含指向多个表分区中行的索引条目。

 

分区的、全局有前缀索引

 

技巧:如果一个全局索引将被对等分区,就必须把它创建为一个本地索引,这样Oracle可以维护这个索引,并使用它来删除不必要的分区。

 

2.7.2.2 无前缀的索引

 

Oracle不支持无前缀的全局索引。

 

2.8  位图连接索引

 

位图连接索引是基于两个表的连接的位图索引,在数据仓库环境中使用这种索引改进连接维度表和事实表的查询的性能。创建位图连接索引时,标准方法是连接索引中常用的维度表和事实表。当用户在一次查询中结合查询事实表和维度表时,就不需要执行连接,因为在位图连接索引中已经有可用的连接结果。通过压缩位图连接索引中的ROWID进一步改进性能,并且减少访问数据所需的I/O数量。

 

创建位图连接索引时,指定涉及的两个表。相应的语法应该遵循如下模式:

 

create bitmap index FACT_DIM_COL_IDX on FACT(DIM.Descr_Col) from FACT, DIM

where FACT.JoinCol = DIM.JoinCol;

 

位图连接的语法比较特别,其中包含FROM子句和WHERE子句,并且引用两个单独的表。索引列通常是维度表中的描述列——就是说,如果维度是CUSTOMER,并且它的主键是CUSTOMER_ID,则通常索引Customer_Name这样的列。如果事实表名为SALES,可以使用如下的命令创建索引:

 

create bitmap index SALES_CUST_NAME_IDX

on  SALES(CUSTOMER.Customer_Name)  from SALES, CUSTOMER

where  SALES.Customer_ID=CUSTOMER.Customer_ID;

 

如果用户接下来使用指定Customer_Name列值的WHERE子句查询SALES和CUSTOMER表,优化器就可以使用位图连接索引快速返回匹配连接条件和Customer_Name条件的行。

 

位图连接索引的使用一般会受到限制:

1)只可以索引维度表中的列。

2)用于连接的列必须是维度表中的主键或唯一约束;如果是复合主键,则必须使用连接中的每一列。

3)不可以对索引组织表创建位图连接索引,并且适用于常规位图索引的限制也适用于位图连接索引。

10.11 索引类型汇总

1)b-tree索引

   Oracle数据库中最常见的索引类型是b-tree索引,也就是B-树索引,以其同名的计算科学结构命名。每当你发布基本的没有经过进 一步修改的CREATE INDEX语句时,就是在创建b-tree索引。这里不打算对b-tree索引进行更多深入的探讨,这些用户都可以自己了解。基本上这些索引存储你创建的 索引所在的列值以及用来查找自身行的指向实际数据表的指针。记住,这也就意味着要进行多路查询,其中一个查询各个节点和索引的叶节点,然后才是表的行自 身。这就是为什么Oracle的优化器在某种情况下会选择执行全表扫描而不执行索引查找的原因了,因为全表扫描执行起来实际上可能会更快一些。还要注意的 是,如果你的索引是创建在多个列上的话,那么第一列(leading column)非常重要。假设你有一个多列索引(也称为级联索引),索引列的排列顺序是c列到d列,你可以对使用该索引c列单独进行一次查询,但你不能使 用该索引对d列冶金行一次单独的查询。

 

  2)基于函数的索引

 

  如果在搜索时你读取很多行,或者你的索引选择性不大,又或者你在级联索引中使用了第一列以外的列,Oracle数据库有时候会选择不使用索 引。那么如果你想要执行一个大小写不敏感的搜索呢?像下面的指令:WHERE UPPER(first_name) = ‘JOHN’。

 

  这也不会使用first_name字段上的索引。为什么?因为Oracle不得不将UPPER函数用在该索引所有(ALL)的值上,所以还不如做一次全表扫描。所以,很多时候Oracle创建基于函数的索引就是为了这个目的。

 

  3)反转关键字索引

 

  你还可以看到这些反转关键字索引,而且不时还要用到这些索引。假设有一列包含了“餐厅甲”、“餐厅乙”、“餐厅丙”等类似名字。可能这不是 一个很好的例子,不过关键的一点是拥有很多唯一值,但其关键字的前面一部分变化不大。因为Oracle会在将REVERSE关键字指定给b-tree前把 REVERSE字符串简化,所以使用反转关键字索引可能是最好的。这样的一个索引可能更平衡、有用,搜索起来更快。

 

  更多外部索引类型

 

  Oracle还提供了很多更为复杂的索引类型。不过请注意,你最好全面阅读过相关的说明文档后再使用这些索引,因为它们各自都有各自特定的适用范围。

 

  1)位图索引(bitmap index)

 

  假设数据库表中有一列其选择性非常窄,例如性别列,该用什么类型的索引?你可能会考虑对其使用位图索引。因为位图索引正是为相异值很少的列 而创建的。但需要考虑的因素还不只这些。一般而言,只有当你对表中值相宜度较小的多个不同的列都使用位图索引,这样位图索引才有用,因为你可以一起使用这 些索引才能对列产生更大的选择性,否则你还是需要对这些列进行一次全表扫描。例如,对于性别列,其索引只能有两个唯一值,那么用这个索引对表的任何搜索有 可能都返回一半的记录。其次,这些索引是为数据仓库而设计的,所以其假定条件是数据不会发生很大的改变。这些索引不能用来满足事务数据库或更新频繁的数据 库。应该说,对位图索引的表进行更新根本没有一点效率。

 

  2)位图连接索引(bitmap join index)

 

  位图连接索引比位图索引更进了一步。这些索引将位图化的列完全从表数据中抽取出来,并将其存储在索引中。其假定条件是这些列集合必须一起查 询。同样的,这也是为数据仓库数据库而设计的。除了在句法最后有一个WHERE子句之外,位图连接索引的创建指令就像创建位图索引的CREATE BITMAP INDEX一样。

 

  3)压缩索引

 

  压缩索引实际是标准b-tree索引的一个选项。压缩索引的叶节点更少,所以总的I/O数量和需要的缓存也更少。这些都意味着Oracle 的优化器更可能使用这些压缩索引,而不倾向于使用标准的非压缩索引。不过,这些好处也是有代价的,当你对这些压缩索引进行存取操作时,要消耗更多的CPU 来进行解压缩。而且,当你阅读关于优化器如何使用这些索引,又是如何选择合适的压缩级别的资料时,就开始变得晦涩了。不同的用户不同的设置从压缩索引中得 到的好处也可能会有所不同。

 4)降序索引(descending index)

 

  这是基于函数索引的一种特殊类型。降序索引可以显著优化ORDER BY x, y, z DESC子句查询的。

 

  5)分区索引(partitioned index)

 

  如果你的数据库中有一个分区表,你就有机会体验几种新的索引类型,从贯穿所有分区的全局分区索引(global)和集中于各个单独分区的本地分区索引(local)。这里不再进行赘述,想知道细节问题可以查询相关文献。

 

  6)索引组织表(index organized table,IOT)

 

  这是在Oracle 9i中引进的一种新类型表。Oracle会将级联索引及其扩展类型的索引用于表中所有的列。当所有数据都载入到索引结构之后,表就成多余的了,你尽可以将表本身删除掉。这就是索引组织表。

 

  7)簇索引(cluster index)

 

  基本上,簇索引就是将多个表的相同列放在一起,而对该列使用用一个簇索引。这种索引在实际应用中比较少,因为还有各种有待解决的性能问题存在。

 

  8)域索引(domain index)

 

  当我们创建为用户自定义数据类型(datatype)创建用户自定义索引类型(indextype)时就要使用域索引。

 

  9)隐藏索引(invisible index)

 

  这是Oracle 11g中推出的新特性。其创建过程和标准索引一样,但创建后对于基于代价的优化器(CBO)是不可见的。这可以让你对性能进行大型测试查询,而不会影响现有的正在运行的应用程序。

 

  10)虚拟索引(virtual index)

 

  这是为测试人员和开发人员准备的又一个工具。虚拟索引(不分配段空间)可以让你在不需要实际创建索引的情况下,测试新索引及其对查询计划的影响。对于GB级的表来说,构建索引非常耗费资源而且还要占用大量时间。

 

  11)其他的索引类型

 

  Oracle数据库还提供了很多其他类型的索引,例如用来为字符型大型二进制对象(CLOB)或其他大型文本数据构建索引的Oracle TEXT,Oracle Spatial等。有兴趣的读者可以自己查找相关资料了解。

 

  都是为了优化器

 

  如果你曾经广泛接触过MySQL和其他的数据库,你会发现甲骨文虽然是全球领先的数据库供应商,但它们的数据库对于用户来说用起来其实并不 是很方便。提到优化器这个问题可能有点离题了,不过Oracle数据库最基本的食料就是优化器了,这的确是种挺特别的调料,而且变得越来越美味了。市面上 有很多以Oracle基于代价的优化器(Cost Based Optimizer,CBO)为主题内容的书籍,专门介绍分析表和索引的技巧和策略。

 

  对于数据库,除了需要一直更新你的统计信息之外,你可能还需要不断测试新的查询。使用解析计划机制,并进行优化以便减少总I/O量以及排序和合并数据的计算量,只有这样你才能获得更好的性能表现。

 

  总结

 

  虽然Oracle数据库的索引世界有点吓人,不过实际上你平常经常使用的索引就只有那么一些。而且,不管唱反调的人怎样诋毁,Oracle 的优化器都已经设计相当出色;总体而言,Oracle很擅长于让你的数据库运行地更有效率。虽然这并不意味着你不需要对自己的SQL进行调优,不过,如果 你一直保持着最新的统计信息,并让Oracle为你整理出你所需要的最小数据集的话,它能够以极快的速度满足你的需要。

10.12 Oracle中不使用索引的几种情况分析

Oracle不使用b*tree索引的情况大致如下

 

1:where条件中和null比较可能导致不使用索引

 

2:count,sum,ave,max,min等聚集操作时可能导致不使用索引

 

3:显示或者隐式的函数转换导致不使用索引

 

4:在cbo模式下,统计信息过于陈旧导致不使用索引

 

5:组合索引中没有使用前导列导致没有使用索引

 

6:访问的数据量超过一定的比例导致不使用索引

 

下面就其中的几点做一些说明

 

一:Null可以使用索引吗

 

一般情况下,where条件中和null比较将会导致full table scan,实际上,如果table中索引建列的值都为null,那么该行在索引(此处指b*tree,位图索引和聚簇索引可以有空值)中就不会存在,因此oracle为了保证查询结构的准确性,就会用full table scan代替index scan,这样理解,不走索引也就在情理之中。

 

当然,如果某个索引列上有定义为not null,在这种情况下,不存在所有索引列都为空的情况,所以此种情况下,是可以走index scan的,因此,对于where条件中含有类似is null,=null的情况,是否走索引,还是要看索引建中是否有某个列定义为not null。

 

具体实验如下:

 

SQL> create table t(x char(3),y char(5));

 

SQL> insert into t(x,y) values ('001','xxxxx');

 

SQL> insert into t(x,y) values ('002',null);

 

SQL> insert into t(x,y) values (null,'yyyyy');

 

SQL> insert into t(x,y) values (null,null);

 

SQL> commit;

 

SQL> create unique index t_idx on t(x,y);

 

SQL> analyze table t compute statistics for table for all indexes;

 

SQL> select blevel,leaf_blocks,num_rows from user_indexes where index_name=upper('t_idx');

 

   BLEVEL LEAF_BLOCKS  NUM_ROWS

 

---------- ----------- ----------

 

        0          1         3

 

isnert四条记录,但索引只保存3条,最后一条没有保存在索引中

 

SQL> set autotrace traceonly explain;

 

SQL> select * from t where x is null;

 

Execution Plan

 

----------------------------------------------------------

 

  0     SELECT STATEMENT ptimizer=CHOOSE (Cost=2 Card=1 Bytes=8)

 

  1   0  TABLE ACCESS (FULL)OF 'T' (Cost=2 Card=1 Bytes=8)

 

 

 

SQL> create table t1(x char(3),y char(5) not null);

 

SQL> insert into t1(x,y) values ('001','xxxxx');

 

SQL> insert into t1(x,y) values (null,'xxxxx');

 

SQL> commit;

 

SQL> create unique index t1_idx on t1(x,y);

 

SQL> analyze table t1 compute statistics for table for all indexes;

 

SQL> select blevel,leaf_blocks,num_rows from user_indexes where index_name=upper('t1_idx');

 

   BLEVEL LEAF_BLOCKS  NUM_ROWS

 

---------- ----------- ----------

 

        0          1         2

 

SQL> select * from t1 where x is null;

 

Execution Plan

 

----------------------------------------------------------

 

  0     SELECT STATEMENT ptimizer=CHOOSE (Cost=1 Card=1 Bytes=11)

 

  1   0  INDEX (RANGE SCAN) OF 'T1_IDX' (UNIQUE)(Cost=1 Card=1 Byt

 

二:COUNT(*)等聚集函数可能导致不使用索引

 

在做count,sum,ave,max,min等聚集操作时,有的时候也会不用索引,因为如果优化器发现索引列没有任何一个列定义为not null,而且where条件中也没有索引键列,如x=x,在此情况下,索引扫描结果会不准确,此时oracle就会用全表full table scan。沿用上面的二个表来说明

 

SQL> select count(*) from t;

 

Execution Plan

 

----------------------------------------------------------

 

  0     SELECT STATEMENT ptimizer=CHOOSE (Cost=2 Card=1)

 

  1   0  SORT (AGGREGATE)

 

  2   1    TABLE ACCESS (FULL) OF 'T'(Cost=2 Card=4)

 

 

 

SQL> select sum(x) from t;

 

Execution Plan

 

----------------------------------------------------------

 

  0     SELECT STATEMENT ptimizer=CHOOSE (Cost=2 Card=1 Bytes=5)

 

  1   0  SORT (AGGREGATE)

 

  2   1    TABLE ACCESS (FULL) OF 'T'(Cost=2 Card=4 Bytes=20)

 

因为该表的索引列(x,y)没有定义为not null,所以都走了全表扫描,即使把x=null,y=null的行删除,同样还是走全表扫描。

 

SQL> delete t where x is null and y is null;

 

已删除1行。

 

Commit

 

SQL> analyze table t compute statistics for table for all indexes;

 

SQL> select count(*) from t;

 

Execution Plan

 

----------------------------------------------------------

 

  0     SELECT STATEMENT ptimizer=CHOOSE (Cost=2 Card=1)

 

  1   0  SORT (AGGREGATE)

 

  2   1    TABLE ACCESS (FULL) OF 'T'(Cost=2 Card=3)

 

 

 

同样的sql语句,对于t1表,因为索引列y定义为not null,所以oracle会选择index scan

 

SQL> select count(*) from t1;

 

 

 

Execution Plan

 

----------------------------------------------------------

 

  0     SELECT STATEMENT ptimizer=CHOOSE (Cost=1 Card=1)

 

  1   0  SORT (AGGREGATE)

 

  2   1    INDEX (FULL SCAN) OF 'T1_IDX' (UNIQUE)(Cost=1 Card=2)

 

SQL> select sum(x) from t1;

 

Execution Plan

 

----------------------------------------------------------

 

  0     SELECT STATEMENT ptimizer=CHOOSE (Cost=1 Card=1 Bytes=5)

 

  1   0  SORT (AGGREGATE)

 

  2   1    INDEX (FULL SCAN) OF 'T1_IDX' (UNIQUE)(Cost=1 Card=2 By

 

         tes=10)

 

三:隐式或者显示的函数转换降导致全表扫描

 

SQL> Select * from t1 where x=001;

 

X     Y         COMM

 

------ ---------- ----------------------------

 

001   xxxxx     88888

 

Execution Plan

 

----------------------------------------------------------

 

  0     SELECT STATEMENT ptimizer=CHOOSE (Cost=2 Card=1 Bytes=26)

 

  1   0  TABLE ACCESS (FULL) OF 'T1'(Cost=2 Card=1 Bytes=26)

 

因为x为char类似,在这里oracle把x=001做了隐式转换to_number(x)=001,建在该字段的索引将不起作用,基于函数的索引(function based index)可以在此派上用场,相对于普通索引,fbi是把经过函数转换后的值存放到索引中

 

SQL> create index t1_fbi on t1(to_number(x));

 

SQL> analyze table t1 compute statistics for table for all indexes;

 

SQL> Select * from t1 where x=001;

 

X     Y         COMM

 

------ ---------- ----------------------------

 

001   xxxxx     88888

 

Execution Plan

 

----------------------------------------------------------

 

  0     SELECT STATEMENT ptimizer=CHOOSE (Cost=1 Card=1 Bytes=26)

 

  1   0  TABLE ACCESS (BY INDEX ROWID) OF 'T1' (Cost=1 Card=1 Bytes

 

         =26)

 

  2   1    INDEX (RANGE SCAN) OF 'T1_FBI'(NON-UNIQUE) (Cost=1 Card

 

         =1)

 

四:统计信息不是最新的,导致无法使用

 

五:组合索引中没有用到前导列导致没有用索引,如组合索引(x,y),where条件类似where y=….,此时不走索引(如果x的不同值很少,那么oracle9i以后就有可能走index skip scan,其原理类似于select * from t where y=…and x=(某个确定的值) union all select * from t where y=…and x=(某个确定的值)……..

 

六:访问的数据比例超过一定范围,优化器会认为full table scan的成本更低,此事走索引扫描反而会使总成本变大,因此,索引用来快速访问表中的少量记录,对于访问表中的大量记录是不适合用索引的。

11 数据库表数据

每一张表都有一个ROWID隐藏字段,数据类型也为ROWID,用于数据库在执行SQL操作时定位每一行数据的唯一标识,该字段可以用于在没有唯一约束的表上作为唯一条件处理。

11.1  SELECT  查询表数据

11.1.1   SQL*Plus

查看表中所有的字段数据:

在SQL>下输入:select * from 表名;

 

查看表中指定的字段数据:

在SQL>下输入:select 字段名1,字段名2,… from 表名;

11.1.2   OCILIB

#include <stdio.h>

#include "..\OCILIB\ocilib.h"

#pragma comment(lib, "..\\OCILIB\\ociliba.lib")

#pragma comment(lib, "..\\OCILIB\\ocilibm.lib")

#pragma comment(lib, "..\\OCILIB\\ocilibw.lib")

 

int main (int argc, char ** argv)

{

    OCI_Connection * hOraConn;//存放Oracle数据库连接句柄

    OCI_Statement * hOraStat;//存放Statement句柄

    OCI_Resultset * hOraRest;//存放结果集句柄

    OCI_Error * hOraError;//存放错误码句柄

 

    if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT | OCI_ENV_CONTEXT))//如果初始化OCILIB库失败,就报错

    {

        return -1;

    }

 

    if ((hOraConn = OCI_ConnectionCreate ("连接描述符", "用户名", "密码", OCI_SESSION_DEFAULT)) == 0)//如果连接数据库失败,就报错

    {

        hOraError = OCI_GetLastError ();

        printf ("OCI_ConnectionCreate 连接Oracle数据库失败!原因:ORA-%d %s", OCI_ErrorGetOCICode (hOraError), OCI_ErrorGetString(hOraError));

        return -1;

    }

 

    hOraStat = OCI_StatementCreate (hOraConn);//创建Statement

 

    if (OCI_ExecuteStmt (hOraStat, "select * from all_tables") == FALSE)//如果执行SQL查询语句失败

    {

        hOraError = OCI_GetLastError ();

        printf ("OCI_ExecuteStmt 执行SQL语句失败!原因:ORA-%d %s", OCI_ErrorGetOCICode (hOraError), OCI_ErrorGetString(hOraError));

        return -1;

    }

 

    hOraRest = OCI_GetResultset (hOraStat);//获取执行SQL查询语句后的结果集

 

    while (OCI_FetchNext (hOraRest))//依次获取结果集里的每行数据

    {

        printf ("%s\t", OCI_GetString (hOraRest, 1));//获取结果集的当前行的第一个字段的数据,并转换成字符串

        printf ("%d\n", OCI_GetInt (hOraRest, 2));//获取结果集的当前行的第二个字段的数据,并转换成整数

    }

 

    printf ("总计 %u行数据\n", OCI_GetRowCount (hOraRest));//获取从结果集里总计获取了多少行数据

 

    OCI_ReleaseResultsets (hOraStat);//释放结果集

    OCI_StatementFree (hOraStat);//释放Statement

    OCI_ConnectionFree (hOraConn);//断开数据库

}

 

11.1.3   单引号

在ORACLE中,单引号有两个作用:

  1:字符串是由单引号引用

  2:转义。

单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解

1.从第二个单引号开始被视为转义符,如果第二个单引号后面还有单引号(哪怕只有一个)。

SQL> select '''' result from dual;

RESULT

------

'

第二个单引号被作为转义符,第三个单引号被转义,可将sql写成这样更好理解:

select ' '' ' from dual;

output:'

//

2.连接符‘||’导致了新一轮的转义:

  连接符号‘||’左右的单引号没有任何的关系,

  除非‘||’是作为字符串的一部分(这在动态SQL中很常见)。

SQL> select 'name'||'''' result from dual;

RESULT

------

name'

理解:||后面的作为一个字符串,即前后是',中间又是一个密集型单引号串'',因此第一个为转义功能。

SQL> select 'name''''' result from dual;

RESULT

------

name''

第一个和最后一个单引号作为字符串引用符,中间四个单引号两两转义。

//

oracle中使用双引号:

1)一般来说,字符串中的双引号仅仅被当作一个普通字符进行处理。

此时,双引号不需要成对出现:

SQL> select 'hh24"小时""mi""分"""ss"秒"' results from dual;

RESULTS

-------------------------

hh24"小时""mi""分"""ss"秒"

//

2)当出现在to_char的格式字符串中时,双引号有特殊的作用,

就是将非法的格式符包装起来,避免出现ORA-01821: date format not recognized错误。

也就是说,去掉双引号和其包含的字符后,剩下的应该是一个合法的格式串。

to_char在处理格式字符串时,会忽略双引号:

SQL> select to_char(sysdate,'hh24"小时"mi"分"ss"秒"') results from dual;

RESULTS

--------------

06小时39分51秒

//  

格式串为'hh24"小时"mi"分"ss"秒"';

去掉双引号部分后,剩下的是'hh24miss',是一个合法的格式串。

不过即使真不知道双引号的这个用法,也可以这样来处理,虽然麻烦一点:

select to_char(sysdate, 'hh24') || '小时' ||

       to_char(sysdate, 'mi') || '分' ||

       to_char(sysdate, 'ss') || '秒'

       AS RESULT

from dual;

RESULT

--------------

06小时40分18秒

 

注:

select '''' from dual;    --输出一个单引号

select '''''' from dual;   --输出两个单引号

select '''''''' from dual;  --输出三个单引号

即第一个和最后一个单引号用作包含字符,里面的每两个单引号转义出一个正常单引号,再看下例:

select 'I''m a pig' from dual;  --输出I'm a pig

11.1.4   WITH AS表变量

使用WITH AS提高性能简化嵌套SQL

一.WITH AS的含义

 

    WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到。有的时候,是为了让SQL语句的可读性更高些,也有可能是在UNION ALL的不同部分,作为提供数据的部分。

特别对于UNION ALL比较有用。因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用WITH AS短语,则只要执行一遍即可。如果WITH AS短语所定义的表名被调用两次以上,则优化器会自动将WITH AS短语所获取的数据放入一个TEMP表里,如果只是被调用一次,则不会。而提示materialize则是强制将WITH AS子句里的数据放入一个全局表变量里。很多查询通过这种方法都可以提高速度。

 

二.使用方法

 

先看下面一个嵌套的查询语句:

 

select * from person.StateProvince where CountryRegionCode in

         (select CountryRegionCode from person.CountryRegion where Name like 'C%')

上面的查询语句使用了一个子查询。虽然这条SQL语句并不复杂,但如果嵌套的层次过多,会使SQL语句非常难以阅读和维护。因此,也可以使用表变量的方式来解决这个问题。

SQL语句如下:

 

declare @t table(CountryRegionCode nvarchar(3))

insert into @t(CountryRegionCode)  (select CountryRegionCode from person.CountryRegion where Name like 'C%')

 

select * from person.StateProvince where CountryRegionCode

                     in (select * from @t)

 

    虽然上面的SQL语句要比第一种方式更复杂,但却将子查询放在了表变量@t中,这样做将使SQL语句更容易维护,但又会带来另一个问题,就是性能的损失。由于表变量实际上使用了临时表,从而增加了额外的I/O开销,因此,表变量的方式并不太适合数据量大且频繁查询的情况。为此,在SQL Server 2005中提供了另外一种解决方案,这就是公用表表达式(CTE),使用CTE,可以增加SQL语句的可维护性,同时,CTE要比表变量的效率高得多。

 

下面是CTE的语法:

 

[ WITH <common_table_expression> [ ,n ] ]

<common_table_expression>::=

        expression_name [ ( column_name [ ,n ] ) ]

    AS

        ( CTE_query_definition )

 

 

现在使用CTE来解决上面的问题,SQL语句如下:

 

with

cr as

(

    select CountryRegionCode from person.CountryRegion where Name like 'C%'

)

 

select * from person.StateProvince where CountryRegionCode in (select * from cr)

    其中cr是一个公用表表达式,该表达式在使用上与表变量类似,只是SQL Server 2005在处理公用表表达式的方式上有

所不同。

 

在使用CTE时应注意如下几点:

 

1. CTE后面必须直接跟使用CTE的SQL语句(如select、insert、update等),否则,CTE将失效。如下面的SQL语句将无法正

常使用CTE:

 

with

cr as

(

    select CountryRegionCode from person.CountryRegion where Name like 'C%'

)

select * from person.CountryRegion  -- 应将这条SQL语句去掉

-- 使用CTE的SQL语句应紧跟在相关的CTE后面--

select * from person.StateProvince where CountryRegionCode in (select * from cr)

 

2. CTE后面也可以跟其他的CTE,但只能使用一个with,多个CTE中间用逗号(,)分隔,如下面的SQL语句所示:

 

with

cte1 as

(

    select * from table1 where name like 'abc%'

),

cte2 as

(

    select * from table2 where id > 20

),

cte3 as

(

    select * from table3 where price < 100

)

select a.* from cte1 a, cte2 b, cte3 c where a.id = b.id and a.id = c.id

 

3. 如果CTE的表达式名称与某个数据表或视图重名,则紧跟在该CTE后面的SQL语句使用的仍然是CTE,当然,后面的SQL语句使用的就是数据表或视图了,如下面的SQL语句所示:

 

--  table1是一个实际存在的表

with

table1 as

(

    select * from persons where age < 30

)

select * from table1  --  使用了名为table1的公共表表达式

select * from table1  --  使用了名为table1的数据表

 

4. CTE 可以引用自身,也可以引用在同一WITH 子句中预先定义的CTE。不允许前向引用。

 

5. 不能在CTE_query_definition 中使用以下子句:

 

(1)COMPUTE 或COMPUTE BY

 

(2)ORDER BY(除非指定了TOP 子句)

 

(3)INTO

 

(4)带有查询提示的OPTION 子句

 

(5)FOR XML

 

(6)FOR BROWSE

 

6. 如果将CTE 用在属于批处理的一部分的语句中,那么在它之前的语句必须以分号结尾,如下面的SQL所示:

 

declare @s nvarchar(3)

set @s = 'C%'

;  -- 必须加分号

with

t_tree as

(

    select CountryRegionCode from person.CountryRegion where Name like @s

)

select * from person.StateProvince where CountryRegionCode in (select * from t_tree)

11.1.5   LIKE模糊条件

字符匹配操作可以使用通配符'%'和'_':

%:表示任意个字符,包括零个;

_:表示一个任意字符;

注意:如果希望让通配符'%'和'_'作为普通字符来查询,那么需要进行转义,并用ESCAPE子句指定转义字符。

 

完整查询:

SQL> select * from dept;

 

DEPTNO DNAME          LOC

------ -------------- -------------

    10 ACCOUNTING     NEW YORK

    20 RESEARCH       DALLAS

    30 SALES          CHICAGO

    40 OPERATIONS     BOSTON

 

模糊查询:

SQL> select * from dept where DNAME like '_A%';

   

DEPTNO DNAME          LOC

------ -------------- -------------

    30 SALES          CHICAGO

 

带ESCAPE子句的模糊查询:

SQL> select * from dept;

 

DEPTNO DNAME          LOC

------ -------------- -------------

    10 ACCOUNTING     NEW YORK

    20 RESEARCH       DALLAS

    30 SALES          CHICAGO

    40 OPERATIONS     BOSTON

    50 BEIJING        JIANG%XI

 

SQL> select * from dept where loc like '%\%%' escape '\';

 

DEPTNO DNAME          LOC

------ -------------- -------------

    50 BEIJING        JIANG%XI

 

SQL> select * from dept where loc like '%e%%' escape 'e';

 

DEPTNO DNAME          LOC

------ -------------- -------------

    50 BEIJING        JIANG%XI

11.1.6   正则表达式 REGEXP_LIKE 用法

ORACLE中的支持正则表达式的函数主要有下面四个:

1,REGEXP_LIKE :与LIKE的功能相似

2,REGEXP_INSTR :与INSTR的功能相似

3,REGEXP_SUBSTR :与SUBSTR的功能相似

4,REGEXP_REPLACE :与REPLACE的功能相似

它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同,

但是它们使用POSIX 正则表达式代替了老的百分号(%)和通配符(_)字符。

POSIX 正则表达式由标准的元字符(metacharacters)所构成:

'^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。

'$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹

配 '\n' 或 '\r'。

'.' 匹配除换行符之外的任何单字符。

'?' 匹配前面的子表达式零次或一次。

'+' 匹配前面的子表达式一次或多次。

'*' 匹配前面的子表达式零次或多次。

'|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的

字符串。

'( )' 标记一个子表达式的开始和结束位置。

'[]' 标记一个中括号表达式。

'{m,n}' 一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少

出现m次。

\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。

字符簇:

[[:alpha:]] 任何字母。

[[:digit:]] 任何数字。

[[:alnum:]] 任何字母和数字。

[[:space:]] 任何白字符。

[[:upper:]] 任何大写字母。

[[:lower:]] 任何小写字母。

[[:punct:]] 任何标点符号。

[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。

各种操作符的运算优先级

\转义符

(), (?:), (?=), [] 圆括号和方括号

*, +, ?, {n}, {n,}, {n,m} 限定符

^, $, anymetacharacter 位置和顺序

|

*/

--创建表

create table fzq

(

id varchar(4),

value varchar(10)

);

--数据插入

insert into fzq values

('1','1234560');

insert into fzq values

('2','1234560');

insert into fzq values

('3','1b3b560');

insert into fzq values

('4','abc');

insert into fzq values

('5','abcde');

insert into fzq values

('6','ADREasx');

insert into fzq values

('7','123 45');

insert into fzq values

('8','adc de');

insert into fzq values

('9','adc,.de');

insert into fzq values

('10','1B');

insert into fzq values

('10','abcbvbnb');

insert into fzq values

('11','11114560');

insert into fzq values

('11','11124560');

--regexp_like

--查询value中以1开头60结束的记录并且长度是7位

select * from fzq where value like '1____60';

select * from fzq where regexp_like(value,'1....60');

--查询value中以1开头60结束的记录并且长度是7位并且全部是数字的记录。

--使用like就不是很好实现了。

select * from fzq where regexp_like(value,'1[0-9]{4}60');

-- 也可以这样实现,使用字符集。

select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');

-- 查询value中不是纯数字的记录

select * from fzq where not regexp_like(value,'^[[:digit:]]+$');

-- 查询value中不包含任何数字的记录。

select * from fzq where regexp_like(value,'^[^[:digit:]]+$');

--查询以12或者1b开头的记录.不区分大小写。

select * from fzq where regexp_like(value,'^1[2b]','i');

--查询以12或者1b开头的记录.区分大小写。

select * from fzq where regexp_like(value,'^1[2B]');

-- 查询数据中包含空白的记录。

select * from fzq where regexp_like(value,'[[:space:]]');

--查询所有包含小写字母或者数字的记录。

select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');

--查询任何包含标点符号的记录。

select * from fzq where regexp_like(value,'[[:punct:]]');

/*

理解它的语法就可以了。其它的函数用法类似。

*/

11.1.7   GROUP BY HAVING 分组子句

在介绍GROUP BY和HAVING子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。

SELECT SUM(population) FROM bbc

  这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有国家的总人口数。

  通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。当你指定 GROUP BY region 时, 属于同一个region(地区)的一组数据将只能返回一行值,也就是说,表中所有除region(地区)外的字段,只能通过 SUM, COUNT等聚合函数运算后返回一个值。

  HAVING子句可以让我们筛选成组后的各组数据,WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前.

  而 HAVING子句在聚合后对组记录进行筛选。

  让我们还是通过具体的实例来理解GROUP BY 和 HAVING 子句,还采用第三节介绍的bbc表。

  SQL实例:

  一、显示每个地区的总人口数和总面积:

SELECT region, SUM(population), SUM(area)

FROM bbc

GROUP BY region

  先以region把返回记录分成多个组,这就是GROUP BY的字面含义。分完组后,然后用聚合函数对每组中的不同字段(一或多条记录)作运算。

  二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。

SELECT region, SUM(population), SUM(area)

FROM bbc

GROUP BY region

HAVING SUM(area)>1000000

  在这里,我们不能用where来筛选超过1000000的地区,因为表中不存在这样一条记录。

  相反,HAVING子句可以让我们筛选成组后的各组数据.

11.1.8   CASE WHEN THEN 多条件判断子句

格式:

SELECT <myColumnSpec> =

CASE

WHEN <A> THEN <somethingA>

WHEN <B> THEN <somethingB>

ELSE <somethingE>

END

 

例如:

SELECT

  Title,

  CASE

    WHEN price IS NULL THEN 'Unpriced'

    WHEN price < 10 THEN 'Bargain'

    WHEN price BETWEEN 10 and 20 THEN 'Average'

    ELSE 'Gift to impress relatives'

  END AS PRICE

FROM

  titles

ORDER BY

  price

11.1.9   MAX聚合函数

11.1.10  MIN聚合函数

11.1.11  AVG聚合函数

11.1.12  SUM聚合函数

11.1.13  COUNT聚合函数

11.1.14  STDDEV聚合函数

11.1.15  VARIANCE聚合函数

11.1.16  MEDIAN聚合函数

11.1.17  ROW_NUMBER() OVER函数

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)

简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号。 
示例: 
xlh           row_num 
1700              1 
1500              2 
1085              3 
710                4

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

实例:

初始化数据

create table employee (empid int ,deptid int ,salary decimal(10,2))
insert into employee values(1,10,5500.00)
insert into employee values(2,10,4500.00)
insert into employee values(3,20,1900.00)
insert into employee values(4,20,4800.00)
insert into employee values(5,40,6500.00)
insert into employee values(6,40,14500.00)
insert into employee values(7,40,44500.00)
insert into employee values(8,50,6500.00)
insert into employee values(9,50,7500.00)

数据显示为

empid       deptid      salary
----------- ----------- ---------------------------------------
1           10          5500.00
2           10          4500.00
3           20          1900.00
4           20          4800.00
5           40          6500.00
6           40          14500.00
7           40          44500.00
8           50          6500.00
9           50          7500.00

需求:根据部门分组,显示每个部门的工资等级

预期结果:

empid       deptid      salary                                  rank
----------- ----------- --------------------------------------- --------------------
1           10          5500.00                                 1
2           10          4500.00                                 2
4           20          4800.00                                 1
3           20          1900.00                                 2
7           40          44500.00                               1
6           40          14500.00                               2
5           40          6500.00                                 3
9           50          7500.00                                 1
8           50          6500.00                                 2

SQL脚本:

SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank FROM employee

 

转自:http://www.cnblogs.com/digjim/archive/2006/09/20/509344.html

我们知道,SQL Server 2005和SQL Server 2000 相比较,SQL Server 2005有很多新特性。这篇文章我们要讨论其中的一个新函数Row_Number()。数据库管理员和开发者已经期待这个函数很久了,现在终于等到了!


 通常,开发者和管理员在一个查询里,用临时表和列相关的子查询来计算产生行号。现在SQL Server 2005提供了一个函数,代替所有多余的代码来产生行号。

 我们假设有一个资料库[EMPLOYEETEST],资料库中有一个表[EMPLOYEE],你可以用下面的脚本来产生资料库,表和对应的数据。

 USE [MASTER]
GO

IF  EXISTS (SELECT NAME FROM SYS.DATABASES WHERE NAME = N'EMPLOYEE TEST')
DROP DATABASE [EMPLOYEE TEST]
GO

CREATE DATABASE [EMPLOYEE TEST]
GO

USE [EMPLOYEE TEST]
GO

IF  EXISTS SELECT * FROM SYS.OBJECTS HERE OBJECT_ID = OBJECT_ID(N'[DBO].[EMPLOYEE]') AND TYPE IN (N'U'))
DROP TABLE [DBO].[EMPLOYEE]
GO

CREATE TABLE EMPLOYEE (EMPID INT, FNAME VARCHAR(50),LNAME VARCHAR(50))
GO

INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (2021110, 'MICHAEL', 'POLAND')
INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (2021110, 'MICHAEL', 'POLAND')
INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (2021115, 'JIM', 'KENNEDY')
INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (2121000, 'JAMES', 'SMITH')
INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (2011111, 'ADAM', 'ACKERMAN')
INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (3015670, 'MARTHA', 'LEDERER')
INSERT INTO EMPLOYEE  (EMPID, FNAME, LNAME) VALUES (1021710, 'MARIAH', 'MANDEZ')
GO

 我们可以用下面的脚本查询EMPLOYEE表。

 SELECT EMPID, RNAME, LNAME FROM EMPLOYEE

 这个查询的结果应该如图1.0 

2021110

MICHAEL

POLAND

2021110

MICHAEL

POLAND

2021115

JIM

KENNEDY

2121000

JAMES

SMITH

2011111

ADAM

ACKERMAN

3015670

MARTHA

LEDERER

1021710

MARIAH

MANDEZ


图1.0

 在SQL Server 2005,要根据这个表中的数据产生行号,我通常使用下面的查询。 

SELECT ROWID=IDENTITY(int,1,1) , EMPID, FNAME, LNAME INTO EMPLOYEE2 FROM EMPLOYEE ORDER BY EMPID

 这个查询创建了一个新的表,用identify函数来产生行号。我们用下面的查询来看看这个表的数据。 

SELECT ROWID, EMPID, FNAME, LNAME FROM EMPLOYEE2

 上面的查询结果如图1.1 

1

1021710

MARIAH

MANDEZ

2

2011111

ADAM

ACKERMAN

3

2021110

MICHAEL

POLAND

4

2021110

MICHAEL

POLAND

5

2021115

JIM

KENNEDY

6

2121000

JAMES

SMITH

7

3015670

MARTHA

LEDERER


图1.1

 这个查询结果很明显EMP=2021110的行是重复的数据。

 要删除EMPID=2021110的重复数据,我们必须在EMPLOYEE2表中删除,不能直接在EMPLOYEE中删除。

 SQL Server 2005提供了一个新的函数(Row_Number())来产生行号。我们可以使用这个新函数来删除原来表中的重复数据,只用通常的表达方式再加上Row_Number()函数。

 让我们用Row_Number()函数根据EMPID来产生ROWID。

 SELECT ROW_NUMBER() OVER (ORDER BY EMPID ASC) AS ROWID, * FROM EMPLOYEE

 上面的查询结果如图1.2 

1

1021710

MARIAH

MANDEZ

2

2011111

ADAM

ACKERMAN

3

2021110

MICHAEL

POLAND

4

2021110

MICHAEL

POLAND

5

2021115

JIM

KENNEDY

6

2121000

JAMES

SMITH

7

3015670

MARTHA

LEDERER


图1.2

 在这个结果中,我们可以区别EMPID是2021110的重复数据。

 我们可以用通用表查询表达式和Row_Numner()函数来选出重复的那行数据。

 WITH [EMPLOYEE ORDERED BY ROWID] AS
(SELECT ROW_NUMBER() OVER (ORDER BY EMPID ASC) AS ROWID, * FROM EMPLOYEE)
SELECT * FROM [EMPLOYEE ORDERED BY ROWID] WHERE ROWID =4

上面的查询结果如图1.3 

4

2021110

MICHAEL

POLAND


图1.3

 这一行重复的数据可以用下面这个通用表和Row_Number()函数来删除。

 WITH [EMPLOYEE ORDERED BY ROWID] AS
(SELECT ROW_NUMBER() OVER (ORDER BY EMPID ASC) AS ROWID, * FROM EMPLOYEE)
DELETE FROM [EMPLOYEE ORDERED BY ROWID] WHERE ROWID =4

 删除以后,我们可以用下面的查询语句看一下结果。

 SELECT * FROM EMPLOYEE

 这个查询结果如图1.4 

2021110

MICHAEL

POLAND

2021115

JIM

KENNEDY

2121000

JAMES

SMITH

2011111

ADAM

ACKERMAN

3015670

MARTHA

LEDERER

1021710

MARIAH

MANDEZ


图 1.4

 这里我们可以看到,重复的数据已经被删除了。

 总结

在这篇文章中,我们讨论了SQL Server 2005 的新特性Row_Number()函数,还有通常的表表达式,然后如何使用这两个来删除重复的行。

11.1.18  NVL()函数

NVL函数的格式如下:NVL(expr1,expr2)

含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。

例如:

SQL> select ename,NVL(comm, -1) from emp;

 

ENAME NVL(COMM,-1)

------- ----

SMITH -1

ALLEN 300

WARD 500

JONES -1

MARTIN 1400

BLAKE -1

FORD -1

MILLER -1

其中显示-1的本来的值全部都是空值的

11.1.19  NVL2()函数

NVL2函数的格式如下:NVL2(expr1,expr2, expr3)

含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。

例如:

SQL> select ename,NVL2(comm,-1,1) from emp;

 

ENAME NVL2(COMM,-1,1)

------- -----

SMITH 1

ALLEN -1

WARD -1

JONES 1

MARTIN -1

BLAKE 1

CLARK 1

SCOTT 1

上面的例子中。凡是结果是1的原来都不为空,而结果是-1的原来的值就是空。

11.1.20  NULLIF函数

NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。
下面是一个例子。使用的是oracle中HR schema,如果HR处于锁定,请启用

这里的作用是显示出那些换过工作的人员原工作,现工作。

例如:

SQL> SELECT e.last_name, e.job_id,j.job_id,NULLIF(e.job_id, j.job_id) “Old Job ID”

FROM employees e, job_history j

WHERE e.employee_id = j.employee_id

ORDER BY last_name;

 

LAST_NAME JOB_ID JOB_ID Old Job ID

----------------- ------- ------- -------

De Haan AD_VP IT_PROG AD_VP

Hartstein MK_MAN MK_REP MK_MAN

Kaufling ST_MAN ST_CLERK ST_MAN

Kochhar AD_VP AC_MGR AD_VP

Kochhar AD_VP AC_ACCOUNT AD_VP

Raphaely PU_MAN ST_CLERK PU_MAN

Taylor SA_REP SA_MAN SA_REP

Taylor SA_REP SA_REP

Whalen AD_ASST AC_ACCOUNT AD_ASST

Whalen AD_ASST AD_ASST

可以看到凡是employee。job_id和job_histroy.job_id相等的,都会在结果中输出NULL即为空,否则显示的是employee。job_id

11.1.21  Coalesce()函数

Coalese函数的作用是的NVL的函数有点相似,其优势是有更多的选项。

格式如下:

Coalesce(expr1, expr2, expr3….. exprn)

表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。
返回表达式中第一个非空表达式,如有以下语句:   SELECT COALESCE(NULL,NULL,3,4,5) FROM dual   其返回结果为:3
如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值。   COALESCE(expression1,...n) 与此 CASE 函数等价:
这个函数实际上是NVL的循环使用,在此就不举例子了。

11.1.22  decode()函数

含义解释:

decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

 

该函数的含义如下:

IF 条件=值1 THEN

    RETURN(翻译值1)

ELSIF 条件=值2 THEN

    RETURN(翻译值2)

    ......

ELSIF 条件=值n THEN

    RETURN(翻译值n)

ELSE

    RETURN(缺省值)

END IF

decode(字段或字段的运算,值1,值2,值3)

 

       这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返回值2,否则返回值3

当然值1,值2,值3也可以是表达式,这个函数使得某些sql语句简单了许多

 

使用方法:

1、比较大小

select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值

sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1

例如:

变量1=10,变量2=20

则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。

 

2、此函数用在SQL语句中,功能介绍如下:

 

Decode函数与一系列嵌套的 IF-THEN-ELSE语句相似。base_exp与compare1,compare2等等依次进行比较。如果base_exp和 第i 个compare项匹配,就返回第i 个对应的value 。如果base_exp与任何的compare值都不匹配,则返回default。每个compare值顺次求值,如果发现一个匹配,则剩下的compare值(如果还有的话)就都不再求值。一个为NULL的base_exp被认为和NULL compare值等价。如果需要的话,每一个compare值都被转换成和第一个compare 值相同的数据类型,这个数据类型也是返回值的类型。

 

Decode函数在实际开发中非常的有用

 

结合Lpad函数,如何使主键的值自动加1并在前面补0

select LPAD(decode(count(记录编号),0,1,max(to_number(记录编号)+1)),14,'0') 记录编号 from tetdmis

 

eg:

 

select decode(dir,1,0,1) from a1_interval

 

dir 的值是1变为0,是0则变为1

 

比如我要查询某班男生和女生的数量分别是多少?

 

通常我们这么写:

 

select count(*) from 表 where 性别 = 男;

 

select count(*) from 表 where 性别 = 女;

 

要想显示到一起还要union一下,太麻烦了

 

用decode呢,只需要一句话

 

select decode(性别,男,1,0),decode(性别,女,1,0) from 表

 

3,order by对字符列进行特定的排序

 

大家还可以在Order by中使用Decode。

 

例:表table_subject,有subject_name列。要求按照:语、数、外的顺序进行排序。这时,就可以非常轻松的使用Decode完成要求了。

 

select * from table_subject order by decode(subject_name, '语文', 1, '数学', 2, , '外语',3)

 

11.1.23  trunc函数

--Oracle trunc()函数的用法

/**************日期********************/

1.select trunc(sysdate) from dual --2013-01-06 今天的日期为2013-01-06

2.select trunc(sysdate, 'mm') from dual --2013-01-01 返回当月第一天.

3.select trunc(sysdate,'yy') from dual --2013-01-01 返回当年第一天

4.select trunc(sysdate,'dd') from dual --2013-01-06 返回当前年月日

5.select trunc(sysdate,'yyyy') from dual --2013-01-01 返回当年第一天

6.select trunc(sysdate,'d') from dual --2013-01-06 (星期天)返回当前星期的第一天

7.select trunc(sysdate, 'hh') from dual --2013-01-06 17:00:00 当前时间为17:35

8.select trunc(sysdate, 'mi') from dual --2013-01-06 17:35:00 TRUNC()函数没有秒的精确

/***************数字********************/

/*

TRUNC(number,num_digits)

Number 需要截尾取整的数字。

Num_digits 用于指定取整精度的数字。Num_digits 的默认值为 0。

TRUNC()函数截取时不进行四舍五入

*/

9.select trunc(123.458) from dual --123

10.select trunc(123.458,0) from dual --123

11.select trunc(123.458,1) from dual --123.4

12.select trunc(123.458,-1) from dual --120

13.select trunc(123.458,-4) from dual --0

14.select trunc(123.458,4) from dual --123.458

15.select trunc(123) from dual --123

16.select trunc(123,1) from dual --123

17.select trunc(123,-1) from dual --120

11.1.24  to_timestamp函数

to_timestamp('2011-12-15 10:40:10.345', 'yyyy-MM-dd HH24:MI:ss.ff')

11.1.25  replace函数

今天往Oracle 中导入数据时,有一个列导入的数据应该时‘2011-10-11’的格式,结果导入的数据为 ‘2011/10/11’格式的,5000多条记录要一条条改基本不可能。 后来想到了replace这个函数,具体用法如下:

 

update 表1 t set t.列1=replace((select 列1from 表1 a where a.主键列=t.主键列) , '/' , '-' )  解决了我们问题。

 

replace 函数用法如下:

 

replace('将要更改的字符串','被替换掉的字符串','替换字符串')

 

例:select  replace ('111222333444','222','888') from dual;

 

输出为 '111888333444'

11.1.26  lpad函数

lpad函数从左边对字符串使用指定的字符进行填充。从其字面意思也可以理解,l是left的简写,pad是填充的意思,所以lpad就是从左边填充的意思。

 

语法格式如下:

lpad( string, padded_length, pad_string)

 

string

准备被填充的字符串;

 

padded_length

填充之后的字符串长度,也就是该函数返回的字符串长度,如果这个数量比原字符串的长度要短,lpad函数将会把字符串截取成从左到右的n个字符;

 

pad_string

填充字符串,是个可选参数,这个字符串是要粘贴到string的左边,如果这个参数未写,lpad函数将会在string的左边填充空格。

 

示例1:

 

SQL> select lpad('abcde',10,'x') from dual;

 

LPAD('ABCDE',10,'X')

 

--------------------

 

xxxxxabcde

 

示例2:

 

SQL> select lpad('abcde',10,'oq') from dual;

 

LPAD('ABCDE',10,'OQ')

 

---------------------

 

oqoqoabcde

 

示例3:

 

SQL> select lpad('abcde',2) from dual;

 

LPAD('ABCDE',2)

 

---------------

 

ab

11.2  INSERT  插入表数据

11.2.1   SQL*Plus

11.2.2   OCILIB

11.2.2.1 插入一行

#include "ocilib.h"

 

int main (int argc, char ** argv)

{

  OCI_Connection * ociConn;

  OCI_Statement * ociStat;

  OCI_Resultset * ociRest;

  OCI_Error * hOraError;

 

  if (!OCI_Initialize(NULL, NULL, OCI_ENV_DEFAULT))//如果初始化OCILIB库失败,就报错

  {

    return -1;

  }

 

  if ((ociConn = OCI_ConnectionCreate ("连接描述符", "用户名", "密码", OCI_SESSION_DEFAULT)) == 0)//如果连接数据库失败,就报错

  {

    return -1;

  }

 

  ociStat = OCI_StatementCreate (ociConn);//创建Statement

 

  if (OCI_ExecuteStmt (ociStat, "insert into mytable (col1,col2) values ('abc','123')") == FALSE)//如果执行SQL查询语句失败

  {

    hOraError = OCI_GetLastError ();

    printf ("OCI_ExecuteStmt 执行SQL语句失败!错误码:%d", OCI_ErrorGetOCICode (hOraError));

    return -1;

  }

 

  OCI_Commit (ociConn);//提交

  OCI_StatementFree (ociStat);//释放Statement

  OCI_ConnectionFree (ociConn);//断开数据库

}

 

11.2.2.2 批量插入多行

 

11.3  UPDATE  修改表数据

11.3.1   SQL*Plus

11.3.2   OCILIB

11.4  合并表数据

该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSERT 关键词,ORACLE 10g 做了如下改动。

1、insert 和update是可选的。

2、UPDATE 和INSERT 后面可以跟WHERE 子句。

3、在ON条件中可以使用常量来insert 所有的行到目标表中,不需要连接到源表和目标表

4、UPDATE 子句后面可以跟delete 来去除一些不需要的行。

例如:

  1. create table PRODUCTS   
  2.     (   
  3.     PRODUCT_ID INTEGER,   
  4.     PRODUCT_NAME VARCHAR2(60),   
  5.     CATEGORY VARCHAR2(60)   
  6.     );   
  7.   
  8.     insert into PRODUCTS values (1501, 'VIVITAR 35MM', 'ELECTRNCS');   
  9.     insert into PRODUCTS values (1502, 'OLYMPUS IS50', 'ELECTRNCS');   
  10. 10.     insert into PRODUCTS values (1600, 'PLAY GYM', 'TOYS');   
  11. 11.     insert into PRODUCTS values (1601, 'LAMAZE', 'TOYS');   
  12. 12.     insert into PRODUCTS values (1666, 'HARRY POTTER', 'DVD');   
  13. 13.     commit;   
  14. 14.   
  15. 15.     create table NEWPRODUCTS   
  16. 16.     (   
  17. 17.     PRODUCT_ID INTEGER,   
  18. 18.     PRODUCT_NAME VARCHAR2(60),   
  19. 19.     CATEGORY VARCHAR2(60)   
  20. 20.     );   
  21. 21.   
  22. 22.     insert into NEWPRODUCTS values (1502, 'OLYMPUS CAMERA', 'ELECTRNCS');   
  23. 23.     insert into NEWPRODUCTS values (1601, 'LAMAZE', 'TOYS');   
  24. 24.     insert into NEWPRODUCTS values (1666, 'HARRY POTTER', 'TOYS');   
  25. 25.     insert into NEWPRODUCTS values (1700, 'WAIT INTERFACE', 'BOOKS');   
  26. 26.     commit;   
  27. 27.  

28. 1,可省略的update 或者insert

  1. 29.    MERGE INTO products p   
  2. 30.     USING newproducts np   
  3. 31.     ON (p.product_id = np.product_id)   
  4. 32.     WHEN MATCHED THEN  
  5. 33.     UPDATE  
  6. 34.     SET p.product_name = np.product_name,   
  7. 35.     p.category = np.category;

  使用表newproducts中的product_name 和category字段来更新到表products 中相同product_id的product_name 和category。

2,当条件不满足的时候把newproducts表中的数据INSERT 到表products中。

  1. MERGE INTO products p   
  2.     USING newproducts np   
  3.      ON (p.product_id = np.product_id)   
  4.      WHEN NOT MATCHED THEN  
  5.      INSERT  
  6.      VALUES (np.product_id, np.product_name,   
  7.      np.category);   

3,带条件的insert 和update

  1. MERGE INTO products p   
  2.  USING newproducts np   
  3.    ON (p.product_id = np.product_id)   
  4.    WHEN MATCHED THEN  
  5.    UPDATE  
  6.    SET p.product_name = np.product_name   
  7.    WHERE p.category = np.category;

 insert 和update 都带有where 字句

 

  1. MERGE INTO products p   
  2.  USING newproducts np   
  3.     ON (p.product_id = np.product_id)   
  4.     WHEN MATCHED THEN  
  5.     UPDATE  
  6.      SET p.product_name = np.product_name,   
  7.      p.category = np.category   
  8.     WHERE p.category = 'DVD'  
  9.     WHEN NOT MATCHED THEN  
  10. 10.      INSERT  
  11. 11.      VALUES (np.product_id, np.product_name, np.category)   
  12. 12.     WHERE np.category != 'BOOKS'  

4,无条件的insert

  1. MERGE INTO products p   
  2.  USING newproducts np   
  3.   ON (1=0)   
  4.   WHEN NOT MATCHED THEN  
  5.    INSERT  
  6.    VALUES (np.product_id, np.product_name, np.category)   
  7.    WHERE np.category = 'BOOKS'  

5,delete 子句

1  merge into products p
  2  using newproducts np
  3  on(p.product_id = np.product_id)
  4  when matched then
  5  update
  6  set p.product_name = np.product_name
  7  delete where category = 'macle1_cate';

select *

from products;

 PRODUCT_ID PRODUCT_NAME         CATEGORY
--------------------------------------- -------------------- --------------------
                                   1502 macle22              macle2_cate
                                   1503 macle3                macle2_cate
                                   1504 macle                  macle1_cate
                                   1505 macle5                macle5_cate

1504 中的macle1_cate 满足delete where,但是不满足 on 中的条件,所以没有被删除。!!!!!!重点

-----------------------------------------------

动机:

想在Oracle中用一条SQL语句直接进行Insert/Update的操作。

说明:

在进行SQL语句编写时,我们经常会遇到大量的同时进行Insert/Update的语句 ,也就是说当存在记录时,就更新(Update),不存在数据时,就插入(Insert)。

实战:

接下来我们有一个任务,有一个表T,有两个字段a,b,我们想在表T中做Insert/Update,如果存在,则更新T中b的值,如果不存在,则插入一条记录。在Microsoft的SQL语法中,很简单的一句判断就可以了,SQL Server中的语法如下:

if exists(select 1 from T where T.a='1001' ) update T set T.b=2 Where T.a='1001' else insert into T(a,b) values('1001',2);

以上语句表明当T表中如果存在a='1001' 的记录的话,就把b的值设为2,否则就Insert一条a='100',b=2的记录到T中。

但是接下来在Oracle中就遇到麻烦了,记得在Oracle 9i之后就有一条Merge into 的语句可以同时进行Insert 和Update的吗,Merge的语法如下:

MERGE INTO table_name alias1 
USING (table|view|sub_query) alias2
ON (join condition) 
WHEN MATCHED THEN 
    UPDATE table_name 
    SET col1 = col_val1, 
        col2     = col2_val 
WHEN NOT MATCHED THEN 
    INSERT (column_list) VALUES (column_values); 

上面的语法大家应该都容易懂吧,那我们按照以上的逻辑再写一次。

MERGE INTO T T1
USING (SELECT a,b FROM T WHERE t.a='1001') T2
ON ( T1.a=T2.a)
WHEN MATCHED THEN
  UPDATE SET T1.b = 2
WHEN NOT MATCHED THEN 
  INSERT (a,b) VALUES('1001',2);

以上的语句貌似很对是吧 ,实际上,该语句只能进行更新,而无法进行Insert,错误在哪里呢?

其实在Oracle中Merge语句原先是用来进行整表的更新用的,也就是ETL工具比较常用的语法,重点是在Using上。

用中文来解释Merge语法,就是:

在alias2中Select出来的数据,每一条都跟alias1进行 ON (join condition)的比较,如果匹配,就进行更新的操作(Update),如果不匹配,就进行插入操作(Insert)。

因此,严格意义上讲,”在一个同时存在Insert和Update语法的Merge语句中,总共Insert/Update的记录数,就是Using语句中alias2的记录数。”

以上这句话也就很好的解释了在上面写的语句为何只能进行Update,而不能进行Insert了,因为都Select不到数据,如何能进行Insert呢:)

接下来要改成正确的语句就容易多了,如下:

MERGE INTO T T1
USING (SELECT '1001' AS a,2 AS b FROM dual) T2
ON ( T1.a=T2.a)
WHEN MATCHED THEN
  UPDATE SET T1.b = T2.b
WHEN NOT MATCHED THEN 
  INSERT (a,b) VALUES(T2.a,T2.b);

查询结果,OK!

注意:

如果不懂Merge语句的原理,Merge语句是一条比较危险的语句,特别是在您只想更新一条记录的时候,因为不经意间,你可能就把整表的数据都Update了一遍.....汗!!!

我曾经犯过的一个错误如下所示,大家看出来是什么问题了吗?

MERGE INTO T T1
USING (SELECT Count(*) cnt FROM T WHERE T.a='1001') T2
ON (T2.cnt>0)
WHEN MATCHED THEN
  UPDATE SET T1.b = T2.b
WHEN NOT MATCHED THEN 
  INSERT (a,b) VALUES(T2.a,T2.b);

 

11.5  DELETE  删除表数据

11.5.1   SQL*Plus

删除表中符合条件的数据:

在SQL>下输入:delete  from  表名  where 条件子句;

 

删除表中全部数据:

在SQL>下输入:truncate  table  表名;

或者

在SQL>下输入:delete  *  from  表名;

 

TRUNCATE TABLE在功能上与不带WHERE子句的DELETE语句相同:二者均删除表中的全部行。但TRUNCATE TABLE 比DELETE速度快,且使用的系统和事务日志资源少,删除后不可恢复。

DELETE语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

TRUNCATE TABLE删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。

对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。

TRUNCATE TABLE不能用于参与了索引视图的表。

对用TRUNCATE TABLE删除数据的表上增加数据时,要使用UPDATE STATISTICS来维护索引信息。

如果有ROLLBACK语句,DELETE操作将被撤销,但TRUNCATE不能撤销。

 

DELETE FROM COURSES

WHERE  COURSE_DESIGNATER = 'Java110'

按条件比较复杂的操作方法

DELETE FROM CLASSCONVENINGS

WHERE      CLASSES_NUM_FK      > 4 

  AND CLASS_CONVENE_DATE = TO_DATE('2006-02-15 00:00:00',

                                   'YYYY-MM-DD HH24:MI:SS')

  AND CLASS_LOCATION_FK   = 'Seattle-Training Room 1'

11.6  条件表达式

11.6.1   比较运算符

 

比较运算符

描述

!=

不等于运算符。

 

<> 

^=

大于运算符。

>=

大于等于运算符。

小于运算符。

<=

小于等于运算符。

(子表达式)  比较运算符  ANY  (子查询语句表达式)

(子表达式)  比较运算符  SOME  (子查询语句表达式)

任一比较运算符。

如果 子表达式结果 与 子查询语句表达式结果中的任意一行 比较结果为真,则整个条件表达式结果为真。

如果 子表达式结果 与 子查询语句表达式结果中的全部行 比较结果为假,则整个条件表达式结果为假。

例如:

10 < ANY (select number from abc)

如果子查询语句表达式结果为2、5、11,则整个条件表达式结果为真。

如果子查询语句表达式结果为2、5、8,则整个条件表达式结果为假。

(子表达式)  比较运算符  ALL  (子查询语句表达式)

全部比较运算符。

如果 子表达式结果 与 子查询语句表达式结果中的全部行 比较结果为真,则整个条件表达式结果为真。

如果 子表达式结果 与 子查询语句表达式结果中的任意一行 比较结果为假,则整个条件表达式结果为假。

例如:

10 < ALL (select number from abc)

如果子查询语句表达式结果为11、15、19,则整个条件表达式结果为真。

如果子查询语句表达式结果为9、11、13,则整个条件表达式结果为假。

 

11.6.2   逻辑运算符

逻辑运算符

描述

(子表达式1)  AND  (子表达式2)

逻辑与运算符。

如果两个子表达式结果都为真,则整个条件表达式结果就为真。

如果两个子表达式结果有一个或两个为假,则整个条件表达式结果就为假。

(子表达式1)  OR  (子表达式2)

逻辑或运算符。

如果两个子表达式结果有一个或两个为真,则整个条件表达式结果就为真。

如果两个子表达式结果都为假,则整个条件表达式结果就为假。

NOT  (子表达式)

逻辑非运算符。

如果子表达式结果为假,则整个条件表达式结果就为真。

如果子表达式结果为真,则整个条件表达式结果就为假。

 

11.6.3   特殊运算符

 

特殊运算符

描述

[NOT] BETWEEN…AND…

用于测试是否在范围内

[NOT] IN (…)

用于测试是否在列表中

(子表达式)  LIKE  (模式字符串)  [ESCAPE  转义字符]

模式匹配运算符。

如果子表达式结果与模式匹配字符串匹配,则整个条件表达式结果就为真。

如果子表达式结果与模式匹配字符串不匹配,则整个条件表达式结果就为假。

模式字符串中可以使用通配符'%'和'_','%'表示零至多个任意字符,'_'表示一个任意字符。

通过用ESCAPE子句指定转义字符,可以将'%'和'_'转义为普通字符进行匹配。

例如:

'_A%' LIKE 'xAxxxxx'  表达式结果为真。

'_A' LIKE 'A'  表达式结果为假。

'A\%B' LIKE 'A%B' ESCAPE '\'  表达式结果为真。

(子表达式)  NOT  LIKE  (模式字符串)  [ESCAPE  转义字符]

模式不匹配运算符。

如果子表达式结果与模式匹配字符串不匹配,则整个条件表达式结果就为假。

如果子表达式结果与模式匹配字符串匹配,则整个条件表达式结果就为真。

模式字符串中可以使用通配符'%'和'_','%'表示零至多个任意字符,'_'表示一个任意字符。

通过用ESCAPE子句指定转义字符,可以将'%'和'_'转义为普通字符进行匹配。

例如:

'_A%' NOT LIKE 'xAxxxxx'  表达式结果为假。

'_A' NOT LIKE 'A'  表达式结果为真。

'A\%B' NOT LIKE 'A%B' ESCAPE '\'  表达式结果为假。

(子表达式)  IS  NULL

为空运算符。

如果子表达式结果为NULL,则整个条件表达式结果就为真。

如果子表达式结果不为NULL,则整个条件表达式结果就为假。

(子表达式)  IS  NOT  NULL

不为空运算符。

如果子表达式结果不为NULL,则整个条件表达式结果就为真。

如果子表达式结果为NULL,则整个条件表达式结果就为假。

EXISTS  (子查询语句表达式)

存在运算符。

如果子查询语句表达式有一行或多行数据,则整个条件表达式结果就为真。

如果子查询语句表达式没有数据,则整个条件表达式结果就为假。

NOT  EXISTS  (子查询语句表达式)

不存在运算符。

如果子查询语句表达式没有数据,则整个条件表达式结果就为真。

如果子查询语句表达式有一行或多行数据,则整个条件表达式结果就为假。

 

11.7  JOIN  表连接

11.7.1   INNER JOIN  内连接

内连接就是将两张表中都符合条件的数据连接起来。

原理:先将左表和右表中符合条件的数据分别筛选出来,然后将左表的全部数据依次与右表的全部数据进行组合;如果某条组合后的数据符合条件,就将该数据放入到结果集中;最终得到的结果集就是内连接后的结果。

内连接SQL语句格式:select  字段1, 字段2, ……  from  表一  inner  join  表二  on  条件表达式  [inner  join  表三  on  条件表达式  ……];

11.7.2   OUTER JOIN  外连接

11.7.2.1 LEFT [OUTER] JOIN  左[外]连接

左外连接就是将两张表中都符合条件的数据连接起来,如果有不符合条件的数据,则将左表的数据保留下来,并将右表的各个字段全部设置为NULL。

原理:先将左表的全部数据依次与右表的全部数据进行组合;如果某条组合后的数据符合条件,就将该数据放入到结果集中;如果左表的某条数据与右表的全部数据组合后没有一条符合条件,则构造一条数据放入到结果集中,构造的这条数据就是左表的该条数据和右表的全是NULL的数据组合而成的;最终得到的结果集就是左外连接后的新表。

注意:左外连接时on关键字后指定条件表达式只是用于做组合时使用,如果条件表达式中有对左表进行筛选的条件,只会判定为不符合条件,然后构造一条数据,不会将左表的数据筛选掉,所以建议在where关键字后添加对左表的筛选条件。

左外连接SQL语句格式:select  字段1, 字段2, ……  from  表一  left  [outer]  join  表二  on  条件表达式  [left  [outer]  join  表三  on  条件表达式  ……];

11.7.2.2 RIGHT [OUTER] JOIN  右[外]连接

右外连接就是将两张表中都符合条件的数据连接起来,如果有不符合条件的数据,则将右表的数据保留下来,并将左表的各个字段全部设置为NULL。

原理:先将左表和右表中符合条件的数据分别筛选出来,然后将右表的全部数据依次与左表的全部数据进行组合;如果某条组合后的数据符合条件,就将该数据放入到结果集中;如果右表的某条数据与左表的全部数据组合后没有一条符合条件,则构造一条数据放入到结果集中,构造的这条数据就是右表的该条数据和左表的全是NULL的数据组合而成的;最终得到的结果集就是右外连接后的结果。

右外连接SQL语句格式:select  字段1, 字段2, ……  from  表一  right  [outer]  join  表二  on  条件表达式  [right  [outer]  join  表三  on  条件表达式  ……];

11.7.2.3 FULL [OUTER] JOIN  全[外]连接

全外连接就是将两张表中都符合条件的数据连接起来,如果有不符合条件的数据,则将左表的数据保留下来,并将右表的各个字段全部设置为NULL,将将右表的数据保留下来,并将左表的各个字段全部设置为NULL。

原理:将左表和右表做一次左外连接和右外连接,然后将重复的数据去除,并全部放入到结果集中。

右外连接SQL语句格式:select  字段1, 字段2, ……  from  表一  right  [outer]  join  表二  on  条件表达式  [right  [outer]  join  表三  on  条件表达式  ……];

11.7.3   CROSS JOIN  交叉连接

交叉连接就是无条件的将两张表中全部数据连接起来。

原理:将左表的全部数据依次与右表的全部数据进行组合,并将组合后的数据放入到结果集中;最终得到的结果集就是交叉连接后的结果。

交叉连接SQL语句格式:select  字段1, 字段2, ……  from  表一  cross  join  表二  [cross  join  表三  ……];

11.7.4   NATURAL JOIN  自然连接

 

11.8  MINUS  比较两表数据

1 引言

在程序设计的过程中,往往会遇到两个记录集的比较。如华东电网PMS接口中实现传递一天中变更(新增、修改、删除)的数据。实现的方式有多种,如编程存储过程返回游标,在存储过程中对两批数据进行比较等等。

本文主要讨论利用ORACLE的MINUS函数,直接实现两个记录集的比较。

2 实现步骤

假设两个记录集分别以表的方式存在,原始表为A,产生的比较表为B。

2.1 判断原始表和比较表的增量差异

利用MINUS函数,判断原始表与比较表的增量差异。

此增量数据包含两部分:

1)原始表A有、比较表B没有;

2)原始表A和比较表B都有,但是某些字段发生了改变。

2.2 判断比较表与原始表的增量差异

利用MINUS函数,判断比较表与原始表的增量差异。

此增量数据包含两部分:

1)比较表B有、原始表A没有;

2)比较表B和原始表A都有,但是某些字段发生了改变。

2.3 得出结果集

利用SQL语句中的对两种增量差异的处理,实现判别出比较表相对于原始表是进行了“插入”、“修改”、“删除”的情况。

3 实例演练

3.1创建表并插入数据

Create table A(A1 number(12),A2 varchar2(50));

Create table B(B1 number(12),B2 varchar2(50));

Insert Into A Values (1,'a');

Insert Into A Values (2,'ba');

Insert Into A Values (3,'ca');

Insert Into A Values (4,'da');

Insert Into B Values (1,'a');

Insert Into B Values (2,'bba');

Insert Into B Values (3,'ca');

Insert Into B Values (5,'dda');

Insert Into B Values (6,'Eda');

COMMIT;

3.2进行增量差异数据比较

3.2.1原始表A与比较表B的增量差异

Select * from A minus select * from B;

结果如下:

           A1           A2

---------------------------------------------------------------

            2          ba

            4          da

3.2.2比较表B与原始表A的增量差异

Select * from B minus select * from A;

结果如下:

           B1            B2

---------------------------------------------------------------

            2            bba

            5            dda

            6            Eda

3.2.3两种增量差异的合集

此合集包含3类数据:

--1、原始表A存在、比较表B不存在,属于删除类数据,出现次数1

--2、原始表A不存在、比较表B存在,属于新增类数据,出现次数1

--3、原始表A和比较表B都存在,属于修改类数据,出现次数2

Select A1,A2,1 t from (Select * from A minus select * from B) union

Select B1,B2,2 t from (Select * from B minus select * from A);

结果如下:

           A1                   A2               T

------------- -------------------------------------------------- ----------

            2                   ba                1

            2                   bba               2

            4                   da                1

            5                   dda               2

            6                   Eda               2

3.3得到结果

Select A1,sum(t) from

(Select A1,A2,1 t from (Select * from A minus select * from B) union

Select B1,B2,2 t from (Select * from B minus select * from A))

Group by A1;

结果如下:

           A1     SUM(T)

-----------------------

            6          2

            2          3

            4          1

            5          2

结果中SUM(T)为1的为“删除”的数据,SUM(T)为2的为“新增”的数据,SUM(T)为3的为“修改”的数据。

4 分析

4.1 效率分析

序号

数据库配置

Oracle版本

原表数据量

比较表数据量

字段列数

耗时

1

Cpu:2.5GHz/内存:2048M

9i

928335

3608159

19

171.594s

2

Cpu:2.5GHz/内存:2048M

9i

928335

3608159

10

121.469s

3

Cpu:2.5GHz/内存:2048M

9i

928335

3608159

5

68.938s

4

Cpu:2.5GHz/内存:2048M

9i

49933

928335

19

33s

5

Cpu:2.5GHz/内存:2048M

9i

49933

928335

10

25.968s

6

Cpu:2.5GHz/内存:2048M

9i

49933

928335

5

11.484s

7

16cpu:3.5GHz/内存:64G

10g

575283

575283

11

13.812s

8

16cpu:3.5GHz/内存:64G

10g

109987

109987

40

2.17s

4.2实现分析

在两个结果集比较的过程中,减少原始表和比较表比较的字段数目以及原始表和比较表的数据量都可以提高效率。

5 总结

此比较方法在执行效率上,可能不是非常好,但是能解决效率要求并不太高的问题。在实现上利用了Oracle的minus函数,此文在于引起大家对于Oracle函数的认识。

12 控制文件

12.1  控制文件的作用

控制文件在Oracle数据库中扮演着很重要的角色,没有控制文件(或者控制文件损坏了),运行着的实例立即崩溃,关闭着的死活打不开,你以为你是谁,可以说,控制文件一旦损坏,数据库必然down了。Oracle数据库实例启动过程中,当启动到unmount时,此时只是在内存中为Oracle实例分配了实例空间,然后如果继续要启动到mount状态,这个时候控制文件就闪亮登场了,因为Oracle要依据控制文件找到数据文件跟重做日志文件的路径,确定找到了再进去mount状态,至于打开数据库就是确定这些文件都一致,没有问题的话就能打开了。

12.2  控制文件包括了哪些重要内容

控制文件包括了很多重要的信息,比如数据库的数据文件、重做日志文件、数据库的名称、数据库创建信息、表空间信息、数据文件的状态、日志文件信息、备份信息、检查点信息等

12.3  控制文件的性质

控制文件是一个2进制文件,不可以直接通过文本编辑器进行编写,这个文件由Oracle自己进行维护,Oracle建议控制文件至少有两份冗余,并且放在不同的磁盘中,这样能够避免一个磁盘的损坏,造成整个控制文件都丢失的情况,因为他还有一个兄弟健在,尽管一个坏了,数据库还是得down,但是有一个在的话,至少我恢复起来要快不少。

12.4  查看控制文件

SQL> show parameter control_files;

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

control_files                        string      /opt/oracle/oradata/orcl/control01.ctl, /opt/oracle/oradata/orcl/control02.ctl,                                            

                                                       /opt/oracle/oradata/orcl/control03.ctl

 

也可以通过 v$controlfile

 

SQL> desc v$controlfile;

Name                  Type          Nullable Default Comments

--------------------- ------------- -------- ------- --------

STATUS                VARCHAR2(7)   Y                       

NAME                  VARCHAR2(513) Y                       

IS_RECOVERY_DEST_FILE VARCHAR2(3)   Y                       

BLOCK_SIZE            NUMBER        Y                       

FILE_SIZE_BLKS        NUMBER        Y  

 

SQL> col name for a30

SQL> select * from v$controlfile;

 

STATUS  NAME                           IS_RECOVERY_DEST_FILE   BLOCK_SIZE   FILE_SIZE_BLKS

------- ------------------------------ --------------------- ---------- --------------

        /opt/oracle/oradata/orcl/contr NO                                    16384                492

        ol01.ctl                                                      

 

        /opt/oracle/oradata/orcl/contr NO                                    16384                492

        ol02.ctl                                                      

 

        /opt/oracle/oradata/orcl/contr NO                                    16384                492

        ol03.ctl                                                       

 

默认控制文件的块大小为16K

13 数据文件

13.1  数据文件的作用

数据文件当然是用来存储实际数据的啦,数据文件是存储数据的物理概念,我们还有一个更大的逻辑概念,叫做表空间,表空间跟数据文件又是一个什么样的关系呢?简单的说就是一个表空间至少包含可一个数据文件,创建数据库对象的时候指定的是使用的表空间,所以就不难理解为什么一个对象(比如一张大表)可以跨越多个数据文件了。

13.2  数据文件的状态

表空间可以置为offline、online、readonly、readwrite,数据文件也可以置为offline、online,不过这也是有限制的,比如你不可以把system表空间offline,你当然也不能把system表空间的数据文件offline,如果连system表空间的数据文件都不工作了,那大家都可以一边玩去了。

13.3  查看数据文件的信息

SQL> col name for a30

SQL> select file#,name,status from v$datafile;

 

     FILE# NAME                                        STATUS

---------- ------------------------------              -------

         1 /opt/oracle/oradata/orcl/system01.dbf       SYSTEM

         2 /opt/oracle/oradata/orcl/gdyx03.dbf         ONLINE

         3 /opt/oracle/oradata/orcl/sysaux01.dbf       ONLINE

         4 /opt/oracle/oradata/orcl/users01.dbf        ONLINE

         5 /opt/oracle/oradata/orcl/gdyx.dbf           ONLINE

         6 /data1/dbf/gdyx05.dbf                       ONLINE

         7 /opt/oracle/oradata/orcl/gdyx2.dbf          ONLINE

         8 /data1/dbf/UNDOTBS2.DBF                     ONLINE

         9 /data1/dbf/gdyx04.dbf                       ONLINE

        10 /data1/dbf/undotbs01_01.dbf                 ONLINE

        11 /data1/dbf/system02.dbf                     SYSTEM

        12 /data1/dbf/SYSAUX02.dbf                     ONLINE

 

12 rows selected

13.4  修改数据文件的状态

两种方式:

比如我现在要把上面查到的/data1/dbf/gdyx05.dbf的数据文件offline:

 

SQL>alter database datafile '/data1/dbf/gdyx05.dbf' offline;

 

也可以直接指定文件号:

 

alter database datafile 6 offline;

14 临时文件

14.1  临时文件一些特点

临时文件不是临时存在的文件,而是临时表空间对应的数据文件,这个文件不是一用完就删除,而是指这个文件存储的对象是属于临时存在的对象。临时文件主要用于大量的排序的时候,如果不能在内存中进行排序,那么就会将数据转移到临时文件中作为中转。

14.2  注意的地方

临时表空间是必须处于nologging状态的,所以临时文件也是处于nologging状态的,临时表空间的数据文件在分配存储空间的时候与普通表空间的数据文件并不相同,这些临时文件不需要格式化,初建的时候只是指定了大小,而没有实际的占用。临时表空间中的数据文件的空间在使用后并不会主动的释放,因此数据库在使用一段时间后,临时表空间总是看起来是满的,但是实际上可能根本就没有使用,可以通过下面的动态性能视图查看临时表空间的实际占用情况。

 

select blocks * 你的block的大小(一般是8k) from v$sort_usage;

14.3  新建临时表空间

create  temporary  tablespace  临时表空间名称  tempfile  '......'  size  100m;

14.4  给临时表空间添加数据文件

alter  tablespace  临时表空间名称  add  tempfile  ''  size  100m;

15 数据库表空间

15.1  简介

表空间是一个或多个数据文件的集合,主要存放的是表,所有的数据对象都存放在指定的表空间中;一个数据文件只能属于一个表空间,一个数据库空间由若干个表空间组成,其中包括:

a.系统表空间:10g以前,默认系统表空间是System,10g包括10g以后,默认系统表空间是User,存放数据字典和视图以及数据库结构等重要系统数据信息。

b.Temp表空间:临时表空间,安装数据库时创建。

c.用户自定义表空间:用户可以通过Create tablspace命令创建表空间。

2.表分区:当表中的数据量不断增大,查询数据的速度会变慢,应用程序的性能就会下降,这时就应该考虑对表分区;表进行分区后逻辑上还是一张完整的表,只是把表中的数据存放到不同的表空间(物理文件上),这样查询就不用扫描整张表。

3.什么时候使用分区表:

a.表的大小超过2GB。

b.表中包含历史数据,新的数据被增加到新的分区中。

4.表分区的优缺点:

优点:(1)改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高查询效率。

     (2)增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用。

     (3)维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可。

     (4)均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能。

缺点:已经存在的表没有方法可以直接转化为分区表。

5.表分区的几种类型及操作方法:

a.范围分区:按照指定的范围来分区,这种分区方式是最常用的,例如按日期

CREATE TABLE MYCUSTOMER

(

    CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,

    FIRST_NAME  VARCHAR2(30) NOT NULL,

    SEX       CHAR(1)

)

PARTITION BY RANGE (CUSTOMER_ID)

(

    PARTITION CUS_PART1 VALUES LESS THAN (100) TABLESPACE CUS_TS01,

    PARTITION CUS_PART2 VALUES LESS THAN (200) TABLESPACE CUS_TS02,

    PARTITION CUS_PART3 VALUES LESS THAN (maxvalue) TABLESPACE CUS_TS03

);

select count(*) cn from MYCUSTOMER PARTITION (CUS_PART1);

select count(*) cn from MYCUSTOMER PARTITION (CUS_PART2);

b.列表分区:该分区的特点是某列的值只有几个,例如性别,身份证号,城市。

CREATE TABLE MYCUSTOMER

(

    CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,

    FIRST_NAME  VARCHAR2(30) NOT NULL,

    SEX       CHAR(1)

)

PARTITION BY LIST (SEX)

(

      PARTITION par_sexm VALUES ('m') TABLESPACE CUS_TS01,

      PARTITION par_sexf VALUES ('f') TABLESPACE CUS_TS02

);

select count(*) cn from MYCUSTOMER PARTITION (par_sexm) where CUSTOMER_ID<10;

select count(*) cn from MYCUSTOMER PARTITION (par_sexf);

c.散列分区:这类分区是在列值上使用散列算法,以确定将行放入哪个分区中。当列的值没有合适的条件时,建议使用散列分区。

CREATE TABLE MYCUSTOMER

(

    CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,

    FIRST_NAME  VARCHAR2(30) NOT NULL,

    SEX       CHAR(1)

)

PARTITION BY HASH (CUSTOMER_ID)

(

      PARTITION hash1 TABLESPACE CUS_TS01,

      PARTITION hash2 TABLESPACE CUS_TS02,

      PARTITION hash3 TABLESPACE CUS_TS03

);

select count(*) cn from MYCUSTOMER PARTITION (hash1);

select count(*) cn from MYCUSTOMER PARTITION (hash2);

select count(*) cn from MYCUSTOMER PARTITION (hash3);

15.2  oracle一个数据文件不可以给多个表空间

一个Oracle数据库由一个或多个逻辑存储单元——表空间构成,表空间存储着数据库中所有的数据;根据时间和用途不同,分成不同的表空间:如系统表空间,临时表空间,用户表空间。

Oracle数据库中的每个表空间由一个或多个文件组成,这些文件就是数据文件,它们是Oracle所在操作系统上的物理结构。

 

段就是在表空间中某一个特定逻辑结构的集合,例如特定逻辑结构指的是一类别,如表这个类别所占用空间的集合就是表段,索引这个类所占用的空间的集合就是索引段。一个段是不可以跨表空间的,但是可以同时跨同一表空间的多个数据文件,如上图。

段在申请空间分配的时候是按照一个一个分区来拿到的,分区来只源于某一个数据文件,不可同时属于多个数据文件,如上、下图结合;分区最终由Block组成的,块的一般大小是8K,是基本的存储单位。

 

Oracle数据库中的所有数据物理的存储在数据文件中。

    除了普通表空间外,Oracle还有几种特殊的表空间。系统表空间(SYSTEM表空间)、UNDO表空间(9i以前的回滚表空间)、临时表空间。

    系统表空间中除了保存数据字典外还保存所有的存储过程、函数、包、触发器和对象。

    UNDO表空间用于保存被DML语句影响的记录的原始状态,以便在事务失败的时候可以进行回滚。

   当大的排序操作发生时,排序无法在内存中完成,这是会使用临时表空间。

Oracle推荐使用多个表空间,使用多个表空间的优点:

控制数据库的磁盘空间分配;

为数据库用户指定不同的配额(QUOTA);

通过设置单独的表空间ONLINE或OFFLINE来控制数据的可用性;

执行部分数据库的备份和恢复操作;

将数据存储分布到多个物理设备来提高性能。

Oracle支持两种管理空间方式的表空间:

    本地管理表空间(Locally managed tablespace):通过表空间头部的BITMAP来管理空闲空间。

    数据字典管理表空间(Dictionary managed tablespace):通过数据字典中的表来管理空闲空间。

对于本地管理表空间还可以选择如何管理段内的空闲空间:

    AUTO方式:通过BITMAP管理,这种方式又叫做automatic segment-space management。

    MANUAL方式:通过FREELISTS来管理。

Oracle为了更好的支持传输表空间,Oralce从9i开始支持表空间的BLOCK_SIZE和数据库的db_block_size的设置不同。

    表空间可以设置为ONLINE和OFFLINE,OFFLINE的表空间无法进行访问。通过对单独表空间的ONLINE和OFFLINE,可以减少对系统的影响。

     表空间可以设置为READ ONLY和READ WRITE两种状态,只读的表空间不可以进行锁操作,因此甚至可以放到只读设备上如CDROM。

     数据文件是操作系统上的物理文件。一个表空间中包含一个或多个数据文件。在Oracle9i以后,组成临时表空间的文件和普通数据文件区分开,叫做临时文件。

临时文件具有以下特性:

临时文件总是设置为NOLOGGING模式;

临时文件不能设置为READ ONLY;

临时文件不能重命名;

不能通过ALTER DATABASE语句创建临时文件;

    当建立建立临时文件时,Oracle只是分配空间,没有进行初始化,这样可以加快建立临时文件的速度;

     临时文件的查询通过这两个视图:V$TEMPFILE和DBA_TEMP_FILES。

控制文件中保存着下列信息:

数据库名称、数据库创建的时间、所有数据文件和重做日志文件的名称和位置、表空间信息、OFFLINE数据文件信息、重做日志历史信息、归档日志文件信息、备份集信息、备份数据文件和重做日志文件信息、数据文件拷贝信息、当前重做日志序号和检查点信息。

当数据文件和联机重做日志文件发生变化时,都会将信息写道控制文件中。Oracle记录这些信息是为了:

     在启动时,Oracle可以找到并打开数据文件和重做日志文件;

Oracle可以确定数据库恢复是否需要或是否可能。

     控制文件还记录CHECKPOINT信息,用于在恢复时指定哪些恢复操作是没有必要的,它们已经写到数据文件中了。

     由于控制文件的重要性,因此一定要建立多个控制文件,并放到不同的物理磁盘上,同时注意对控制文件的备份。

 

修改表空间:

ALTER TABLESPACE tablespace_name ADD

             DATAFILE datefile_clause1 [,datefile_clause2] …… ;

Datafile_Clause — 完整语法如下:

   Path\file_name SIZE nnnn{K|M} REUSE   [AUTOEXTEND {OFF|ON NEXT nnnn{K|M} {MAXSIZE nnnn{K|M}|UNLIMITED}}]

  其中:  path\file_name — 数据文件的存储路径和文件名;

15.3  新建表空间

在SQL>下输入:

CREATE  TABLESPACE  表空间名称  DATAFILE

'数据文件完整绝对路径'  [SIZE  数据文件初始化大小{K|M}]  [REUSE]   [AUTOEXTEND  {OFF|ON  NEXT  每次自动增长大小{K|M} {MAXSIZE  数据文件最大大小{K|M}|UNLIMITED}}],

'数据文件完整绝对路径'  [SIZE  数据文件初始化大小{K|M}]  [REUSE]   [AUTOEXTEND  {OFF|ON  NEXT  每次自动增长大小{K|M} {MAXSIZE  数据文件最大大小{K|M}|UNLIMITED}}],

'数据文件完整绝对路径'  [SIZE  数据文件初始化大小{K|M}]  [REUSE]   [AUTOEXTEND  {OFF|ON  NEXT  每次自动增长大小{K|M} {MAXSIZE  数据文件最大大小{K|M}|UNLIMITED}}],

……

 

SIZE参数和REUSE参数描述:

1、  如果没有指定SIZE子句,但指定了REUSE子句,那么数据文件完整绝对路径必须是一个已存在的文件,表示重用这个数据文件,不改变数据文件大小。

2、  如果指定了SIZE子句,但没有指定REUSE子句,那么数据文件完整绝对路径必须是一个不存在的文件,表示新建这个数据文件,并初始化数据文件大小。

3、  如果即指定了SIZE子句,又指定了REUSE子句,那么如果数据文件完整绝对路径是一个已存在的文件,那么就重用这个数据文件,并重新初始化数据文件大小,如果数据文件完整绝对路径是一个不存在的文件,那么就新建这个数据文件,并重新初始化数据文件大小。

 

注意:

reuse使用的文件,是不能属于任何表空间的,即某个表空间已删除,但是数据文件还在,那么再创建表空间的时候就可以重新使用这个文件。

建议数据文件在reuse使用之前,在操作系统可以对其改名,使其尽量和新表空间名一致。

15.4  修改表空间

ALTER TABLESPACE tablespace

  { DEFAULT [ table_compression ] [ storage_clause ]

  | MINIMUM EXTENT size_clause

  | RESIZE size_clause

  | COALESCE

  | SHRINK SPACE [ KEEP size_clause]

  | RENAME TO new_tablespace_name

  | { BEGIN | END } BACKUP

  | datafile_tempfile_clauses

  | tablespace_logging_clauses

  | tablespace_group_clause

  | tablespace_state_clauses

  | autoextend_clause

  | flashback_mode_clause

  | tablespace_retention_clause

  } ;

15.5  删除表空间

在SQL>下输入:

DROP  TABLESPACE  表空间名称  [INCLUDING  CONTENTS  AND  DATAFILES];

 

INCLUDING  CONTENTS  AND  DATAFILE表示清空数据文件中的数据并删除数据文件。

 

注意:如果没有通过以上命令删除而直接删除了数据文件,将导致数据库无法打开。

 

如果直接删除了数据文件,普通用户登录时,则报错:

ORA-01033: ORACLE initialization or shutdown in progress

 

sys用户可以正常登录

 

但进行操作时(SELECT count(1) FROM user_tables),则会报错:

ORA-01219: 数据库未打开: 仅允许在固定表/视图中查询

 

如果执行命令alter database open以打开数据库时,又报如下错:

 

ORA-01157: 无法标识/锁定数据文件 12 - 请参阅 DBWR 跟踪文件

ORA-01110: 数据文件 12: 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TSTEST001.DBF'

 

说明数据库没找到这个数据文件

 

因为数据文件在没有被offline的情况下物理删除了,导致oracle的数据不一致,因此启动失败。

 

通过以下方法即可解决:

 

sqlplus sys/orcl@orcl as sysdba;

 

SQL> alter database datafile 'E:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TSTEST001.DBF' offline drop;

 

SQL> alter database open;

 

SQL> drop tablespace CTBASEDATA;

15.6  查看表空间配额

在SQL>下输入:select  *  from  dba_ts_quotas;

 

字段名称

数据类型

可否为空

描述

TABLESPACE_NAME

VARCHAR2(30)

不可以

表空间名称。

USERNAME

VARCHAR2(30)

不可以

数据库用户名称。

BYTES

NUMBER

可以

表空间已经被数据库用户用了多少字节。

MAX_BYTES

NUMBER

可以

表空间最多被数据库用户用多少字节,-1或0表示不限制。

BLOCKS

NUMBER

不可以

表空间已经被数据库用户用了多少块。

MAX_BLOCKS

NUMBER

可以

表空间最多被数据库用户用多少块,-1或0表示不限制。

 

15.7  缩小临时表空间

1.startup  --启动数据库

 

2.create  temporary  tablespace  TEMP2  TEMPFILE  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP02.DBF'  SIZE  100M  REUSE  AUTOEXTEND  ON  NEXT  640K  MAXSIZE  UNLIMITED;   --创建中转临时表空间

 

3.alter  database  default  temporary  tablespace  temp2;  --改变缺省临时表空间  为刚刚创建的新临时表空间temp2

 

4.drop  tablespace  temp  including  contents  and  datafiles;--删除原来临时表空间  删除相应表文件(手动)

 

5.create  temporary  tablespace  TEMP  TEMPFILE  'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\TEMP01.DBF'  SIZE  100M  REUSE  AUTOEXTEND  ON  NEXT  10M  MAXSIZE  UNLIMITED;  --重新创建临时表空间

 

6.alter  database  default  temporary  tablespace  temp;  --重置缺省临时表空间为新建的temp表空间

 

7.drop  tablespace  temp2  including  contents  and  datafiles;--删除中转用临时表空间

 

8.alter  user  nc用户  temporary  tablespace  temp;  --重新指定用户表空间为重建的临时表空

15.8  查看永久表空间和临时表空间的使用情况

with

  MY_DBA_DATA_FILES as

  (select

     FILE_NAME,

     RELATIVE_FNO,

     ONLINE_STATUS,

     TABLESPACE_NAME,

     '永久'  TABLESPACE_TYPE,

     sum(BYTES)  TOTAL_BYTES,

     sum(BLOCKS)  TOTAL_BLOCKS

   from

     DBA_DATA_FILES

   group by

     FILE_NAME,

     RELATIVE_FNO,

     ONLINE_STATUS,

     TABLESPACE_NAME

  ),

  MY_DBA_FREE_SPACE as

  (select

     TABLESPACE_NAME,

     RELATIVE_FNO,

     sum(BYTES)  FREE_BYTES,

     sum(BLOCKS)  FREE_BLOCKS

   from

     DBA_FREE_SPACE

   group by

     TABLESPACE_NAME,

     RELATIVE_FNO

  ),

  MY_DBA_DATA_FILES_TWO as

  (select

     MY_DBA_DATA_FILES.FILE_NAME  数据文件完整路径,

     MY_DBA_DATA_FILES.TABLESPACE_NAME  表空间名称,

     MY_DBA_DATA_FILES.TABLESPACE_TYPE  类型,

     MY_DBA_DATA_FILES.ONLINE_STATUS  联机状态,

     ROUND(MY_DBA_DATA_FILES.TOTAL_BYTES / 1024 / 1024,3)  "总大小(M)",

     MY_DBA_DATA_FILES.TOTAL_BLOCKS  "总块数(块)",

     ROUND(NVL(MY_DBA_FREE_SPACE.FREE_BYTES,0) / 1024 / 1024,3)  "剩余大小(M)",

     NVL(MY_DBA_FREE_SPACE.FREE_BLOCKS,0)  "剩余块数(块)",

     ROUND((MY_DBA_DATA_FILES.TOTAL_BYTES - NVL(MY_DBA_FREE_SPACE.FREE_BYTES,0)) / MY_DBA_DATA_FILES.TOTAL_BYTES * 100,2)  "使用率(%)"

   from

     MY_DBA_DATA_FILES

       left join MY_DBA_FREE_SPACE on

         MY_DBA_DATA_FILES.RELATIVE_FNO = MY_DBA_FREE_SPACE.RELATIVE_FNO

         and MY_DBA_DATA_FILES.TABLESPACE_NAME = MY_DBA_FREE_SPACE.TABLESPACE_NAME

  ),

  MY_DBA_TEMP_FREE_SPACE as

  (select

     NULL  数据文件完整路径,

     TABLESPACE_NAME  表空间名称,

     '临时'  类型,

     NULL  联机状态,

     ROUND(DBA_TEMP_FREE_SPACE.TABLESPACE_SIZE / 1024 / 1024,3)  "总大小(M)",

     NULL  "总块数(块)",

     ROUND(DBA_TEMP_FREE_SPACE.FREE_SPACE / 1024 / 1024,3)  "剩余大小(M)",

     NULL  "剩余块数(块)",

     ROUND((DBA_TEMP_FREE_SPACE.TABLESPACE_SIZE - DBA_TEMP_FREE_SPACE.FREE_SPACE) / DBA_TEMP_FREE_SPACE.TABLESPACE_SIZE * 100,2)  "使用率(%)"

   from

     DBA_TEMP_FREE_SPACE

  )

select

  *

from

  MY_DBA_DATA_FILES_TWO

union all

select

  *

from

  MY_DBA_TEMP_FREE_SPACE

order by

  3 desc,

  2,

  1

;

 

15.9  查询临时表空间的使用情况

select round((f.bytes_free + f.bytes_used) / 1024 / 1024, 2) "total MB",

round(((f.bytes_free + f.bytes_used) - nvl(p.bytes_used, 0)) / 1024 / 1024, 2)  "Free MB" ,

d.file_name "Datafile name",

round(nvl(p.bytes_used, 0)/ 1024 / 1024, 2) "Used MB",

round((f.bytes_free + f.bytes_used) / 1024, 2) "total KB",

round(((f.bytes_free + f.bytes_used) - nvl(p.bytes_used, 0)) / 1024, 2)  "Free KB",

round(nvl(p.bytes_used, 0)/ 1024, 2) "Used KB",0 "Fragmentation Index"

from   SYS.V_$TEMP_SPACE_HEADER f, DBA_TEMP_FILES d, SYS.V_$TEMP_EXTENT_POOL p

where  f.tablespace_name(+) = d.tablespace_name

and    f.file_id(+) = d.file_id

and    p.file_id(+) = d.file_id;

15.10 查找当前表级锁

select sess.sid,

    sess.serial#,

    lo.oracle_username,

    lo.os_user_name,

    ao.object_name,

    lo.locked_mode

    from v$locked_object lo,

    dba_objects ao,

    v$session sess

where ao.object_id = lo.object_id and lo.session_id = sess.sid;

15.11 杀掉锁表进程

alter system kill session '436,35123';

15.12 RAC环境中锁查找

SELECT inst_id,DECODE(request,0,'Holder: ','Waiter: ')||sid sess,

        id1, id2, lmode, request, type,block,ctime

FROM GV$LOCK

WHERE (id1, id2, type) IN

       (SELECT id1, id2, type FROM GV$LOCK WHERE request>0)

ORDER BY id1, request;

15.13 监控当前数据库谁在运行什么SQL语句

select osuser, username, sql_text 

from  v$session a, v$sqltext b

where  a.sql_address =b.address order by address, piece;

15.14 找使用CPU多的用户session

select a.sid,spid,status,substr(a.program,1,40) prog, a.terminal,osuser,value/60/100 value

from  v$session a,v$process b,v$sesstat c

where  c.statistic#=12 and 

       c.sid=a.sid and 

       a.paddr=b.addr 

       order by value desc;

15.15 查看死锁信息

SELECT (SELECT username

          FROM v$session

         WHERE SID = a.SID) blocker, a.SID, 'is blocking',

       (SELECT username

          FROM v$session

         WHERE SID = b.SID) blockee, b.SID

  FROM v$lock a, v$lock b

 WHERE a.BLOCK = 1 AND b.request > 0 AND a.id1 = b.id1 AND a.id2 = b.id2;

15.16 具有最高等待的对象

SELECT   o.OWNER,o.object_name, o.object_type, a.event,

         SUM (a.wait_time + a.time_waited) total_wait_time

    FROM v$active_session_history a, dba_objects o

   WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE

     AND a.current_obj# = o.object_id

GROUP BY o.OWNER,o.object_name, o.object_type, a.event

ORDER BY total_wait_time DESC;

 

 

SELECT   a.session_id, s.osuser, s.machine, s.program, o.owner, o.object_name,

         o.object_type, a.event,

         SUM (a.wait_time + a.time_waited) total_wait_time

    FROM v$active_session_history a, dba_objects o, v$session s

   WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE

     AND a.current_obj# = o.object_id

     AND a.session_id = s.SID

GROUP BY o.owner,

         o.object_name,

         o.object_type,

         a.event,

         a.session_id,

         s.program,

         s.machine,

         s.osuser

ORDER BY total_wait_time DESC;

15.17 查询当前连接会话数

select s.value,s.sid,a.username

from

v$sesstat S,v$statname N,v$session A

where

n.statistic#=s.statistic# and

name='session pga memory'

and s.sid=a.sid

order by s.value;

15.18 等待最多的用户

SELECT   s.SID, s.username, SUM (a.wait_time + a.time_waited) total_wait_time

    FROM v$active_session_history a, v$session s

   WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE

GROUP BY s.SID, s.username

ORDER BY total_wait_time DESC;

15.19 等待最多的SQL

SELECT   a.program, a.session_id, a.user_id, d.username, s.sql_text,

         SUM (a.wait_time + a.time_waited) total_wait_time

    FROM v$active_session_history a, v$sqlarea s, dba_users d

   WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE

     AND a.sql_id = s.sql_id

     AND a.user_id = d.user_id

GROUP BY a.program, a.session_id, a.user_id, s.sql_text, d.username;

15.20 查看消耗资源最多的SQL

SELECT hash_value, executions, buffer_gets, disk_reads, parse_calls

FROM V$SQLAREA

WHERE buffer_gets > 10000000 OR disk_reads > 1000000

ORDER BY buffer_gets + 100 * disk_reads DESC;

15.21 查看某条SQL语句的资源消耗

SELECT hash_value, buffer_gets, disk_reads, executions, parse_calls

FROM V$SQLAREA

WHERE hash_Value = 228801498 AND address = hextoraw('CBD8E4B0');

15.22 查询会话执行的实际SQL

SELECT   a.SID, a.username, s.sql_text

    FROM v$session a, v$sqltext s

   WHERE a.sql_address = s.address

     AND a.sql_hash_value = s.hash_value

     AND a.status = 'ACTIVE'

ORDER BY a.username, a.SID, s.piece;

15.23 显示正在等待锁的所有会话

SELECT * FROM DBA_WAITERS;

16 Synonyms同义词对象

16.1  简介

同义词对象就是给其他对象起一个别名的意思。

例如:User用户下有一个my_table对象,其他用户访问该对象时需要指定User.my_table,用起来不方便,我们就可以用创建一个名字叫user_table同义词对象来表示这个User.my_table对象,相当于起一个别名,当然同义词对象的名字可以随意指定。

私有的同义词对象只能在创建者下使用,全局的同义词对象可以在任何用户下使用。

 

同义词优点:

同义词可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别。

同义词可以扩展的数据库对象的使用范围,能够在不同的数据库用户之间实现无缝交互。

同义词可以创建在数据库链接上,大大工作提升效率。

16.2  查看同义词对象

16.2.1   SQL*Plus

在SQL>下输入:select  owner,object_name  from  dba_objects  where  object_type='SYNONYMS';

或者

在SQL>下输入:select  *  from  dba_synonyms;

16.3  创建同义词对象

16.3.1   SQL*Plus

在SQL>下输入:create  [public]  synonym  同义词对象名称  for  被同义词的对象名称;

 

私有同义词的所有用户为创建用户,公共同义词的所有用户为PUBLIC用户。

16.4  删除同义词对象

在SQL>下输入:drop  [public]  synonym  同义词对象名称;

 

注意:drop  public  synonym表示删除全局的同义词对象,drop  synonym表示删除私有的同义词对象。

注意:用户必须有create  public  synonym权限或者create  synonym权限才能删除同义词对象。

17 DataBase Link 数据库链接对象

17.1  简介

当用户要跨本地数据库,访问另外一个数据库表中的数据时,用户就可以在本地数据库中创建了远程数据库的链接,也就是DataBase Link对象,就可以在本地数据库中直接访问远程数据库中的表数据。

例如:select  *  from  my_tables@MyDBLink; 就表示my_table对象通过MyDBLink数据库链接对象去查找。

私有的数据库链接对象只能在创建者下使用,全局的数据库链接对象可以在任何用户下使用。

17.2  查看数据库链接对象

17.2.1   SQL*Plus

在SQL>下输入:select  owner,object_name  from  dba_objects  where  object_type='DATABASE LINK';

或者

在SQL>下输入:select  *  from  dba_db_links;

17.3  创建数据库链接对象

注意:创建全局的DataBase Link要求数据库用户有DBA权限或者create public database link权限。创建私有的DataBase Link要求数据库用户有DBA权限或者create database link权限。

17.3.1   SQL*Plus

在SQL>下输入:

CREATE  [PUBLIC]  DATABASE  LINK  DBLink名称

  CONNECT  TO  用户名  IDENTIFIED  BY  "密码"  USING

    '(DESCRIPTION =

       (ADDRESS_LIST =

         (ADDRESS = (PROTOCOL = TCP)(HOST = 数据库服务器IP)(PORT = 1521))

       )

       (CONNECT_DATA =

         (SERVICE_NAME = 数据库服务名)

       )

     )';

 

或者

 

CREATE  [PUBLIC]  DATABASE  LINK  DBLink名称

  CONNECT  TO  用户名  IDENTIFIED  BY  "密码"  USING

    'TNSNAMES数据库连接描述符';

 

注意:

1、  create  public  database  link表示创建全局的数据库链接对象,create  database  link表示创建私有的数据库链接对象。

2、  数据库参数global_name=true时要求数据库链接对象的名字必须跟远端数据库实例名一样。可以执行SQL> alter system set global_name=false后,取消这个限制。

3、  在Oracle 9i或10g数据库客户端上创建连接Oracle 11g数据库的数据库链接对象时,如果SQL语句中的密码不加双引号,会自动将密码中的小写字母转化为大写字母,所以密码必须加上双引号。

17.4  删除数据库链接对象

17.4.1   SQL*Plus

在SQL>下输入:drop  [public]  database  link  DBLink名称;

 

注意:drop  public  database  link表示删除全局的数据库链接对象,drop  database  link表示删除私有的数据库链接对象。

注意:用户必须有create  public  database  link权限或者create  database  link 权限才能删除数据库链接对象。

18 PL/SQL代码块

PL/SQL代码块格式:

[DECLARE]

  ----定义部分:定义常量、变量、复杂数据类型、游标、例解。

      如果不需要定义任何东西,可以省略DECLARE关键字,也可以不省略。

      如果需要定义东西,而且是直接执行PL/SQL代码块时,就必须要写DECLARE关键字。

      创建或替换存储过程时,IS|AS后不要写DECLARE关键字,否则会报PLS-00103错误。

BEGIN

  ----执行部分:需要执行的PL/SQL语句和PL/SQL代码块(相当于嵌套PL/SQL代码块)。

[EXCEPTION

  [WHEN  异常码1  [OR  异常码2  ...] THEN  ----如果需要处理异常,至少要定义一种异常处理情况

    statement1;

    statement2;

...

  ]

  [WHEN  异常码3  [OR  异常码4  ...] THEN

    statement1;

    statement2;

...

  ]

  [WHEN OTHERS THEN  ----OTHERS表示其他未处理的全部异常

    statement1;

    statement2;

...

  ]

]

  ----异常处理部分:异常处理语句。

      如果不需要处理异常,必须省略EXCEPTION关键字。

END;

 

18.1  PL/SQL代码的预定义异常汇总

异常码

对应错误码

描述

ACCESS_INTO_NULL

ORA-06530

为对象赋值前必需初始化对象。

CASE_NOT_FOUND

ORA-06592

使用CASE语句时在WHEN子句中没有包含必需的条件分支,并且没有包含ELSE语句。

COLLECTION_IS_NULL

ORA-06531

给集合元素赋值前必需初始化集合元素。

CURSOR_ALRADY_OPEN

ORA-06511

重新打开已经打开的游标。

DUP_VAL_ON_INDEX

ORA-00001

在惟一索引所对应的列上键入重复值。

INVALID_CURSOR

ORA-01001

试图操作不合法的游标。

INVALID_NUMBER

ORA-01722

内嵌SQL语句不能有效的将字符转换成数字。

NO_DATA_FOUND

ORA-01403

执行SELECT INTO未返回行。

TOO_MANY_ROWS

ORA-01422

执行SELECT INTO语句时返回超过一行。

ZERO_DIVIDE

ORA-01476

PL/SQL块中使用数字除0。

SUBSCRIPT_BEYOND_COUNT

ORA-06533

元素下标超出嵌套表或VARRAY元素的范围。

SUBSCRIPT_OUTSIDE_LIMIT

ORA-06532

使用嵌套表或VARRAY元素时元素下标为负。

VALUE_ERROR

ORA-06502

PL/SQL中赋值操作时变量长度不足以容纳实际数据。

LOGIN_DENIED

ORA-01017

连接到ORACLE数据库时,用户名/密码不正确。

NOT_LOGGED_ON

ORA-01012

应用程序没有连接到数据库。

PROGRAM_ERROR

ORA-06510

PL/SQL内部问题。

ROWTYPE_MISMATCH

ORA-06504

执行赋值操作时宿主游标变量和PL/SQL游标变量返回类型不兼容。

SELF_IS_NULL

ORA-30625

在NULL实例上调用成员方法。

STORAGE_ERROR

 

PL/SQL块运行时超出了内存空间或者内存被破坏。

SYS_INVALID_ROWID

ORA-01410

将字符串转变为ROWID时没有使用有效的字符串。

TIMEOUT_ON_RESOURCE

ORA-00051

ORACLE在等待资源时超时。

 

18.1.1   PL/SQL 非预定义异常、自定义异常处理、RAISE_APPLICATION_ERROR

目录(?)[+]

抛出异常

Oracle有三种类型的异常错误:

1. 预定义(Predefined)异常

 

ORACLE预定义的异常情况大约有24个。对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发。

 

2. 非预定义(Predefined)异常

 

即其他标准的ORACLE错误。对这种异常情况的处理,需要用户在程序中定义,然后由ORACLE自动将其引发。

 

3. 用户定义(User_define)异常

 

程序执行过程中,出现编程人员认为的非正常情况。对这种异常情况的处理,需要用户在程序中定义,然后显式地在程序中将其引发。

 

在PL/SQL中有三种方式抛出异常

通过PL/SQL运行时引擎——抛出Oracle异常

 

使用RAISE语句——抛出用户定义异常

 

调用RAISE_APPLICATION_ERROR存储过程——抛出用户定义异常

 

 

非预定义异常

因为非预定义异常只有编号,没有名称,所以不能直接处理。

1、在PL/SQL 块的定义部分定义异常情况:

 

 <异常情况>  EXCEPTION;

 

2、将其定义好的异常情况,与标准的ORACLE错误联系起来,使用EXCEPTION_INIT语句:

 

PRAGMA EXCEPTION_INIT(<异常情况>, <错误代码>);

 

3、在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理。

[sql] view plain copy print?

INSERT INTO departments VALUES(50, 'FINANCE', 'CHICAGO'); 

 

DECLARE 

   v_deptno departments.department_id%TYPE := &deptno; 

   deptno_remaining EXCEPTION;                     --1、定义异常 

   PRAGMA EXCEPTION_INIT(deptno_remaining, -2292); --2、关联 

   -- -2292 是违反一致性约束的错误代码  

BEGIN 

   DELETE FROM departments WHERE department_id = v_deptno; 

EXCEPTION 

   WHEN deptno_remaining THEN                      --3、处理 

      DBMS_OUTPUT.PUT_LINE('违反数据完整性约束!'); 

   WHEN OTHERS THEN 

      DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM); 

END; 

 

用户自定义异常处理

用户定义的异常错误是通过显式使用 RAISE 语句来触发。

 

1、在PL/SQL 块的定义部分定义异常情况 ;

 

2、RAISE <异常情况>;

 

3、在PL/SQL 块的异常情况处理部分对异常情况做出相应的处理。

 

[sql] view plain copy print?

DECLARE 

   v_empno employees.employee_id%TYPE :=&empno; 

   no_result  EXCEPTION;              --1、定义 

BEGIN 

   UPDATE employees SET salary = salary+100 WHERE employee_id = v_empno; 

   IF SQL%NOTFOUND THEN 

      RAISE no_result;                --2、抛出 

   END IF; 

EXCEPTION 

   WHEN no_result THEN                --3、处理 

      DBMS_OUTPUT.PUT_LINE('你的数据更新语句失败了!'); 

   WHEN OTHERS THEN 

      DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM); 

END; 

 

 

RAISE_APPLICATION_ERROR

调用DBMS_STANDARD(ORACLE提供的包)包所定义的RAISE_APPLICATION_ERROR过程,可以重新定义异常错误消息,将应用程序专有的错误从服务器端转达到客户端应用程序。它为应用程序提供了一种与ORACLE交互的方法。

 

语法如下:

 

     RAISE_APPLICATION_ERROR(error_number, error_message, [keep_errors] );

 

error_number 是从 –20,000 到 –20,999 之间的参数,这样就不会与 ORACLE 的任何错误代码发生冲突

error_message 是相应的提示信息(< 2048 字节),

keep_errors 为可选,如果keep_errors =TRUE ,则新错误将被添加到已经引发的错误列表中。如果keep_errors=FALSE(缺省),则新错误将替换当前的错误列表。

There are two uses for RAISE_APPLICATION_ERROR.

The first is to replace generic Oracle exception messages with our own, more meaningful messages.

The second is to create exception conditions of our own, when Oracle would not throw them.

[sql] view plain copy print?

create or replace procedure new_emp 

    ( p_name in emp.ename%type 

      , p_sal in emp.sal%type 

      , p_job in emp.job%type 

      , p_dept in emp.deptno%type 

      , p_mgr in emp.mgr%type  

      , p_hired in emp.hiredate%type := sysdate ) 

is 

    invalid_manager exception;                     --1、定义 

    PRAGMA EXCEPTION_INIT(invalid_manager, -2291); --2、关联 

    dummy varchar2(1); 

begin 

    if trunc(p_hired) > trunc(sysdate)  

    then 

        raise_application_error 

           (-20000, 'NEW_EMP::hiredate cannot be in the future'); --3、抛出自定义异常 

    end if; 

 

    insert into emp 

        ( ename 

          , sal 

          , job 

          , deptno 

          , mgr  

          , hiredate ) 

    values       

        ( p_name 

          , p_sal 

          , p_job 

          , p_dept 

          , p_mgr  

          , trunc(p_hired) ); 

exception 

    when dup_val_on_index then 

        raise_application_error 

            (-20001, 'NEW_EMP::employee called '||p_name||' already exists', true); --3、包装Oracle异常 

    when invalid_manager then 

        raise_application_error 

            (-20002, 'NEW_EMP::'||p_mgr ||' is not a valid manager'); --3、包装自定义异常 

 

end; 

 

客户端调用时会提示详细异常信息:

[sql] view plain copy print?

-- 测试RAISE_APPLICATION_ERROR自定义异常 

SQL> exec new_emp ('DUGGAN', 2500, 'SALES', 10, 7782, sysdate+1) 

BEGIN new_emp ('DUGGAN', 2500, 'SALES', 10, 7782, sysdate+1); END; 

 

ERROR at line 1: 

ORA-20000: NEW_EMP::hiredate cannot be in the future --ORA-20000 

ORA-06512: at "APC.NEW_EMP", line 16 

ORA-06512: at line 1 

 

-- 测试RAISE_APPLICATION_ERROR包装自定义异常 

SQL> exec new_emp ('DUGGAN', 2500, 'SALES', 10, 8888, sysdate) 

BEGIN new_emp ('DUGGAN', 2500, 'SALES', 10, 8888, sysdate); END; 

 

ERROR at line 1: 

ORA-20002: NEW_EMP::8888 is not a valid manager 

ORA-06512: at "APC.NEW_EMP", line 42 

ORA-06512: at line 1 

 

 

-- 测试RAISE_APPLICATION_ERROR包装Oracle异常 

SQL> exec new_emp ('DUGGAN', 2500, 'SALES', 10, 7782, sysdate) 

 

PL/SQL procedure successfully completed. 

 

SQL> 

SQL> exec new_emp ('DUGGAN', 2500, 'SALES', 10, 7782, sysdate) 

BEGIN new_emp ('DUGGAN', 2500, 'SALES', 10, 7782, sysdate); END; 

 

ERROR at line 1: 

ORA-20001: NEW_EMP::employee called DUGGAN already exists 

ORA-06512: at "APC.NEW_EMP", line 37 

ORA-00001: unique constraint (APC.EMP_UK) violated --同时打印原始堆栈 

ORA-06512: at line 1 

 

18.2  PLSQL中怎样获取未知结构的动态游标的字段名

对于使用过 ORACLE PLSQL 中的动态游标的人来说,我相信有不少人都会有这样的想法:如果对于任意一个给定的未知结构的游标(REF CURSOR),我们都能够在PLSQL中获取它的所有字段的名称,那该多好啊!不知道你是否有这样的想法,反正我早就有这样的想法了,也百度了多次,但结果不尽人意。曾经一度以为,这是不可能的。但是PLSQL Developer中的test 窗口中,可以打开任意游标并得到字段名及值。很显然,还是有办法得到未知结构的动态游标的字段名的,只是我不知道方法而已。

今天早上心血来潮,又想到这个事情,于是google了一下(用英文查询:how to get column names from oracle cursor),发现还真有办法获取未知结构的动态游标!看来在这方面百度还是太弱啊!技术问题还是得问google。

 

整理之后,结论如下:

1、如果给的是一个查询SQL文本,那么事情很容易(对于9i及以上版本),只要使用dbms_sql.open_cursor打开游标,再使用dbms_sql.describe_columns即可得到游标的所有字段名称及类型等数据,存储在一个集合类型变量中(具体请看dbms_sql.desc_tab)。请参考如下PLSQL代码:

DECLARE

  l_curid INTEGER;

  l_cnt NUMBER;

  l_desctab dbms_sql.desc_tab;

  l_sqltext VARCHAR2(2000);

BEGIN

  l_sqltext := 'select owner,object_type,object_name from dba_objects where rownum<= 10';--可以是任意有效的查询sql文本

  l_curid := dbms_sql.open_cursor();

  dbms_sql.parse(l_curid, l_sqltext, dbms_sql.native);

  dbms_sql.describe_columns(l_curid, l_cnt, l_descTab);

  FOR i IN 1 .. l_desctab.count

  LOOP

    dbms_output.put(lpad(l_desctab(i).col_name, 20));

  END LOOP;

  dbms_output.new_line;

  dbms_sql.close_cursor(l_curId);

END;

运行结果如下

OWNER               OBJECT_TYPE         OBJECT_NAME

 

 

注意,必须使用 DBMS_SQL.OPEN_CURSOR 打开游标,否则,就不是这种处理方法了。 

2、如果给的是一个REF CURSOR类型变量,而不知道SQL文本,该怎么办呢?这里分两种情况:

1) 如果数据库版本是11g及以上,同样很容易:使用dbms_sql.to_cursor_number(cursor)

得到游标的ID,再使用dbms_sql.describe_columns即可得到游标字段名称。参考如下代码:

DECLARE

TYPEref_cursorISREFCURSOR; l_cursorref_cursor; l_curidNUMBER; l_col_cntNUMBER;

l_desc_tab DBMS_SQL.DESC_TAB; BEGIN

OPENl_cursorFOR'select owner,object_type,object_name from dba_objects where rownum<= 10';

l_curid := DBMS_SQL.to_cursor_number(l_cursor); 

  DBMS_SQL.DESCRIBE_COLUMNS(l_curid, l_col_cnt, l_desc_tab); 

FOR i_ IN1 ..l_col_cnt LOOP

    DBMS_OUTPUT.PUT_LINE(l_desc_tab(i).col_name); ENDLOOP; 

  DBMS_SQL.CLOSE_CURSOR(l_cursor); END; 

2) 如果数据库版本低于11g,则PLSQL中仅有如下方法可以获取字段名称及字段值:

DECLARE

l_cursorSYS_REFCURSOR; iNUMBER := 0;

CURSORget_columnsIS

SELECT t2.column_value.getrootelement() NAME, EXTRACTVALUE(t2.column_value, 'node()') VALUE

FROM   (SELECT * FROMTABLE(XMLSEQUENCE(l_cursor))) t1,

TABLE(XMLSEQUENCE(EXTRACT(t1.column_value, '/ROW/node()'))) t2; BEGIN

OPENl_cursorFOR'select owner,object_type,object_name from dba_objects where rownum<= 10'; 

FOR rec_ INget_columns

LOOP

i := i + 1;

DBMS_OUTPUT.put_line(i || ':' || rec_.name || ': ' || rec_.VALUE); ENDLOOP; 

CLOSEl_cursor; END;

用这种方法,可以得到动态游标的所有数据,包括字段名称和字段值。但这种方法会遍历游标,即游标已经走到底了,不能再次使用了。而使用dbms_sql.describe_columns不会对游标的光标位置产生任何影响。两者优劣一目了然。

 

对于JAVA、C等外部编程语言而言,要从游标中获取字段名称是比较容易的。可以用JAVA语言写一个获取游标字段名称的存储过程,并编译至数据库中,且做成PLSQL接口,这样就可以在PLSQL中调用了。有意者可以自己去研究下,或者向精通JAVA者请教。

19 Function 函数

创建或替换函数

CREATE  [OR  REPLACE]  FUNCTION  函数名  [(参数名1  {in|out|in out}  数据类型,  参数名2  {in|out|in out}  数据类型, ……)]  RETURN  返回值数据类型  {IS|AS}

填写PL/SQL代码块

/

 

删除函数

DROP  FUNCTION  函数名;

 

赋予函数中执行CREATE  TABLE语句的权限(否则会报ORA-01031:权限不足)

GRANT  CREATE  ANY  TABLE  TO  数据库用户名;

 

 

20 Procedure 存储过程

创建或替换存储过程

CREATE  [OR  REPLACE]  PROCEDURE  存储过程名  [(参数名1  {in|out|in out}  数据类型  [:=  参数默认值],  参数名2  {in|out|in out}  数据类型  [:=  参数默认值], ……)]  {IS|AS}

填写PL/SQL代码块

/

 

删除存储过程

DROP  PROCEDURE  存储过程名;

 

赋予存储过程中执行CREATE  TABLE语句的权限(否则会报ORA-01031:权限不足)

GRANT  CREATE  ANY  TABLE  TO  数据库用户名;

 

21 导入/导出数据

21.1  SQL*Plus

数据泵expdp导出工具与传统的exp导出工具的区别

1) exp是客户端程序,既可以在客户端使用,也可以在服务器端使用;

2) expdp是服务器端工具,只能在ORACLE服务器端使用,不能在客户端使用;

3) 这两个工具生成的备份文件不能被对方与之对应的导入工具使用;

4) exp不能导出没有分配segment的空表,expdp没有这个问题

5) expdp在灵活性和功能性上与exp相比,有质上的飞跃。

 

EXP/IMP 命令参数

1、EXP:

 

1、完全导出:

EXP  SYSTEM/MANAGER  BUFFER=64000  FILE=C:\FULL.DMP  FULL=Y

如果要执行完全导出,必须具有特殊的权限

 

2、只导出用户的全部对象:

EXP  SONIC/SONIC  BUFFER=64000  FILE=C:\SONIC.DMP  OWNER=SONIC

这样用户SONIC的所有对象被输出到文件中。

 

3、只导出指定的表对象:

EXP  SONIC/SONIC  BUFFER=64000  FILE=C:\SONIC.DMP  TABLES=(table1,table2,……)

这样用户SONIC的表SONIC就被导出

 

EXP参数:

关键字   说明(默认)  

----------------------------------------------

USERID   用户名/口令

FULL   导出整个文件 (N)

BUFFER   数据缓冲区的大小

OWNER   所有者用户名列表

FILE   输出文件 (EXPDAT.DMP)

TABLES   表名列表

COMPRESS  导入一个范围 (Y)

RECORDLENGTH  IO 记录的长度

GRANTS   导出权限 (Y)

INCTYPE   增量导出类型

INDEXES   导出索引 (Y)

RECORD   跟踪增量导出 (Y)

ROWS   导出数据行 (Y)

PARFILE   参数文件名

CONSTRAINTS  导出限制 (Y)

CONSISTENT  交叉表一致性

LOG   屏幕输出的日志文件

STATISTICS  分析对象 (ESTIMATE)

DIRECT   直接路径 (N)

TRIGGERS  导出触发器 (Y)

FEEDBACK  显示每 x 行 (0) 的进度

FILESIZE  各转储文件的最大尺寸

QUERY   选定导出表子集的子句,windows下例如:QUERY=\"where COL in ('123','456')\"

 

2、IMP:

 

具有三种模式(完全、用户、表)

 

1、完全:

IMP  SYSTEM/MANAGER  BUFFER=64000  FILE=C:/FULL.DMP  FULL=Y

 

2、用户模式:

IMP  SONIC/SONIC  BUFFER=64000  FILE=C:/SONIC.DMP  FROMUSER=SONIC  TOUSER=SONIC

这样用户SONIC的所有对象被导入到文件中。必须指定FROMUSER、TOUSER参数,这样才能导入数据。

 

3、表模式:

IMP  SONIC/SONIC  BUFFER=64000  FILE=C:/SONIC.DMP  OWNER=SONIC TABLES=(SONIC)

这样用户SONIC的表SONIC就被导入。

 

imp参数:

关键字   说明(默认)

----------------------------------------------

USERID   用户名/口令

FULL   导入整个文件 (N)

BUFFER   数据缓冲区大小

FROMUSER  所有人用户名列表

FILE   输入文件 (EXPDAT.DMP)

TOUSER   用户名列表

SHOW   只列出文件内容 (N)

TABLES   表名列表

IGNORE   忽略创建错误 (N)

RECORDLENGTH  IO 记录的长度

GRANTS   导入权限 (Y)

INCTYPE   增量导入类型

INDEXES   导入索引 (Y)

COMMIT   提交数组插入 (N)

ROWS   导入数据行 (Y)

PARFILE   参数文件名

LOG   屏幕输出的日志文件

CONSTRAINTS  导入限制 (Y)

DESTROY   覆盖表空间数据文件 (N)

INDEXFILE  将表/索引信息写入指定的文件

SKIP_UNUSABLE_INDEXES 跳过不可用索引的维护 (N)

ANALYZE   执行转储文件中的 ANALYZE 语句 (Y)

FEEDBACK  显示每 x 行 (0) 的进度

TOID_NOVALIDATE  跳过指定类型 id 的校验

FILESIZE  各转储文件的最大尺寸

RECALCULATE_STATISTICS 重新计算统计值 (N)

 

1. 获取帮助

imp help=y

2. 导入一个完整数据库

imp system/manager file=bible_db log=dible_db full=y ignore=y

3. 导入一个或一组指定用户所属的全部表、索引和其他对象

imp system/manager file=seapark log=seapark fromuser=seapark imp

system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

4. 将一个用户所属的数据导入另一个用户

imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy

imp system/manager file=tank log=tank fromuser=(seapark,amy)

touser=(seapark1, amy1)

5. 导入一个表

imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

6. 从多个文件导入

imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)

log=paycheck, filesize=1G full=y

7. 使用参数文件

imp system/manager parfile=bible_tables.par

bible_tables.par参数文件:

#Import the sample tables used for the Oracle8i Database Administrator's

Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import

8. 增量导入

imp system./manager inctype= RECTORE FULL=Y FILE=A

22 SQL语句执行计划

SQL> explain plan for select * from dual;

Explained.

SQL> select * from table(DBMS_XPLAN.display);

Execution Plan

----------------------------------------------------------

Plan hash value: 2137789089

---------------------------------------------------------------------------------------------

| Id  | Operation                         | Name    | Rows  | Bytes | Cost (%CPU)| Time     |

---------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT                  |         |  8168 | 16336 |    21   (0)| 00:00:01 |

|   1 |  COLLECTION ITERATOR PICKLER FETCH| DISPLAY |       |       |            |          |

---------------------------------------------------------------------------------------------

23 系统对象

23.1  系统表对象

23.1.1   表对象模板(未完成)

 

表名称

 

表作用

 

字段

数据类型

可否为空

描述

 

 

可以/不可以

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

23.1.2   DBA_TABLESPACES  表空间

 

表名称

DBA_TABLESPACES

表作用

描述数据库中所有的表空间。

字段

数据类型

可否为空

描述

TABLESPACE_NAME

VARCHAR2(30)

不可以

Name of the tablespace

表空间名称。

BLOCK_SIZE

NUMBER

不可以

Tablespace block size (in bytes)

表空间的块大小,单位字节。

INITIAL_EXTENT

NUMBER

可以

Default initial extent size (in bytes)

默认初始的区大小,单位字节。

NEXT_EXTENT

NUMBER

可以

Default incremental extent size (in bytes)

默认增长的区大小,单位字节。

MIN_EXTENTS

NUMBER

不可以

Default minimum number of extents

默认最小的区大小,单位字节。

MAX_EXTENTS

NUMBER

可以

Default maximum number of extents

默认最大的区大小,单位字节。

MAX_SIZE

NUMBER

可以

Default maximum size of segments (in Oracle blocks)

默认最大的段大小,单位块。

PCT_INCREASE

NUMBER

可以

Default percent increase for extent size

默认区增长的百分比

MIN_EXTLEN

NUMBER

可以

Minimum extent size for this tablespace (in bytes)

此表空间的最小的区大小,单位字节。

STATUS

VARCHAR2(9)

可以

Tablespace status: ONLINE, OFFLINE, READ ONLY.

表空间状态:ONLINE,OFFLINE,READ ONLY。

ONLINE:已联机。

OFFLINE:已脱机。

READ ONLY:只读。

CONTENTS

VARCHAR2(9)

 

Tablespace contents: UNDO, PERMANENT, TEMPORARY.

表空间内容:UNDO,PERMANENT,TEMPORARY。

UNDO:重做。

PERMANENT:永久。

TEMPORARY:临时。

LOGGING

VARCHAR2(9)

 

Default logging attribute: LOGGING, NOLOGGING.

默认的日志属性:LOGGING,NOLOGGING。

LOGGING:开启日志。

NOLOGGING:关闭日志。

FORCE_LOGGING

VARCHAR2(3)

 

Indicates whether the tablespace is under force logging mode (YES) or not (NO)

 

EXTENT_MANAGEMENT

VARCHAR2(10)

 

Indicates whether the extents in the tablespace are dictionary managed (DICTIONARY) or locally managed (LOCAL)

ALLOCATION_TYPE

VARCHAR2(9)

 

Type of extent allocation in effect for the tablespace:

  • SYSTEM
  • UNIFORM
  • USER

PLUGGED_IN

VARCHAR2(3)

 

Indicates whether the tablespace is plugged in (YES) or not (NO)

SEGMENT_SPACE_MANAGEMENT

VARCHAR2(6)

 

Indicates whether the free and used segment space in the tablespace is managed using free lists (MANUAL) or bitmaps (AUTO)

DEF_TAB_COMPRESSION

VARCHAR2(8)

 

Indicates whether default table compression is enabled (ENABLED) or not (DISABLED)

Note: Enabling default table compression indicates that all tables in the tablespace will be created with table compression enabled unless otherwise specified.

RETENTION

VARCHAR2(11)

 

Undo tablespace retention:

  • GUARANTEE - Tablespace is an undo tablespace withRETENTION specified asGUARANTEE

RETENTION value ofGUARANTEE indicates that unexpired undo in all undo segments in the undo tablespace should be retained even if it means that forward going operations that need to generate undo in those segments fail.

  • NOGUARANTEE - Tablespace is an undo tablespace withRETENTION specified asNOGUARANTEE
  • NOT APPLY - Tablespace is not an undo tablespace

BIGFILE

VARCHAR2(3)

 

Indicates whether the tablespace is a bigfile tablespace (YES) or a smallfile tablespace (NO)

PREDICATE_EVALUATION

VARCHAR2(7)

 

Indicates whether predicates are evaluated by host (HOST) or by storage (STORAGE)

ENCRYPTED

VARCHAR2(3)

 

Indicates whether the tablespace is encrypted (YES) or not (NO)

COMPRESS_FOR

VARCHAR2(12)

 

Default compression for what kind of operations:

 


23.1.3   DBA_SYNONYMS  同义词

 

表名称

DBA_SYNONYMS

表作用

描述数据库中所有的同义词。

字段

数据类型

可否为空

描述

OWNER

VARCHAR2(30)

不可以

Owner of the synonym

同义词的所有用户。

SYNONYM_NAME

VARCHAR2(30)

不可以

Name of the synonym

同义词的名称。

TABLE_OWNER

VARCHAR2(30)

可以

Owner of the object referenced by the synonym. Although the column is called TABLE_OWNER, the object owned is not necessarily a table. It can be any general object such as a view, sequence, stored procedure, synonym, and so on

同义词对应的对象的所有用户。虽然本字段叫TABLE_OWNER,但对象不一定就是表对象。它可以是任何一般的对象,如视图、序列、存储过程、同义词等等。

TABLE_NAME

VARCHAR2(30)

不可以

Name of the object referenced by the synonym. Although the column is called TABLE_NAME, the object does not necessarily have to be a table. It can be any general object such as a view, sequence, stored procedure, synonym, and so on

同义词对应的对象名称。虽然本字段叫TABLE_ONAME,但对象不一定就是表对象。它可以是任何一般的对象,如视图、序列、存储过程、同义词等等。

DB_LINK

VARCHAR2(128)

可以

Name of the database link referenced, if any

如果同义词引用了数据库链接,本字段就是数据库链接的名称,否则为NULL。

 

 

 

23.1.4   DBA_DATA_FILES  永久数据文件

 

表名称

DBA_DATA_FILES

表作用

描述数据库中所有的永久数据文件。

字段

数据类型

可否为空

描述

FILE_NAME

VARCHAR2(513)

可以

Name of the database file

永久数据文件的完整绝对路径。

FILE_ID

NUMBER

不可以

File identifier number of the database file

永久数据文件的文件标识编号。

每个永久数据文件都有唯一的文件标识编号,但与临时数据文件的文件标识编号可以相同。

TABLESPACE_NAME

VARCHAR2(30)

不可以

Name of the tablespace to which the file belongs

该数据文件属于哪个名称的表空间。

BYTES

NUMBER

可以

Size of the file in bytes

数据文件的当前大小,单位字节。

BLOCKS

NUMBER

不可以

Size of the file in Oracle blocks

数据文件的当前块数,单位个。

STATUS

VARCHAR2(9)

可以

File status: AVAILABLE or INVALID (INVALID means that the file number is not in use, for example, a file in a tablespace that was dropped)

数据文件状态:AVAILABLE或INVALID (INVALID 表示数据文件已经没有使用了,比如该数据文件已经从表空间里删除了)。

RELATIVE_FNO

NUMBER

可以

Relative file number

相对文件编号。表示该数据文件相对于同一表空间内的其他数据文件的唯一编号。

AUTOEXTENSIBLE

VARCHAR2(3)

可以

Autoextensible indicator

自动增长标记,YES表示自动增长,NO表示不自动增长。

MAXBYTES

NUMBER

可以

Maximum file size in bytes

数据文件的最大大小,单位字节。

如果该永久数据文件为不自动增长,则本字段为0。

MAXBLOCKS

NUMBER

可以

Maximum file size in blocks

数据文件的最大块数,单位个。

如果该永久数据文件为不自动增长,则本字段为0。

INCREMENT_BY

NUMBER

可以

Number of Oracle blocks used as autoextension increment

每次自动增长的块数,单位个。

如果该永久数据文件为不自动增长,则本字段为0。

USER_BYTES

NUMBER

可以

The size of the file available for user data. The actual size of the file minus the USER_BYTES value is used to store file related metadata.

数据文件的可用大小,单位字节。

数据文件的当前大小(BYTES字段)减去数据文件的可用大小(USER_BYTES字段)等于数据文件的元数据大小。

USER_BLOCKS

NUMBER

可以

Number of blocks which can be used by the data

数据文件的可用块数,单位个。

数据文件的当前块数(BYTES字段)减去数据文件的可用块数(USER_BLOCKS字段)等于数据文件的元数据块数。

ONLINE_STATUS

VARCHAR2(7)

可以

Online status of the file: SYSOFF, SYSTEM, OFFLINE, ONLINE, RECOVER.

数据文件的联机状态:SYSOFF,SYSTEM,OFFLINE,ONLINE,RECOVER。

SYSOFF:

SYSTEM:

OFFLINE:已脱机。

ONLINE:已联机。

RECOVER:需要恢复。

 

 

 

23.1.5   DBA_FREE_SPACE  永久数据文件的剩余空间段

 

表名称

DBA_FREE_SPACE

表作用

描述数据库中所有的永久表空间下的各个永久数据文件的剩余空间段。

一个永久数据文件可能包含零至多个剩余空间段。

本表有时候会出现FILE_ID字段内容与实际数据文件不符的情况(TABLESPACE_NAME和RELATIVE_FNO字段都是对的),需要用DBA权限执行purge dba_recyclebin;语句清空回收站来解决。

字段

数据类型

可否为空

描述

TABLESPACE_NAME

VARCHAR2(30)

可以

Name of the tablespace containing the extent

本段剩余空间所属的永久表空间的名称。

FILE_ID

NUMBER

可以

File identifier number of the file containing the extent

本段剩余空间所属的数据文件的文件标识编号。

BLOCK_ID

NUMBER

可以

Starting block number of the extent

本段剩余空间的起始块数。

BYTES

NUMBER

可以

Size of the extent (in bytes)

本段剩余空间的大小,单位字节。

BLOCKS

NUMBER

可以

Size of the extent (in Oracle blocks)

本段剩余空间的块数。

RELATIVE_FNO

NUMBER

可以

Relative file number of the file containing the extent

本段剩余空间所属的数据文件的相对文件编号。表示该数据文件相对于同一表空间内的其他数据文件的唯一编号。

 

 

 

23.1.6   DBA_TEMP_FILES  临时数据文件

 

表名称

DBA_TEMP_FILES

表作用

描述数据库中所有的临时数据文件。

字段

数据类型

可否为空

描述

FILE_NAME

VARCHAR2(513)

可以

Name of the database temp file

临时数据文件的完整绝对路径。

FILE_ID

NUMBER

可以

File identifier number of the database temp file

临时数据文件的文件标识编号。

每个临时数据文件都有唯一的文件标识编号,但与永久数据文件的文件标识编号可以相同。

TABLESPACE_NAME

VARCHAR2(30)

不可以

Name of the tablespace to which the file belongs

该数据文件属于哪个名称的表空间。

BYTES

NUMBER

可以

Size of the file (in bytes)

数据文件的当前大小,单位字节。

BLOCKS

NUMBER

可以

Size of the file (in Oracle blocks)

数据文件的当前块数,单位个。

STATUS

CHAR(9)

可以

File status: OFFLINE, ONLINE, UNKNOWN

数据文件的联机状态:OFFLINE,ONLINE,UNKNOWN。

OFFLINE:已脱机。

ONLINE:已联机。

UNKNOWN:未知。

RELATIVE_FNO

NUMBER

可以

Tablespace-relative file number

相对文件编号。表示该数据文件相对于同一表空间内的其他数据文件的唯一编号。

AUTOEXTENSIBLE

VARCHAR2(3)

可以

Indicates whether the file is autoextensible (YES) or not (NO)

自动增长标记,YES表示自动增长,NO表示不自动增长。

MAXBYTES

NUMBER

可以

maximum size of the file (in bytes)

数据文件的最大大小,单位字节。

如果该临时数据文件为不自动增长,则本字段为0。

MAXBLOCKS

NUMBER

可以

Maximum size of the file (in Oracle blocks)

数据文件的最大块数,单位个。

如果该临时数据文件为不自动增长,则本字段为0。

INCREMENT_BY

NUMBER

可以

Default increment for autoextension (in Oracle blocks)

每次自动增长的块数,单位个。

如果该临时数据文件为不自动增长,则本字段为0。

USER_BYTES

NUMBER

可以

Size of the useful portion of the file (in bytes)

数据文件的可用大小,单位字节。

数据文件的当前大小(BYTES字段)减去数据文件的可用大小(USER_BYTES字段)等于数据文件的元数据大小。

USER_BLOCKS

NUMBER

可以

Size of the useful portion of the file (in Oracle blocks)

数据文件的可用块数,单位个。

数据文件的当前块数(BYTES字段)减去数据文件的可用块数(USER_BLOCKS字段)等于数据文件的元数据块数。

 

 

 

23.1.7   DBA_TEMP_FREE_SPACE  临时表空间的剩余空间

 

表名称

DBA_TEMP_FREE_SPACE

表作用

描述临时表空间的剩余空间,不是临时数据文件的。

字段

数据类型

可否为空

描述

TABLESPACE_NAME

VARCHAR2(30)

不可以

Name of the tablespace

临时表空间的名称。

TABLESPACE_SIZE

NUMBER

可以

Total size of the tablespace, in bytes

临时表空间的总大小,单位字节。

ALLOCATED_SPACE

NUMBER

可以

Total allocated space, in bytes, including space that is currently allocated and used and space that is currently allocated and available for reuse

临时表空间的总分配大小,单位字节。包括当前已分配并已使用的空间,和当前已分配并可重用的空间。

FREE_SPACE

NUMBER

可以

Total free space available, in bytes, including space that is currently allocated and available for reuse and space that is currently unallocated

临时表空间的总可用大小,单位字节。包括当前已分配并可重用的空间,和当前未分配的空间。

 

 

 

23.1.8   SYSTEM_PRIVILEGE_MAP  系统权限

 

表名称

SYSTEM_PRIVILEGE_MAP

表作用

描述系统权限的类型代码和名称。

字段

数据类型

可否为空

描述

PRIVILEGE

NUMBER

不可以

系统权限的类型代码。

NAME

VARCHAR2(40)

不可以

系统权限的名称。

PROPERTY

NUMBER

不可以

系统权限的属性标记:

0 - Indicates a privilege that can be granted with a SQL GRANT statement

1 - Indicates a privilege that can only be granted using a PL/SQL package

 

 

 

23.2  系统包对象

23.2.1   DBMS_SQL的使用

 DBMS_SQL包提供一个接口,用于执行动态SQL(包括DDL 和DML)。

 DBMS_SQL定义了一个实体叫游标ID,游标ID 是一个PL/SQL整型数,通过游标ID,可以对游标进行操作。

DBMS_SQL包和本地动态SQL在功能上有许多重叠的地方,但是有的功能只能通过本地动态SQL实现,而有些功能只能通过DBMS_SQL实现。

 

对于一般的select操作,如果使用动态的sql语句则需要进行以下几个步骤:

open   cursor---> parse---> define   column---> excute---> fetch   rows---> close   cursor;

而对于dml操作(insert,update)则需要进行以下几个步骤:

open   cursor---> parse---> bind   variable---> execute---> close   cursor;

对于delete操作只需要进行以下几个步骤:

open   cursor---> parse---> execute---> close   cursor;

利用DBMS_SQL执行DDL语句:

  CREATE OR REPLACE PROCEDURE CreateTable2 (tablename VARCHAR2)

IS

SQL_string VARCHAR2(1000);--存放SQL语句

V_cur integer;--定义整形变量,用于存放游标

BEGIN

SQL_string := 'CREATE TABLE ' || tablename || '(name VARCHAR(20))';

V_cur := dbms_sql.open_cursor;--打开游标

dbms_sql.parse(V_cur,SQL_string,DBMS_SQL.NATIVE);--解析并执行SQL语句

dbms_sql.close_cursor(V_cur);--关闭游标

END;

利用DBMS_SQL执行SELECT语句:

open   cursor---> parse---> define   column---> excute---> fetch   rows---> close   cursor;

   DECLARE

 v_cursor NUMBER;--游标ID

 sqlstring VARCHAR2(200);--用于存放SQL语句

 v_phone_name  VARCHAR2(20);--手机名字

 v_producer  VARCHAR2(20);--手机生产商

 v_price  NUMBER := 500;--手机价钱

 v_count  INT;--在这里无意义,只是存放函数返回值

BEGIN

 --:p是占位符

 --SELECT 语句中的第1列是phone_name,第2列是producer ,第3列是price

 sqlstring :='SELECT phone_name,producer,price FROM phone_infor WHERE price > :p';

 v_cursor := dbms_sql.open_cursor;--打开游标;

 dbms_sql.parse(v_cursor ,sqlstring ,dbms_sql.native);--解析动态SQL语句;

 

 --绑定输入参数,v_price的值传给 :p

 dbms_sql.bind_variable(v_cursor ,':p',v_price);

 

       --定义列,v_phone_name对应SELECT 语句中的第1列

 dbms_sql.define_column(v_cursor,1,v_phone_name,20);

 --定义列,v_producer对应SELECT语句中的第2列

 dbms_sql.define_column(v_cursor,2,v_producer,20);

  --定义列,v_price对应SELECT语句中的第3列

  dbms_sql.define_column(v_cursor,3,v_price);

  

  v_count := dbms_sql.EXECUTE(v_cursor); --执行动态SQL语句。

  

  LOOP

  --从游标中把数据检索到缓存区(BUFFER)中,缓冲区 的值只能被函数COULUMN_VALUE()所读取

  EXIT WHEN dbms_sql.fetch_rows(v_cursor)<=0;

  --函数column_value()把缓冲区的列的值读入相应变量中。

  --第1列的值被读入v_phone_name中

  dbms_sql.column_value(v_cursor,1,v_phone_name);

  --第2列的值被读入v_producer中

 dbms_sql.column_value(v_cursor,2,v_producer);

 --第2列的值被读入v_price中

 dbms_sql.column_value(v_cursor,3,v_price);

 --打印变量的值

 dbms_output.put_line(v_phone_name || ' '|| v_producer|| ' '||v_price);

 

 END LOOP;

 dbms_sql.close_cursor(v_cursor);--关闭游标

 END;

利用DBMS_SQL执行DML语句:

open   cursor---> parse---> bind   variable---> execute---> close   cursor;

  DECLARE

 v_cursor NUMBER;--游标ID

 sqlstring VARCHAR2(200);--用于存放SQL语句

 v_phone_name  VARCHAR2(20);--手机名字

 v_producer  VARCHAR2(20);--手机生产商

 v_price  NUMBER := 500;--手机价钱

 v_count  INT;--被DML语句影响的行数

BEGIN

 

 sqlstring :='INSERT INTO phone_infor values (:a,:b,:c)';-- :a,:b,:c 是占位符

 

 v_phone_name  := 'S123';

 v_producer  := '索尼AA';

 v_price   := 999;

 

 v_cursor := dbms_sql.open_cursor;--打开游标;

 dbms_sql.parse(v_cursor ,sqlstring ,dbms_sql.native);--解析动态SQL语句;

 

 --绑定输入参数,v_price的值传给 :p

 dbms_sql.bind_variable(v_cursor ,':a',v_phone_name);

 dbms_sql.bind_variable(v_cursor ,':b',v_producer);

 dbms_sql.bind_variable(v_cursor ,':c',v_price);

 

  v_count := dbms_sql.EXECUTE(v_cursor); --执行动态SQL语句。

  

 dbms_sql.close_cursor(v_cursor);--关闭游标

  dbms_output.put_line(' INSERT ' || to_char( v_count) ||' row ');--打印有多少行被插入

  COMMIT;

 END;

 

24 错误码

24.1  ORA错误码

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:使用OracleSQL特性不在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调用不被支持,请使用ALTERDATABASERECOVER

ORA-00283:恢复会话因错误而取消

ORA-00284:恢复会话仍在进行

ORA-00285:TIME未作为字符串常数给出

ORA-00286:无可用成员,或成员无有效数据

ORA-00287:未找到指定的更改编号(在线程中)

ORA-00288:要继续恢复,请键入ALTERDATABASERECOVERCONTINUE

ORA-00289:建议:

ORA-00290:操作系统出现存档错误。请参阅下面的错误

ORA-00291:PARALLEL选项要求数字值

ORA-00292:未安装并行恢复功能

ORA-00293:控制文件与重做日志不同步

ORA-00294:无效的存档日志格式标识''

ORA-00295:数据文件号无效,必须介于1与之间

ORA-00296:已超出RECOVERDATAFILELIST的最大文件数()

ORA-00297:必须在RECOVERDATAFILESTART之前指定RECOVERDATAFILELIST

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:cannotenableVeryLargeMemorywithnewbuffercacheparameters

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必须是或更高值才能使用AUTOSEGMENTSPACEMANAGEMENT

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:$TRNLOG失败

ORA-00584:无法关闭连接

ORA-00585:主机名称格式错误

ORA-00586:osndnt:LIB$ASN_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:$QIOIO失败(邮箱读取)

ORA-00600:内部错误代码,参数:[],[],[],[],[],[],[],[]

ORA-00601:清除锁定冲突

ORA-00602:内部编程异常错误

ORA-00603:ORACLE服务器会话因致命错误而终止

ORA-00604:递归SQL层出现错误

ORA-00606:内部错误代码

ORA-00607:当更改数据块时出现内部错误

ORA-00701:无法改变热启动数据库所需的对象

ORA-00702:引导程序版本''与版本''不一致

ORA-00703:超出行高速缓存例程锁的最大数

ORA-00704:引导程序进程失败

ORA-00705:启动过程中的状态不一致;请在关闭例程后重新启动

ORA-00706:更改文件''的格式时出错

ORA-00816:错误信息无法转换

ORA-00900:无效SQL语句

ORA-00901:无效CREATE命令

ORA-00902:无效数据类型

ORA-00903:表名无效

ORA-00904::无效的标识符

ORA-00905:缺少关键字

ORA-00906:缺少左括号

ORA-00907:缺少右括号

ORA-00908:缺少NULL关键字

ORA-00909:参数个数无效

ORA-00910:指定的长度对于数据类型而言过长

ORA-00911:无效字符

ORA-00913:值过多

ORA-00914:缺少ADD关键字

ORA-00915:当前不允许网络访问字典表

ORA-00917:缺少逗号

ORA-00918:未明确定义列

ORA-00919:无效函数

ORA-00920:无效的关系运算符

ORA-00921:未预期的SQL命令结尾

ORA-00922:缺少或无效选项

ORA-00923:未找到预期FROM关键字

ORA-00924:缺少BY关键字

ORA-00925:缺失INTO关键字

ORA-00926:缺少VALUES关键字

ORA-00927:缺少等号

ORA-00928:缺少SELECT关键字

ORA-00929:缺少句号

ORA-00930:缺少星号

ORA-00931:缺少标识

ORA-00932:不一致的数据类型:要求得到的却是

ORA-00933:SQL命令未正确结束

ORA-00934:此处不允许使用分组函数

ORA-00935:分组函数的嵌套太深

ORA-00936:缺少表达式

ORA-00937:非单组分组函数

ORA-00938:函数没有足够的参数

ORA-00939:函数的参数过多

ORA-00940:无效的ALTER命令

ORA-00941:群集名缺少

ORA-00942:表或视图不存在

ORA-00943:群集不存在

ORA-00944:没有足够的聚簇列数

ORA-00945:指定的聚簇列不存在

ORA-00946:缺少TO关键字

ORA-00947:没有足够的值

ORA-00948:不再支持ALTERCLUSTER语句

ORA-00949:非法引用远程数据库

ORA-00950:无效DROP选项

ORA-00951:群集非空

ORA-00952:缺少GROUP关键字

ORA-00953:缺少或无效索引名

ORA-00954:缺少IDENTIFIED关键字

ORA-00955:名称已由现有对象使用

ORA-00956:缺少或无效审计选项

ORA-00957:列名重复

ORA-00958:缺少CHECK关键字

ORA-00959:表空间''不存在

ORA-00960:选择列表中的命名含糊

ORA-00961:错误的日期/间隔值

ORA-00962:group-by/order-by表达式过多

ORA-00963:不支持的间隔类型

ORA-00964:表名不在FROM列表中

ORA-00965:列别名中不允许'*'

ORA-00966:缺少TABLE关键字

ORA-00967:缺少WHERE关键字

ORA-00968:缺少INDEX关键字

ORA-00969:缺少ON关键字

ORA-00970:缺少WITH关键字

ORA-00971:缺少SET关键字

ORA-00972:标识过长

ORA-00973:无效的行数估计

ORA-00974:无效PCTFREE值(百分比)

ORA-00975:不允许日期+日期

ORA-00976:此处不允许为LEVEL,PRIOR或ROWNUM

ORA-00977:重复的审计选项

ORA-00978:嵌套分组函数没有GROUTBY

ORA-00979:不是GROUPBY表达式

ORA-00980:同义词转换不再有效

ORA-00981:不能将表和系统审计选项混在一起

ORA-00982:缺少加号

ORA-00984:列在此处不允许

ORA-00985:无效的程序名

ORA-00986:缺少或无效组名

ORA-00987:缺少或无效用户名

ORA-00988:缺少或无效口令

ORA-00989:给出的用户名口令过多

ORA-00990:缺少或无效权限

ORA-00991:过程仅有MAC权限

ORA-00992:REVOKE命令格式无效

ORA-00993:缺少GRANT关键字

ORA-00994:缺少OPTION关键字

ORA-00995:缺少或无效同义词标识

ORA-00996:连接运算符是||而不是|

ORA-00997:非法使用LONG数据类型

ORA-00998:必须使用列别名命名此表达式

ORA-00999:无效的视图名

ORA-01000:超出打开游标的最大数

ORA-01001:无效的游标

ORA-01002:读取违反顺序

ORA-01003:语句未进行语法分析

ORA-01004:不支持默认用户名特性;登录被拒绝

ORA-01005:未给出口令;登录被拒绝

ORA-01006:赋值变量不存在

ORA-01007:选择列表中没有变量

ORA-01008:并非所有变量都已关联

ORA-01009:缺少法定参数

ORA-01010:无效的OCI操作

ORA-01011:在与第6版服务器会话时不能使用第7版兼容模式

ORA-01012:没有登录

ORA-01013:用户请求取消当前的操作

ORA-01014:ORACLE正在关闭过程中

ORA-01015:循环登录请求

ORA-01016:此函数仅可以在读取后调用

ORA-01017:无效的用户名/口令;拒绝登录

ORA-01018:列不具有LONG数据类型

ORA-01019:无法在用户方分配内存

ORA-01020:未知的上下文状态

ORA-01021:指定的上下文大小无效

ORA-01022:此配置中不支持数据库操作

ORA-01023:未找到游标上下文(无效的游标编号)

ORA-01024:OCI调用中的数据类型无效

ORA-01025:UPI参数超出范围

ORA-01026:赋值列表中存在多个大小>4000的缓冲区

ORA-01027:在数据定义操作中不允许对变量赋值

ORA-01028:内部双工错误

ORA-01029:内部双工错误

ORA-01030:SELECT...INTO变量不存在

ORA-01031:权限不足

ORA-01032:没有这样的用户标识

ORA-01033:ORACLE正在初始化或关闭过程中

ORA-01034:ORACLE不可用

ORA-01035:ORACLE只允许具有RESTRICTEDSESSION权限的用户使用

ORA-01036:非法的变量名/编号

ORA-01037:超出最大游标内存

ORA-01038:无法写入数据库文件版本(使用ORACLE版本)

ORA-01039:视图基本对象的权限不足

ORA-01040:口令中的字符无效;登录被拒绝

ORA-01041:内部错误,hostdef扩展名不存在

ORA-01042:不允许使用打开游标分离会话

ORA-01043:用户方内存损坏[],[],[],[]

ORA-01044:缓冲区大小(与变量关联)超出了最大限制

ORA-01045:用户没有CREATE SESSION权限;登录被拒绝

ORA-01046:无法获得扩展上下文区域的空间

ORA-01047:以上错误出现在schema=,package=,procedure=中

ORA-01048:给定的上下文中无法找到指定的过程

ORA-01049:流动RPC中不支持按名称赋值

ORA-01050:无法获得打开上下文区域的空间

ORA-01051:延迟rpc缓冲区格式无效

ORA-01052:未指定所需的目的LOG_ARCHIVE_DUPLEX_DEST

ORA-01053:无法读取用户存储地址

ORA-01054:无法写入用户存储地址

ORA-01057:用户出口中引用的block.field无效或有歧义

ORA-01058:内部NewUpi接口错误

ORA-01059:在赋值或执行之前进行语法分析

ORA-01060:不允许数组赋值或执行

ORA-01061:无法使用第7版客户应用程序启动第8版服务器

ORA-01062:无法分配定义缓冲区所需的内存

ORA-01070:服务器使用Oracle的旧版本

ORA-01071:无法不启动ORACLE而执行操作

ORA-01072:无法停止ORACLE;因为ORACLE不在运行

ORA-01073:致命的连接错误:不能识别的调用类型

ORA-01074:无法关闭ORACLE;请首先在注册会话中注销

ORA-01075:您现在已登录

ORA-01076:尚不支持每个进程的多次登录

ORA-01077:背景进程初始化失败

ORA-01078:处理系统参数失败

ORA-01079:ORALCE数据库未正确创建,操作中止

ORA-01080:关闭ORACLE时出错

ORA-01081:无法启动已在运行的ORACLE---请首先关闭

ORA-01082:'row_locking=always'要求事务处理处理选项

ORA-01083:参数""的值与其它例程序的相应参数值不一致。

ORA-01084:OCI调用中的参数无效

ORA-01085:延迟rpc到".."之前的错误

ORA-01086:从未创建保留点''

ORA-01087:不能启动ORALCE---现在已登录

ORA-01088:不能在存在活动进程时关闭ORACLE

ORA-01089:正在进行紧急关闭-不允许进行任何操作

ORA-01090:正在进行关闭---不允许连接

ORA-01091:强行启动出错

ORA-01092:ORACLE例程终止。强行断开连接

ORA-01093:ALTERDATABASECLOSE仅允许在没有连接会话时使用

ORA-01094:ALTERDATABASECLOSE正在进行。不允许连接

ORA-01095:DML语句处理了零个行

ORA-01096:程序版本()与例程()不兼容

ORA-01097:无法在事务处理过程中关闭-首先提交或返回

ORA-01098:在LongInsert过程中出现程序接口错误

ORA-01099:如果在单进程模式下启动,则无法在SHARED模式下安装数据库

ORA-01100:数据库已安装

ORA-01101:要创建的数据库当前正由其它例程安装

ORA-01102:无法在EXCLUSIVE模式下安装数据库

ORA-01103:控制文件中的数据库名''不是''

ORA-01104:控制文件数()不等于

ORA-01105:安装与其它例程的安装不兼容

ORA-01106:必须在卸下之前关闭数据库

ORA-01107:必须安装数据库才可以进行介质恢复

ORA-01108:文件正处于备份或介质恢复过程中

ORA-01109:数据库未打开

ORA-01110:数据文件:''

ORA-01111:数据文件名称未知-请重命名以更正文件

ORA-01112:未启动介质恢复

ORA-01113:文件需要介质恢复

ORA-01114:将块写入文件时出现IO错误(块#)

ORA-01115:从文件读取块时出现IO错误(块#)

ORA-01116:打开数据库文件时出错

ORA-01117:对文件''添加非法块大小:;限制为

ORA-01118:无法添加任何其它数据库文件:超出限制

ORA-01119:创建数据库文件''时出错

ORA-01120:无法删除联机数据库文件

ORA-01121:无法重命名数据库文件-文件在使用中或在恢复中

ORA-01122:数据库文件验证失败

ORA-01123:无法启动联机备份;未启用介质恢复

ORA-01124:无法恢复数据文件-文件在使用中或在恢复中

ORA-01125:无法禁用介质恢复-文件设置了联机备份

ORA-01126:对于此操作,数据库必须以EXCLUSIVE模式安装且未打开

ORA-01127:数据库名''超出个字符的限制

ORA-01128:无法启动联机备份-文件处于脱机状态

ORA-01129:用户默认或临时表空间不存在

ORA-01130:数据库文件版本与ORACLE版本不兼容

ORA-01131:DB_FILES系统参数值超出限制

ORA-01132:数据库文件名''的长度超出个字符的限制

ORA-01133:日志文件名''的长度超出个字符的限制

ORA-01134:数据库已由其它例程独立安装

ORA-01135:DML/query访问的文件处于脱机状态

ORA-01136:文件(块)的指定大小小于块的原大小

ORA-01137:数据文件仍处于脱机过程中

ORA-01138:数据库必须在此例程中打开或根本没有打开

ORA-01139:RESETLOGS选项仅在不完全数据库恢复后有效

ORA-01140:无法结束联机备份-所有文件均处于脱机状态

ORA-01141:重命名数据文件时出错-未找到新文件''

ORA-01142:无法结束联机备份-没有文件在备份中

ORA-01143:不能禁用介质恢复-文件需要介质恢复

ORA-01144:文件大小(块)超出块的最大数

ORA-01145:除非启用了介质恢复,否则不允许紧急脱机

ORA-01146:无法启动联机备份-文件已在备份中

ORA-01147:SYSTEM表空间文件处于脱机状态

ORA-01149:无法关闭-文件设置了联机备份

ORA-01150:无法防止写入-文件设置了联机备份

ORA-01151:如果需要,请使用介质恢复以恢复块和恢复备份

ORA-01152:文件没有从完备的旧备份中恢复

ORA-01153:激活了不兼容的介质恢复

ORA-01154:数据库正在运行。现在不允许打开,关闭,安装和拆卸

ORA-01155:正在打开,关闭,安装或拆卸数据库

ORA-01156:进行中的恢复可能需要访问文件

ORA-01157:无法标识/锁定数据文件-请参阅DBWR跟踪文件

ORA-01158:数据库已安装

ORA-01159:文件并非来自先前文件的同一数据库-数据库标识错误

ORA-01160:文件不是

ORA-01161:文件标题中的数据库名与给定的名称不匹配

ORA-01162:文件标题中的块大小与配置的块大小不匹配

ORA-01163:SIZE子句表示(块),但应与标题匹配

ORA-01164:MAXLOGFILES不可以超出

ORA-01165:MAXDATAFILES不可以超出

ORA-01166:文件数量大于()

ORA-01167:这两个文件为相同的文件/组号或相同的文件

ORA-01168:物理块大小与其它成员的大小不匹配

ORA-01169:未找到DATAFILE编号1。此编号必须存在

ORA-01170:文件未找到''

ORA-01171:数据文件因高级检查点错误而将脱机

ORA-01172:线程的恢复停止在块(在文件中)

ORA-01173:数据字典指明从系统表空间丢失的数据文件

ORA-01174:DB_FILES为,但需要为才能兼容

ORA-01175:例程允许数据字典具有多于个文件

ORA-01176:控制文件允许数据字典具有多于个文件

ORA-01177:数据文件与字典不匹配-可能是旧的原型

ORA-01178:文件在最后一个CREATECONTROLFILE之前创建,无法重新创建

ORA-01179:文件不存在

ORA-01180:无法创建数据文件1

ORA-01181:文件在最后一个RESETLOGS之前创建,无法重新创建

ORA-01182:无法创建数据文件-文件在使用中或在恢复中

ORA-01183:无法在SHARED模式下安装数据库

ORA-01184:日志文件组已经存在

ORA-01185:日志文件组号无效

ORA-01186:文件验证测试失败

ORA-01187:由于验证测试失败而无法从文件读取

ORA-01188:标题中的块大小与物理块大小不匹配

ORA-01189:文件来自于与先前文件不同的RESETLOGS

ORA-01190:控制文件或数据文件来自于最后一个RESETLOGS之前

ORA-01191:文件已经脱机-无法进行正常脱机

ORA-01192:必须启用至少一个线程

ORA-01193:文件与恢复开始时的文件不同

ORA-01194:文件需要更多的恢复来保持一致性

ORA-01195:文件的联机备份需要更多的恢复来保持一致性

ORA-01196:文件由于介质恢复会话失败而不一致

ORA-01197:线程仅包含一个日志

ORA-01198:在选项为RESETLOGS时必须指定日志文件的大小

ORA-01199:文件不处于联机备份模式

ORA-01200:的实际文件大小小于块的正确大小

ORA-01201:文件标题无法正确写入

ORA-01202:此文件的原型错误-创建时间错误

ORA-01203:此文件的原型错误-创建SCN错误

ORA-01204:文件号是而不是-文件错误

ORA-01205:不是数据文件-标题的类型编号是

ORA-01206:文件不是此数据库的一部份-数据库标识错误

ORA-01207:文件比控制文件更新-旧的控制文件

ORA-01208:数据文件是旧的版本-不能访问当前版本

ORA-01209:数据文件来自最后一个RESETLOGS之前

ORA-01210:数据文件标题是介质损坏

ORA-01211:Oracle7数据文件不是来自于Oracle8的移植版本

ORA-01212:MAXLOGMEMBERS不可以超出

ORA-01213:MAXINSTANCES不可以超出

ORA-01214:MAXLOGHISTORY不可以超出

ORA-01215:启用的线程在CREATECONTROLFILE之后丢失

ORA-01216:线程预计在CREATECONTROLFILE之后禁用

ORA-01217:日志文件成员属于一个不同的日志文件组

ORA-01218:日志文件成员来自于不同的时间点

ORA-01219:数据库未打开:仅允许在固定表/视图中查询

ORA-01220:在数据库打开之前基于文件的分类非法

ORA-01221:数据文件与背景进程的文件不同

ORA-01222:的MAXINSTANCES要求MAXLOGFILES至少是而不是

ORA-01223:必须指定RESETLOGS以设置新的数据库名

ORA-01224:标题中的组号与GROUP不匹配

ORA-01225:线程编号大于MAXINSTANCES

ORA-01226:日志成员的文件标题与其它成员不一致

ORA-01227:日志与其它日志不一致

ORA-01228:SETDATABASE选项要求安装源数据库

ORA-01229:数据文件与日志不一致

ORA-01230:无法设置只读-文件处于脱机状态

ORA-01231:无法设置读写-文件处于脱机状态

ORA-01232:无法启动联机备份-文件是只读文件

ORA-01233:文件是只读文件-无法使用备份控制文件恢复

ORA-01234:无法终止文件的备份-文件在使用或在恢复中

ORA-01235:ENDBACKUP对文件失败而对成功

ORA-01236:文件标题访问的初始化过程中出现错误

ORA-01237:无法扩展数据文件

ORA-01238:无法收缩数据文件

ORA-01239:数据库必须在ARCHIVELOG模式下使用外部高速缓存

ORA-01240:一个命令中添加的数据文件过多

ORA-01241:外部高速缓存已停止

ORA-01242:数据文件出现介质错误:数据库处于NOARCHIVELOG模式

ORA-01243:系统表空间文件出现介质错误

ORA-01244:未命名的数据文件由介质恢复添加至控制文件

ORA-01245:RESETLOGS完成时脱机文件将丢失

ORA-01246:通过表空间的TSPITR来恢复文件

ORA-01247:通过表空间的TSPITR来恢复数据库

ORA-01248:文件在将来的不完整恢复中创建

ORA-01249:不允许在'克隆'数据库中存档

ORA-01250:文件标题访问的终止过程中出现错误

ORA-01251:文件号的未知文件标题版本读取

ORA-01252:无法禁止写-文件在恢复管理器备份中

ORA-01253:无法启动联机备份-文件在恢复管理器备份中

ORA-01254:无法结束联机备份-文件在恢复管理器备份中

ORA-01255:无法关闭-文件在恢复管理器备份中

ORA-01256:在锁定数据库文件时出错

ORA-01257:不能重用数据库文件,文件大小未知

ORA-01258:无法删除临时文件

ORA-01259:无法删除数据文件

ORA-01260:当数据库打开时,不能发出ALTERDATABASEENDBACKUP命令

ORA-01261:无法转换参数目标字符串

ORA-01262:在文件目标目录上无法进行统计

ORA-01263:文件目标目录的名称无效

ORA-01264:无法创建文件名

ORA-01265:无法删除文件

ORA-01266:无法创建唯一的文件名

ORA-01267:无法获取日期/时间

ORA-01268:用于变更永久性TABLESPACE的TEMPFILE子句无效

ORA-01269:目标参数字符串过长

ORA-01270:STANDBY_PRESERVES_NAMES为true时,不允许进行操作

ORA-01271:无法创建文件的新文件名

ORA-01272:只有当提供文件名时,才允许REUSE。

ORA-01274:无法添加数据文件''-无法创建文件

ORA-01275:自动进行备用文件管理时,不允许进行操作。

ORA-01276:无法添加文件。相应文件具有一个Oracle管理文件文件名。

ORA-01277:文件''已存在

ORA-01278:创建文件''出错

ORA-01279:db_files太大

ORA-01280:严重的LogMiner错误。

ORA-01281:指定的SCN范围无效

ORA-01282:指定的日期范围无效

ORA-01283:指定选项无效

ORA-01284:文件无法打开

ORA-01285:读取文件时出错

ORA-01286:由于DB_ID不匹配无法添加文件

ORA-01287:文件来源于其他的数据库原型

ORA-01288:文件来自不同的数据库实体

ORA-01289:无法添加重复的日志文件

ORA-01290:无法删除未列出的日志文件

ORA-01291:丢失的日志文件

ORA-01292:当前LogMiner会话无指定的日志文件

ORA-01293:时间或SCN范围没有完全包含在列出的日志文件中

ORA-01294:当处理字典文件中的信息时出错,可能损坏

ORA-01295:字典和日志文件之间的DB_ID不匹配

ORA-01296:字典和日志文件之间的字符集不匹配

ORA-01297:字典和日志文件之间的重做版本不匹配

ORA-01298:字典和最早的日志文件不是SCN可兼容的

ORA-01299:字典对应于不同的数据库原型

ORA-01300:字典和最早的日志文件之间已启用的线程位向量不匹配

ORA-01301:dbms_logmnr.USE_COLMAP只用于有效字典

ORA-01302:在logmnr.opt文件中出现语法错误

ORA-01303:在logmnr.opt文件中指定的方案不存在

ORA-01304:在logmnr.opt文件中指定的表,方案不存在

ORA-01305:在logmnr.opt文件中指定的列不存在于表,,方案中

ORA-01306:在从v$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:NLSerror

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:insufficientmemoryforstagingpersistentLogMinersession

ORA-01374:log_parallelismgreaterthan1notsupportedinthisrelease

ORA-01400:无法将NULL插入()

ORA-01401:插入的值对于列过大

ORA-01402:视图WITH CHECK OPTION违反where子句

ORA-01403:未找到数据

ORA-01404:ALTERCOLUMN将使索引过大

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:用户数据中的CONNECTBY循环

ORA-01437:无法连接CONNECTBY

ORA-01438:值大于此列指定的允许精确度

ORA-01439:要更改数据类型,则要修改的列必须为空(empty)

ORA-01440:要减小精确度或标度,则要修改的列必须为空(empty)

ORA-01441:无法减小列长度,因为一些值过大

ORA-01442:要修改为NOTNULL的列已经是NOTNULL

ORA-01443:内部不一致;结果视图列中的数据类型非法

ORA-01444:内部不一致;内部数据类型映射为无效外部类型

ORA-01445:无法从没有键值保存表的连接视图中选择ROWID

ORA-01446:无法从含DISTINCT,GROUPBY等子句的视图中选择ROWID

ORA-01447:ALTERTABLE语句无法用于聚簇列

ORA-01448:在更改要求的类型之前必须删除索引

ORA-01449:列包含NULL值;无法将其改变为NOTNULL

ORA-01450:超出最大的关键字长度()

ORA-01451:要修改为NULL的列无法修改为NULL

ORA-01452:无法CREATEUNIQUEINDEX;找到重复的关键字

ORA-01453:SETTRANSACTION必须是事务处理的第一个语句

ORA-01454:无法将列转换为数值数据类型

ORA-01455:转换列溢出整数数据类型

ORA-01456:不可以在READONLY事务处理中执行插入/删除/更新操作

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:无法将CONNECTBY用于DISTINCT,GROUPBY等的视图

ORA-01473:CONNECTBY子句中不能具有子查询

ORA-01474:STARTWITH或PRIOR不能没有CONNECTBY

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:非法的ANALYZECLUSTER选项

ORA-01498:块检查失败-请参阅跟踪文件

ORA-01499:表/索引交叉引用失败-请参阅跟踪文件

ORA-01500:无法获得日期/时间

ORA-01501:CREATEDATABASE失败

ORA-01502:索引'.'或这类索引的分区处于不可用状态

ORA-01503:CREATECONTROLFILE失败

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:CREATEDATABASE必须指定多于一个日志文件

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成功但OPENRESETLOGS将出现如下错误

ORA-01548:已找到活动回退段'',终止删除表空间

ORA-01549:表空间非空,请使用INCLUDINGCONTENTS选项

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:文件在DROPLOGFILE中被指定了多次

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版回退段()转换为Oracle8版格式时出错

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:使用BACKUPCONTROLFILE选项的恢复必须已完成

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:此操作需要RealApplicationClusters选件

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:该权限的GRANTOPTION不存在

ORA-01714:执行用户函数时出错

ORA-01715:UNIQUE不可以与簇索引一起使用

ORA-01716:NOSORT不可以与簇索引一起使用

ORA-01717:seccta:访问已过时的模式标记无效

ORA-01718:NOAUDIT不允许BYACCESS|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:非法的参数-EXTENTMIN高于EXTENTMAX

ORA-01735:非法的ALTERTABLE选项

ORA-01736:需要[NOT]SUCCESSFUL

ORA-01737:有效模式:[ROW]SHARE,[[SHARE]ROW]EXCLUSIVE,SHAREUPDATE

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:要添加法定(NOTNULL)列,则表必须为空

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:CREATECLUSTER命令中不允许有CLUSTER选项

ORA-01771:选项对聚簇表非法

ORA-01772:必须指定LEVEL的值

ORA-01773:此CERATETABLE中没有指定列的数据类型

ORA-01774:转储撤消选项指定了多次

ORA-01775:同义词的循环嵌套链

ORA-01776:无法通过连接视图修改多个基表

ORA-01777:此系统中不允许WITHGRANTOPTION

ORA-01778:超出最大子查询的嵌套层

ORA-01779:无法修改与非键值保存表对应的列

ORA-01780:要求文字字符串

ORA-01781:UNRECOVERABLE不能指定没有ASSELECT

ORA-01782:不能为群集或聚簇表指定UNRECOVERABLE

ORA-01783:只可以指定RECOVERABLE或UNRECOVERABLE子句

ORA-01784:不能指定RECOVERABLE具有禁用的数据库介质恢复

ORA-01785:ORDERBY项必须是SELECT-list表达式的数目

ORA-01786:此查询表达式不允许FORUPDATE

ORA-01787:每个查询块只允许有一个子句

ORA-01788:此查询块中要求CONNECTBY子句

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:无法将WITHGRANTOPTIONGRANT角色

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:必须为CREATEUSER指定IDENTIFIEDBY

ORA-01939:只可以指定ADMINOPTION

ORA-01940:无法删除当前已连接的用户

ORA-01941:需要SEQUENCE关键字

ORA-01942:无法同时指定IDENTIFIEDBY和EXTERNALLY

ORA-01943:已经指定IDENTIFIEDBY

ORA-01944:已经指定IDENTIFIEDEXTERNALLY

ORA-01945:已经指定DEFAULTROLE[S]

ORA-01946:已经指定DEFAULTTABLESPACE

ORA-01947:已经指定TEMPORARYTABLESPACE

ORA-01948:标识符的名称长度()超过最大长度()

ORA-01949:需要ROLE关键字

ORA-01950:表空间''中无权限

ORA-01951:ROLE''未授予''

ORA-01952:系统权限未授予''

ORA-01953:命令不再有效,请参阅ALTERUSER

ORA-01954:DEFAULTROLE子句对CREATEUSER无效

ORA-01955:DEFAULTROLE''未授予用户

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:无效的CREATECONTROLFILE选项

ORA-01968:仅指定RESETLOGS或NORESETLOGS一次

ORA-01969:您必须指定RESETLOGS或NORESETLOGS

ORA-01970:您必须为CREATECONTROLFILE指定数据库名

ORA-01971:非法的ALTERTRACING选项

ORA-01972:必须为ALTERTRACINGENABLE或DISABLE指定字符串

ORA-01973:缺少更改编号

ORA-01974:非法的存档选项

ORA-01975:更改编号中的字符非法

ORA-01976:缺少更改编号

ORA-01977:缺少线程编号

ORA-01978:缺少序号

ORA-01979:角色''缺少口令或口令无效

ORA-01980:OSROLE初始化过程中出错

ORA-01981:必须指定CASCADECONSTRAINTS以执行此撤消

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,GROUPBY等的视图选择UPDATEFOR

ORA-02015:不能从远程表选择FORUPDATE

ORA-02016:不能在远程数据库中使用STARTWITH子查询

ORA-02017:要求整数值

ORA-02018:同名的数据库链接具有开放连接

ORA-02019:未找到远程数据库的连接说明

ORA-02020:过多的数据库链接在使用中

ORA-02021:不允许对远程数据库进行DDL操作

ORA-02022:远程语句的远程对象具有未优化的视图

ORA-02023:远程数据库无法对STARTWITH或CONNECTBY谓词求值

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:非法的ALTERSYSTEM选项

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:ALTERSYSTEMFIXED_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:不一致的游标高速缓存(OraCursornr已坏)

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:缺少或无效的ALTERTABLESPACE选项

ORA-02143:无效的STORAGE选项

ORA-02144:未指定ALTERCLUSTER的选项

ORA-02145:缺少STORAGE选项

ORA-02146:SHARED指定了多次

ORA-02147:与SHARED/EXCLUSIVE选项冲突

ORA-02148:EXCLUSIVE指定了多次

ORA-02149:指定的分区不存在

ORA-02153:无效的VALUES口令字符串

ORA-02155:无效的DEFAULT表空间标识

ORA-02156:无效的TEMPORARY表空间标识

ORA-02157:未指定ALTERUSER的选项

ORA-02158:无效的CREATEINDEX选项

ORA-02159:安装的DLM不支持可释放锁定模式

ORA-02160:索引编排表不能包含LONG类型的列

ORA-02161:MAXLOGFILES值无效

ORA-02162:MAXDATAFILES值无效

ORA-02163:FREELISTGROUPS值无效

ORA-02164:DATAFILE子句指定了多次

ORA-02165:无效的CREATEDATABASE选项

ORA-02166:已指定ARCHIVELOG和NOARCHIVELOG

ORA-02167:LOGFILE子句指定了多次

ORA-02168:FREELISTS值无效

ORA-02169:不允许的FREELISTS存储选项

ORA-02170:不允许的FREELISTGROUPS存储选项

ORA-02171:MAXLOGHISTORY值无效

ORA-02172:PUBLIC关键字不适用于禁用线程

ORA-02173:无效的DROPTABLESPACE选项

ORA-02174:缺少要求的线程编号

ORA-02175:无效的回退段名

ORA-02176:无效的CRATEROLLBACKSEGMENG选项

ORA-02177:缺少要求的组号

ORA-02178:正确的语法是:SETTRANSACTIONREAD{ONLY|WRITE}

ORA-02179:有效选项:ISOLATIONLEVEL{SERIALIZABLE|READCOMMITTED}

ORA-02180:无效的CREATETABLESPACE选项

ORA-02181:无效的ROLLBACWORK选项

ORA-02182:需要保存点名称

ORA-02183:有效选项:ISOLATION_LEVEL{SERIALIZABLE|READCOMMITTED}

ORA-02184:REVOKE中不允许资源限量

ORA-02185:COMMIT后面跟的标记不是WORK

ORA-02186:表空间资源权限不可与其它权限一起出现

ORA-02187:无效的限量说明

ORA-02189:需要ON<表空间>

ORA-02190:需要TABLES关键字

ORA-02191:正确的语法是ETTRANSACTIONUSEROLLBACKSEGMENT<rbs>

ORA-02192:回退段存储子句不允许PCTINCREASE

ORA-02194:事件说明语法错误(非致命错误)接近''

ORA-02195:尝试创建的对象在表空间中

ORA-02196:已经指定PERMANENT/TEMPORARY选项

ORA-02197:已经指定文件列表

ORA-02198:已经指定ONLINE/OFFLINE选项

ORA-02199:丢失DATAFILE/TEMPFILE子句

ORA-02200:WITHGRANGOPTION对PUBLIC不允许

ORA-02201:此处不允许序列(号)

ORA-02202:此群集中不允许添加其它表

ORA-02203:不允许的INITIAL存储选项

ORA-02204:不允许ALTER,INDEX和EXECUTE用于视图

ORA-02205:只有SELECT和ALTER权限对序列有效

ORA-02206:重复的INITRANG选项说明

ORA-02207:无效的INITRANS选项值

ORA-02208:重复的MAXTRANS选项说明

ORA-02209:无效的MAXTRANS选项值

ORA-02210:未指定ALTERTABLE的选项

ORA-02211:无效的PCTFREE或PCTUSED值

ORA-02212:重复的PCTFREE选项说明

ORA-02213:重复的PCTUSED选项说明

ORA-02214:重复的BACKUP选项说明

ORA-02215:重复的表空间名子句

ORA-02216:需要表空间名

ORA-02217:重复的存储选项说明

ORA-02218:无效的INITIAL存储选项值

ORA-02219:无效的NEXT存储选项值

ORA-02220:无效的MINEXTENTS存储选项值

ORA-02221:无效的MAXEXTENTS存储选项值

ORA-02222:无效的PCTINCREASE存储选项值

ORA-02223:无效的OPTIMAL存储选项值

ORA-02224:EXECUTE权限对于表不允许

ORA-02225:只有EXECUTE和DEBUG权限对过程有效

ORA-02226:无效的MAXEXTENTS值(最大允许为:)

ORA-02227:无效的群集名

ORA-02228:重复的SIZE说明

ORA-02229:无效的SIZE选项值

ORA-02230:无效的ALTERCLUSTER选项

ORA-02231:缺少或无效的ALTERDATABASE选项

ORA-02232:无效的MOUNT模式

ORA-02233:无效的CLOSE模式

ORA-02234:已经记录对此表的更改

ORA-02235:此表已将更改记录在另一表中

ORA-02236:无效的文件名

ORA-02237:无效的文件大小

ORA-02238:文件名列表具有不同的文件数

ORA-02239:存在引用此序列的对象

ORA-02240:无效的OBJNO或TABNO值

ORA-02241:必须是EXTENTS(FILE<n>BLOCK<n>SIZE<n>,...)格式

ORA-02242:未指定ALTERINDEX的选项

ORA-02243:ALTERINDEX或ALTERMATERIALIZEDVIEW选项无效

ORA-02244:无效的ALTERROLLBACKSEGMENT选项

ORA-02245:无效的ROLLBACKSEGMENT名

ORA-02246:缺少EVENTS文本

ORA-02247:未指定ALTERSESSION的选项

ORA-02248:无效的ALTERSESSION选项

ORA-02249:缺少或无效的MAXLOGMEMBERS值

ORA-02250:缺少或无效的约束条件名

ORA-02251:此处不允许子查询

ORA-02252:检查未正确结束的约束条件

ORA-02253:此处不允许约束条件说明

ORA-02254:此处不允许DEFAULT<表达式>

ORA-02255:obsolete7.1.5

ORA-02256:要引用的列数必须与已引用道感数匹配

ORA-02257:超出最大列数

ORA-02258:重复或冲突的NULL和(或)NOTNULL说明

ORA-02259:重复的UNIQUE/PRIMARYKEY说明

ORA-02260:表只能具有一个主键

ORA-02261:表中已存在这样的唯一关键字或主键

ORA-02262:对列默认值表达式进行类型检查时,出现ORA-

ORA-02263:需要指定此列的数据类型

ORA-02264:名称已被一现有约束条件占用

ORA-02265:无法推导引用列的数据类型

ORA-02266:表中的唯一/主键被启用的外部关键字引用

ORA-02267:列类型与引用的列类型不兼容

ORA-02268:引用的表不具有主键

ORA-02269:关键字列不能是LONG数据类型

ORA-02270:此列列表的唯一或主键不匹配

ORA-02271:表没有这样的约束条件

ORA-02272:约束条件列不能是LONG数据类型

ORA-02273:此唯一/主键已被某些外部关键字引用

ORA-02274:重复的引用约束条件说明

ORA-02275:此表中已经存在这样的引用约束条件

ORA-02276:默认值类型与列类型不兼容

ORA-02277:无效的序列名

ORA-02278:重复或冲突的ORDER/NOORDER说明

ORA-02279:重复或冲突的ORDER/NOORDER说明

ORA-02280:重复或冲突的ORDER/NOORDER说明

ORA-02281:重复或冲突的ORDER/NOORDER说明

ORA-02282:重复或冲突的ORDER/NOORDER说明

ORA-02283:无法改变起始序号

ORA-02284:重复的INCREMENTBY说明

ORA-02285:重复的STARTWITH说明

ORA-02286:未指定ALTERSEQUENCE的选项

ORA-02287:此处不允许序号

ORA-02288:无效的OPEN模式

ORA-02289:序列(号)不存在

ORA-02290:违反检查约束条件(.)

ORA-02291:违反完整约束条件(.)-未找到父项关键字

ORA-02292:违反完整约束条件(.)-已找到子记录日志

ORA-02293:无法验证(.)-违反检查约束条件

ORA-02294:无法启用(.)-约束条件在验证过程中更改

ORA-02295:找到约束条件的多个启用/禁用子句

ORA-02296:无法启用(.)-找到空值

ORA-02297:无法禁用约束条件(.)-存在依赖关系

ORA-02298:无法验证(.)-未找到父项关键字

ORA-02299:无法验证(.)-未找到重复关键字

ORA-02300:无效的OIDGENERATORS值

ORA-02301:OIDGENERATORS的最大数为255

ORA-02302:无效或缺少类型名

ORA-02303:无法使用类型或表的相关性来删除或取代一个类型

ORA-02304:无效的对象标识文字

ORA-02305:只有EXECUTE,DEBUG和UNDER权限对类型有效

ORA-02306:无法创建已具有有效相关性的类型

ORA-02307:无法使用REPLACE选项改变无效类型

ORA-02308:无效的对象类型列选项

ORA-02309:违反原子NULL

ORA-02310:超出表中允许的最大列数

ORA-02311:无法使用COMPILE选项改变具有类型或表相关性的有效类型

ORA-02313:对象类型包含不可查询的类型属性

ORA-02315:默认构造符的参数个数错误

ORA-02320:无法创建嵌套表列的存储表

ORA-02322:无法访问嵌套表列的访问表

ORA-02324:THE子查询的SELECT列表中存在多列

ORA-02327:无法以数据类型的表达式创建索引

ORA-02329:数据类型的列不能是唯一关键字或主键

ORA-02330:不允许的数据类型说明

ORA-02331:无法创建数据类型为的列的约束条件

ORA-02332:无法对此列的属性创建索引

ORA-02333:无法对此列的属性创建约束条件

ORA-02334:无法推断列类型

ORA-02335:无效的群集列数据类型

ORA-02336:无法访问列属性

ORA-02337:不是对象类型列

ORA-02338:缺少或无效的列约束条件说明

ORA-02339:无效的列说明

ORA-02340:无效的列说明

ORA-02342:取代类型具有编译错误

ORA-02344:无法撤消执行具有表相关性的类型

ORA-02345:无法创建具有基于CURSOR运算符的列的视图

ORA-02347:无法授权给对象表列

ORA-02348:无法创建具有嵌入LOB的VARRAY列

ORA-02349:无效的用户自定义类型-类型不完整

ORA-02351:记录:被拒绝-表,列上出错

ORA-02352:直接路径连接必须在同类间进行

ORA-02353:多字节字符错误

ORA-02354:字段中出现转换初始化错误

ORA-02355:CONSTANT字段中出现转换错误

ORA-02356:数据库空间耗尽。无法继续加载

ORA-02357:压缩十进制转换错误

ORA-02358:区位十进制转换错误

ORA-02359:数据文件中的字段超出指定的最大长度

ORA-02360:在逻辑记录结束之前未找到列(使用TRAILINGNULLCOLS)

ORA-02361:未找到第一个封闭符

ORA-02362:逻辑记录结束-第二个封闭符不存在

ORA-02363:TERMINATED和ENCLOSED字段后面没有结束符

ORA-02364:记录:放弃-所有WHEN子句均失败

ORA-02365:索引被设置为无用索引,由于

ORA-02366:已处理表的以下索引:

ORA-02367:已加载索引。

ORA-02368:记录:放弃-所有列为空。

ORA-02369:警告:变量长度字段被截断。

ORA-02370:记录-表,列发出警告

ORA-02371:直接路径的加载程序必须为....以上的版本

ORA-02372:相对起始位置>绝对字段终止位置

ORA-02373:表的插入语句语法分析错误

ORA-02374:没有其它可用于读取缓冲区队列的插槽

ORA-02375:记录:已拒绝-表中出错

ORA-02376:无效或冗余的资源

ORA-02377:无效的资源限制

ORA-02378:重复的资源名

ORA-02379:配置文件已经存在

ORA-02380:配置文件不存在

ORA-02381:无法删除PUBLIC_DEFAULT配置文件

ORA-02382:配置文件指定了用户,不能没有CASCADE而删除

ORA-02383:非法的成本因素

ORA-02390:超出COMPOSITE_LIMIT,您将被注销

ORA-02391:超出同时存在的SESSIONS_PER_USER限制

ORA-02392:超出CPU使用的会话限制,您将被注销

ORA-02393:超出CPU使用的调用限制

ORA-02394:超出IO使用的会话限制,您将被注销

ORA-02395:超出IO使用的调用限制

ORA-02396:超出最大空闲时间,请重新连接

ORA-02397:超出PRIVATE_SGA限制,您将被注销

ORA-02398:超出过程空间使用

ORA-02399:超出最大连接时间,您将被注销

ORA-02401:无法EXPLAIN其它用户的视图

ORA-02402:未找到PLAN_TABLE

ORA-02403:计划表没有正确的格式

ORA-02404:未找到指定的计划表

ORA-02420:缺失方案授权子句

ORA-02421:方案授权标识缺失或无效

ORA-02422:方案元素缺失或无效

ORA-02423:方案名和方案授权标识不匹配

ORA-02424:潜在的循环视图引用或未知的引用表

ORA-02425:创建表失败

ORA-02426:授权失败

ORA-02427:创建视图失败

ORA-02428:无法添加外部关键字引用

ORA-02429:无法删除用于强制唯一/主键的索引

ORA-02430:无法启用约束条件()-没有这样的约束条件

ORA-02431:无法禁用约束条件()-没有这样的约束条件

ORA-02432:无法启用主键-未定义表的主键

ORA-02433:无法禁用主键-未定义表的主键

ORA-02434:无法启用唯一关键字()-未定义表的唯一关键字

ORA-02435:无法禁用唯一关键字()-未定义表的唯一关键字

ORA-02436:日期或系统变量在CHECK约束条件中指定错误

ORA-02437:无法验证(.)-违反主键

ORA-02438:列检查约束条件无法引用其死感

ORA-02439:可延迟约束条件不允许唯一索引

ORA-02440:不允许创建为含引用约束条件的选择

ORA-02441:无法删除不存在的主键

ORA-02442:无法删除不存在的唯一关键字

ORA-02443:无法删除约束条件-不存在约束条件

ORA-02444:无法解析引用约束条件中的引用对象

ORA-02445:未找到异常事件表

ORA-02446:CREATETABLE...ASSELECT失败-违反检查约束条件

ORA-02447:无法延迟不可延迟的约束条件

ORA-02448:约束条件不存在

ORA-02449:表中的唯一/主键被外部关键字引用

ORA-02450:无效的散列选项-缺少关键字IS

ORA-02451:重复的HASHKEYS说明

ORA-02452:无效的HASHKEYS选项值

ORA-02453:重复的HASHIS说明

ORA-02454:每块的散列关键字数()超出最大数

ORA-02455:群集关键字的列数必须为1

ORA-02456:HASHIS列说明必须是NUMBER(*,0)

ORA-02457:HASHIS选项必须指定有效的列

ORA-02458:必须指定HASHCLUSTER的HASHKEYS

ORA-02459:Hashkey值必须是正整数

ORA-02460:散列群集的索引操作不适当

ORA-02461:INDEX选项使用不当

ORA-02462:指定的INDEX选项重复

ORA-02463:指定的HASHIS选项重复

ORA-02464:群集定义不能同时为HASH和INDEX

ORA-02465:HASHIS选项使用不当

ORA-02466:不允许改变HASHCLUSTERS的SIZE选项

ORA-02467:群集定义中未找到表达式的引用列

ORA-02468:表达式中指定了错误的常数或系统变量

ORA-02469:散列表达式没有返回Oracle编号

ORA-02470:散列表达式中TO_DATE,USERENV或SYSDATE使用不当

ORA-02471:散列表达式中SYSDATE,UID,USER,ROWNUM或LEVEL使用不当

ORA-02472:散列表达式中不允许PL/SQL函数

ORA-02473:对群集的散列表达式求值时出错

ORA-02474:使用的固定散列区域区()超出允许的最大数()

ORA-02475:超出了最大群集链块数

ORA-02476:由于并行直接加载表而无法创建索引

ORA-02477:无法执行并行直接加载对象

ORA-02478:并入基段将超出MAXEXTENTS限制

ORA-02479:转换并行加载的文件名时出错

ORA-02481:为事件指定的进程数过多(最多为个)

ORA-02482:事件说明()中存在语法错误

ORA-02483:进程说明()中存在语法错误

ORA-02484:_trace_buffers参数说明()无效

ORA-02485:_trace_options参数说明()无效

ORA-02486:写入跟踪文件时出错

ORA-02490:RESIZE子句中缺少要求的文件大小

ORA-02491:AUTOEXTEND子句中缺少要求的关键字ON或OFF

ORA-02492:NEXT子句中缺少要求的文件块增量大小

ORA-02493:NEXT子句中的文件增量大小无效

ORA-02494:MAXSIZE子句中的最大文件大小无效或缺少

ORA-02495:无法调整文件的大小,表空间为只读

ORA-02700:osnoraenv:转换ORACLE_SID时出错

ORA-02701:osnoraenv:转换Oracle图象名时出错

ORA-02702:osnoraenv:转换orapop图象名时出错

ORA-02703:osnpopipe:管道创建失败

ORA-02704:osndopop:分叉失败

ORA-02705:osnpol:通信通道轮询失败

ORA-02706:osnshs:主机名过长

ORA-02707:osnacx:无法分配上下文区域

ORA-02708:osnrntab:无法连接到主机,未知ORACLE_SID

ORA-02709:osnpop:管道创建失败

ORA-02710:osnpop:分叉失败

ORA-02711:osnpvalid:无法写入验证通道

ORA-02712:osnpop:malloc失败

ORA-02713:osnprd:信息接收失败

ORA-02714:osnpwr:信息发送失败

ORA-02715:osnpgetbrkmsg:来自主机的信息类型错误

ORA-02716:osnpgetdatmsg:来自主机的信息类型错误

ORA-02717:osnpfs:写入的字节数错误

ORA-02718:osnprs:重置协议错误

ORA-02719:osnfop:分叉失败

ORA-02720:osnfop:shmat失败

ORA-02721:osnseminit:无法创建信号集

ORA-02722:osnpui:无法向orapop发送中断信息

ORA-02723:osnpui:无法发送中断信号

ORA-02724:osnpbr:无法向orapop发送中断信息

ORA-02725:osnpbr:无法发送中断信号

ORA-02726:osnpop:oracle可执行(代码)访问错误

ORA-02727:osnpop:orapop可执行(代码)的访问出错

ORA-02728:osnfop:oracle可执行(代码)访问错误

ORA-02729:osncon:驱动程序不在osntab中

ORA-02730:osnrnf:无法找到用户登录的目录

ORA-02731:osnrnf:缓冲区的malloc失败

ORA-02732:osnrnf:无法找到匹配的数据库别名

ORA-02733:osnsnf:数据库字符串过长

ORA-02734:osnftt:无法重置允许的共享内存

ORA-02735:osnfpm:无法创建共享内存段

ORA-02736:osnfpm:非法的默认共享内存地址

ORA-02737:osnpcl:无法通知orapop退出

ORA-02738:osnpwrtbrkmsg:写入的字节数错误

ORA-02739:osncon:主机别名过长

ORA-02750:osnfsmmap:无法打开共享内存文件?/dbs/ftt_<pid>.dbf

ORA-02751:osnfsmmap:无法映射共享内存文件

ORA-02752:osnfsmmap:非法的共享内存地址

ORA-02753:osnfsmmap:无法关闭共享内存文件

ORA-02754:osnfsmmap:无法更改共享内存文件的固有属性

ORA-02755:osnfsmcre:无法创建完成的内存文件?/dbs/ftt_<pid>.dbf

ORA-02756:osnfsmnam:名称转换失败

ORA-02757:osnfop:fork_and_bind失败

ORA-02758:内部数组的分配失败

ORA-02759:可用的请求描述符不够

ORA-02760:客户文件关闭失败

ORA-02761:要取消的文件号为负

ORA-02762:要取消的文件号超出最大值

ORA-02763:无法取消至少一个请求

ORA-02764:无效的程序包模式

ORA-02765:无效的最大服务器数

ORA-02766:无效的最大请求描述符数

ORA-02767:每个服务器分配的请求描述符小于1

ORA-02768:最大文件数无效

ORA-02769:无法设置SIGTERM的处理程序

ORA-02770:总块数无效

ORA-02771:非法的请求超时值

ORA-02772:无效的最大服务器空闲时间

ORA-02773:无效的最大客户等待时间

ORA-02774:无效的请求列表锁定超时值

ORA-02775:无效的请求完成信号

ORA-02776:请求完成信号值超出最大值

ORA-02777:无法统计log目录

ORA-02778:log目录所给名称无效

ORA-02779:无法统计coredump目录

ORA-02780:coredump目录所给名称无效

ORA-02781:定时所需标志的给定值无效

ORA-02782:未指定读和写两个函数

ORA-02783:未指定发送和等待两个函数

ORA-02784:指定的共享内存ID无效

ORA-02785:无效的共享内存缓冲区大小

ORA-02786:共享区域所需大小超出段大小

ORA-02787:无法为段列表分配内存

ORA-02788:无法在异步进程数组中找到内核进程指针

ORA-02789:已达最大文件数

ORA-02790:文件名过长

ORA-02791:无法打开与异步I/O一起使用的文件

ORA-02792:无法对用于异步I/O的文件进行fstat()运算

ORA-02793:无法关闭异步I/O

ORA-02794:客户无法获得共享内存关键字

ORA-02795:请求列表为空

ORA-02796:完成请求状态错误

ORA-02797:无可用请求

ORA-02798:无效的请求数

ORA-02799:无法准备信号处理程序

ORA-02800:请求超时

ORA-02801:操作超时

ORA-02802:并行模式下无可用空闲服务器

ORA-02803:无法检索当前时间

ORA-02804:无法为log文件名分配内存

ORA-02805:无法设置SIGTPA的处理程序

ORA-02806:无法设置SIGALRM的处理程序

ORA-02807:无法为I/O向量分配内存

ORA-02808:无法分配打开文件数组的内存

ORA-02809:跳转缓冲区无效

ORA-02810:无法设置内存映射文件的临时文件名

ORA-02811:无法连接共享内存段

ORA-02812:错误的连接地址

ORA-02813:无法设置用于获得关键字的临时文件名

ORA-02814:无法获得共享内存

ORA-02815:无法连接共享内存

ORA-02816:无法删去进程

ORA-02817:读失败

ORA-02818:小于读入所请求的块数

ORA-02819:写失败

ORA-02820:无法写入请求的块数

ORA-02821:无法读取请求的块数

ORA-02822:无效的块偏移量

ORA-02823:缓冲区未对齐

ORA-02824:请求可用列表为空

ORA-02825:请求可用列表不可用

ORA-02826:非法的块大小

ORA-02827:无效的文件号

ORA-02828:段可用列表为空

ORA-02829:没有大小合适的可用段

ORA-02830:无法分开段-无可用的自由段

ORA-02831:无法撤消分配段-段列表为空

ORA-02832:无法撤消分配段-段不在列表中

ORA-02833:服务器无法关闭文件

ORA-02834:服务器无法打开文件

ORA-02835:服务器无法向客户机发送信号

ORA-02836:无法产生临时关键字文件

ORA-02837:无法撤消链接临时文件

ORA-02838:无法准备警报信号的信号处理程序

ORA-02839:无法将块回写磁盘

ORA-02840:客户机无法打开日志文件

ORA-02841:服务器启动失败

ORA-02842:客户机无法将服务器分叉

ORA-02843:无效的内核标志值

ORA-02844:无效的保持打开标志值

ORA-02845:无效的定时要求标志值

ORA-02846:不能破坏的服务器

ORA-02847:服务器没有在发送后终止

ORA-02848:异步I/O程序包不在运行

ORA-02849:读操作因错误而失败

ORA-02850:文件已关闭

ORA-02851:在不应为空时请求列表为空

ORA-02852:无效的关键段超时值

ORA-02853:无效的服务器列表锁定超时值

ORA-02854:无效的请求缓冲区数

ORA-02855:请求数小于其从属数

ORA-02875:smpini:无法获得PGA的共享内存

ORA-02876:smpini:无法连接至PGA的共享内存

ORA-02877:smpini:无法初始化内存保护

ORA-02878:sou2o:变量smpdidini已被覆盖

ORA-02879:sou2o:无法访问受保护的内存

ORA-02880:smpini:因保护而无法注册PGA

ORA-02881:sou2o:无法撤消访问受保护的内存

ORA-02882:sou2o:因保护而无法注册SGA

ORA-02899:smscre:无法创建具有扩展共享内存特性的SGA

ORA-03001:未执行的特性

ORA-03002:未执行的运算符

ORA-03007:废弃的特性

ORA-03008:参数COMPATIBLE>=需要

ORA-03100:无法分配通信区域;内存不足

ORA-03105:内部协议错误

ORA-03106:致命的双工通信协议错误

ORA-03107:oranet缓冲区下溢

ORA-03108:oranet:ORACLE不支持此接口版本

ORA-03109:oranet缓冲区上溢

ORA-03110:oranet:ORACLE不支持此SQL版本

ORA-03111:通信通道收到中断

ORA-03112:作为单工链接的服务器无法使用SQL*Net

ORA-03113:通信通道的文件结束

ORA-03114:未连接到ORALCE

ORA-03115:不支持的网络数据类型或表示法

ORA-03116:传送至转换例行程序的缓冲区长度无效

ORA-03117:双工保存区域上溢

ORA-03118:双工转换例行程序具有无效的状态

ORA-03119:双工检测到不一致的数据类型说明

ORA-03120:双工转换例行程序:整数溢出

ORA-03121:未连接接口驱动程序-未执行功能

ORA-03122:尝试在用户方关闭ORALCE端的窗口

ORA-03123:操作将锁定

ORA-03124:双工内部错误

ORA-03125:违反客户-服务器协议

ORA-03126:网络驱动程序不支持非锁定操作

ORA-03127:在活动操作结束之前不允许进行新的操作

ORA-03128:连接处于锁定模式

ORA-03129:要求插入下一段

ORA-03130:要求读取下一段的缓冲区

ORA-03131:提供了下一段的无效缓冲区

ORA-03132:双工默认值溢出

ORA-03200:段类型说明无效

ORA-03201:组号说明无效

ORA-03202:浏览限制说明无效

ORA-03203:并发更新活动无法进行空间分析

ORA-03204:段类型说明应指明分区

ORA-03205:在指定分区类型时要求分区名

ORA-03206:AUTOEXTEND子句中()块的最大文件大小超出范围

ORA-03207:必须为组合对象指定子分区类型

ORA-03208:必须为非组合对象指定分区类型

ORA-03209:DBMS_ADMIN_PACKAGE无效的文件/块说明

ORA-03210:DBMS_ADMIN_PACKAGE无效的选项说明

ORA-03211:段不存在或不处于有效状态

ORA-03212:无法在本地管理的表空间创建临时段

ORA-03213:DBMS_SPACE程序包无效的Lob段名

ORA-03214:指定的文件大小小于所需的最小值

ORA-03215:用于重新调整大小所指定的文件大小太小

ORA-03216:表空间/段验证无法进行

ORA-03217:变更TEMPORARYTABLESPACE无效的选项

ORA-03218:CREATE/ALTERTABLESPACE的无效选项

ORA-03219:表空间''为可管理的字典,联机或临时

ORA-03220:DBMS_ADMIN_PACKAGE需要的参数为NULL或丢失

ORA-03221:临时表空间和临时段必须具有标准的块大小

ORA-03230:段只包含块在高水印之上的未使用空间

ORA-03231:不可以撤消分配INITIAL区

ORA-03233:无法扩展表.的子分区(由),在表空间中

ORA-03234:无法扩展索引.的子分区(由),在表空间中

ORA-03235:最大的区的个数()已经到达(在表.的子分区中)

ORA-03236:最大的数的个数()已到达(在索引.的子分区中)

ORA-03237:在表空间()无法分配指定大小的初始区

ORA-03238:无法扩展LOB段.的子分区(由,在表空间中)

ORA-03239:已到达最大的区的个数()(在LOB段.的子分区中)

ORA-03240:用户临时表空间与正在移植的表空间是同一个表空间

ORA-03241:无效的单元大小

ORA-03242:表空间移植已重试了500次

ORA-03243:目标dba与现有的控制信息重叠

ORA-03244:未找到可用空间来放置控制信息

ORA-03245:表空间必须具备可管理的字典,联机和能够移植的永久性

ORA-03246:指定的无效块号

ORA-03247:指定的无效块号

ORA-03248:在移植期间段的创建活动太多

ORA-03249:自动段空间管理的表空间大小都应至少具有个块

ORA-03250:无法标记这一段的崩溃

ORA-03251:无法在SYSTEM表空间上提交此命令

ORA-03274:指定了ALLOCATEEXTENT和DEALLOCATEUNUSED两个选项

ORA-03275:重复的DEALLOCATE选项说明

ORA-03276:重复的ALLOCATEEXTENT选项说明

ORA-03277:指定的SIZE无效

ORA-03278:重复的ALLOCATEEXTENT选项说明

ORA-03279:指定的INSTANCE无效

ORA-03280:指定的DATAFILE文件名无效

ORA-03281:无效的ALLOCATEEXTENT选项

ORA-03282:缺少ALLOCATEEXTENT选项

ORA-03283:指定的数据文件不存在

ORA-03284:数据文件不是表空间的成员

ORA-03286:HASHCLUSTERS的ALLOCATEEXTENT无效

ORA-03287:指定的FREELISTGROUP无效

ORA-03288:不可以同时指定FREELISTGROUP和INSTANCE参数

ORA-03289:分区名和段类型不匹配

ORA-03290:无效的截断命令-缺少CLUSTER或TABLE关键字

ORA-03291:无效的截断选项-缺少STORAGE关键字

ORA-03292:要截断的表是群集的一部分

ORA-03293:要截断的群集是HASHCLUSTER

ORA-03296:无法调整数据文件的大小-未找到文件

ORA-03297:文件包含在请求的RESIZE值以外使用的数据

ORA-03298:无法缩减数据文件-文件在热备份中

ORA-03299:无法创建目录表

ORA-04000:PCTUSED与PCTFREE的总和不能超过100

ORA-04001:序列参数必须是整数

ORA-04002:INCREMENT必须是非零整数

ORA-04003:序列参数超出最大允许大小(位)

ORA-04004:MINVALUE必须小于MAXVALUE

ORA-04005:INCREMENT必须小于MAXVALUE与MINVALUE的差

ORA-04006:STARTWITH不能小于MINVALUE

ORA-04007:MINVALUE不能大于当前值

ORA-04008:STARTWITH不能大于MAXVALUE

ORA-04009:MAXVALUE不能小于当前值

ORA-04010:CACHE的值数必须大于1

ORA-04011:序列必须介于和之间

ORA-04012:对象不是序列

ORA-04013:CACHE值必须小于CYCLE值

ORA-04014:CYCLE必须指定MINVALUE为降序

ORA-04015:CYCLE必须指定MAXVALUE为升序

ORA-04016:序列不再存在

ORA-04017:参数max_dump_file_size的值(长度=)无效

ORA-04018:parameter_scn_scheme的值无效

ORA-04019:SCN模式与其它例程不兼容

ORA-04020:尝试锁定对象时检测到死锁

ORA-04021:等待锁定对象时发生超时

ORA-04022:请求不等待,但必须等待锁定字典对象

ORA-04028:无法生成对象的diana

ORA-04029:在查询时出现ORA-错误

ORA-04030:在尝试分配字节(,)时进程内存不足

ORA-04031:无法分配字节的共享内存("","","","")

ORA-04032:pga_aggregate_target必须在转换到自动模式之前进行设置

ORA-04033:没有足够的内存来增加池的容量

ORA-04041:在创建程序包体之前必须首先创建程序包说明

ORA-04042:过程,函数,程序包或程序包体不存在

ORA-04043:对象不存在

ORA-04044:此处不允许过程,函数,程序包或类型

ORA-04045:在重新编译/重新验证.时出错

ORA-04046:编译结果过大,系统不支持

ORA-04047:指定的对象与指定的标志不兼容

ORA-04050:过程,函数,或程序包名无效或缺少

ORA-04051:用户无法使用数据库链接.

ORA-04052:在查找远程对象时出错

ORA-04053:在验证远程对象时出错

ORA-04054:数据库链接不存在

ORA-04055:已终止:""形成了具有""的非REF相互依赖循环。

ORA-04060:权限不足以执行

ORA-04061:的当前状态失效

ORA-04062:(属)已被更改

ORA-04063:有错误

ORA-04064:未执行,失效

ORA-04065:未执行,已更改或删除

ORA-04066:不可执行对象,

ORA-04067:未执行,不存在

ORA-04068:已丢弃程序包的当前状态

ORA-04070:无效的触发器名

ORA-04071:缺少BEFORE,AFTER或INSTEADOF关键字

ORA-04072:无效的触发器类型

ORA-04073:此触发器类型的列列表无效

ORA-04074:无效的REFERENCING名称

ORA-04075:无效的触发器操作

ORA-04076:无效的NEW或OLD说明

ORA-04077:WHEN子句不能与表层触发器一起使用

ORA-04078:OLD和NEW值不能相同

ORA-04079:无效的触发器说明

ORA-04080:触发器''不存在

ORA-04081:触发器''已经存在

ORA-04082:NEW或OLD引用不允许在表层触发器中

ORA-04083:无效的触发器变量'%*.s'

ORA-04084:无法更改此触发器类型的NEW值

ORA-04085:无法更改OLD引用变量的值

ORA-04086:触发器说明过长,请将备注移入触发代码

ORA-04087:无法更改ROWID引用变量的值

ORA-04088:触发器'.'执行过程中出错

ORA-04089:无法对SYS所有的对象创建触发器

ORA-04090:''指定的表,事件和触发器时间与''相同

ORA-04091:表.发生了变化,触发器/函数不能读

ORA-04092:不能在触发器中

ORA-04093:不允许在触发器中引用LONG类型的列

ORA-04094:表.有条件约束,触发器不能对其进行修改

ORA-04095:触发器''已经在另一表上存在,无法替换

ORA-04096:触发器''的WHEN子句过大,限量为2K

ORA-04097:在尝试删除或改变触发器时发生DDL冲突

ORA-04098:触发器'.'无效且未通过重新确认

ORA-04099:触发器''有效但没有存储在编译表中

ORA-04930:打开序列号失败或初始状态无效

ORA-04931:无法设置初始序列号值

ORA-04932:增加或调节序列号失败

ORA-04933:初始服务标识符非零

ORA-04934:无法获得当前序列号

ORA-04935:无法获得/转换SCN恢复锁定

ORA-04940:对Oracle二进制进行了不被支持的优化,有关详细信息请检查警告日志

ORA-06000:NETASY:端口打开失败

ORA-06001:NETASY:端口设置失败

ORA-06002:NETASY:端口读失败

ORA-06003:NETASY:端口写失败

ORA-06004:NETASY:对话文件打开失败

ORA-06005:NETASY:对话文件读失败

ORA-06006:NETASY:对话执行失败

ORA-06007:NETASY:错误的对话格式

ORA-06009:NETASY:对话文件过长

ORA-06010:NETASY:对话文件过长

ORA-06011:NETASY:对话过长

ORA-06017:NETASY消息接收失败

ORA-06018:NETASY:消息发送失败

ORA-06019:NETASY:无效的注册(连接)字符串

ORA-06020:NETASY:初始化失败

ORA-06021:NETASY:连接失败

ORA-06022:NETASY:通道打开失败

ORA-06023:NETASY:端口打开失败

ORA-06024:NETASY:VTM错误

ORA-06025:NETASY:配置错误

ORA-06026:NETASY:端口关闭失败

ORA-06027:NETASY:通道关闭失败

ORA-06028:NETASY:无法初始化以记录

ORA-06029:NETASY:端口指定失败

ORA-06030:NETDNT:连接失败,无法识别的节点名

ORA-06031:NETDNT:连接失败,无法识别的对象名

ORA-06032:NETDNT:连接失败,对控制数据的访问被拒绝

ORA-06033:NETDNT:连接失败,伙伴拒绝连接

ORA-06034:NETDNT:连接失败,伙伴意外退出

ORA-06035:NETDNT:连接失败,资源不足

ORA-06036:NETDNT:连接失败,没有来自对象的响应

ORA-06037:NETDNT:连接失败,节点不能达到

ORA-06038:NETDNT:连接失败,未加载网络驱动程序

ORA-06039:NETDNT:连接失败

ORA-06040:NETDNT:无效的注册(连接)字符串

ORA-06041:NETDNT:断开连接失败

ORA-06042:NETDNT:信息接收失败

ORA-06043:NETDNT:信息发送失败

ORA-06044:NETDNT:连接失败,超出字节数限制

ORA-06102:NETTCP:NETTCP:无法分配上下文区域

ORA-06105:NETTCP:远程主机未知

ORA-06106:NETTCP:套接创建失败

ORA-06107:NETTCP:未找到ORACLE网络服务器

ORA-06108:NETTCP:无法连接到主机

ORA-06109:NETTCP:信息接收失败

ORA-06110:NETTCP:信息发送失败

ORA-06111:NETTCP:无法断开连接

ORA-06112:NETTCP:无效的缓冲区大小

ORA-06113:NETTCP:连接过多

ORA-06114:NETTCP:SID查找失败

ORA-06115:NETTCP:无法创建ORACLE逻辑值

ORA-06116:NETTCP:无法创建ORASRV进程

ORA-06117:NETTCP:无法创建ORASRV:超出限量

ORA-06118:NETTCP:无法完成与ORASRV的信号交换

ORA-06119:NETTCP:伪客户请求

ORA-06120:NETTCP:未加载网络驱动程序

ORA-06121:NETTCP:访问失败

ORA-06122:NETTCP:设置失败

ORA-06123:NETTCP:无法设置KEEPALIVE

ORA-06124:NETTCP:等待ORASRV超时

ORA-06125:NETTCP:ORASRV意外退出

ORA-06126:NETTCP:ORASRV无法打开网络连接

ORA-06127:NETTCP:无法更改用户名

ORA-06128:NETTCP:无法创建邮箱

ORA-06129:NETTCP:无法将套接所有权转移给ORASRV

ORA-06130:NETTCP:主机访问被拒绝

ORA-06131:NETTCP:用户访问被拒绝

ORA-06132:NETTCP:访问被拒绝,口令错误

ORA-06133:NETTCP:未找到文件

ORA-06134:NETTCP:违反文件访问权限

ORA-06135:NETTCP:拒绝连接;服务器停止

ORA-06136:NETTCP:连接信号交换过程中出错

ORA-06137:NETTCP:连接信号交换过程中出错

ORA-06138:NETTCP:连接信号交换过程中出错

ORA-06140:NETTCP:没有这样的用户

ORA-06141:NETTCP:用户没有权限

ORA-06142:NETTCP:获得用户信息时出错

ORA-06143:NETTCP:超出最大连接数

ORA-06144:NETTCP:SID(数据库)不可用

ORA-06145:NETTCP:无法启动ORASRV:未安装图象

ORA-06200:TWOTASK:连接失败,无法创建邮箱

ORA-06201:TWOTASK:连接失败,无法连接邮箱

ORA-06202:TWOTASK:连接失败,无法生成ORASRV进程

ORA-06203:TWOTASK:连接失败,信号交换失败

ORA-06204:TWOTASK:连接失败,无法访问ORASRV2.COM

ORA-06205:TWOTASK:连接失败,无法创建逻辑名

ORA-06206:TWOTASK:信息接收失败

ORA-06207:TWOTASK:信息发送失败

ORA-06208:TWOTASK:无效的注册(连接)字符串

ORA-06209:TWOTASK:连接失败,邮箱已经存在

ORA-06210:TWOTASK:连接失败,ORASRV意外退出

ORA-06211:TWOTASK:连接失败,等待ORASRV超时

ORA-06212:TWOTASK:连接失败,逻辑名称表已满

ORA-06213:TWOTASK:连接失败

ORA-06214:TWOTASK:连接失败,没有足够的限量来创建ORASRV

ORA-06215:TWOTASK:连接失败,未安装ORASRV保护图象

ORA-06216:TWOTASK:连接失败,无法找到ORASRV图象文件

ORA-06250:NETNTT:无法分配发送和接收缓冲区

ORA-06251:NETNTT:无法转换地址文件名

ORA-06252:NETNTT:无法打开地址文件

ORA-06253:NETNTT:无法从地址文件读取参数

ORA-06254:NETNTT:无法共享立方结构的连接

ORA-06255:NETNTT:无法读取远程进程的pid

ORA-06256:NETNTT:远程分叉失败

ORA-06257:NETNTT:无法发送命令行到影象进程

ORA-06258:NETNTT:无法分配上下文区域

ORA-06259:NETNTT:无法读取远程进程

ORA-06260:NETNTT:无法写入远程进程

ORA-06261:NETNTT:nrange()失败

ORA-06262:NETNTT:nfconn()失败

ORA-06263:NETNTT:pi_connect中的内存不足

ORA-06264:NETNTT:数据协议错误

ORA-06265:NETNTT:中断协议错误

ORA-06266:NETNTT:错误的写入长度

ORA-06267:NETNTT:错误的状态

ORA-06268:NETNTT:无法读取/etc/oratab

ORA-06300:IPA:无法断开连接

ORA-06301:IPA:无法分配驱动程序上下文

ORA-06302:IPA:无法连接到远程主机

ORA-06303:IPA:信息发送错误

ORA-06304:IPA:信息接收错误

ORA-06305:IPA:非法的信息类型

ORA-06306:IPA:信息写入长度错误

ORA-06307:IPA:无法重置连接

ORA-06308:IPA:没有其它可用连接

ORA-06309:IPA:没有可用的信息队列

ORA-06310:IPA:未设置环境变量

ORA-06311:IPA:达到了最大的服务器数

ORA-06312:IPA:提供了错误的输出服务名

ORA-06313:IPA:无法初始化共享内存

ORA-06314:IPA:事件设置失败

ORA-06315:IPA:无效的连接字符串

ORA-06316:IPA:无效的数据库SID

ORA-06317:IPA:超出本地最大用户数

ORA-06318:IPA:超出本地最大连接数

ORA-06319:IPA:超出远程最大用户数

ORA-06320:IPA:超出远程最大连接数

ORA-06321:IPA:无法到达远程端

ORA-06322:IPA:致命的共享内存错误

ORA-06323:IPA:子句事件错误

ORA-06400:NETCMN:未指定默认的主机字符串

ORA-06401:NETCMN:无效的驱动程序指示符

ORA-06402:NETCMN:接收中断信息时出错

ORA-06403:无法分配内存

ORA-06404:NETCMN:无效的注册(连接)字符串

ORA-06405:NETCMN:重置协议错误

ORA-06406:NETCMN:发送中断信号时出错

ORA-06407:NETCMN:无法设置中断处理环境

ORA-06408:NETCMN:信息格式不正确

ORA-06413:连接未打开

ORA-06416:NETCMN:测试出错

ORA-06419:NETCMN:服务器无法启动oracle

ORA-06420:NETCMN:SID查找失败

ORA-06421:NETCMN:读入数据时检测到错误

ORA-06422:NETCMN:发送数据时出错

ORA-06423:NETCMN:接收数据时出错

ORA-06430:ssaio:Seals不匹配

ORA-06431:ssaio:无效的块号

ORA-06432:ssaio:缓冲区没有对齐

ORA-06433:ssaio:LSEEK错误,无法找到要求的块

ORA-06434:ssaio:读错误,无法从数据库文件读取请求的块

ORA-06435:ssaio:写错误,无法将请求块写入数据库文件

ORA-06436:ssaio:异步I/O因错误参数而失败

ORA-06437:ssaio:异步写无法写入数据库文件

ORA-06438:ssaio:异步读无法从数据库文件读取

ORA-06439:ssaio:异步写返回了错误的字节数

ORA-06440:ssaio:异步读返回了错误的字节数

ORA-06441:ssvwatev:传递给函数调用的参数错误

ORA-06442:ssvwatev:由于出现未预期的错误编号而失败。

ORA-06443:ssvpstev:传递给函数调用的参数错误

ORA-06444:ssvpstev:由于出现未预期的错误编号而失败

ORA-06445:ssvpstevrg:传递给函数调用的参数错误

ORA-06446:ssvpstevrg:由于出现未预期的错误编号而失败。

ORA-06447:ssvpstp:传递给函数调用的参数错误

ORA-06448:ssvpstp:由于出现未预期的错误编号而失败

ORA-06449:未安装列表IO或sysvendor

ORA-06500:PL/SQL:存储错误

ORA-06501:PL/SQL:程序错误

ORA-06502:PL/SQL:数字或值错误

ORA-06503:PL/SQL:函数未返回值

ORA-06504:PL/SQL:结果集变量或查询的返回类型不匹配

ORA-06505:PL/SQL:变量要求多于32767字节的连续内存

ORA-06508:PL/SQL:无法在调用之前找到程序单元

ORA-06509:PL/SQL:此程序包缺少ICD向量

ORA-06510:PL/SQL:无法处理的用户自定义异常事件

ORA-06511:PL/SQL:游标已经打开

ORA-06512:在line

ORA-06513:PL/SQL:主语言数组的PL/SQL表索引超出范围

ORA-06514:PL/SQL:服务器无法处理远程调用

ORA-06515:PL/SQL:无法处理的异常事件

ORA-06516:PL/SQL:Probe程序包不存在或无效

ORA-06517:PL/SQL:Probe错误-

ORA-06518:PL/SQL:Probe版本与版本不兼容

ORA-06519:检测到活动的自治事务处理,已经回退

ORA-06520:PL/SQL:加载外部库时出错

ORA-06521:PL/SQL:映射函数时出错

ORA-06522:

ORA-06523:参数个数超出上限

ORA-06524:不受支持的选项:

ORA-06525:长度与CHAR或RAW数据不匹配

ORA-06526:无法加载PL/SQL库

ORA-06527:外部过程SQLLIB错误:

ORA-06528:正在执行PL/SQL配置程序时出错

ORA-06529:版本不匹配-PL/SQL配置程序

ORA-06530:引用未初始化的组合

ORA-06531:引用未初始化的收集

ORA-06532:下标超出限制

ORA-06533:下标超出数量

ORA-06534:无法访问触发器上下文中的SeriallyReusable程序包

ORA-06535:中的语句字符串为NULL或长度为零

ORA-06536:IN关联变量关联到OUT位置

ORA-06537:OUT关联变量关联到IN位置

ORA-06538:语句违反RESTRICT_REFERENCES编译指示

ORA-06539:OPEN的目标必须是查询

ORA-06540:PL/SQL:编译错误

ORA-06541:PL/SQL:编译错误-编译中止

ORA-06542:PL/SQL:执行错误

ORA-06543:PL/SQL:执行错误-执行中止

ORA-06544:PL/SQL:内部错误,参数:[],[],[],[],[],[],[],[]

ORA-06545:PL/SQL:编译错误-编译中止

ORA-06546:DDL语句在非法的上下文中执行

ORA-06547:INSERT,UPDATE,或DELETE语句必须使用RETURNING子句

ORA-06548:不再需要更多的行

ORA-06549:PL/SQL:未能动态打开共享对象(DLL):

ORA-06550:第行,第列:

ORA-06551:PL/SQL:无法处理的异常事件

ORA-06552:PL/SQL:

ORA-06553:PLS-:

ORA-06554:必须在使用PL/SQL之前创建DBMS_STANDARD

ORA-06555:此名称当前保留给SYS用户使用

ORA-06556:管道为空,无法实现unpack_message请求

ORA-06557:管道icd's任何参数均不允许为空值

ORA-06558:dbms_pipe程序包中的缓冲区已满。不允许更多的项目

ORA-06559:请求的数据类型错误,实际数据类型为

ORA-06560:pos为负或大于缓冲区大小

ORA-06561:程序包DBMS_SQL不支持给定的语句

ORA-06562:输出参数的类型必须与列或赋值变量的类型匹配

ORA-06563:指定的顶层过程/函数不能具有子项目

ORA-06564:对象不存在

ORA-06565:无法从存储过程中执行

ORA-06566:指定的行数无效

ORA-06567:指定的值数无效

ORA-06568:调用了废弃的ICD过程

ORA-06569:通过bind_array赋值关联的集不包含任何元素

ORA-06570:共享池对象不存在,无法插入

ORA-06571:函数不能保证不更新数据库

ORA-06572:函数具有输出参数

ORA-06573:函数修改程序包的状态,无法在此处使用

ORA-06574:函数引用程序包的状态,无法远程执行

ORA-06575:程序包或函数处于无效状态

ORA-06576:不是有效的函数或过程名

ORA-06577:输出参数不是关联变量

ORA-06578:输出参数不能为重复关联

ORA-06580:在内存保留大容量的行时散列连接将内存用尽

ORA-06592:执行CASE语句时未找到CASE

ORA-06593:本地编译的PL/SQL模块不支持

ORA-06600:LU6.2驱动程序:未加载SNA软件

ORA-06601:LU6.2驱动程序:无效的数据库ID字符串

ORA-06602:LU6.2驱动程序:分配上下文区域时出错

ORA-06603:LU6.2驱动程序:分配内存时出错

ORA-06604:LU6.2驱动程序:无法分配与远程LU的会话

ORA-06605:LU6.2驱动程序:未预期的行转向

ORA-06606:LU6.2驱动程序:从SNA获得未预期的响应

ORA-06607:LU6.2驱动程序:发送状态下出现重置

ORA-06608:LU6.2驱动程序:接收状态下出现重置

ORA-06610:LU6.2驱动程序:撤消分配失败

ORA-06611:LU6.2驱动程序:请求发送错误

ORA-06612:LU6.2驱动程序:发送数据错误

ORA-06613:LU6.2驱动程序:接收和等待错误

ORA-06614:LU6.2驱动程序:立即接收错误

ORA-06615:LU6.2驱动程序:发送错误

ORA-06616:LU6.2驱动程序:无法连接到LU

ORA-06617:LU6.2驱动程序:无法连接到PU

ORA-06618:LU6.2驱动程序:子网络启动失败

ORA-06619:LU6.2驱动程序:无法激活远程伙伴

ORA-06620:LU6.2驱动程序:无效的远程伙伴

ORA-06621:LU6.2驱动程序:分配错误

ORA-06622:LU6.2驱动程序:无法连接到SNA

ORA-06700:TLI驱动程序:来自主机的错误信息类型

ORA-06701:TLI驱动程序:写入的字节数错误

ORA-06702:TLI驱动程序:无法分配上下文区域

ORA-06703:TLI驱动程序:发送中断信息失败

ORA-06704:TLI驱动程序:接收中断信息失败

ORA-06705:TLI驱动程序:未知的远程节点

ORA-06706:TLI驱动程序:未找到服务(程序)

ORA-06707:TLI驱动程序:连接失败

ORA-06708:TLI驱动程序:信息接收失败

ORA-06709:TLI驱动程序:信息发送失败

ORA-06710:TLI驱动程序:发送停止中断信息失败

ORA-06711:TLI驱动程序:赋值出错

ORA-06712:TLI驱动程序:接受出错

ORA-06713:TLI驱动程序:连接出错

ORA-06720:TLI驱动程序:SID查找失败

ORA-06721:TLI驱动程序:伪客户请求

ORA-06722:TLI驱动程序:创建设置失败

ORA-06730:TLI驱动程序:无法打开'克隆'设备

ORA-06731:TLI驱动程序:无法分配t_call

ORA-06732:TLI驱动程序:无法分配t_discon

ORA-06733:TLI驱动程序:无法接收断开信息

ORA-06734:TLI驱动程序:无法连接

ORA-06735:TLI驱动程序:客户机无法关闭错误的连接

ORA-06736:TLI驱动程序:服务器没有运行

ORA-06737:TLI驱动程序:连接失败

ORA-06741:TLI驱动程序:无法打开协议设备

ORA-06742:TLI驱动程序:无法分配t_bind

ORA-06743:TLI驱动程序:无法分配t_bind

ORA-06744:TLI驱动程序:监听器无法赋值

ORA-06745:TLI驱动程序:监听器已经运行

ORA-06746:TLI驱动程序:无法分配t_call

ORA-06747:TLI驱动程序:收听出错

ORA-06748:TLI驱动程序:无法分配t_discon

ORA-06749:TLI驱动程序:选项不允许在网络之间使用

ORA-06750:TLI驱动程序:同步失败

ORA-06751:TLI驱动程序:关联地址不相同

ORA-06752:TLI:信号设置错误

ORA-06753:TLI驱动程序:名称对地址映射失败

ORA-06754:TLI驱动程序:无法获得本地主机地址

ORA-06755:TLI驱动程序:无法关闭传输终点

ORA-06756:TLI驱动程序:无法打开oratab

ORA-06757:TLI驱动程序:服务器收到错误命令

ORA-06760:TLI驱动程序:顺序读释放超时

ORA-06761:TLI驱动程序:顺序发送释放出错

ORA-06762:TLI驱动程序:顺序读释放出错

ORA-06763:TLI驱动程序:发送断开出错

ORA-06764:TLI驱动程序:读断开出错

ORA-06765:TLI驱动程序:顺序等待释放出错

ORA-06766:TLI驱动程序:无法在释放过程中关闭

ORA-06767:TLI驱动程序:无法在释放过程中分配

ORA-06770:TLI驱动程序:发送版本出错

ORA-06771:TLI驱动程序:读版本出错

ORA-06772:TLI驱动程序:发送命令出错

ORA-06773:TLI驱动程序:读命令出错

ORA-06774:TLI驱动程序:发送中断模式出错

ORA-06775:TLI驱动程序:读中断模式出错

ORA-06776:TLI驱动程序:发送参数出错

ORA-06777:TLI驱动程序:读参数出错

ORA-06778:TLI驱动程序:发送ccode出错

ORA-06779:TLI驱动程序:读ccode出错

ORA-06780:TLI驱动程序:发送错误代码失败

ORA-06781:TLI驱动程序:读处理字符串出错

ORA-06790:TLI驱动程序:轮询失败

ORA-06791:TLI驱动程序:轮询返回错误事件

ORA-06792:TLI驱动程序:服务器无法执行oracle

ORA-06793:TLI驱动程序:服务器无法创建新的进程

ORA-06794:TLI驱动程序:影象进程无法检索协议信息

ORA-06800:TLI驱动程序:SQL*NetSPX客户机在重新连接时丢失

ORA-06801:TLI驱动程序:收听SPX服务器重新连接失败

ORA-06802:TLI驱动程序:无法打开/etc/netware/yellowpages文件

ORA-06803:TLI驱动程序:无法打开IPX设备文件

ORA-06804:TLI驱动程序:初始化时无法对IPX地址赋值

ORA-06805:TLI驱动程序:无法为SPX发送SAP数据包

ORA-06806:TLI驱动程序:无法完成SPX的协议初始化

ORA-06807:TLI驱动程序:无法打开以太网设备驱动程序文件

ORA-06808:TLI驱动程序:无法链接IPX和以太网流

ORA-06809:TLI驱动程序:初始化时无法清除IPX以太网SAP

ORA-06810:TLI驱动程序:初始化时无法设置IPX以太网SAP

ORA-06811:TLI驱动程序:初始化时无法设置IPX以太网编号

ORA-06812:TLI驱动程序:无法读取以太网驱动程序的节点地址

ORA-06813:TLI驱动程序:以太网配置地址错误

ORA-06814:TLI驱动程序:无法打开SPX设备文件

ORA-06815:TLI驱动程序:无法链接SPX和IPX流

ORA-06816:TLI驱动程序:无法设置SPXSAP地址

ORA-06817:TLI驱动程序:无法读取Novell网络地址

ORA-06900:CMX:无法读取tns目录

ORA-06901:CMX:本地应用程序未指定本地名

ORA-06902:CMX:无法连接到cmx子系统

ORA-06903:CMX:无法读取远程应用程序的传输地址

ORA-06904:CMX:远程应用程序没有可用的传输地址

ORA-06905:CMX:连接错误

ORA-06906:CMX:无法从CMX获得最大的程序包大小

ORA-06907:CMX:连接确认过程中出错

ORA-06908:CMX:传送ORACLE_SID过程中出错

ORA-06909:CMX:确认ORACLE_SID过程中出错

ORA-06910:CMX:无法启动远程设备的oracle进程

ORA-06911:CMX:t_event返回ERROR

ORA-06912:CMX:datarq中写出错

ORA-06913:CMX:连接重定向过程中出错

ORA-06914:CMX:启动oracle过程中的意外事件

ORA-06915:CMX:datarq中的未知t_event

ORA-06916:CMX:数据读出错(t_datain)

ORA-06917:CMX:数据读出错(读取字节数过多)

ORA-06918:CMX:等待读事件过程中的T_NOEVENT

ORA-06919:CMX:写请求过程中出错(未知事件)

ORA-06920:CMX:getbrkmsg非法数据类型

ORA-06921:CMX:getdatmsg非法数据类型

ORA-06922:CMX:错误的写长度

ORA-06923:CMX:非法的中断条件

ORA-06924:CMX:错误的中断信息长度

ORA-06925:CMX:连接请求过程中断开

ORA-06926:CMX:读数据过程中的T_ERROR

ORA-06927:CMX:在写入所有数据之前收到T_DATAIN

ORA-06928:CMX:错误的ORACLE_SID

ORA-06929:CMX:发送ORACLE_SID时出错

ORA-06930:CMX:检查ORACLE_SID时出错

ORA-06931:CMX:服务器read_properties过程中出错

ORA-06932:CMX:本地名错误

ORA-06933:CMX:连接过程中出错

ORA-06950:没有错误

ORA-06951:操作系统调用错误

ORA-06952:通信的远程端发送了一个forward-reset程序包

ORA-06953:没有足够的虚拟内存

ORA-06954:非法的文件名

ORA-06955:数据库服务器数超出限制

ORA-06956:无法获得本地主机名

ORA-06957:当前没有可用SID

ORA-06958:无法访问配置文件

ORA-06959:缓冲区I/O限量过小

ORA-06960:无法访问日志文件

ORA-06961:没有足够的权限来尝试操作

ORA-06970:X.25驱动程序:远程主机未知

ORA-06971:X.25驱动程序:接收数据时出错

ORA-06972:X.25驱动程序:发送数据时出错

ORA-06973:X.25驱动程序:无效的缓冲区大小

ORA-06974:X.25驱动程序:SID查找失败

ORA-06975:X.25驱动程序:无法连接到主机

ORA-06976:X.25驱动程序:终端创建失败

ORA-06977:X.25驱动程序:X.25级别2失败

ORA-06978:X.25驱动程序:回调尝试过多

ORA-06979:X.25驱动程序:服务器无法启动oracle

ORA-07200:slsid:未设置oracle_sid

ORA-07201:slhom:环境中未设置oracle_home变量

ORA-07202:sltln:sltln的参数无效

ORA-07203:sltln:尝试转换long环境变量

ORA-07204:sltln:由于缺少输出缓冲区空间而导致名称转换失败

ORA-07205:slgtd:时间错误,无法获得时间

ORA-07206:slgtd:gettimeofday错误,无法获得时间

ORA-07207:sigpidu:进程ID字符串溢出内部缓冲区

ORA-07208:sfwfb:无法刷新分配给磁盘的污损缓冲区

ORA-07209:sfofi:超出文件大小限制

ORA-07210:slcpu:getrusage错误,无法获得cpu时间

ORA-07211:slgcs:gettimeofday错误,无法获得时钟

ORA-07212:slcpu:时间错误,无法获得cpu时间

ORA-07213:slgcs:时间错误,无法获得时钟

ORA-07214:slgunm:uname错误,无法获得系统信息

ORA-07215:slsget:getrusage错误

ORA-07216:slghst:gethostname错误,无法获得当前主机名

ORA-07217:sltln:无法对环境变量求值

ORA-07218:slkhst:无法执行主机操作

ORA-07219:slspool:无法分配假脱机程序参数缓冲区

ORA-07220:slspool:等待错误

ORA-07221:slspool:执行出错,无法启动假脱机程序

ORA-07222:slspool:行打印机假脱机程序命令因错误而退出

ORA-07223:slspool:分叉错误,无法生成假脱机进程

ORA-07224:sfnfy:无法获得文件大小限制;错误号=

ORA-07225:sldext:转换错误,无法展开文件名

ORA-07226:rtneco:无法获得终端模式

ORA-07227:rtneco:无法设置非回送模式

ORA-07228:rtecho:无法将终端还原为回送模式

ORA-07229:slcpuc:获得CPUS数时出错

ORA-07230:slemcr:fopen错误,无法打开错误文件

ORA-07231:slemcc:无效的文件句柄,关闭记号不匹配

ORA-07232:slemcc:fclose错误

ORA-07233:slemcw:无效的文件句柄,关闭记号不匹配

ORA-07234:slemcw:fseek错误

ORA-07235:slemcw:fwrite错误

ORA-07236:slemop:打开错误

ORA-07237:slemcl:无效的文件句柄,关闭记号不匹配

ORA-07238:slemcl:关闭错误

ORA-07239:slemrd:无效的文件句柄,关闭记号不匹配

ORA-07240:slemrd:查找错误

ORA-07241:slemrd:读错误

ORA-07242:slembfn:转换错误,无法转换错误文件名

ORA-07243:所提供的缓冲区不足以容纳整行

ORA-07244:ssfccf:创建文件失败,已达文件大小的极限

ORA-07245:sfccf:无法定位和写入最后块

ORA-07246:sfofi:打开错误,无法打开数据库文件

ORA-07247:sfrfb:读错误,无法从数据库文件读取请求的块

ORA-07248:sfwfb:写错误,无法写入数据库块

ORA-07249:slsget:打开错误,无法打开/proc/pid

ORA-07250:spcre:semget错误,无法获得第一个信号集

ORA-07251:spcre:semget错误,无法分配任何信号

ORA-07252:spcre:semget错误,无法分配任何信号

ORA-07253:spdes:semctl错误,无法消除信号集

ORA-07254:spdcr:扩展?/bin/oracle时出现转换错误

ORA-07255:spini:无法设置信号处理程序

ORA-07256:sptrap:无法设置信号处理程序来捕捉例外信息

ORA-07257:spdcr:展开程序名时出现转换错误

ORA-07258:spdcr:分叉错误,无法创建进程

ORA-07259:spdcr:执行错误,无法在启动过程中分离进程

ORA-07260:spdcr:等待错误

ORA-07261:spdde:删去错误,无法向进程发送信号

ORA-07262:sptpa:使用无效的进程标识调用sptpa

ORA-07263:sptpa:删去错误

ORA-07264:spwat:Semop错误,无法减少信号

ORA-07265:sppst:semop错误,无法增大信号

ORA-07266:sppst:传送给sppst的进程号无效

ORA-07267:spwat:无效的进程号

ORA-07268:szguns:getpwuid错误

ORA-07269:spdcr:分离进程在执行以后停止

ORA-07270:spalck:setitimer错误,无法设置间隔定时器

ORA-07271:spwat:无效的oracle进程号

ORA-07272:spwat:无效的信号集标识

ORA-07273:sppst:无效的信号标识

ORA-07274:spdcr:访问错误,访问oracle被拒绝

ORA-07275:无法发送信号给进程

ORA-07276:/etc/group中没有dba组

ORA-07277:spdde:作为参数传送的pid非法

ORA-07278:splon:ops$username超出缓冲区长度

ORA-07279:spcre:semget错误,无法获得第一个信号集

ORA-07280:slsget:无法获得进程信息

ORA-07281:slsget:时间错误,无法获得cpu时间

ORA-07282:sksaprd:字符串溢出

ORA-07283:sksaprd:无效的存档目标卷大小

ORA-07284:sksaprd:卷大小说明未正常结束

ORA-07285:sksaprd:不应为磁盘文件指定卷大小

ORA-07286:sksagdi:无法获得设备信息

ORA-07287:sksagdi:不支持的日志存档设备

ORA-07290:sksagdi:指定的存档目录不存在

ORA-07303:ksmcsg:非法的数据库缓冲区大小

ORA-07304:ksmcsg:非法的重做缓冲区大小

ORA-07305:ksmcsg:非法的数据库缓冲区大小

ORA-07324:smpall:分配pga时出现malloc错误

ORA-07327:smpdal:尝试在未映射的情况下消除pga

ORA-07339:spcre:超出最大信号集数

ORA-07345:数据文件名不能包含字符串'..'.

ORA-07390:sftopn:转换错误,无法转换文件名

ORA-07391:sftopn:fopen错误,无法打开文本文件

ORA-07392:sftcls:fclose错误,无法关闭文本文件

ORA-07393:无法删除文本文件

ORA-07394:无法将字符串附加到文本文件

ORA-07400:slemtr:信息文件的转换名过长

ORA-07401:sptrap:无法恢复用户异常处理程序

ORA-07402:sprst:无法恢复用户信号处理程序

ORA-07403:sfanfy:无效的db_writers参数

ORA-07404:sfareq:等待请求完成时出现超时

ORA-07406:slbtpd:无效的编号

ORA-07407:slbtpd:无效的指数

ORA-07408:slbtpd:转换为压缩十进制时溢出

ORA-07409:slpdtb:无效的压缩十进制半字节

ORA-07410:slpdtb:提供的缓冲区数字过大

ORA-07411:slgfn:提供的缓冲区的全路径名过大

ORA-07412:sfaslv:无法获得异步写数组中的条目

ORA-07415:slpath:无法分配内存缓冲区

ORA-07416:slpath:路径名构造失败;缺少输出缓冲区空间

ORA-07417:sfareq:一个或多个数据库写入程序处于不活动状态

ORA-07418:sfareq:数据库写入程序在调用定时函数时出错

ORA-07419:sfareq:数据库写入程序在调用定时函数时出错

ORA-07425:sdpri:转换转储文件位置时出错

ORA-07426:spstp:无法获得dbs目录的位置

ORA-07427:spstp:无法更改目录为dbs

ORA-07431:分叉失败

ORA-07432:无法执行嵌套静止

ORA-07440:WMON进程因错误而终止

ORA-07441:函数地址必须在字节边界上对齐

ORA-07442:函数地址必须在范围到中

ORA-07443:未找到函数

ORA-07444:函数地址不可读

ORA-07445:出现异常:核心转储[][][][][][]

ORA-07446:sdnfy:''值(参数)错误

ORA-07447:ssarena:usinit失败

ORA-07448:ssarena:超出最大共享区域数

ORA-07449:sc:usnewlock失败

ORA-07451:slskstat:无法获得加载信息。

ORA-07452:数据字典中不存在指定的资源管理器计划

ORA-07453:请求的资源管理器计划方案不包含OTHER_GROUPS

ORA-07454:队列超时,已超过秒

ORA-07455:估计执行时间(秒)超出了限制(秒)

ORA-07456:数据库关闭时不能设置RESOURCE_MANAGER_PLAN

ORA-07468:spwat:mset错误,无法设置信号。

ORA-07469:sppst:mclear错误,无法清除信号

ORA-07470:snclget:无法获得群集号

ORA-07471:snclrd:转换sgadef.dbf文件名时出错

ORA-07472:snclrd:打开sgadef.dbf文件时出错

ORA-07473:snclrd:尝试读sgadef.bdf文件时出现读错误

ORA-07474:snclrd:关闭错误,无法关闭sgadef.dbf文件

ORA-07475:slsget:无法获得虚拟内存统计信息

ORA-07476:slsget:无法获得映射内存统计信息

ORA-07477:scgcmn:未初始化锁定管理程序

ORA-07478:scgcmn:无法获得锁定状态

ORA-07479:scgcmn:无法打开或转换锁定

ORA-07480:snchmod:无法更改?/dbs/sgalm.dbf的存取许可

ORA-07481:snlmatt:无法连接到锁定管理程序例程

ORA-07482:snlmini:无法创建锁定管理程序例程

ORA-07483:snlkget:无法转换(获得)锁定

ORA-07484:snlkput:无法转换(设置)锁定

ORA-07485:scg_get_inst:无法打开例程号锁定

ORA-07486:scg_get_inst:无法转换(获得)例程号锁定

ORA-07487:scg_init_lm:无法创建锁定管理程序例程

ORA-07488:scgrcl:未初始化锁定管理程序

ORA-07489:scgrcl:无法获得锁定状态

ORA-07490:scgrcl:无法转换锁定

ORA-07491:scgrcl:无法取消锁定请求

ORA-07492:scgrcl:无法关闭锁定

ORA-07493:scgrcl:锁定管理程序错误

ORA-07494:scgcm:未预期的错误

ORA-07495:spwat:lm_wait失败

ORA-07496:sppst:lm_post失败

ORA-07497:sdpri:无法创建跟踪文件'';错误号=

ORA-07498:spstp:无法打开/dev/resched

ORA-07499:spglk:无法重新计划

ORA-07500:scglaa:$cantim返回未预期的值

ORA-07501:scgtoa:$deq返回未预期的值

ORA-07502:scgcmn:$enq返回未预期的值

ORA-07503:scgcmn:$setimr返回未预期的值

ORA-07504:scgcmn:$hiber返回未预期的值

ORA-07505:scggt:$enq父项锁定返回未预期的值

ORA-07506:scgrl:$deq在锁定标识返回未预期的值

ORA-07507:scgcm:未预期的锁定状态条件

ORA-07508:scgfal:$deq全部返回未预期的值

ORA-07509:scgfal:$deq父项锁定返回未预期的值

ORA-07510:scgbrm:$getlki在锁定标识返回未预期的值

ORA-07511:sscggtl:$enq为主终端锁定返回未预期的值

ORA-07512:sscggtl:$enq为客户机终端锁定返回未预期的值

ORA-07513:sscgctl:$deq在取消终端锁定时返回未预期的值

ORA-07514:scgcan:$deq在取消锁定时返回未预期的值

ORA-07534:scginq:$getlki在锁定标识返回未预期的值

ORA-07548:sftopn:已经打开最大文件数

ORA-07549:sftopn:$OPEN失败

ORA-07550:sftopn:$CONNECT失败

ORA-07551:sftcls:$CLOSE失败

ORA-07552:sftget:$GET失败

ORA-07561:szprv:$IDTOASC失败

ORA-07562:sldext:扩展名必须是3个字符

ORA-07563:sldext:$PARSE失败

ORA-07564:sldext:文件名或扩展名中的通配符

ORA-07565:sldext:$SEARCH失败

ORA-07568:slspool:$OPEN失败

ORA-07569:slspool:$CLOSE失败

ORA-07570:szrfc:$IDTOASC失败

ORA-07571:szrfc:$FIND_HELD失败

ORA-07572:szrfc:角色名缓冲区空间不足

ORA-07573:slkhst:无法执行主机操作

ORA-07574:szrfc:$GETUAI失败

ORA-07576:sspexst:进程ID上的$GETJPIW失败

ORA-07577:权限文件中没有这样的用户

ORA-07578:szprv:$FIND_HELD失败

ORA-07579:spini:$DCLEXH失败

ORA-07580:spstp:$GETJPIW失败

ORA-07581:spstp:无法从未预期的进程名导出SID

ORA-07582:spstp:ORA_SID具有非法值

ORA-07584:spdcr:ORA_sid_(proc_)PQL$_item的值无效

ORA-07585:spdcr:$PARSE失败

ORA-07586:spdcr:$SEARCH失败

ORA-07587:spdcr:$CREPRC失败

ORA-07588:spdcr:$GETJPIW无法获得图象名

ORA-07589:spdde:未设置系统ID

ORA-07590:spdde:$DELPRC失败

ORA-07591:spdde:$GETJPIW失败

ORA-07592:sspgprv:获得请求权限时出错

ORA-07593:ssprprv:释放权限出错

ORA-07594:spiip:$GETJPIW失败

ORA-07595:sppid:$GETJPIW失败

ORA-07596:sptpa:$GETJPIW失败

ORA-07597:spguns:$GETJPIW失败

ORA-07598:spwat:$SETIMR失败

ORA-07599:spwat:$SCHDWK失败

ORA-07600:slkmnm:$GETSYIW失败

ORA-07601:spguno:$GETJPIW失败

ORA-07602:spgto:$GETJPIW失败

ORA-07605:szprv:$ASCTOID失败

ORA-07606:szprv:$CHKPRO失败

ORA-07607:szaud:$SNDOPR失败

ORA-07608:szprv:$GETUAI失败

ORA-07609:szprv:$HASH_PASSWORD失败

ORA-07610:$GETJPIW无法检索用户MAC权限

ORA-07612:$GETUAI无法检索用户清除层

ORA-07613:$GETJPIW无法检索用户进程标记

ORA-07614:$CHANGE_CLASS无法检索用户进程标记

ORA-07615:$CHANGE_CLASS无法检索指定的文件标记

ORA-07616:$CHANGE_CLASS无法检索指定的设备标记

ORA-07617:$FORMAT_CLASS无法转换双字节标记为字符串

ORA-07618:$IDTOASC无法转换秘密层

ORA-07619:$IDTOASC无法转换完整层

ORA-07620:smscre:非法的数据库块大小

ORA-07621:smscre:非法的重做块大小

ORA-07622:smscre:$CREATE失败

ORA-07623:smscre:$CRMPSC失败

ORA-07624:smsdes:$DGBLSC失败

ORA-07625:smsget:$MGBLSC失败

ORA-07626:smsget:sga已经映射

ORA-07627:smsfre:$CRETVA失败

ORA-07628:smsfre:sga未映射

ORA-07629:smpall:$EXPREG失败

ORA-07630:smpdal:$DELTVA失败

ORA-07631:smcacx:$EXPREG失败

ORA-07632:smsrcx:$DELTVA失败

ORA-07633:smsdbp:非法的保护值

ORA-07634:smsdbp:$CRETVA失败

ORA-07635:smsdbp:$SETPRT失败

ORA-07636:smsdbp:$MGBLSC失败

ORA-07637:smsdbp:创建sga时未指定缓冲区保护选项

ORA-07638:smsget:SGA填充区大小不足以创建SGA

ORA-07639:smscre:SGA填充区不够大(要求字节)

ORA-07640:smsget:SGA尚未生效。初始化在进行中

ORA-07641:smscre:无法使用SGA系统分页文件

ORA-07642:smprtset:$CMKRNL失败

ORA-07643:smsalo:SMSVAR无效

ORA-07645:sszfsl:$CHANGE_CLASS失败

ORA-07646:sszfck:$CREATE失败

ORA-07647:sszfck:$OPEN失败

ORA-07650:sigunc:$GETJPIW失败

ORA-07655:slsprom:$TRNLOG失败

ORA-07656:slsprom:$GETDVI失败

ORA-07657:slsprom:$ASSIGN失败

ORA-07658:slsprom:$QIOW读失败

ORA-07665:ssrexhd:出现递归异常

ORA-07670:$IDTOASC无法转换秘密类别

ORA-07671:$IDTOASC无法转换完整类别

ORA-07672:$PARSE_CLASS无法转换字符串为双字节标记

ORA-07680:sou2os:当前正在执行另一ORACLE调用

ORA-07681:sou2os:初始化Oracle时出错

ORA-07682:sou2os:设置内核调度失败

ORA-07683:sou2os:$SETPRV重置错误

ORA-07684:sou2os:管理堆栈重置错误

ORA-07685:sou2os:管理堆栈设置错误

ORA-07700:sksarch:收到中断(信号)

ORA-07701:sksatln:内部异常:输出缓冲区过小

ORA-07702:存档文本中存在不可识别的设备类型

ORA-07703:存档文本中出错:设备类型后面需要'/'

ORA-07704:存档文本中出错:设备名后面需要':'

ORA-07705:sksaprs:设备名缓冲区过小

ORA-07706:存档文本中出错:需要磁盘文件名

ORA-07707:存档文本中出错:需要磁带标记名

ORA-07708:sksaprs:磁带标记名缓冲区过小

ORA-07709:sksaprs:不允许存档到远程主机

ORA-07710:sksaprs:文件名缓冲区过小

ORA-07713:sksamtd:无法安装存档设备(SYS$MOUNT失败)

ORA-07715:sksadtd:无法卸下存档设备(SYS$DISMNT失败)

ORA-07716:sksachk:无效的ARCHIVE设备说明

ORA-07717:sksaalo:分配内存出错

ORA-07718:sksafre:释放内存出错

ORA-07721:scgcm:没有足够的OS资源来获得系统入队

ORA-07740:slemop:错误的句柄大小(编程错误)

ORA-07741:slemop:$OPEN失败

ORA-07742:slemop:$CONNECT失败

ORA-07743:slemop:错误文件属性不正确

ORA-07744:slemcl:无效的错误信息文件句柄

ORA-07745:slemcl:$CLOSE失败

ORA-07746:slemrd:无效的错误信息文件句柄

ORA-07747:slemrd:$READ失败

ORA-07750:slemcr:fopen失败

ORA-07751:slemcr:malloc失败

ORA-07753:slemcf:fseek在写之前失败

ORA-07754:slemcf:fwrite失败

ORA-07755:slemcf:fseek在读之前失败

ORA-07756:slemcf:fread失败

ORA-07757:slemcc:无效的句柄

ORA-07758:slemcw:无效的句柄

ORA-07759:slemtr:无效的目标

ORA-07760:slemtr:$open失败

ORA-07800:slbtpd:无效的编号

ORA-07801:slbtpd:无效的指数

ORA-07802:slbtpd:转换为压缩十进制时溢出

ORA-07803:slpdtb:无效的压缩十进制半字节

ORA-07804:slpdtb:提供的缓冲区编号过大

ORA-07820:sspscn:SYS$CRELNM失败

ORA-07821:sspsdn:SYS$DELLNM失败

ORA-07822:sspscm:SYS$CREMBX失败

ORA-07823:sspsqr:$QIO失败

ORA-07824:sspain:$SETIMR失败

ORA-07825:sspsck:$QIO在AST层失败

ORA-07826:sspscm:SYS$GETDVIW失败

ORA-07840:sllfop:LIB$GET_VM失败

ORA-07841:sllfop:SYS$OPEN失败

ORA-07842:sllfcl:SYS$CLOSE失败

ORA-07843:sllfcl:LIB$FREE_VM失败

ORA-07844:sllfop:LIB$GET_VM失败

ORA-07845:sllfcl:LIB$FREE_VM失败

ORA-07846:sllfop:字节记录对于字节用户缓冲区过大

ORA-07847:sllfop:$CONNECT失败

ORA-07848:sllfrb:$GET失败

ORA-07849:sllfsk:$GET失败

ORA-07850:sllfop:选项错误

ORA-07860:osnsoi:设置中断处理程序时出错

ORA-07880:sdopnf:内部错误

ORA-08000:超出会话序列列感表的最大数

ORA-08001:超出每个会话序列的最大数

ORA-08002:序列.CURRVAL尚未在此进程中定义

ORA-08003:序列.NEXTVAL超出内部限制

ORA-08004:序列.NEXTVALVALUE无法例程化

ORA-08005:指定的行不存在

ORA-08006:指定的行不再存在

ORA-08008:另一个例程已与USE_ROW_ENQUEUES=一起安装

ORA-08100:索引无效-请查看跟踪文件以获得诊断信息

ORA-08101:索引关键字不存在根dba,dba()

ORA-08102:未找到索引关键字,obj#,dba()

ORA-08103:对象不再存在

ORA-08104:该索引对象正在被联机建立或重建

ORA-08105:为联机索引建立Oracle事件关闭smon清除

ORA-08106:无法创建日志表.

ORA-08108:可能没有建立或重建该类型的索引联机

ORA-08109:无排序不是联机索引建立所支持的选项

ORA-08110:为联机索引建立Oracle事件测试SMON清除

ORA-08111:分区的索引不能作为整体结合

ORA-08112:组合分区不能作为整体结合

ORA-08113:组合分区索引不能压缩

ORA-08114:无法改变假索引

ORA-08115:无法联机创建/重建该索引类型

ORA-08116:无法为联机索引的建立获取足够的dml锁(S模式)

ORA-08117:“按索引组织的表”操作释放了其块定位器

ORA-08118:无法强制使用延迟的FK约束条件,索引太大()

ORA-08119:新的initrans将导致索引太大

ORA-08175:违反离散事务处理限制()

ORA-08176:一致的读错误;回退数据不可用

ORA-08177:无法连续访问此事务处理

ORA-08178:为用户INTERNAL指定的SERIALIZABLE子句非法

ORA-08179:并发性检测失败

ORA-08180:未找到基于指定时间的快照

ORA-08181:指定的编号不是有效的系统更改编号

ORA-08182:在闪回模式下操作不受支持

ORA-08183:在事务处理过程中不能启用闪回

ORA-08184:试图在闪回模式下重新启用闪回

ORA-08185:用户SYS不支持闪回

ORA-08186:指定的时间戳无效

ORA-08187:snapshotexpressionnotallowedhere

ORA-08205:ora_addr:$ORACLE_SID未在环境中设置

ORA-08206:ora_addr:无法转换地址文件名

ORA-08207:ora_addr:无法打开地址文件

ORA-08208:ora_addr:无法读地址文件

ORA-08209:scngrs:SCN尚未初始化

ORA-08210:请求的I/O错误

ORA-08230:smscre:无法分配SGA

ORA-08231:smscre:无法连接到SGA

ORA-08232:smsdes:无法从SGA分离

ORA-08233:smsdes:无法撤消映射SGA

ORA-08234:smsget:无法获得例程监听器地址

ORA-08235:smsget:监听器不在此节点上

ORA-08236:smsget:无法与监听器共享子立方结构

ORA-08237:smsget:尚未创建SGA区域

ORA-08238:smsfre:无法从SGA分离

ORA-08260:ora_addr:无法打开名服务器

ORA-08261:ora_addr:无法在名服务器中找到名称

ORA-08263:ora_addr:无法释放监听器地址

ORA-08264:ora_addr:无法关闭名服务器

ORA-08265:create_ora_addr:无法打开名服务器

ORA-08266:create_ora_addr:无法在名服务器中注册名称

ORA-08267:destroy_ora_addr:无法关闭名服务器

ORA-08268:create_ora_addr:无法关闭名服务器

ORA-08269:destroy_ora_addr:无法消除名称

ORA-08270:sksachk:非法的存档控制字符串

ORA-08271:sksabln:缓冲区大小不足以存档控制字符串

ORA-08274:环境变量的内存用尽

ORA-08275:未设置环境变量

ORA-08276:名服务器没有pid空间

ORA-08277:无法设置环境变量

ORA-08278:无法获得CPU统计信息

ORA-08308:sllfop:无法打开文件

ORA-08309:sllfop:无法fstat文件

ORA-08310:sllfop:recsize值错误

ORA-08311:sllfop:maxrecsize值错误

ORA-08312:sllfop:不可识别的处理选项

ORA-08313:sllfop:无法分配缓冲区

ORA-08314:sllfcf:关闭文件时出错

ORA-08315:sllfrb:读文件出错

ORA-08316:sllfsk:在文件中查找时出错

ORA-08317:sllfsk:在文件中查找时出错

ORA-08318:sllfsk:读文件出错

ORA-08319:sllfsk:读文件出错

ORA-08320:scnget:在scnset或scnfnd之前调用

ORA-08321:scnmin:NOTIMPLEMENTEDYET

ORA-08322:scnmin:无法打开/转换bias锁定

ORA-08323:scnmin:无法关闭bias锁定

ORA-08330:不支持打印

ORA-08331:等待操作超时

ORA-08332:指定的回退段编号''不可用

ORA-08340:nCUBE不允许使用此命令,只能使用一个线程

ORA-08341:在nCUBE,此命令只能从例程1执行

ORA-08342:sropen:无法打开重做服务器连接

ORA-08343:srclose:无法关闭重做服务器连接

ORA-08344:srapp:无法发送重做数据到重做服务器

ORA-08401:无效的编译名:

ORA-08412:WMSGBSIZ中出现错误,WMSGBLK的大小不足以发出警告信息

ORA-08413:的FORMAT参数中的编译类型无效

ORA-08414:中出现错误

ORA-08429:显示类型数据中的原始数据具有无效数字

ORA-08430:原始数据缺少前导符号

ORA-08431:原始数据缺少图片中定义的零

ORA-08432:原始数据具有无效的浮点数据

ORA-08433:转换原始数据为数字时的图片类型无效

ORA-08434:原始数据具有无效的结束符号

ORA-08435:在指定SIGNISLEADING时,PICTUREMASK缺少前导符号

ORA-08436:原始数据具有无效的符号数字

ORA-08437:图片屏蔽中的图片类型无效

ORA-08440:原始缓冲区过小以致装不下转换数据

ORA-08441:图片屏蔽中缺少右括号

ORA-08443:屏蔽选项中的BLANKWHENZERO子句有语法错误

ORA-08444:屏蔽选项中的JUSTIFIED子句有语法错误

ORA-08445:屏蔽选项中的SIGN子句有语法错误

ORA-08446:屏蔽选项中的SYNCHRONIZED子句有语法错误

ORA-08447:屏蔽选项中的USAGE子句有语法错误

ORA-08448:屏蔽选项中的DECIMAL-POINT子句有语法错误

ORA-08449:图片屏蔽中有无效数字符号

ORA-08450:图片屏蔽中有无效的CR说明

ORA-08451:图片屏蔽中有无效的DB说明

ORA-08452:不支持图片屏蔽中的E说明

ORA-08453:图片屏蔽中指定了多个V符号

ORA-08454:图片屏蔽中指定了多个S符号

ORA-08455:CURRENCYSIGN环境子句中有语法错误

ORA-08456:图片屏蔽中没有符号但屏蔽选项中有SIGN子句

ORA-08457:SIGN子句的SEPARATECHARACTER选项中有语法错误

ORA-08458:无效的格式参数

ORA-08459:无效的格式参数长度

ORA-08460:环境参数中有无效的环境子句

ORA-08462:原始缓冲区包含无效的十进制数据

ORA-08463:转换十进制数字为Oracle数字时溢出

ORA-08464:输入的原始十进制数据多于42位

ORA-08465:输入的掩码包含多于32个字符

ORA-08466:原始缓冲区长度对于过短

ORA-08467:转换Oracle数字为时出错

ORA-08468:不支持屏蔽选项

ORA-08498:警告:图片屏蔽''将改写图片屏蔽选项'USAGEIS'为'USAGEISDISPLAY'

ORA-08499:警告:图片屏蔽选项''被UTL_PG忽略

ORA-09200:sfccf:创建文件时出错

ORA-09201:sfcopy:复制文件时出错

ORA-09202:sfifi:标识文件时出错

ORA-09203:sfofi:打开文件时出错

ORA-09204:sfotf:打开临时文件时出错

ORA-09205:sfqio:读或写入磁盘时出错

ORA-09206:sfrfb:从文件读取时出错

ORA-09207:sfsrd:从文件读取时出错

ORA-09208:sftcls:关闭文件时出错

ORA-09209:sftget:从文件读取时出错

ORA-09210:sftopn:打开文件时出错

ORA-09211:sfwfb:写入文件时出错

ORA-09212:sfwfbmt:写入文件时出错

ORA-09213:slgfn:取文件名时出错

ORA-09214:sfdone:检测到I/O错误

ORA-09215:sfqio:在IOCompletionRoutine中检测到错误

ORA-09216:sdnfy:''值(参数)错误

ORA-09217:sfsfs:无法调整文件大小

ORA-09218:sfrfs:无法刷新文件大小

ORA-09240:smpalo:分配PGA内存时出错

ORA-09241:smsalo:分配SGA内存时出错

ORA-09242:smscre:创建SGA时出错

ORA-09243:smsget:连接到SGA时出错

ORA-09244:smprset:设置内存保护时出错

ORA-09245:smcstk:切换堆栈时出错

ORA-09246:sfsmap:无法映射SGA

ORA-09247:smsdes:消除SGA时出错

ORA-09260:sigpidu:获得进程标识时出错

ORA-09261:spdcr:创建分离(背景)进程时出错

ORA-09262:spdde:终止分离(背景)进程时出错

ORA-09263:spini:初始化进程时出错

ORA-09264:sptpa:标记进程时出错

ORA-09265:spwat:暂挂进程时出错

ORA-09266:spawn:启动Oracle进程时出错

ORA-09270:szalloc:分配安全内存时出错

ORA-09271:szlon:验证用户名时出错

ORA-09272:不允许远程os登录

ORA-09273:szrfc:验证角色名时出错

ORA-09274:szrfc:角色名缓冲区空间不足

ORA-09275:CONNECTINTERNAL不是有效的DBA连接

ORA-09280:sllfcf:关闭文件时出错

ORA-09281:sllfop:打开文件出错

ORA-09282:sllfrb:读记录时出错

ORA-09283:sllfsk:跳过记录时出错

ORA-09284:sllfop:无法分配读缓冲区

ORA-09285:sllfop:无法识别的处理选项,格式错误

ORA-09290:sksaalo:分配存档内存时出错

ORA-09291:sksachk:为存档目标指定的设备无效

ORA-09292:sksabln:无法建立存档文件名

ORA-09293:sksasmo:无法将信息发送给控制台

ORA-09300:osncon:无法连接,DPMI不可用

ORA-09301:osncon:仅在标准模式下才支持本地内核

ORA-09310:sclgt:释放锁栓时出错

ORA-09311:slsleep:暂挂进程时出错

ORA-09312:slspool:将文件进行后台打印时出错

ORA-09313:slsprom:提示用户时出错

ORA-09314:sltln:转换逻辑名时出错

ORA-09315:sql2tt:转换ORACLE_EXECUTABLE时出现双工错误

ORA-09316:szrpc:无法验证角色的口令

ORA-09317:szprv:权限不足

ORA-09318:slkhst:无法在操作系统之外主控

ORA-09319:slgtd:无法获得当前日期和时间

ORA-09320:szrfc:无法获得有效OS角色列表

ORA-09321:slzdtb:无法将区位十进制转换为二进制

ORA-09322:slpdtb:无法将压缩十进制转换为二进制

ORA-09330:会话由Oracle或OracleDBA内部终止

ORA-09340:指定的ORACLE_SID无效或过长

ORA-09341:scumnt:无法安装数据库

ORA-09342:分离进程在关机中止过程中由Oracle终止

ORA-09344:spsig:错误的信号线程

ORA-09350:Windows32位双工驱动程序无法分配上下文区域

ORA-09351:Windows32位双工驱动程序无法分配共享内存

ORA-09352:Windows32位双工驱动程序无法生成新的ORACLE任务

ORA-09353:Windows32位双工驱动程序无法打开事件信号

ORA-09354:Windows32位双工驱动程序:ORACLE任务意外停止

ORA-09360:Windows3.1双工驱动程序无法分配上下文区域

ORA-09361:Windows3.1双工驱动程序无法锁定上下文区域

ORA-09362:Windows3.1双工驱动程序无法撤消分配上下文区域

ORA-09363:Windows3.1双工驱动程序无效上下文区域

ORA-09364:Windows3.1双工驱动程序无法创建隐藏的窗口

ORA-09365:Windows3.1双工驱动程序无法消除隐藏的窗口

ORA-09366:Windows3.1双工驱动程序无法分配共享内存

ORA-09367:Windows3.1双工驱动程序无法撤消分配共享内存

ORA-09368:Windows3.1双工驱动程序无法生成ORACLE

ORA-09369:Windows3.1双工驱动程序错误的例程句柄

ORA-09370:Windows3.1双工驱动程序ORACLE任务超时

ORA-09700:sclin:超出最大锁栓数

ORA-09701:scnfy:超出最大进程数

ORA-09702:sem_acquire:无法获得锁栓信号

ORA-09703:sem_release:无法释放锁栓信号

ORA-09704:sstascre:创建测试和设置页时出现ftok错误

ORA-09705:spcre:无法初始化锁栓信号

ORA-09706:slsget:get_process_stats错误

ORA-09708:soacon:无法将插槽与端口连接

ORA-09709:soacon:无法接受连接

ORA-09710:soarcv:缓冲区溢出

ORA-09711:orasrv:archmon已经连接

ORA-09712:orasrv:日志存档器已经连接

ORA-09713:全局硬件时钟失效导致例程终止

ORA-09714:双工接口:无法获得puname

ORA-09715:orasrv:无法获得puname

ORA-09716:kslcll:无法修复in-fluxlamport锁栓

ORA-09717:osnsui:超出用户干预处理程序的最大数

ORA-09718:osnsui:无法设置用户干预处理程序

ORA-09719:osncui:无效的句柄

ORA-09740:slsget:无法获得虚拟内存区统计信息

ORA-09741:spwat:等待发送时出错

ORA-09742:sppst:发送过程中出错

ORA-09743:smscre:无法连接共享内存

ORA-09744:smsget:mmap返回错误

ORA-09745:smscre:vm_allocate错误,无法创建共享内存

ORA-09746:smscre:共享内存连接地址错误

ORA-09747:pw_detachPorts:服务器调用pws_detach失败

ORA-09748:pws_look_up:分叉失败

ORA-09749:pws_look_up:端口查找失败

ORA-09750:pw_attachPorts:port_rename失败

ORA-09751:pw_attachPorts:服务器调用pws_attach失败

ORA-09752:pw_attachPorts:port_allocate失败

ORA-09753:spwat:无效的进程号

ORA-09754:sppst:传送给sppst的进程号无效

ORA-09755:osngpn:端口配置失败

ORA-09756:osnpns:名服务器中没有端口

ORA-09757:osnipn:端口配置失败

ORA-09758:osnipn:无法检查名服务器中的端口

ORA-09759:osnsbt:收到的信息错误

ORA-09760:osnpui:无法发送中断信息

ORA-09761:pw_destroyPorts:服务器调用pws_stop_instance失败

ORA-09762:sNeXT_instanceName:转换错误

ORA-09763:osnmpx:交换Mach端口时出现发送/接收错误

ORA-09764:osnmop:oracle可执行(代码)访问错误

ORA-09765:osnmop:分叉失败

ORA-09766:osnmop:缓冲区分配失败

ORA-09767:osnmfs:msg_send的返回代码错误

ORA-09768:osnmgetmsg:无法读信息

ORA-09769:osnmbr:无法发送中断信息

ORA-09770:pws_look_up:转换失败

ORA-09771:osnmwrtbrkmsg:msg_send的返回代码错误

ORA-09772:osnpmetbrkmsg:来自主机的信息类型错误

ORA-09773:osnmgetdatmsg:来自主机的信息类型错误

ORA-09774:osnmui:无法发送中断信息

ORA-09775:osnmrs:重置协议错误

ORA-09776:pws_look_up:(Oracle帮助程序)可执行(代码)访问错误

ORA-09777:osnpbr:无法发送中断信息

ORA-09778:snynfyport:无法配置通知端口

ORA-09779:snyGetPort:无法分配端口

ORA-09786:sllfop:打开错误,无法打开文件

ORA-09787:sllfop:不可识别的处理选项,格式错误

ORA-09788:sllfrb:无法读文件

ORA-09789:sllfsk:无法读文件

ORA-09790:sllfcf:无法关闭文件

ORA-09791:slembdf:转换错误,无法转换错误文件名

ORA-09792:sllfop:无法分配读缓冲区

ORA-09793:szguns:用户名的长度大于缓冲区的长度

ORA-09794:szrbuild:角色名的长度大于缓冲区的长度

ORA-09795:szrbuild:无法malloc角色结构

ORA-09796:szrbuild:无法malloc角色名

ORA-09797:无法获得O/SMAC权限

ORA-09798:标记比较失败

ORA-09799:文件标记检索失败

ORA-09800:进程阅读权限标记检索失败。

ORA-09801:无法获得来自连接的用户ID

ORA-09802:无法转换二进制标记为字符串

ORA-09803:无法分配字符串缓冲区

ORA-09804:从二进制到ORACLE的类转换失败

ORA-09805:无法转换类别编号为字符串

ORA-09806:无法分配标记字符串缓冲区

ORA-09807:从字符串到二进制的标记转换失败

ORA-09808:无法获得用户清除

ORA-09809:无法从连接获得用户组ID

ORA-09810:无法从连接获得进程ID

ORA-09811:无法初始化程序包

ORA-09812:无法从连接获得用户清除

ORA-09813:无法获得目录状态

ORA-09814:无法扩展文件名

ORA-09815:文件名缓冲区溢出

ORA-09816:无法设置有效权限

ORA-09817:无法写入审计文件

ORA-09818:数字过大

ORA-09819:数字超出最大合法值

ORA-09820:无法转换类字符串为数字表示法

ORA-09821:数字标记无效

ORA-09822:无法转换审计文件名

ORA-09823:设备名过长

ORA-09824:无法启用allowmacaccess权限

ORA-09825:无法禁用allowmacaccess权限

ORA-09826:SCLIN:无法初始化原子锁栓

ORA-09827:sclgt:原子锁栓返回未知的错误

ORA-09828:SCLFR:原子锁栓返回错误

ORA-09829:pw_createPorts:服务器调用pws_start_instance失败

ORA-09830:snyAddPort:无法执行远程过程调用

ORA-09831:snyStartThread:无法建立服务器端口设置

ORA-09832:infoCallback:信息格式错误

ORA-09833:addCallback:信息格式错误

ORA-09834:snyGetPortSet:无法获得端口信息

ORA-09835:addCallback:回调端口已经设置

ORA-09836:addCallback:无法添加端口到回调设置

ORA-09837:addCallback:无法添加分配到回调链接

ORA-09838:removeCallback:无法删除回调端口

ORA-09839:removeCallback:回调端口不在回调设置中

ORA-09840:soacon:名称转换失败

ORA-09841:soacon:名称转换失败

ORA-09842:soacon:Archmon无法创建指定管道

ORA-09843:soacon:Archmon无法创建命名管道

ORA-09844:soacon:Archmon无法打开命名管道

ORA-09845:soacon:Archmon无法打开命名管道

ORA-09846:soacon:ARCH无法打开命名管道

ORA-09847:soacon:ARCH无法打开命名管道

ORA-09848:soawrt:无法写入命名管道

ORA-09849:soarcv:无法从命名管道读取

ORA-09850:soacon:Archmon无法锁定命名管道

ORA-09851:soacon:Archmon无法锁定命名管道

ORA-09853:snyRemovePort:从请求返回的代码错误

ORA-09854:snyPortInfo:从请求返回的代码错误

ORA-09855:removeCallback:信息格式错误

ORA-09856:smpalo:在分配pga时出现vm_allocate错误

ORA-09857:smprset:在保护pga时出现vm_protect错误

ORA-09870:spini:无法初始化最大数的打开文件

ORA-09871:TASDEF_NAME:扩展?/dbs/tasdef@.dbf时出现转换错误

ORA-09872:TASDEF_CREATE:无法创建?/dbs/tasdef@.dbf

ORA-09873:TASDEF_OPEN:打开tasdef@.dbf文件时出现打开错误

ORA-09874:TASDEF_READ:读错误,无法读tasdef@.dbf文件

ORA-09875:TASDEF_WRITE:在写?/dbs/tasdef@.dbf文件时出现写错误

ORA-09876:TASDEF_CLOSE:无法关闭?/dbs/tasdef@.dbf文件

ORA-09877:sstascre:shmget错误,无法获得共享内存段

ORA-09878:sstascre/sstasat:shmat错误,无法连接tas写入页

ORA-09879:sstascre/sstasat:shmat错误,无法连接tas读取页

ORA-09880:sstasfre/sstasdel:shmdt错误,无法分离写入页

ORA-09881:sstasfre/sstasdel:shmdt错误,无法分离读取页

ORA-09882:sstasfre/sstasdel:shmctl错误,无法删除tasshm页

ORA-09883:双工接口:oratab文件不存在

ORA-09884:双工接口:SID没有配置当前PU

ORA-09885:osnTXtt:无法创建TXIPC通道

ORA-09886:osnTXtt:在扩展txipc@.trc时出现转换错误

ORA-09887:osnTXtt:无法创建/打开调试通道

ORA-09888:osnTXtt:无法创建txipc通道

ORA-09889:osnTXtt:oracle可执行(代码)访问错误

ORA-09890:osnTXtt:malloc失败

ORA-09908:slkmnm:gethostname返回错误代码

ORA-09909:无法Malloc暂存缓冲区

ORA-09910:无法找到用户的ORACLE口令文件条目

ORA-09911:用户口令错误

ORA-09912:无法Malloc名称缓冲区

ORA-09913:无法Malloc转储名

ORA-09914:无法打开ORACLE口令文件

ORA-09915:口令加密失败

ORA-09916:未指定要求的口令

ORA-09918:无法从SQL*Net获得用户权限

ORA-09919:无法设置专用服务器的标记

ORA-09920:无法从连接获得阅读权限标记

ORA-09921:无法从连接获得信息标记

ORA-09922:无法生成进程-未正确创建背景日志目录

ORA-09923:无法生成进程-未正确创建用户日志目录

ORA-09924:无法生成进程-未正确创建磁心转储目录

ORA-09925:无法创建审计线索文件

ORA-09926:无法设置服务器的有效权限集

ORA-09927:无法设置服务器标记

ORA-09928:无法恢复服务器标记

ORA-09929:两个标记的GLB无效

ORA-09930:两个标记的LUB无效

ORA-09931:无法打开要读取的ORACLE口令文件

ORA-09932:无法关闭ORACLE口令文件

ORA-09933:无法删除旧的口令文件

ORA-09934:无法将当前口令文件链接到旧文件

ORA-09935:无法撤消链接当前口令文件

ORA-09936:无法打开要写入的ORACLE口令文件

ORA-09937:ORACLE口令文件的Chmod失败

ORA-09938:无法保存信号处理程序

ORA-09939:无法恢复信号处理程序

ORA-09940:ORACLE口令文件标题损坏

ORA-09941:orapasswd或安装程序的版本比文件更旧

ORA-09942:ORACLE口令文件标题写失败

ORA-09943:无法分配口令列表组件的内存

ORA-09944:口令条目损坏

ORA-09945:无法初始化审计线索文件

ORA-09946:缓冲区的文件名过长

ORA-09947:无法配置连接属性结构

ORA-09948:无法检索进程信息标记

ORA-09949:无法获得客户操作系统权限

ORA-09950:无法获得服务器操作系统权限

ORA-09951:无法创建文件

ORA-09952:scgcmn:lk_open_convert返回未预期的值:无法打开

ORA-09953:scggc:锁定转换时返回未预期的值

ORA-09954:scgcc:回调锁定关闭时返回未预期的状态

ORA-09955:scgcan:取消锁定时返回未预期的状态

ORA-09956:scgcm:未预期的锁定状态条件

ORA-09957:无法发送结束请求到IMON

ORA-09958:IMON:具有相同ORACLEpid的两个进程处于活动状态

ORA-09959:IMON:无法删除进程

ORA-09960:无法建立终止信号的信号处理程序

ORA-09961:无法恢复终止信号处理程序

ORA-09962:scggrc中的lk_group_create错误

ORA-09963:scggra中的lk_group_attach错误

ORA-09964:scggrd中的lk_group_detach错误

ORA-09966:scumnt:在扩展?/dbs/lk时出现转换错误

ORA-09967:scumnt:无法创建或打开文件

ORA-09968:scumnt:无法锁定文件

ORA-09969:scurls:无法关闭锁定文件

ORA-09974:skxfidini:初始化SDI通道时出错

ORA-09975:kxfspini:初始化SDI进程时出错

ORA-09976:skxfqdini:创建端口时出错

ORA-09977:skxfqhini:连接时出错

ORA-09978:skxfqhdel:从另一终端断开连接时出错

ORA-09979:skxfqhsnd:发送信息到另一终端时出错

ORA-09980:skxfqdrcv:从另一终端接收信息时出错

ORA-09981:skxfqdreg:添加页到SDI缓冲池时出错

ORA-09982:skxfqddrg:从SDI缓冲池删除页时出错

ORA-09983:skxfidsht:关闭SDI通道时出错

ORA-09985:无法读取SGA定义文件

ORA-09986:从SGA定义文件读取的字节数错误

ORA-09987:在READ-ONLY模式下无法连接到SGA

ORA-09988:分离SGA时出错

ORA-09989:尝试使用无效的skgmsdef结构指针

ORA-10000:controlfiledebugevent,name'control_file'

ORA-10001:controlfilecrashevent1

ORA-10002:controlfilecrashevent2

ORA-10003:controlfilecrashevent3

ORA-10004:controlfilecrashevent4

ORA-10005:tracelatchoperationsfordebugging

ORA-10006:testing-blockrecoveryforced

ORA-10008:logswitchdebugcrashafternewlogheaderwrite,thread

ORA-10009:logswitchdebugcrashafteroldlogheaderwrite,thread

ORA-10010:BeginTransaction

ORA-10011:EndTransaction

ORA-10012:AbortTransaction

ORA-10013:InstanceRecovery

ORA-10014:RollBacktoSavePoint

ORA-10015:UndoSegmentRecovery

ORA-10016:UndoSegmentextend

ORA-10017:UndoSegmentWrap

ORA-10018:DataSegmentCreate

ORA-10019:DataSegmentRecovery

ORA-10020:partiallinkrestoredtolinkedlist(KSG)

ORA-10021:latchcleanupforstateobjects(KSS)

ORA-10022:tracektsgsp

ORA-10023:CreateSaveUndoSegment

ORA-10024:WritetoSaveUndo

ORA-10025:ExtendSaveUndoSegment

ORA-10026:ApplySaveUndo

ORA-10027:latchcleanupforenqueuelocks(KSQ)

ORA-10028:latchcleanupforenqueueresources(KSQ)

ORA-10029:sessionlogon(KSU)

ORA-10030:sessionlogoff(KSU)

ORA-10031:sortdebugevent(S*)

ORA-10032:sortstatistics(SOR*)

ORA-10033:sortruninformation(SRD*/SRS*)

ORA-10035:parseSQLstatement(OPIPRS)

ORA-10036:createremoterowsource(QKANET)

ORA-10037:allocateremoterowsource(QKARWS)

ORA-10038:dumprowsourcetree(QBADRV)

ORA-10039:typechecking(OPITCA)

ORA-10040:dirtycachelist

ORA-10041:dumpundorecordsskipped

ORA-10042:traperrorduringundoapplication

ORA-10043:checkconsistencyofowner/waiter/converterlistsinKSQ

ORA-10044:freelistundooperations

ORA-10045:freelistupdateoperations-ktsrsp,ktsunl

ORA-10046:enableSQLstatementtiming

ORA-10047:traceswitchingofsessions

ORA-10048:Undosegmentshrink

ORA-10049:protectlibrarycachememoryheaps

ORA-10050:snipertrace

ORA-10051:traceOPIcalls

ORA-10052:don'tcleanupobj$

ORA-10053:CBOEnableoptimizertrace

ORA-10054:traceUNDOhandlinginMLS

ORA-10055:traceUNDOhanding

ORA-10056:dumpanalyzestats(kdg)

ORA-10057:suppressfilenamesinerrormessages

ORA-10058:usetablescancostintab$.spare1

ORA-10059:simulateerrorinlogfilecreate/clear

ORA-10060:CBOEnablepredicatedump

ORA-10061:disableSMONfromcleaningtempsegment

ORA-10062:disableusageofOSRolesinosds

ORA-10063:disableusageofDBAandOPERprivilegesinosds

ORA-10064:threadenabledebugcrashlevel,thread

ORA-10065:limitlibrarycachedumpinformationforstateobjectdump

ORA-10066:simulatefailuretoverifyfile

ORA-10067:forceredologchecksumerrors-blocknumber

ORA-10068:forceredologchecksumerrors-filenumber

ORA-10069:TrustedOracletestevent

ORA-10070:forcedatafilechecksumerrors-blocknumber

ORA-10071:forcedatafilechecksumerrors-filenumber

ORA-10072:protectlatchrecoverymemory

ORA-10073:havePMONdumpinfobeforelatchcleanup

ORA-10074:defaulttracefunctionmaskforkst

ORA-10076:CBOEnablecartesianproductjoincosting

ORA-10078:CBODisableconstantpredicateeliminationoptimization

ORA-10079:tracedatasent/receivedviaSQL*Net

ORA-10080:dumpablockonasegmentlistwhichcannotbeexchanged

ORA-10081:segmentHighWaterMarkhasbeenadvanced

ORA-10083:abrandnewblockhasbeenrequestedfromspacemanagement

ORA-10084:freelistbecomesempty

ORA-10085:freelistshavebeenmerged

ORA-10087:disablerepairofmediacorruptdatablocks

ORA-10088:CBODisablenewNOTINoptimization

ORA-10089:CBODisableindexsorting

ORA-10090:invokeothereventsbeforecrashrecovery

ORA-10091:CBODisableconstantpredicatemerging

ORA-10092:CBODisablehashjoin

ORA-10093:CBOEnableforcehashjoins

ORA-10094:beforeresizingadatafile

ORA-10095:dumpdebuggercommandstotracefile

ORA-10096:afterthecrossinstancecallwhenresizingadatafile

ORA-10097:aftergeneratingredowhenresizingadatafile

ORA-10101:atomicredowriterecovery

ORA-10102:switchoffanti-joins

ORA-10103:CBODisablehashjoinswapping

ORA-10104:dumphashjoinstatisticstotracefile

ORA-10106:CBODisableevaluatingcorrelationpredlastforNOTIN

ORA-10107:CBOAlwaysusebitmapindex

ORA-10108:CBODon'tusebitmapindex

ORA-10109:CBODisablemoveofnegatedpredicates

ORA-10110:CBOTryindexrowidrangescans

ORA-10111:Bitmapindexcreationswitch

ORA-10112:Bitmapindexcreationswitch

ORA-10113:Bitmapindexcreationswitch

ORA-10114:Bitmapindexcreationswitch

ORA-10115:CBOBitmapoptimizationusemaximalexpression

ORA-10116:CBOBitmapoptimizationswitch

ORA-10117:CBODisablenewparallelcostmodel

ORA-10118:CBOEnablehashjoincosting

ORA-10119:QKADisableGBYsortelimination

ORA-10120:generaterelativefile#differentfromabsolute

ORA-10121:CBODon'tsortbitmapchains

ORA-10122:Disabletransformationofcount(col)tocount(*)

ORA-10123:QKADisableBitmapAnd-EQuals

ORA-10125:Disableremotesortelimination

ORA-10126:Debugoraclejavaxa

ORA-10127:Disableremotequeryblockoperation

ORA-10128:DumpPartitionPruningInformation

ORA-10129:Alterhistogramlookupforremotequeries

ORA-10130:sortdisablereadaheads

ORA-10131:usev$sql_plancodepathforexplainplan

ORA-10132:dumpplanaftercompilation

ORA-10133:testingforSQLMemoryManagement

ORA-10134:tracingforSQLMemoryManagementforsession

ORA-10135:CBOdonotcount0rowspartitions

ORA-10136:CBOturnofffixforbug1089848

ORA-10137:CBOturnofffixforbug1344111

ORA-10138:CBOturnofffixforbug1577003

ORA-10139:CBOturnofffixforbug1386119

ORA-10140:CBOturnofffixforbug1332980

ORA-10141:CBOdisableadditionalkeysforinlistinbitmapoptimization

ORA-10142:CBOturnoffadvancedOR-expansionchecks

ORA-10143:CBOturnoffhints

ORA-10144:CBOturnoffcostbasedselectionofbjioverbsjsubquery

ORA-10145:testauditingnetworkerrors

ORA-10146:enableOracleTRACEcollection

ORA-10147:enablejoinpushthroughUNIONview

ORA-10148:Usepre-7.3.3randomgenerator

ORA-10149:allowthecreationofconstraintswithillegaldateconstants

ORA-10150:importexceptions

ORA-10151:Forceduplicatedependencyremoval

ORA-10152:CBOdon'tconsiderfunctioncostsinplans

ORA-10153:Switchtousepublicsynonymifprivateonedoesnottranslate

ORA-10154:SwitchtodisallowsynonymsinDDLstatements

ORA-10155:CBOdisablegenerationoftransitiveOR-chains

ORA-10156:CBOdisableindexfastfullscan

ORA-10157:CBOdisableindexaccesspathforin-list

ORA-10158:CBOpreservepredicateorderinpost-filters

ORA-10159:CBOdisableorder-bysortpushdownintodomainindexes

ORA-10160:CBOdisableuseofjoinindex

ORA-10161:CBOrecursivesemi-joinon/off-switch

ORA-10162:CBOjoin-backeliminationon/off-switch

ORA-10163:CBOjoin-backeliminationon/off-switch

ORA-10164:CBOdisablesubquery-adjustedcardinalityfix

ORA-10166:tracelongoperationstatisticsupdates

ORA-10167:CBOuseoldindexMIN/MAXoptimization

ORA-10168:CBOdisablesingle-tablepredicatepredicategeneration

ORA-10169:CBOdisablehistogramsformultipartitions

ORA-10170:CBOuseoldbitmapcosting

ORA-10171:CBOdisabletransitivejoinpredicates

ORA-10172:CBOforcehashjoinback

ORA-10173:CBOnoconstraint-basedjoin-backelimination

ORA-10174:viewjoin-backeliminationswitch

ORA-10175:CBOstartransformationswitch

ORA-10176:CBOcolocatedjoinswitch

ORA-10177:CBOcolocatedjoinswitch

ORA-10179:CBOturnofftransitivepredicatereplacement

ORA-10180:temptabletransformationprinterrormessages

ORA-10181:CBOdisablemulti-columnin-listprocessing

ORA-10182:CBOdisablegenerationofimpliedpredicates

ORA-10183:CBOdisablecostrounding

ORA-10185:CBOforceindexjoins

ORA-10186:CBOdisableindexjoin

ORA-10187:CBOadditionalindexjoinswitch

ORA-10188:CBOadditionalindexjoinswitch

ORA-10189:CBOturnoffFFSnullfix

ORA-10190:Analyzeuseoldfrequencyhistogramcollectionanddensity

ORA-10192:nopushdownwhennumberofgroupsexceednumberofrows

ORA-10193:Forcerepeatablesamplingwithspecifiedseed

ORA-10194:CBOdisablenewLIKEselectivityheuristic

ORA-10195:CBOdon'tusecheckconstraintsfortransitivepredicates

ORA-10196:CBOdisableindexskipscan

ORA-10197:CBOforceindexskipscan

ORA-10198:checkundorecord

ORA-10199:setparameterinsession

ORA-10200:consistentreadbufferstatus

ORA-10201:consistentreadundoapplication

ORA-10202:consistentreadblockheader

ORA-10203:blockcleanout

ORA-10204:signalrecursiveextend

ORA-10205:rowcachedebugging

ORA-10206:transactiontableconsistentread

ORA-10207:consistentreadtransactions'statusreport

ORA-10208:consistentreadloopcheck

ORA-10209:enablesimulatederroroncontrolfile

ORA-10210:checkdatablockintegrity

ORA-10211:checkindexblockintegrity

ORA-10212:checkclusterintegrity

ORA-10213:crashaftercontrolfilewrite

ORA-10214:simulatewriteerrorsoncontrolfile

ORA-10215:simulatereaderrorsoncontrolfile

ORA-10216:dumpcontrolfileheader

ORA-10217:debugsequencenumbers

ORA-10218:dumpubaofappliedundo

ORA-10219:monitormulti-passrowlocking

ORA-10220:showupdatestothetransactiontable

ORA-10221:showchangesdonewithundo

ORA-10222:rowcache

ORA-10223:transactionlayer-turnonverificationcodes

ORA-10224:indexblocksplit/deletetrace

ORA-10225:free/usedextentrowcache

ORA-10227:verify(multi-piece)rowstructure

ORA-10228:traceapplicationofredobykcocbk

ORA-10229:simulateI/Oerroragainstdatafiles

ORA-10230:checkredogenerationbycopyingbeforeapplying

ORA-10231:skipcorruptedblockson_table_scans_

ORA-10233:skipcorruptedblocksonindexoperations

ORA-10235:checkmemorymanagerinternalstructures

ORA-10236:librarycachemanager

ORA-10237:simulate^C(fortestingpurposes)

ORA-10238:instantiationmanager

ORA-10239:multi-instancelibrarycachemanager

ORA-10240:dumpdba'sofblocksthatwewaitfor

ORA-10241:remoteSQLexecutiontracing/validation

ORA-10242:suppressOER2063(fortestingdistribw/odifferenterrorlog)

ORA-10244:maketranidsinerrormsgsprintas0.0.0(fortesting)

ORA-10245:simulatelockconflicterrorfortestingPMON

ORA-10246:printtraceofPMONactionstotracefile

ORA-10247:Turnonscgcmntracing.(VMSONLY)

ORA-10248:turnontracingfordispatchers

ORA-10249:turnontracingformulti-statedservers

ORA-10250:TraceallallocateandfreecallstothetopmostSGAheap

ORA-10252:simulatewriteerrortodatafileheader

ORA-10253:simulatewriteerrortoredolog

ORA-10254:tracecross-instancecalls

ORA-10255:pl/sqlparsechecking

ORA-10256:turnoffsharedserverloadbalancing

ORA-10257:tracesharedserverloadbalancing

ORA-10258:forcesharedserverstobechosenround-robin

ORA-10259:geterrormessagetextfromremoteusingexplicitcall

ORA-10260:TracecallstoSMPRSET(VMSONLY)

ORA-10261:LimitthesizeofthePGAheap

ORA-10262:Don'tcheckformemoryleaks

ORA-10263:Don'tfreeemptyPGAheapextents

ORA-10265:Keeprandomsystemgeneratedoutputoutoferrormessages

ORA-10266:TraceOSDstackusage

ORA-10267:InhibitKSEDMPfortesting

ORA-10268:Don'tdoforwardcoalescewhendeletingextents

ORA-10269:Don'tdocoalescesoffreespaceinSMON

ORA-10270:Debugsharedcursors

ORA-10271:distributedtransactionafterCOLLECT

ORA-10272:distributedtransactionbeforePREPARE

ORA-10273:distributedtransactionafterPREPARE

ORA-10274:distributedtransactionbeforeCOMMIT

ORA-10275:distributedtransactionafterCOMMIT

ORA-10276:distributedtransactionbeforeFORGET

ORA-10277:Cursorsharing(ornot)relatedevent(usedfortesting)

ORA-10278:Internaltesting

ORA-10279:Simulateblockcorruptioninkdb4chk

ORA-10280:Internaltesting-segmentationfaultduringcrashrecovery

ORA-10281:maximumtimetowaitforprocesscreation

ORA-10283:simulateasynchI/Onevercompleting

ORA-10284:simulatezero/infiniteasynchI/Obuffering

ORA-10285:Simulatecontrolfileheadercorruption

ORA-10286:Simulatecontrolfileopenerror

ORA-10287:Simulatearchivererror

ORA-10288:Donotcheckblocktypeinktrget

ORA-10289:Doblockdumpstotracefileinhexratherthanfromatted

ORA-10290:kdnchk-checkvalidevent-notforgeneralpurposeuse.

ORA-10291:dieintbsdrvtotestcontrolfileundo

ORA-10292:dumpuetentriesona1561fromdtsdrv

ORA-10294:enablePERSISTENTDLMoperationsonnon-compliantsystems

ORA-10295:dieafterfileheaderupdatedurningcfxact

ORA-10296:disableORA-379

ORA-10297:customizedictionaryobjectnumbercache

ORA-10298:ksfdi/otracing

ORA-10299:TraceprefetchtrackingdecisionsmadebyCKPT

ORA-10301:EnableLCKtimeouttableconsistencycheck

ORA-10302:tracecreateordropinternaltrigger

ORA-10304:tracereplicationtrigger

ORA-10305:traceupdatablematerializedviewtrigger

ORA-10306:tracematerializedviewlogtrigger

ORA-10307:traceRepCatexecution

ORA-10308:replicationtestingevent

ORA-10309:TriggerDebugevent

ORA-10310:tracesynchronouschangetabletrigger

ORA-10311:DisableFlashbackTableTimestampchecking

ORA-10312:Allowdisabletologrowsintothemappingtable

ORA-10313:AllowRowCRoperationsforsingleinstance

ORA-10314:EnableextrastatsgatheringforCR

ORA-10315:TurnonRowCRforallrowsources,bydefault

ORA-10316:Eventsforextensibletxnheader,nonzeroextheadersize

ORA-10317:Eventsforextensibletxnheader,zeroextheadersize

ORA-10318:Traceextensibletxnheadermovements

ORA-10319:TracePGAstatisticsmaintenance

ORA-10320:Enabledatalayer(kdtgrs)tracingofspacemanagementcalls

ORA-10321:Datafileheaderverificationdebugfailure.

ORA-10322:CBOdon'tsimplifyinlistpredicates

ORA-10323:beforecommittinganadddatafilecommand

ORA-10324:Enablebettercheckingofredologserrors

ORA-10325:Tracecontrolfilerecordsectionexpandandshrinkoperations

ORA-10326:clearlogfiledebugcrashat,log

ORA-10327:simulateORA-00235errorfortesting

ORA-10329:simulatelostwrite,testdetectionbytwo-passrecovery

ORA-10331:simulateresilveringduringrecovery

ORA-10333:dumpMTTRstatisticseachtimeitisupdated

ORA-10334:forceFGtowaittobekilledduringMTTRadvisorysimulation

ORA-10336:DoremoteobjecttransferusingremoteSQL

ORA-10337:enablepaddingownernameinslavesql

ORA-10338:CBOdon'tuseinlistiteratorwithfunction-basedindexes

ORA-10339:CBOdisableDECODEsimplification

ORA-10340:Bufferqueuessanitycheckforcorruptedbuffers

ORA-10341:SimulateoutofPGAmemoryinDBWRduringobjectreuse

ORA-10344:Simulatekghxalreturning0inACQ_ADDbutnoexception

ORA-10346:checkthatallbuffersforcheckpointhavebeenwritten

ORA-10348:testabnormalterminationofprocessinitiatingfilecheckpoint

ORA-10349:donotallowckpttocomplete

ORA-10350:Simulatemorethanoneobject&tsnidinobjectreuse

ORA-10351:sizeofslots

ORA-10352:reportdirectpathstatistics

ORA-10353:numberofslots

ORA-10354:turnondirectreadpathforparallelquery

ORA-10355:turnondirectreadpathforscans

ORA-10356:turnonhintusagefordirectread

ORA-10357:turnondebuginformationfordirectpath

ORA-10360:enabledbwrconsistencychecking

ORA-10370:parallelqueryserverkillevent

ORA-10371:disableTQhint

ORA-10372:parallelqueryserverkilleventproc

ORA-10373:parallelqueryserverkillevent

ORA-10375:turnonchecksforstatisticsrollups

ORA-10376:turnontablequeuestatistics

ORA-10377:turnoffloadbalancing

ORA-10378:forcehardprocess/rangeaffinity

ORA-10380:kxfplatchcleanuptestingevent

ORA-10381:kxfplatchcleanuptestingevent

ORA-10382:parallelqueryserverinterrupt(reset)

ORA-10383:autoparallelizationtestingevent

ORA-10384:paralleldataflowschedulertracing

ORA-10385:paralleltablescanrangesamplingmethod

ORA-10386:parallelSQLhashandrangestatistics

ORA-10387:parallelqueryserverinterrupt(normal)

ORA-10388:parallelqueryserverinterrupt(failure)

ORA-10389:parallelqueryserverinterrupt(cleanup)

ORA-10390:Traceparallelqueryslaveexecution

ORA-10391:tracePXgranuleallocation/assignment

ORA-10392:parallelquerydebuggingbits

ORA-10393:printparallelquerystatistics

ORA-10394:generateafakeloadtotestadaptiveandloadbalancing

ORA-10395:adjustsamplesizeforrangetablequeues

ORA-10396:circumventrangetablequeuesforqueries

ORA-10398:enabletimeoutsinparallelquerythreads

ORA-10399:tracebufferallocation

ORA-10401:turnonIPC(ksxp)debugging

ORA-10402:turnonIPC(skgxp)debugging

ORA-10404:crashdbwrafterwrite

ORA-10405:emulatebrokenmirrors

ORA-10407:enabledatetimeTIMEdatatypecreation

ORA-10408:disableOLAPbuiltinwindowfunctionusage

ORA-10409:enablegranulememsetandblockinvalidationatstartup

ORA-10410:triggersimulatedcommunicationserrorsinKSXP

ORA-10411:simulateerrorsinIMR

ORA-10412:triggersimulatederrorsinCGS/CMinterface

ORA-10413:forcesimulatederrorfortestingpurposes

ORA-10414:simulatederrorfromeventlevel

ORA-10425:enableglobalenqueueserviceopeneventtrace

ORA-10427:enableglobalenqueueservicetrafficcontrollereventtrace

ORA-10428:enabletracingofglobalenqueueservicedistributedresource

ORA-10431:enableverificationmessagesonpiconsistency

ORA-10433:globalenqueueservicetestingevent

ORA-10435:enabletracingofglobalenqueueservicedeadlockdetetction

ORA-10437:enabletraceofglobalenqueueserviceSoptimizedresources

ORA-10442:enabletraceofkstforORA-01555diagnostics

ORA-10500:turnontracesforSMON

ORA-10501:periodicallycheckselectedheap

ORA-10502:CBOdisablethefixforbug2098120

ORA-10510:turnoffSMONchecktoofflinependingofflinerollbacksegment

ORA-10511:turnoffSMONchecktocleanupundodictionary

ORA-10512:turnoffSMONchecktoshrinkrollbacksegments

ORA-10513:turnoffwrapsourcecompression

ORA-10515:turnoneventtousephysicalcleanout

ORA-10520:recreatepackage/procedure/viewonlyifdefinitionhaschanged

ORA-10550:signalerrorduringcreateasselect/createindexafternrows

ORA-10560:blocktype''

ORA-10561:blocktype'',dataobject#

ORA-10562:Erroroccurredwhileapplyingredotodatablock(file#,block#)

ORA-10563:Testrecoveryhadtocorruptdatablock(file#,block#)inordertoproceed

ORA-10564:tablespace

ORA-10565:Anothertestrecoverysessionisactive

ORA-10566:Testrecoveryhasusedallthememoryitcanuse

ORA-10567:Redoisinconsistentwithdatablock(file#,block#)

ORA-10568:Failedtoallocaterecoverystateobject:outofSGAmemory

ORA-10570:Testrecoverycomplete

ORA-10571:Testrecoverycanceled

ORA-10572:Testrecoverycanceledduetoerrors

ORA-10573:Testrecoverytestedredofromchangeto

ORA-10574:Testrecoverydidnotcorruptanydatablock

ORA-10575:Giveuprestoringrecovereddatafilestoconsistentstate:outofmemory

ORA-10576:Giveuprestoringrecovereddatafilestoconsistentstate:someerroroccurred

ORA-10577:Cannotinvoketestrecoveryformanagedstandbydatabaserecovery

ORA-10578:Cannotallowcorruptionformanagedstandbydatabaserecovery

ORA-10579:Cannotmodifycontrolfileduringtestrecovery

ORA-10582:Thecontrolfileisnotabackupcontrolfile

ORA-10583:Cannotrecoveryfilerenamedasmissingduringtestrecovery

ORA-10585:Testrecoverycannotapplyredothatmaymodifycontrolfile

ORA-10586:Testrecoveryhadtocorrupt1datablockinordertoproceed

ORA-10587:InvalidcountforALLOWnCORRUPTIONoption

ORA-10588:Canonlyallow1corruptionfornormalmedia/standbyrecovery

ORA-10589:Testrecoveryhadtocorruptdatablocksinordertoproceed

ORA-10590:kga(argusdebugger)testflags

ORA-10591:kga(argusdebugger)testflags

ORA-10592:kga(argusdebugger)testflags

ORA-10593:kga(argusdebugger)testflags

ORA-10594:kga(argusdebugger)testflags

ORA-10595:kga(argusdebugger)testflags

ORA-10596:kga(argusdebugger)testflags

ORA-10597:kga(argusdebugger)testflags

ORA-10598:kga(argusdebugger)testflags

ORA-10599:kga(argusdebugger)testflags

ORA-10600:checkcursorframeallocation

ORA-10601:turnondebuggingforcursor_sharing(literalreplacement)

ORA-10602:causeanaccessviolation(fortestingpurposes)

ORA-10603:causeanerrortooccurduringtruncate(fortestingpurposes)

ORA-10604:traceparallelcreateindex

ORA-10605:enableparallelcreateindexbydefault

ORA-10606:traceparallelcreateindex

ORA-10607:traceindexrowidpartitionscan

ORA-10608:tracecreatebitmapindex

ORA-10609:traceforarrayindexinsertion

ORA-10610:tracecreateindexpseudooptimizer

ORA-10611:causesmigrationtofail-testingonly

ORA-10612:printsdebuginformationforauto-spacemanagedsegments

ORA-10613:printsdebuginformationforauto-spacemanagedsegments

ORA-10614:Operationnotallowedonthissegment

ORA-10615:Invalidtablespacetypefortemporarytablespace

ORA-10616:Operationnotallowedonthistablespace

ORA-10617:Cannotcreaterollbacksegmentindictionarymanagedtablespace

ORA-10618:Operationnotallowedonthissegment

ORA-10619:Avoidassertionswhenpossible

ORA-10620:Operationnotallowedonthissegment

ORA-10621:datablockdoesnotbelongtothesegment

ORA-10622:test/traceonlineindex(re)build

ORA-10623:EnableIndexrangescanPrefetch-testingonly

ORA-10624:DisableUJVinvalidationondropindex

ORA-10640:OperationnotpermittedduringSYSTEMtablespacemigration

ORA-10641:Cannotfindarollbacksegmenttobindto

ORA-10642:Foundrollbacksegmentsindictionarymanagedtablespaces

ORA-10643:DatabaseshouldbemountedinrestrictedmodeandExclusivemode

ORA-10644:SYSTEMtablespacecannotbedefaulttemporarytablespace

ORA-10645:RecursiveExtensioninSYSTEMtablespaceduringmigration

ORA-10646:ToomanyrecursiveextensionsduringSYSTEMtablespacemigration

ORA-10647:TablespaceotherthanSYSTEM,,notfoundinreadonlymode

ORA-10650:disablecache-callbackoptimisation

ORA-10651:incorrectfilenumberblocknumberspecified

ORA-10666:Donotgetdatabaseenqueuename

ORA-10667:Causesppsttocheckforvalidprocessids

ORA-10700:Alteraccessviolationexceptionhandler

ORA-10701:Dumpdirectloaderindexkeys

ORA-10702:Enablehistogramdatageneration

ORA-10703:Simulateprocessdeathduringenqueueget

ORA-10704:Printoutinformationaboutwhatenqueuesarebeingobtained

ORA-10705:PrintOutTracinginformationforeveryI/OdonebyODSs

ORA-10706:Printoutinformationaboutglobalenqueuemanipulation

ORA-10707:Simulateprocessdeathforinstanceregistration

ORA-10710:tracebitmapindexaccess

ORA-10711:tracebitmapindexmerge

ORA-10712:tracebitmapindexor

ORA-10713:tracebitmapindexand

ORA-10714:tracebitmapindexminus

ORA-10715:tracebitmapindexconversiontorowids

ORA-10716:tracebitmapindexcompress/decompress

ORA-10717:tracebitmapindexcompactiontraceforindexcreation

ORA-10718:eventtodisableautomaticcompactionafterindexcreation

ORA-10719:tracebitmapindexdml

ORA-10720:tracedbscheduling

ORA-10721:Internaltesting-temptabletransformation

ORA-10723:Internaltesting-releasebufferforbuffercacheshrink

ORA-10724:tracecross-instancebroadcast

ORA-10730:tracerowlevelsecuritypolicypredicates

ORA-10731:dumpSQLforCURSORexpressions

ORA-10740:disablesfixforbug598861

ORA-10750:testrollbacksegmentblksizeguessingforindexarrayinsert

ORA-10800:disableSmartDiskscan

ORA-10801:enableSmartDisktrace

ORA-10802:reservedforSmartDisk

ORA-10803:writetimingstatisticsonclusterdatabaserecoveryscan

ORA-10804:reservedforksxb

ORA-10806:Switchto7.3modewhendetachingsessions

ORA-10807:Disableuseridcheckwhenswitchingtoaglobaltransaction

ORA-10810:Tracesnapshottooold

ORA-10811:Traceblockcleanouts

ORA-10812:TraceConsistentReads

ORA-10826:enableupgrade/downgradeerrormessagetrace

ORA-10827:databasemustbeopenedwithMIGRATEoption

ORA-10830:Tracegroupbysortrowsource

ORA-10831:Tracegroupbyrolluprowsource

ORA-10841:Defaultun-inintializedcharactsetformtoSQLCS_IMPLICIT

ORA-10842:EventforOCITracingandStatisticsInfo

ORA-10850:Enabletimemanagertracing

ORA-10851:AllowDropcommandtodropqueuetables

ORA-10852:EnabledumpingoftheAQstatisticshashtable

ORA-10853:eventforAQstatisticslatchcleanuptesting

ORA-10856:DisableAQpropagatorfromusingstreaming

ORA-10857:ForceAQpropagatortousetwo-phasecommit

ORA-10859:Disableupdatesofmessageretrycount

ORA-10860:eventforAQadmindisablenewnameparser

ORA-10861:disablestoringextendedmessageproperties

ORA-10862:resolvedefaultqueueownertocurrentuserinenqueue/dequeue

ORA-10900:extentmanagerfaultinsertionevent#

ORA-10902:disableseghdrconversionforrooperation

ORA-10903:Forcetablespacestobecomelocallymanaged

ORA-10904:Allowlocallymanagedtablespacestohaveuserallocation

ORA-10907:Traceextentmanagementevents

ORA-10908:Tracetemptablespaceevents

ORA-10909:Tracefreelistevents

ORA-10911:LocallymanagedSYSTEMtablespacebitmapscanbemodifiedonlyunderthesupervisionofOracleSupport

ORA-10912:UsedtoperformadminoperationsonlocallymanagedSYSTEMtablespace

ORA-10913:Createlocallymanageddatabaseifcompatible>920bydefault

ORA-10924:importstorageparseerrorignoreevent

ORA-10925:tracenamecontextforever

ORA-10926:tracenamecontextforever

ORA-10927:tracenamecontextforever

ORA-10928:tracenamecontextforever

ORA-10929:tracenamecontextforever

ORA-10930:tracenamecontextforever

ORA-10931:tracenamecontextforever

ORA-10932:tracenamecontextforever

ORA-10933:tracenamecontextforever

ORA-10934:Reserved.Usedonlyinversion7.x.

ORA-10935:Reserved.Usedonlyinversion7.x.

ORA-10936:tracenamecontextforever

ORA-10937:tracenamecontextforever

ORA-10938:tracenamecontextforever

ORA-10939:tracenamecontextforever

ORA-10940:tracenamecontextforever

ORA-10941:tracenamecontextforever

ORA-10943:tracenamecontextforever

ORA-10944:tracenamecontextforever

ORA-10945:tracenamecontextforever

ORA-10975:traceexecutionofparallelpropagation

ORA-10976:internalpackagerelatedtracing

ORA-10977:traceeventforRepAPI

ORA-10979:traceflagsforjoinindeximplementation

ORA-10980:preventsharingofparsedqueryduringMaterializedViewquerygeneration

ORA-10981:dscncomputation-relatedeventinreplication

ORA-10982:eventtoturnoffCDC-formatMVLogs

ORA-10983:eventtoenableCreate_Change_Tabledebugging

ORA-10984:subquerymaterializedview-relatedevent

ORA-10985:eventforNULLrefreshofmaterializedviews

ORA-10986:donotuseHASH_AJinrefresh

ORA-10987:eventforthesupportofcachingtablewithobjectfeature

ORA-10988:eventtogetexclusivelockduringmaterializedviewrefreshinIAS

ORA-10989:eventtointernallycreatestatisticsMV

ORA-10996:eventtomakeaprocessholdalatchinksu

ORA-10999:donotgetdatabaseenqueuename

ORA-12000:实体化视图日志已经存在于表''上

ORA-12001:无法创建日志:表''已经具有触发器

ORA-12002:表"".""上不存在任何实体化视图日志

ORA-12003:实体化视图"".""不存在

ORA-12004:REFRESHFAST不能用于实体化视图"".""

ORA-12005:不可以安排过去时间的自动刷新

ORA-12006:具有相同user.name的实体化视图已经存在

ORA-12007:实体化视图重新使用的参数不一致

ORA-12008:实体化视图的刷新路径中存在错误

ORA-12009:实体化视图不能包含long列

ORA-12010:不能在SYS拥有的表上创建实体化视图日志

ORA-12011:无法执行作业

ORA-12012:自动执行作业出错

ORA-12013:可更新实体化视图必须足够简单,以进行快速刷新

ORA-12014:表''不包含主键约束条件

ORA-12015:不能从复杂查询中创建一个可快速刷新的实体化视图

ORA-12016:实体化视图并未包含所有主键列

ORA-12017:不能将主键实体化视图''更改为rowid实体化视图

ORA-12018:在创建"".""的代码时出现以下错误

ORA-12019:主表与远程对象同义

ORA-12020:实体化视图未注册

ORA-12021:实体化视图"".""已损坏

ORA-12022:"".""上的实体化视图日志已具有rowid

ORA-12023:实体化视图"".""上缺少索引

ORA-12024:"".""上的实体化视图日志没有主键列

ORA-12025:"".""上的实体化视图日志已有主键

ORA-12026:检测到无效的过滤器列

ORA-12027:过滤器列重复

ORA-12028:主体站点不支持实体化视图类型

ORA-12029:LOB列不可以用作过滤评感

ORA-12030:不能创建可快速刷新的实体化视图

ORA-12031:不能使用"".""上实体化视图日志中的主键列

ORA-12032:不能使用"".""上实体化视图日志中的rowid列

ORA-12033:不能使用"".""上实体化视图日志中的过滤器列

ORA-12034:"".""上的实体化视图日志比上次刷新后的内容新

ORA-12035:无法使用"".""上的实体化视图日志

ORA-12036:可更新的实体化视图日志非空,请刷新实体化视图

ORA-12037:未知的导出格式

ORA-12038:文字字符串具有未预期的长度

ORA-12039:无法使用本地回退段""

ORA-12040:主地点不支持主回退段选项

ORA-12041:无法记录索引编排表"".""的ROWID

ORA-12042:在单一进程模式下无法更改job_queue_processes

ORA-12043:CREATEMATERIALIZEDVIEW选项无效

ORA-12044:CREATEMATERIALIZEDVIEWLOG选项无效

ORA-12045:ALTERMATERIALIZEDVIEWLOG选项无效

ORA-12051:ONCOMMIT属性与其它选项不兼容

ORA-12052:无法快速刷新实体化视图.

ORA-12053:这不是一个有效的嵌套实体化视图

ORA-12054:无法为实体化视图设置ONCOMMIT刷新属性

ORA-12055:实体化视图定义与现有实体化视图具有循环相关性

ORA-12056:无效的REFRESH方式

ORA-12057:实体化视图"".""无效,必须进行完全刷新

ORA-12058:实体化视图不能使用预建表

ORA-12059:预建表"".""不存在

ORA-12060:预建表的形式与定义查询不匹配

ORA-12061:ALTERMATERIALIZEDVIEW选项无效

ORA-12062:接收到的事务处理在来自站点的事务处理序列之外

ORA-12063:无法从站点应用事务处理

ORA-12064:无效的刷新序列编号:

ORA-12065:未知的刷新组标识符

ORA-12066:CREATEMATERIALIZEDVIEW命令无效

ORA-12067:不允许刷新组为空

ORA-12068:用于实体化视图"".""的可更新实体化视图日志不存在

ORA-12069:无效的脱机例程的对象

ORA-12070:无法对实体化视图"".""进行脱机实例化

ORA-12071:"".""的定义查询对脱机示例化无效

ORA-12072:无法创建"".""的可更新实体化视图日志数据。

ORA-12073:无法处理请求

ORA-12074:无效的内存地址

ORA-12075:无效的对象或字段

ORA-12076:无效的阈值

ORA-12077:临时可更新实体化视图日志不存在

ORA-12078:对刷新组ID的快速刷新失败

ORA-12079:实体化视图选项要求COMPATIBLE参数为或更大的值

ORA-12081:不允许对表"".""进行更新操作

ORA-12082:"".""无法按索引组织

ORA-12083:必须使用DROPMATERIALIZEDVIEW来删除"".""

ORA-12084:必须使用ALTERMATERIALIZEDVIEW来更改"".""

ORA-12085:"".""上的实体化视图日志已有对象ID

ORA-12086:表"".""不是对象表

ORA-12087:在""拥有的表上不允许联机重新定义

ORA-12088:不能联机重新定义具有不受支持数据类型的表"".""

ORA-12089:不能联机重新定义无主键的表"".""

ORA-12090:不能联机重新定义表"".""

ORA-12091:不能联机重新定义具有实体化视图的表"".""

ORA-12092:不能联机重新定义复制的表"".""

ORA-12093:中间表"".""无效

ORA-12094:联机重新定义过程中出错

ORA-12096:"".""上的实体化视图日志中存在错误

ORA-12097:changesinthemastertablesduringrefresh,tryrefreshagain

ORA-12150:TNS:无法发送数据

ORA-12151:TNS:从网络层收到错误类型的信息包

ORA-12152:TNS:无法发送中断信息

ORA-12153:TNS:未连接

ORA-12154:TNS:无法处理服务名

ORA-12155:TNS:在NSWMARKER包中收到错误的数据类型

ORA-12156:TNS:尝试在错误状态之下重置线路

ORA-12157:TNS:内部网络通信错误

ORA-12158:TNS:无法初始化参数子系统

ORA-12159:TNS:跟踪文件不可写

ORA-12160:TNS:内部错误:错误编号不正确

ORA-12161:TNS:内部错误:收到部分数据

ORA-12162:TNS:指定的服务名不正确

ORA-12163:TNS:连接描述符过长

ORA-12164:TNS:Sqlnet.fdf文件不存在

ORA-12165:TNS:尝试将跟踪文件写入交换空间。

ORA-12166:TNS:客户无法连接到HO代理

ORA-12168:TNS:无法联系目录服务器。

ORA-12169:TNS:给定的net_service_name太长

ORA-12170:TNS:出现连接超时

ORA-12196:TNS:从TNS收到一则错误信息

ORA-12197:TNS:关键字值分解错误

ORA-12198:TNS:无法找到到达目标的路径

ORA-12200:TNS:无法分配内存

ORA-12201:TNS:连接缓冲区过小

ORA-12202:TNS:内部定位(navigation)错误

ORA-12203:TNS:无法连接目标

ORA-12204:TNS:从应用程序中收到拒绝的数据

ORA-12205:TNS:无法获得失败地址

ORA-12206:TNS:导航时收到TNS错误

ORA-12207:TNS:无法执行导航

ORA-12208:TNS:无法找到TNSNAV.ORA文件

ORA-12209:TNS:出现未初始化全局错误

ORA-12210:TNS:查找浏览器数据时出错

ORA-12211:TNS:TNSNAV.ORA中需要PREFERRED_CMANAGERS条目

ORA-12212:TNS:TNSNAV.ORA中连结(binding)的PREFERRED_CMANAGERS不完整

ORA-12213:TNS:TNSNAV.ORA中连结(binding)的PREFERRED_CMANAGERS不完整

ORA-12214:TNS:TNSNAV.ORA中缺少本地共用条目

ORA-12216:TNS:在TNSNAV.ORA中的PREFERRED_CMANAGERS地址形式不正确

ORA-12217:TNS:无法联系TNSNAV.ORA中的PREFERRED_CMANAGERS

ORA-12218:TNS:无法接受的网络配置数据

ORA-12219:TNS:ADDRESS_LIST中的地址缺少共用名

ORA-12221:TNS:非法的ADDRESS参数

ORA-12222:TNS:没有这样的协议适配器

ORA-12223:TNS:超出内部限制

ORA-12224:TNS:没有监听器

ORA-12225:TNS:无法到达目的地主机

ORA-12226:TNS:超出操作系统资源限量

ORA-12227:TNS:语法错误

ORA-12228:TNS:协议适配器不可加载

ORA-12229:TNS:交换没有其它的可用连接

ORA-12230:TNS:进行此连接时出现严重的网络错误

ORA-12231:TNS:无法连接到目的地

ORA-12232:TNS:没有达到目的地的可用路径

ORA-12233:TNS:无法接受连接

ORA-12234:TNS:重定向到目的地

ORA-12235:TNS:无法重定向到目的地

ORA-12236:TNS:未加载协议适配器

ORA-12315:ALTERDATABASE语句的数据库链接类型无效

ORA-12316:数据库链接连接字符串语法错误

ORA-12317:连接数据库(链接名称)被拒绝

ORA-12318:已经装载数据库(链接名称)

ORA-12319:数据库(链接名称)已经打开

ORA-12321:数据库(链接名称)没打开,并且AUTO_MOUNTING=FALSE

ORA-12322:无法装载数据库(链接名称)

ORA-12323:无法打开数据库(链接名称)

ORA-12324:不能使用ROM:在个人数据库链接上的链接类型

ORA-12326:将立即关闭数据库;不允许任何操作

ORA-12329:数据库已关闭;不允许任何操作

ORA-12333:没装载数据库(链接名称)

ORA-12334:数据库(链接名称)仍然打开

ORA-12335:数据库(链接名称)没打开

ORA-12336:不能连接到数据库(链接名称)

ORA-12341:超出敞开装载最大数

ORA-12342:敞开装载超出OPEN_MOUNTS参数的限制

ORA-12345:用户不具有在数据库链(链接名称)上的CREATESESSION权限

ORA-12350:正在丢弃的数据链仍然装载

ORA-12351:无法用引用远程对象的远程对象创建视图

ORA-12352:对象.@无效

ORA-12353:二次存储对象无法引用远程对象

ORA-12354:正在丢弃次要对象

ORA-12400:无效的功能错误处理参数

ORA-12401:无效的标记字符串:

ORA-12402:无效的格式字符串:

ORA-12403:无法的内容标签

ORA-12404:无效的权限字符串:

ORA-12405:无效的标记列表

ORA-12406:未经策略授权的SQL语句

ORA-12407:未经策略授权的操作

ORA-12408:不被支持的操作:

ORA-12409:策略的策略启动故障

ORA-12410:策略:的内部策略错误

ORA-12411:无效的标记值

ORA-12412:未安装策略程序包

ORA-12413:标记不属于同一个策略

ORA-12414:内部LBAC错误:

ORA-12415:指定的表中存在另一个数据类型列

ORA-12416:策略未发现

ORA-12417:未找到数据库对象""

ORA-12418:未找到用户

ORA-12419:空二进制标签值

ORA-12420:需要的过程和函数不在策略程序包""中

ORA-12421:不同大小的二进制标签

ORA-12422:超过最大策略数

ORA-12423:指定的位置无效

ORA-12424:长度超出二进制标签的大小

ORA-12425:不能为系统方案应用策略或设置授权

ORA-12426:无效的审计选项

ORA-12427:参数的无效输入值

ORA-12428:

ORA-12429:超出标签范围列表

ORA-12430:无效的权限号

ORA-12431:无效的审计操作

ORA-12432:LBAC错误:

ORA-12433:创建触发器失败,策略未应用

ORA-12434:无效的审计类型:

ORA-12435:无效的审计成功:

ORA-12436:未指定策略选项

ORA-12437:无效的策略选项:

ORA-12438:重复的策略选项:

ORA-12439:策略选项的无效组合

ORA-12440:无足够的权限使用SYSDBA程序包

ORA-12441:策略已经存在

ORA-12442:策略列""已经被现有策略使用

ORA-12443:策略未应用于方案中的某些表

ORA-12444:策略已经应用于表

ORA-12445:不能更改列的HIDDEN属性

ORA-12446:无足够的权限对策略进行管理

ORA-12447:策略的策略角色已经存在

ORA-12448:策略未应用于方案

ORA-12449:为用户指定的标签必须是USER类型的

ORA-12450:在LBAC初始化文件中禁用LOB数据类型

ORA-12451:未将标签指定为USER或DATA

ORA-12452:标签标记已经存在

ORA-12453:标签已经存在

ORA-12454:标签(用于策略的)不存在

ORA-12461:未定义的级别(用于策略的)

ORA-12462:未定义的隔室(用于策略的)

ORA-12463:未定义的组(用于策略的)

ORA-12464:标签组件中有非法字符

ORA-12465:无权在指定组或划分上执行读取或写入操作

ORA-12466:默认级别大于用户的最大值

ORA-12467:最小值标签只能包含一个级别

ORA-12468:最大写入级别不等于最大读取级别

ORA-12469:未找到用于用户或策略的用户级别

ORA-12470:NULL或无效的用户标签:

ORA-12471:未授予用户访问指定划分或组的权限

ORA-12476:最小上界产生无效的OS标记

ORA-12477:最大下界产生无效的OS标记

ORA-12479:文件标记必须等于DBHIGH

ORA-12480:指定的清除标记不在有效的清除以内

ORA-12481:有效的标记不在程序单元清除范围以内

ORA-12482:内部MLS错误:

ORA-12483:标记不在OS系统信任范围内

ORA-12484:无效OS标记

ORA-12485:新的有效标记不在有效清除范围内

ORA-12486:无法更改有效的最大和最小标记

ORA-12487:清除标记不在DBHIGH和DBLOW之间

ORA-12488:最大标记数不支配最小标记数

ORA-12489:默认标记不在清除范围内

ORA-12490:DBHIGH无法降低

ORA-12491:DBHIGH值不支配DBLOW

ORA-12492:DBLOW无法更改

ORA-12493:无效的MLS二进制标记

ORA-12494:无法插入或删除一个级别,目录,或版本目录

ORA-12495:无法禁用已经启用的级别,目录,或版本目录

ORA-12496:无法更改现有级别,目录,或版本号

ORA-12497:最大合并目录数超过

ORA-12498:

ORA-12499:

ORA-12500:TNS:监听程序无法启动专用服务器进程

ORA-12501:TNS:监听程序无法衍生进程

ORA-12502:TNS:监听程序没有从客户机收到CONNECT_DATA

ORA-12504:TNS:监听器在CONNECT_DATA中未获得SID

ORA-12505:TNS:监听器无法处理连接描述符中所给出的SID

ORA-12506:TNS:监听器在CONNECT_DATA中未获得ALIAS

ORA-12507:TNS:监听器无法处理给定的ALIAS

ORA-12508:TNS:监听器无法处理给定的COMMAND

ORA-12509:TNS:监听器无法将客户重定向到服务处理程序

ORA-12510:TNS:临时数据库缺少资源处理请求

ORA-12511:TNS:服务处理程序已找到但它并不接受连接

ORA-12512:TNS:服务处理程序已找到但它并未注册重定向地址

ORA-12513:TNS:服务处理程序已找到但它并未注册不同的协议

ORA-12514:TNS:监听进程不能解析在连接描述符中给出的SERVICE_NAME

ORA-12515:TNS:监听进程无法找到该演示文稿的句柄

ORA-12516:TNS:监听程序无法找到匹配协议栈的可用句柄

ORA-12517:TNS:监听程序无法找到支持直接分发的服务处理程序

ORA-12518:TNS:监听程序无法分发客户机连接

ORA-12519:TNS:没有发现适用的服务处理程序

ORA-12520:TNS:监听程序无法找到需要的服务器类型的可用句柄

ORA-12521:TNS:监听程序无法解析连接描述符中给定的INSTANCE_NAME

ORA-12522:TNS:监听程序未找到具有给定INSTANCE_ROLE的可用例程

ORA-12523:TNS:监听程序未找到适用于客户机连接的例程

ORA-12524:TNS:监听程序无法解析在连接描述符中指定的HANDLER_NAME

ORA-12531:TNS:无法分配内存

ORA-12532:TNS:无效的参数

ORA-12533:TNS:非法的ADDRESS参数

ORA-12534:TNS:操作不受支持

ORA-12535:TNS:操作超时

ORA-12536:TNS:操作可能阻塞

ORA-12537:TNS:连接已关闭

ORA-12538:TNS:没有这样的协议适配器

ORA-12539:TNS:缓冲区上溢或下溢

ORA-12540:TNS:超出内部限制

ORA-12541:TNS:没有监听器

ORA-12542:TNS:地址已被占用

ORA-12543:TNS:无法到达目的地主机

ORA-12544:TNS:上下文具有不同的wait/test函数

ORA-12545:因目标主机或对象不存在,连接失败

ORA-12546:TNS:许可被拒绝

ORA-12547:TNS:丢失联系

ORA-12548:TNS:不完整的读或写

ORA-12549:TNS:超出操作系统资源限量

ORA-12550:TNS:语法错误

ORA-12551:TNS:缺少关键字

ORA-12552:TNS:操作被中断

ORA-12554:TNS:当前操作仍在进行中

ORA-12555:TNS:许可被拒绝

ORA-12556:TNS:没有调用程序

ORA-12557:TNS:协议适配器不可加载

ORA-12558:TNS:未加载协议适配器

ORA-12560:TNS:协议适配器错误

ORA-12561:TNS:未知错误

ORA-12562:TNS:全局句柄错误

ORA-12564:TNS:拒绝连接

ORA-12566:TNS:协议错误

ORA-12569:TNS:包校验和失败

ORA-12570:TNS:包阅读程序失败

ORA-12571:TNS:包写入程序失败

ORA-12574:TNS:重定向被拒绝

ORA-12582:TNS:无效的操作

ORA-12583:TNS:没有阅读程序

ORA-12585:TNS:数据截断

ORA-12589:TNS:连接无法保留

ORA-12590:TNS:没有I/O缓冲区

ORA-12591:TNS:事件信号失败

ORA-12592:TNS:包错误

ORA-12593:TNS:没有注册连接

ORA-12595:TNS:没有确认

ORA-12596:TNS:内部不一致

ORA-12597:TNS:连接描述符已被占用

ORA-12598:TNS:标帜注册失败

ORA-12599:TNS:口令校验和不匹配

ORA-12600:TNS:字符串打开失败

ORA-12601:TNS:信息标志检查失败

ORA-12602:TNS:已经达到了连接共享的限制

ORA-12604:TNS:出现应用程序超时

ORA-12611:TNS:操作不可移植

ORA-12612:TNS:连接正忙

ORA-12615:TNS:抢先错误

ORA-12616:TNS:没有事件信号

ORA-12618:TNS:版本不兼容

ORA-12619:TNS:无法授权请求的服务

ORA-12620:TNS:请求的特性不可用

ORA-12622:TNS:事件通知非同类

ORA-12623:TNS:此状态的操作非法

ORA-12624:TNS:连接已经注册

ORA-12625:TNS:缺少参数

ORA-12626:TNS:事件类型错误

ORA-12628:TNS:没有事件回调

ORA-12629:TNS:没有事件测试

ORA-12630:不支持本机服务操作

ORA-12631:TNS:用户名检索失败

ORA-12632:角色提取失败

ORA-12633:没有共享的验证服务

ORA-12634:内存分配失败

ORA-12635:没有可用的验证适配器

ORA-12636:包发送失败

ORA-12637:包接收失败

ORA-12638:身份证明检索失败

ORA-12639:验证服务协商失败

ORA-12640:验证适配器初始化失败

ORA-12641:验证服务无法初始化

ORA-12642:没有会话关键字

ORA-12643:客户机收到来自服务器的内部错误

ORA-12644:验证服务初始化失败

ORA-12645:参数不存在。

ORA-12646:指定用于布尔参数的值无效

ORA-12647:要求验证

ORA-12648:加密或数据完整性算法列表为空

ORA-12649:未知的加密或数据完整性算法

ORA-12650:没有共用的加密或数据完整性算法

ORA-12651:不能接受加密或数据完整性算法

ORA-12652:字符串被截断

ORA-12653:验证控制函数失败

ORA-12654:验证转换失败

ORA-12655:口令检查失败

ORA-12656:口令校验和不匹配

ORA-12657:未安装算法

ORA-12658:需要ANO服务但与TNS版本不兼容

ORA-12659:收到来自其他进程的错误

ORA-12660:加密或口令校验和参数不兼容

ORA-12661:将使用协议验证

ORA-12662:代理服务器记录单检索失败

ORA-12663:服务器未提供客户机要求的服务

ORA-12664:客户机未提供服务器要求的服务

ORA-12665:NLS字符串打开失败

ORA-12666:专用服务器:出站传输协议不同于入站传输协议

ORA-12667:共享服务器:出站传输协议与入站传输协议不相同

ORA-12668:专用服务器:出站协议不支持代理服务器

ORA-12669:共享服务器:出站协议不支持代理服务器

ORA-12670:错误的角色口令

ORA-12671:共享服务器:适配器无法保存上下文

ORA-12672:数据库登录失败

ORA-12673:专用服务器:未保存上下文

ORA-12674:共享服务器:未保存代理服务器上下文

ORA-12675:尚未提供外部用户名

ORA-12676:服务器收到来自客户机的内部错误

ORA-12677:数据库链接不支持验证服务

ORA-12678:验证已禁用,但要求验证

ORA-12679:其他进程禁用本地服务,但需要此服务

ORA-12680:本机服务已停止,但需要此服务

ORA-12681:登录失败:SecurID卡尚无个人标识代码

ORA-12682:登录失败:SecurID卡处于下一个PRN模式

ORA-12683:加密/口令校验和:没有Diffie-Hellman源数据

ORA-12684:加密/口令校验和:Diffie-Hellman源数据过小

ORA-12685:远程需要本机服务,但在本地已禁用

ORA-12686:为服务指定了无效的命令

ORA-12687:数据库链接失败:身份证明失效

ORA-12688:登录失败:SecurID服务器已拒绝新的个人标识代码

ORA-12689:需要服务器验证,但不支持此验证

ORA-12690:服务器验证失败,登录已被取消

ORA-12696:双重加密已启用,禁止登录

ORA-12699:本机服务内部错误

ORA-12700:无效的NLS参数值()

ORA-12701:CREATEDATABASE字符集未知

ORA-12702:SQL函数中使用了无效的NLS参数字符串

ORA-12703:不支持此字符集转换

ORA-12704:字符集不匹配

ORA-12705:指定了无效或未知的NLS参数值

ORA-12706:不允许此CREATEDATABASE字符集

ORA-12707:获得创建数据库NLS参数时出错

ORA-12708:加载创建数据库NLS参数时出错

ORA-12709:加载创建数据库字符集时出错

ORA-12710:CREATECONTROLFILE字符集不能识别

ORA-12711:该CREATECONTROLFILE字符集不允许

ORA-12712:新字符集必须为旧字符集的超集

ORA-12713:在NCHAR/CHAR转换过程中字符数据丢失

ORA-12714:指定的国家字符集无效

ORA-12715:指定的字符集无效

ORA-12716:当存在CLOB数据时,不能ALTERDATABASECHARACTERSET

ORA-12717:当存在NCLOB数据时,不能ALTERDATABASECHARACTERSET

ORA-12718:操作要求以SYS身份连接

ORA-12719:操作要求数据库处于RESTRICTED模式下

ORA-12720:操作要求数据库处于EXCLUSIVE模式下

ORA-12721:当其他会话处于活动状态时,无法执行操作

ORA-12800:系统对于并行查询执行显示过忙

ORA-12801:并行查询服务器中发出错误信号

ORA-12802:并行查询服务器与协调程序失去联系

ORA-12803:并行查询服务器与另一服务器失去联系

ORA-12804:并行查询服务器可能停止

ORA-12805:并行查询服务器意外停止

ORA-12806:无法获得要挂起入队的背景进程

ORA-12807:进程队列无法接收并行查询信息

ORA-12808:设置的_INSTANCES不能大于例程数

ORA-12809:无法在独立模式下安装时设置_INSTANCES

ORA-12810:PARALLEL_MAX_SERVERS必须小于或等于

ORA-12812:仅可以指定一个PARALLEL或NOPARALLEL子句

ORA-12813:PARALLEL或DEGREE的值必须大于0

ORA-12814:只能指定一个CACHE或NOCACHE子句

ORA-12815:INSTANCES的值必须大于0

ORA-12816:并行创建索引快速路径操作

ORA-12817:必须启用并行查询选项

ORA-12818:PARALLEL子句中的选项无效

ORA-12819:PARALLEL子句中缺少选项

ORA-12820:DEGREE的值无效

ORA-12821:INSTANCES的值无效

ORA-12822:PARALLEL子句中的选项重复

ORA-12823:不可以在此处指定默认并行化程度

ORA-12824:不可以在此处指定INSTANCESDEFAULT

ORA-12825:必须在此处指定明确的并行化程度

ORA-12826:挂起的并行查询服务器已停止

ORA-12827:可用并行查询从属项目不足

ORA-12828:无法启动远程站点的并行事务处理

ORA-12829:死锁-由siblings占用的itls位于块,文件中

ORA-12831:在执行具有APPEND提示的INSERT之后必须COMMIT或ROLLBACK

ORA-12832:无法分配所有指定例程中的从属项目

ORA-12833:协调程序例程不是parallel_instance_group的成员

ORA-12834:例程组名''过长,必须少于个字符

ORA-12835:GLOBAL_VIEW_ADMIN_GROUP中没有活动的例程

ORA-12836:控制延迟的索引维护事件

ORA-12837:延迟的索引维护调试事件

ORA-12838:无法在并行模式下修改之后读/修改对象

ORA-12839:无法在修改之后在并行模式下修改对象

ORA-12840:在并行/插入直接加载txn之后无法访问远程表

ORA-12841:无法改变事务处理中的会话并行DML状态

ORA-12842:在并行执行过程中方案发生改变

ORA-12843:对表的pdml锁定不再完好

ORA-12900:必须为本地管理的数据库指定一个默认的临时表空间

ORA-12901:默认的临时表空间必须属TEMPORARY类型

ORA-12902:默认的临时表空间必须属SYSTEM或TEMPORARY类型

ORA-12903:默认的临时表空间必须是ONLINE表空间

ORA-12904:默认的临时表空间不能更改为PERMANENT类型

ORA-12905:默认的临时表空间不能脱机

ORA-12906:不能删除默认的临时表空间

ORA-12907:表空间已经是默认的临时表空间

ORA-12908:在创建数据库时,不能指定SYSTEM为默认的临时表空间

ORA-12909:需要TEMPORARY关键字

ORA-12910:无法将临时表空间指定为默认表空间

ORA-12911:永久表空间不能是临时表空间

ORA-12912:字典托管表空间指定为临时表空间

ORA-12913:无法创建字典管理的表空间

ORA-12914:无法将表空间移植到字典管理的类型中

ORA-12915:无法将字典管理的表空间变更为可读写

ORA-12920:数据库已经处于强制记录模式

ORA-12921:数据库未处于强制记录模式

ORA-12922:并行ALTERDATABASE[NO]FORCELOGGING命令正在运行

ORA-12923:表空间处于强制记录模式

ORA-12924:表空间已经处于强制记录模式

ORA-12925:表空间未处于强制记录模式

ORA-12926:FORCELOGGING选项已指定

ORA-12980:检查点选项不允许SETUNUSED

ORA-12981:无法从对象类型表中删除列

ORA-12982:无法从嵌套的表中删除列

ORA-12983:无法删除表的全部列

ORA-12984:无法删除分区列

ORA-12985:表空间''为只读,无法删除列

ORA-12986:列处于部分删除状态。提交ALTERTABLEDROPCOLUMNSCONTINUE

ORA-12987:无法与其它操作合并删除列

ORA-12988:无法删除属于SYS的表中的列

ORA-12989:检查点间隔的无效值

ORA-12990:指定的选项重复

ORA-12991:引用的列处于多列约束条件

ORA-12992:无法删除父项关键字列

ORA-12993:表空间''脱机,无法删除列

ORA-12994:语句中删除列选项仅允许一次

ORA-12995:没有列处于部分删除状态

ORA-12996:无法删除系统生成的虚拟列

ORA-12997:无法从索引组织的表中删除主键

ORA-13000:维数超出范围

ORA-13001:维数不匹配错误

ORA-13002:指定的层次超出范围

ORA-13003:维数的指定范围无效

ORA-13004:指定的缓冲区大小无效

ORA-13005:递归HHCODE函数错误

ORA-13006:指定的单元格数无效

ORA-13007:检测到无效的HEX字符

ORA-13008:指定的日期格式中具有无效的要素

ORA-13009:指定的日期字符串无效

ORA-13010:指定的参数个数无效

ORA-13011:值超出范围

ORA-13012:指定了无效的窗口类型

ORA-13013:指定的拓扑不是INTERIOR或BOUNDARY

ORA-13014:拓扑标识超出指定的1到8范围

ORA-13015:窗口定义无效

ORA-13016:分区定义错误

ORA-13017:不可识别的行分区形状

ORA-13018:距离类型错误

ORA-13019:座标超出界限

ORA-13020:座标为NULL

ORA-13021:元素不连续

ORA-13022:多边形自身交叉

ORA-13023:内部元素与外部元素交互作用

ORA-13024:多边形少于三段

ORA-13025:多边形没有关闭

ORA-13026:元素..的元素类型未知

ORA-13027:无法从读取维定义

ORA-13028:SDO_GEOMETRY对象中的Gtype无效

ORA-13029:SDO_GEOMETRY对象中的SRID无效

ORA-13030:SDO_GEOMETRY对象的维无效

ORA-13031:SDO_GEOMETRY对象中用于点对象的Gtype无效

ORA-13032:NULLSDO_GEOMETRY对象无效

ORA-13033:SDO_GEOMETRY对象中位于SDO_ELEM_INFO_ARRAY中的数据无效

ORA-13034:SDO_GEOMETRY对象中位于SDO_ORDINATE_ARRAY中的数据无效

ORA-13035:SDO_GEOMETRY对象中的数据(测量数据中的弧)无效

ORA-13036:对于点数据,不支持操作[]

ORA-13037:两个几何对象的SRID不匹配

ORA-13039:无法更新元素..的空间索引

ORA-13040:无法细分铺砌

ORA-13041:无法比较铺砌与元素..

ORA-13042:SDO_LEVEL和SDO_NUMTILES的组合无效

ORA-13043:无法从<layer>_SDOLAYER表读取元数据

ORA-13044:指定的铺砌大小超出最大分辨率

ORA-13045:无效的兼容标志

ORA-13046:参数个数无效

ORA-13047:无法从表<层>_SDOLAYER确定纵座标数

ORA-13048:递归SQL取数错误

ORA-13049:无法从表<layer>_SDODIM确定容限值

ORA-13050:无法构造空间对象

ORA-13051:无法初始化空间对象

ORA-13052:不受支持的几何.的几何类型

ORA-13053:超出参数列表中的最大几何元素数

ORA-13054:递归SQL语法分析错误

ORA-13055:指定表中不存在Oracle对象

ORA-13108:未找到空间表

ORA-13109:存在空间表

ORA-13110:空间表未分区

ORA-13111:空间表没有定义的分区关键字

ORA-13112:无效的计数模式

ORA-13113:Oracle表不存在

ORA-13114:未找到表空间

ORA-13115:已分配表空间

ORA-13116:表空间未指定到表

ORA-13117:未找到分区

ORA-13119:源和目标表空间相同

ORA-13121:无法创建子分区

ORA-13122:未找到子分区

ORA-13123:已经定义列

ORA-13124:无法确定列的列标识

ORA-13125:已经设置分区关键字

ORA-13126:无法确定空间表的分类

ORA-13127:无法生成目标分区

ORA-13128:当前铺砌层超出用户指定的铺砌层

ORA-13129:未找到HHCODE列

ORA-13135:无法更改空间表

ORA-13136:生成了空的公用代码

ORA-13137:无法生成表空间序号

ORA-13138:无法确定对象的名称

ORA-13139:无法获得的列定义

ORA-13140:无效的目标类型

ORA-13141:无效的RANGE窗口定义

ORA-13142:无效的PROXIMITY窗口定义

ORA-13143:无效的POLYGON窗口定义

ORA-13144:未找到目标表

ORA-13145:无法生成范围列表

ORA-13146:无法找到表替代变量

ORA-13147:无法生成MBR

ORA-13148:无法生成SQL过滤器

ORA-13149:无法生成空间表的下一序号

ORA-13150:无法插入例外记录

ORA-13151:无法删除异常事件记录

ORA-13152:无效的HHCODE类型

ORA-13153:指定的高水印无效

ORA-13154:指定的精确度无效

ORA-13155:指定的维数无效

ORA-13156:要注册的表.非空

ORA-13157:Oracle错误ORA出现在时

ORA-13158:Oracle对象不存在

ORA-13159:Oracle表已经存在

ORA-13181:无法确定列_SDOINDEX.SDO_CODE的长度

ORA-13182:无法读取元素..

ORA-13183:不受支持的几何.的几何类型

ORA-13184:无法初始化嵌套程序包

ORA-13185:无法生成初始HHCODE

ORA-13186:固定铺砌大小嵌套失败

ORA-13187:细分失败

ORA-13188:单元格译码失败

ORA-13189:递归SQL语法分析失败

ORA-13190:递归SQL取数失败

ORA-13191:无法读取SDO_ORDCNT值

ORA-13192:无法读取元素行数

ORA-13193:无法分配几何空间

ORA-13194:无法解码超单元格

ORA-13195:无法生成最大的铺砌值

ORA-13196:无法计算元素..的超单元格

ORA-13197:元素..超出范围

ORA-13198:空间插件错误:

ORA-13199:

ORA-13200:空间索引建立中出现内部错误[]

ORA-13201:在CREATEINDEX语句中提供的参数无效

ORA-13202:创建或插入SDO_INDEX_METADATA表失败

ORA-13203:无法读取USER_SDO_GEOM_METADATA表

ORA-13204:创建空间索引表失败

ORA-13205:对空间参数进行语法分析时出现内部错误

ORA-13206:创建空间索引时出现内部错误[]

ORA-13207:运算符[]使用不正确

ORA-13208:对运算符[]求值时出现内部错误

ORA-13209:读取SDO_INDEX_METADATA表时出现内部错误

ORA-13210:将数据插入索引表时出错

ORA-13211:嵌装窗口对象失败

ORA-13212:无法与窗口对象比较铺砌

ORA-13213:为窗口对象生成空间索引失败

ORA-13214:无法为窗口对象计算超单元格

ORA-13215:窗口对象超出范围

ORA-13216:无法更新空间索引

ORA-13217:ALTERINDEX语句中提供的参数无效

ORA-13218:索引表达到[]索引所支持的最大值

ORA-13219:无法创建空间索引表[]

ORA-13220:无法与几何比较铺砌

ORA-13221:几何对象中未知的几何类型

ORA-13222:无法为几何在中计算超单元格

ORA-13223:SDO_GEOM_METADATA表中有重复的项

ORA-13224:为空间索引指定的索引名太长

ORA-13225:为空间索引指定的索引表名太长

ORA-13226:在没有空间索引的情况下不支持此界面

ORA-13227:两个索引表的SDO_LEVEL值不一致

ORA-13228:由于无效的类型,空间索引创建失败

ORA-13230:在创建R-tree期间无法创建临时表[]

ORA-13231:在创建R-tree期间无法创建索引表[]

ORA-13232:在创建R-tree期间无法分配内存

ORA-13233:无法创建R-tree的序列号[]

ORA-13234:无法访问R-tree-index表[]

ORA-13236:R-tree处理中的内部错误:[]

ORA-13237:在R-tree并发更新期间的内部错误:[]

ORA-13239:在n-dR-tree创建期间未指定sdo_dimensionality

ORA-13240:指定的维度大于查询mbr的维度

ORA-13241:指定的维度与数据的维度不匹配

ORA-13242:无法读取n-dR-tree的容限值

ORA-13243:n-dR-tree不支持指定的操作符:[]

ORA-13249:

ORA-13250:权限不足,无法修改元数据表项

ORA-13251:元数据表中有重复的项

ORA-13260:层次表不存在

ORA-13261:几何表不存在

ORA-13262:几何列没有存在于表中

ORA-13263:列(在表中)不是SDO_GEOMETRY类型

ORA-13264:几何标识符列没有存在于表中

ORA-13265:几何标识符列(在表中)不是NUMBER类型

ORA-13266:插入数据到表时出错

ORA-13267:从层次表读取数据出错

ORA-13268:从USER_SDO_GEOM_METADATA获取维数出错

ORA-13269:处理几何表时遇到内部错误[]

ORA-13270:OCI错误

 

ORA-13271:给几何对象分配内存时出错

ORA-13272:几何对象(在表中)无效

ORA-13273:维元数据表不存在

ORA-13274:用不兼容的SRID调用了运算符

ORA-13275:在不受支持的类型上创建空间索引失败

ORA-13276:坐标转换中的内部错误[]

ORA-13278:把SRID转换到本地格式中出现故障

ORA-13281:检索WKT的sql语句在执行中出现故障

ORA-13282:坐标转换的初始化出现故障

ORA-13283:无法获得新的位置转换的几何对象

ORA-13284:无法拷贝位置转换的几何对象

ORA-13285:几何坐标转换错误

ORA-13287:无法转换未知的gtype

ORA-13288:点坐标转换错误

ORA-13290:不支持指定的单位

ORA-13291:在指定单位和标准单位之间转换时出错

ORA-13292:ARC_TOLERANCE的说明不正确

ORA-13293:不能为没有测量参照SRID的几何对象指定单位

ORA-13294:无法转换包含圆弧的几何结构

ORA-13295:几何对象位于不同的坐标系统中

ORA-13296:坐标系统的说明不正确

ORA-13300:单点转换错误

ORA-13303:无法从表中检索几何对象

ORA-13304:无法在表中插入转换的几何对象

ORA-13330:无效的MASK

ORA-13331:LRS段无效

ORA-13332:LRS点无效

ORA-13333:LRS度量无效

ORA-13334:未连接LRS段

ORA-13335:未定义LRS度量信息

ORA-13336:无法将标准维信息/几何对象转换为LRS维/几何对象

ORA-13337:连接LRS多边形失败

ORA-13338:翻转LRS多边形/收集几何对象失败

ORA-13339:LRS多边形剪贴操作涉及到多个环

ORA-13340:几何点的坐标多于一个

ORA-13341:几何线的坐标少于两个

ORA-13342:几何弧的坐标少于三个

ORA-13343:几何多边形的坐标少于四个

ORA-13344:几何弧多边形的坐标少于五个

ORA-13345:几何复合多边形的坐标少于五个

ORA-13346:定义弧的坐标在同一直线上

ORA-13347:定义弧的坐标未分开

ORA-13348:多边形边界未封闭

ORA-13349:多边形边界自身交叉

ORA-13350:复杂多边形的两个或多个环相接

ORA-13351:复杂多边形的两个或多个环重叠

ORA-13352:坐标未描述出一个圆

ORA-13353:ELEM_INFO_ARRAY未按三的倍数组合

ORA-13354:ELEM_INFO_ARRAY中出现不正确的偏移量

ORA-13355:SDO_ORDINATE_ARRAY没有按指定的维数组合

ORA-13356:几何中的相邻点多余

ORA-13357:扩充区块类型未包含两点

ORA-13358:圆类型未包含三点

ORA-13359:扩充区块没有区域

ORA-13360:复合类型中无效的子类型

ORA-13361:复合ETYPE中没有足够的子元素

ORA-13362:复合多边形中的子元素未连接

ORA-13363:几何中没有有效的ETYPE

ORA-13364:层维度与几何对象维数不匹配

ORA-13365:层SRID与几何对象SRID不匹配

ORA-13366:内环和外环的组合无效

ORA-13367:内环/外环的方向错误

ORA-13368:简单多边形类型有多个外环

ORA-13369:4位数字的etype值无效

ORA-13370:应用3DLRS函数失败

ORA-13371:度量维的位置无效

ORA-13372:修改具有空间索引的表的元数据失败

ORA-13373:测量数据不支持类型为Extent的元素

ORA-13374:测量数据不支持SDO_MBR

ORA-13375:层属于[]类型,而插入的几何对象的类型为[]

ORA-13376:为layer_gtype参数指定的类型名无效

ORA-13377:元素组合的方向无效

ORA-13378:所要抽取的元素索引无效

ORA-13379:所要抽取的子元素索引无效

ORA-13400:OracleGeoImage内部错误,参数:[],[],[],[],[]

ORA-13401:不受支持的geoimage格式

ORA-13402:NULL目标

ORA-13403:NULL源几何结构

ORA-13404:不是本地源

ORA-13405:NULL源

ORA-13406:不受支持的图象处理命令[]

ORA-13407:不受认可的空间类型限定词[]

ORA-13408:NULL表名

ORA-13409:Oracle表""不存在.

ORA-13410:NULL列名

ORA-13411:Oracle列""不存在。

ORA-13412:无效的ROWID

ORA-13413:无法选择初始化的GeoImage

ORA-13414:无法更新包含GeoImage的表

ORA-13415:无效的域

ORA-13416:无效的几何结构,参数[]

ORA-13417:未定义的模型空间转换光栅

ORA-13418:未定义的光栅空间转换模型

ORA-13419:无效的范围值

ORA-13420:无效的光栅空间转换模型

ORA-13421:无效的模型空间转换光栅

ORA-13422:未初始化的源

ORA-13423:空的来源

ORA-13424:未初始化的目标

ORA-13425:空目标

ORA-13426:不受支持的光栅原点

ORA-13427:未知的光栅原点

ORA-13428:来源不存在

ORA-13429:不支持操作""(在GeoImage类型""上)

ORA-13430:不支持模型坐标系统

ORA-13433:NULL剪裁方法

ORA-13442:无效缩放参数[][]

ORA-13443:不可识别的缩放模式[]

ORA-13451:不受支持的转换格式[]

ORA-13461:无效的标签/键[]

ORA-13462:无效的连接点

ORA-13463:不受支持的GeoTIFF几何图形定义

ORA-13464:不受支持的转换

ORA-13465:目标窗口无效

ORA-14000:仅可以指定一个LOCAL子句

ORA-14001:LOCAL子句与先前指定的GLOBAL子句相矛盾

ORA-14002:仅可以指定一个GLOBAL子句

ORA-14003:GLOBAL子句与先前指定的LOCAL子句相矛盾

ORA-14004:缺少PARTITION关键字

ORA-14005:缺少RANGE关键字

ORA-14006:无效的分区名

ORA-14007:缺少LESS关键字

ORA-14008:缺少THAN关键字

ORA-14009:可能没有为LOCAL索引分区指定分区界限

ORA-14010:不可以指定索引分区的此物理属性

ORA-14011:指定给结果分区的名称必须明确

ORA-14012:结果分区名与现有分区名发生冲突

ORA-14013:重复的分区名

ORA-14014:最大的分区列数为16

ORA-14015:分区说明过多

ORA-14016:必须对LOCAL分区索引的基本表进行分区

ORA-14017:分区界限列表包含的元素过多

ORA-14018:分区界限列表包含的元素太少

ORA-14019:分区范围元素必须是一个:字符串,日期时间或间隔文字,数字或MAXVALUE

ORA-14020:不可以指定表分区的此物理属性

ORA-14021:必须指定所有列的MAXVALUE

ORA-14022:不支持LOCAL分区簇索引的创建

ORA-14023:不支持GLOBAL分区簇索引的创建

ORA-14024:LOCAL索引的分区数必须等于基本表的分区数

ORA-14025:不能为实体化视图或实体化视图日志指定PARTITION

ORA-14026:PARTITION和CLUSTER子句互相排斥

ORA-14027:仅可以指定一个PARTITION子句

ORA-14028:缺少AT或VALUES关键字

ORA-14029:GLOBAL分区索引必须加上前缀

ORA-14030:CREATETABLE语句中有不存在的分区列

ORA-14031:分区列的类型不可以是LONG或LONGRAW

ORA-14032:分区编号的分区界限过高

ORA-14033:ctchvl:未预期的strdef类型

ORA-14034:ctchvl:未预期的操作数类型

ORA-14035:ctchvl:未预期的字符串数据类型

ORA-14036:列的分区界限值过大

ORA-14037:分区""的分区界限过高

ORA-14038:GLOBAL分区索引必须加上前缀

ORA-14039:分区列必须构成UNIQUE索引的关键字列子集

ORA-14040:传递给TABLE$OR$INDEX$PART$NUM的参数个数不当

ORA-14041:可能没有为结果分区指定分区界限

ORA-14042:可能没有为要移动,修改或重建的分区指定分区界限

ORA-14043:仅可以添加一个分区

ORA-14044:仅可以移动一个分区

ORA-14045:仅可以修改一个分区

ORA-14046:分区可以刚好分成两个新的分区

ORA-14047:ALTERTABLE|INDEXRENAME不可以与其它分区组合

ORA-14048:分区维护操作不可以与其它操作组合

ORA-14049:无效的ALTERTABLEMODIFYPARTITION选项

ORA-14050:无效的ALTERINDEXMODIFYPARTITION选项

ORA-14051:ALTERMATERIALIZEDVIEW选项无效

ORA-14052:此上下文中不允许分区扩展表名称语法

ORA-14053:非法尝试修改(在语句中)

ORA-14054:无效的ALTERTABLETRUNCATEPARTITION选项

ORA-14055:ALTERINDEXREBUILD中的关键字REBUILD必须紧跟<索引名称>

ORA-14056:分区编号:PCTUSED和PCTFREE的总和不可以超过100

ORA-14057:分区"":PCTUSED和PCTFREE的总和不可以超过100

ORA-14058:分区编号:INITRANS值必须小于MAXTRANS值

ORA-14059:分区"":INITRANS值必须小于MAXTRANS值

ORA-14060:不可以更改表分区列的数据类型或长度

ORA-14061:不可以更改索引分区列的数据类型或长度

ORA-14062:一个或多个表分区驻留在只读表空间中

ORA-14063:唯一/主约束条件关键字中存在无用索引

ORA-14064:唯一/主约束条件关键字中存在无用分区的索引

ORA-14065:不可以指定分区表的ALLOCATESTORAGE

ORA-14066:按索引组织的未分区表的选项非法

ORA-14067:重复的TABLESPACE_NUMBER说明

ORA-14068:不可以同时指定TABLESPACE和TABLESPACE_NUMBER

ORA-14069:无效的TABLESPACE_NUMBER值

ORA-14070:仅可以指定分区索引或包含REBUILD的选项

ORA-14071:用于强制约束条件的索引选项无效

ORA-14072:不可以截断固定表

ORA-14073:不可以截断引导程序表或群集

ORA-14074:分区界限必须调整为高于最后一个分区界限

ORA-14075:分区维护操作仅可以对分区索引执行

ORA-14076:DROP/SPLITPARTITION不可以应用到LOCAL索引分区

ORA-14078:您不可以删除GLOBAL索引的最高分区

ORA-14079:标记为无用索引的分区选项非法

ORA-14080:无法按指定的上限来分割分区

ORA-14081:新分区名必须与旧分区名不同

ORA-14082:新分区名必须与对象的任何其它分区名不同

ORA-14083:无法删除分区表的唯一分区

ORA-14084:您仅可以指定LOCAL索引的TABLESPACEDEFAULT

ORA-14085:分区表不能具有LONG数据类型的列

ORA-14086:不可以将区索引作为整体重建

ORA-14087:使用<表名>PARTITION(<分区编号>|<赋值变量>)语法

ORA-14088:TABLE$OR$INDEX$PART$NUM的第二个参数必须是整数常数

ORA-14089:基本表没有对其定义了指定ID的索引

ORA-14090:必须对索引分区

ORA-14091:必须对表分区

ORA-14092:表达式数不等于分区列数

ORA-14093:表达式的数据类型与分区列的数据类型不兼容

ORA-14094:无效的ALTERTABLEEXCHANGEPARTITION选项

ORA-14095:ALTERTABLEEXCHANGE要求非分区,非聚簇的表

ORA-14096:ALTERTABLEEXCHANGEPARTITION中的表必须具有相同的列数

ORA-14097:ALTERTABLEEXCHANGEPARTITION中的列类型或大小不匹配

ORA-14098:ALTERTABLEEXCHANGEPARTITION中的表索引不匹配

ORA-14099:未对指定分区限定表中的所有行

ORA-14100:分区扩展表名不能指远程对象

ORA-14101:分区扩展表名不能指同义字

ORA-14102:仅可以指定一个LOGGING或NOLOGGING子句

ORA-14104:不可以指定分区表/索引的RECOVERABLE/UNRECOVERABLE

ORA-14105:不可以在此上下文中指定REVERSE/NOREVERSE

ORA-14106:不可以指定聚簇表的LOGGING/NOLOGGING

ORA-14107:分区对象要求分区说明

ORA-14108:非法的分区扩展表名语法

ORA-14109:分区扩展对象名仅可以与表一起使用

ORA-14110:分区列不可以是ROWID类型

ORA-14111:不支持聚簇表中的GLOBAL分区索引创建

ORA-14112:可能没有为分区或子分区指定RECOVERABLE/UNRECOVERABLE

ORA-14113:分区表不可以具有LOB数据类型的列

ORA-14114:分区表不能包含具有对象,REF,嵌套表,数组等数据类型的列

ORA-14115:分区编号的分区界限过长

ORA-14116:分区""的分区界限过长

ORA-14117:分区常驻在脱机表空间中

ORA-14118:ALTERTABLEEXCHANGEPARTITION中的CHECK约束条件不匹配

ORA-14119:指定的分区界限过长

ORA-14120:没有为DATE列完整指定分区界限

ORA-14121:MODIFYDEFAULTATTRIBUTES不可以与其它操作组合

ORA-14122:仅可以指定一个REVERSE或NOREVERSE子句

ORA-14123:重复的NOREVERSE子句

ORA-14124:重复的REVERSE子句

ORA-14125:不可以在此上下文中指定REVERSE/NOREVERSE

ORA-14126:只有<并行子句>可遵循结果分区的说明

ORA-14127:非法的索引分区扩展表名语法

ORA-14129:INCLUDINGINDEXES必须作为启用UNIQUE约束条件的表的指定

ORA-14130:UNIQUE约束条件在ALTERTABLEEXCHANGEPARTITION中不匹配

ORA-14131:启用的UNIQUE约束条件存在于其中的一个表中

ORA-14132:表不能用于EXCHANGE中

ORA-14133:ALTERTABLEMOVE不能与其它操作组合

ORA-14134:索引不能同时使用DESC和REVERSE

ORA-14135:LOB列不能用作分区列

ORA-14136:ALTERTABLEEXCHANGErestrictedbyfine-grainedsecurity

ORA-14150:SUBPARTITION关键字丢失

ORA-14151:无效的表分区方法

ORA-14152:PARTITIONS子句中指定的分区号无效

ORA-14153:仅可以指定一个STOREIN或<分区-说明>子句

ORA-14154:仅可以指定一个STOREIN或<子分区-说明>子句

ORA-14155:PARTITION或SUBPARTITION关键字丢失

ORA-14156:SUBPARTITIONS子句中指定的子分区号无效

ORA-14157:无效的子分区名

ORA-14158:子分区说明太多

ORA-14159:重复的子分区名

ORA-14160:该物理属性不能指定给表子分区

ORA-14161:子分区号:PCTUSED和PCTFREE的总和不能超过100

ORA-14162:子分区"":PCTUSED和PCTFREE的总和不能超过100

ORA-14163:子分区号:INITRANS值必须少于MAXTRANS值

ORA-14164:子分区"":INITRANS值必须少于MAXTRANS值

ORA-14166:缺失INTO关键字

ORA-14167:仅可移动一个子分区

ORA-14168:仅可修改一个子分区

ORA-14169:无效的TABLEMODIFYSUBPARTITION选项

ORA-14170:不能在CREATETABLE|INDEX中指定<分区-说明>子句

ORA-14171:不能在CREATE|ALTERTABLE中指定<子分区-说明>子句

ORA-14172:无效的ALTERTABLEEXCHANGESUBPARTITION选项

ORA-14173:非法的子分区扩展的表名语法

ORA-14174:仅<并行子句>可以跟在COALESCEPARTITION|SUBPARTITION之后

ORA-14175:子分区维护操作不能与其它操作组合

ORA-14176:该属性不能指定给散列分区

ORA-14177:只能对按散列或组合分区的表上的LOCAL索引指定STORE-IN(“表空间”列表)

ORA-14183:TABLESPACEDEFAULT仅能对组合的LOCAL索引指定

ORA-14184:无法在SYSTEM分区表中创建一个UNIQUE分区索引

ORA-14185:为该索引分区指定的物理属性不正确

ORA-14186:LOCAL索引的子分区号必须与基于表的子分区号相等

ORA-14187:LOCAL索引的分区方法与基于表的分区方法不一致

ORA-14188:子分区列必须形成UNIQUE索引的关键字列的子集

ORA-14189:该物理属性不能指定给索引子分区

ORA-14190:仅能指定一个ENABLE/DISABLEROWMOVEMENT子句

ORA-14191:ALLOCATESTORAGE不能为组合范围分区对象指定

ORA-14192:不能修改散列索引分区的物理索引属性

ORA-14193:无效的ALTERINDEXMODIFYSUBPARTITION选项

ORA-14194:仅能重建一个子分区

ORA-14195:不能为按RANGE或LIST分区的对象指定ALLOCATESTORAGE

ORA-14240:对SYSTEM和范围组合/系统(R+S)分区方法的语法使用

ORA-14241:无效的表分区方法

ORA-14242:表未被系统或散列方法分区

ORA-14243:表未被范围,系统或散列方法分区

ORA-14244:对系统或组合范围/系统分区表的非法操作

ORA-14251:指定的子分区不存在

ORA-14252:对散列分区无效的ALTERTABLEMODIFYPARTITION选项

ORA-14253:表未被组合范围方法分区

ORA-14254:不能为按(组合)“范围”或“列表”分区的表指定ALLOCATESTORAGE

ORA-14255:未按范围,组合范围或列表方法对表进行分区

ORA-14256:无效的结果分区说明

ORA-14257:不能移动范围或散列分区以外的分区

ORA-14258:无效的分区说明

ORA-14259:表未被散列方法分区

ORA-14260:为该分区指定的物理属性不正确

ORA-14261:添加该散列分区时分区界限未指定

ORA-14262:新子分区名必须与旧子分区名不同

ORA-14263:新子分区名必须与所有其它对象的子分区名不同

ORA-14264:表未被组合范围方法分区

ORA-14265:表子分区列的数据类型或长度不能更改

ORA-14266:索引子分区列的数据类型或长度不能更改

ORA-14267:添加(组合)范围分区时不能指定PARALLEL子句

ORA-14268:分区的子分区''驻留在脱机的表空间中

ORA-14269:不能交换范围或散列分区以外的分区

ORA-14270:未按范围,散列或列表方法对表进行分区

ORA-14271:表未被组合范围/散列方法分区

ORA-14272:仅能重用有上界的分区

ORA-14273:必须首先指定下界分区

ORA-14274:要合并的分区不相邻

ORA-14275:不能将下界分区作为结果分区重用

ORA-14276:EXCHANGESUBPARTITION需要非分区的,非聚簇的表

ORA-14277:在EXCHANGESUBPARTITION中的表必须有相同的列数

ORA-14278:列类型或大小在EXCHANGESUBPARTITION中不匹配

ORA-14279:索引与ALTERTABLEEXCHANGESUBPARTITION中的表不匹配

ORA-14280:表的所有行对指定的子分区不合格

ORA-14282:FOREIGNKEY约束条件在ALTERTABLEEXCHANGESUBPARTITION中不匹配

ORA-14284:一个或多个表的子分区驻留在只读表空间中

ORA-14285:不能COALESCE(结合)该分区的表仅有的分区

ORA-14286:不能COALESCE(结合)该表分区的表仅有的子分区

ORA-14287:不能REBUILD(重建)组合范围分区的索引的分区

ORA-14288:索引未被组合范围方法分区

ORA-14289:不能生成不可用的组合范围分区的本地索引

ORA-14290:ALTERTABLEEXCHANGE[SUB]PARTITION中的PRIMARYKEY约束条件不符

ORA-14291:不能用非分区表EXCHANGE组合分区

ORA-14292:表的分区类型必须与组合分区的子分区类型相匹配

ORA-14293:分区列数与子分区列数不匹配

ORA-14294:分区数与子分区数不匹配

ORA-14295:分区列和子分区列之间的列的类型和大小不匹配

ORA-14296:ALTERTABLEEXCHANGE[SUB]PARTITION中的表块大小匹配出错

ORA-14297:ALTERTABLEEXCHANGE[SUB]PARTITION中的索引块大小匹配出错

ORA-14301:表级属性必须在分区级属性之前指定

ORA-14302:在语句中仅能指定一个'添加的-LOB-存储器-子句'的列表

ORA-14303:分区或子分区次序不正确

ORA-14304:列表分区方法需要一个分区列

ORA-14305:列表值''在分区''中指定了两次

ORA-14306:列表值''在分区'',''中指定了两次

ORA-14307:分区包含的列表值过多

ORA-14308:分区边界元素必须是字符串,日期时间或间隔文字,数值或NULL之一

ORA-14309:列表值的总数超出了允许的最大值

ORA-14310:VALUESLESSTHAN或AT子句不能与按“列表”分区的表一起使用

ORA-14311:需要VALUESLESSTHAN或AT子句

ORA-14312:值已经存在于分区中

ORA-14313:值不在分区中

ORA-14314:所得到的“列表”分区必须至少包含1个值

ORA-14315:不能合并分区自身

ORA-14316:未按“列表”方法对表进行分区

ORA-14317:不能删除分区最后的值

ORA-14318:DEFAULT分区必须是指定的上一分区

ORA-14319:DEFAULT不能使用其他值指定

ORA-14320:DEFAULT不能指定为ADD/DROPVALUES或SPLIT

ORA-14321:无法添加/删除DEFAULT分区的值

ORA-14322:DEFAULT分区已存在

ORA-14323:在DEFAULT分区已存在时无法添加分区

ORA-14324:所要添加的值已存在于DEFAULT分区之中

ORA-14400:插入的分区关键字未映射到任何分区

ORA-14401:插入的分区关键字超出指定的分区

ORA-14402:更新分区关键字列将导致分区的更改

ORA-14403:在获得DML分区锁定之后检测到游标违例

ORA-14404:分区表包含不同表空间中的分区

ORA-14405:分区索引包含不同表空间中的分区

ORA-14406:更新的分区关键字在最高合法分区关键字之外

ORA-14407:分区的表包含在不同表空间中的子分区

ORA-14408:分区的索引包含在不同的表空间中的子分区

ORA-14409:插入的分区关键字在指定的子分区之外

ORA-14450:试图访问已经在使用的事务处理临时表

ORA-14451:不受支持的临时表特性

ORA-14452:试图创建,更改或删除正在使用的临时表中的索引

ORA-14453:试图使用临时表的LOB,其数据已经被清除

ORA-14454:试图引用引用完整性约束条件中的临时表

ORA-14455:试图在临时表中创建引用完整性约束条件

ORA-14456:不能在临时表中重建索引

ORA-14457:临时表中不允许的VARRAY和嵌套表列

ORA-14458:试图用INDEX组织创建临时表

ORA-14459:GLOBAL关键字丢失

ORA-14460:只能指定一个COMPRESS或NOCOMPRESS子句

ORA-14500:LOCAL选项没有分区名而无效

ORA-14501:对象未分区

ORA-14503:仅可以指定一个分区名

ORA-14504:语法不支持语法分析

ORA-14505:LOCAL选项仅对分区索引有效

ORA-14506:分区索引要求LOCAL选项

ORA-14507:分区损坏。所有行均不在分区界限之内

ORA-14508:未找到指定的VALIDATEINTO表

ORA-14509:指定的VALIDATEINTO表格式错误

ORA-14510:仅可以为分区表指定VALIDATEINTO子句

ORA-14511:不能对分区对象进行操作

ORA-14512:不能对聚簇对象进行操作

ORA-14513:分区列不是对象数据类型

ORA-14514:没有子分区名,LOCAL选项无效

ORA-14515:仅能指定一个子分区名

ORA-14516:子分区毁坏,所有的行没有落在子分区界限中

ORA-14517:索引'.'的子分区处于不可用状态

ORA-14518:分区包含的某些行对应于已删除的值

ORA-14519:与的表空间块大小存在冲突:表空间的块大小[]与以前指定/隐含的表空间的块大小[]发生冲突

ORA-14520:表空间的块大小[]与现有对象的块大小[]不匹配

ORA-14521:默认表空间的块大小[](用于)与现有的块大小[]不匹配

ORA-14522:分区级默认表空间的块大小[](用于)与现有的块大小[]不匹配

ORA-14523:的(子)分区不能与表的(子)分区位于同一位置,因为的块大小[]与表的块大小[]不匹配

ORA-14524:始终允许进行分区。将只用于信任的客户机

ORA-14551:无法在查询中执行DML操作

ORA-14552:在查询或DML中无法执行DDL,提交或回退

ORA-14553:无法在查询中执行lob写操作

ORA-14601:在指定子分区模板时指定SUBPARTITIONS或STORE-IN非法

ORA-14602:SUBPARTITIONTEMPLATE仅对复合分区的表有效

ORA-14603:[SUBPARTITIONS|SUBPARTITIONTEMPLATE]subpartition_count语法仅对范围散列表有效

ORA-14604:在CREATETABLE期间,在SUBPARTIITONTEMPLATE指定后再指定SUBPARTITIONS或STOREIN是非法的

ORA-14605:模板中的子分区/段的名称缺失

ORA-14606:表空间已指定用于模板中的此前子分区,但并没有指定用于

ORA-14607:表空间并未指定用于模板中的此前子分区,而是指定用于

ORA-14608:表空间已指定用于模板中列的此前的lob段,但并未指定用于

ORA-14609:表空间并未指定用于模板中列的此前的lob段,而是指定用于

ORA-14610:没有指定子分区的lob列的lob属性

ORA-14611:模板中的子分区名称重复

ORA-14612:模板中的lob列的lob段名重复

ORA-14613:尝试从父级名称和模板名称生成名称,但由于合成的名称过长而失败

ORA-14614:列表值''在子分区''中指定了两次

ORA-14615:列表值'',''在子分区''中指定了两次

ORA-14616:表没有按照列表方法进行子分区的划分

ORA-14617:无法添加/删除DEFAULT子分区的值

ORA-14618:无法删除子分区的最后的值

ORA-14619:生成的列表子分区必须包含至少1个值

ORA-14620:DEFAULT子分区已存在

ORA-14621:在DEFAULT子分区已存在时无法添加子分区

ORA-14622:值已存在于子分区中

ORA-14623:值不存在于子分区中

ORA-14624:DEFAULT子分区必须是指定的上一子分区

ORA-14625:子分区包含相应于要删除的值的行

ORA-14626:所要添加的值已存在于DEFAULT子分区之中

ORA-14627:为GLOBAL分区索引指定的操作无效

ORA-14628:边界说明与LIST方法不一致

ORA-14629:无法删除一个分区中唯一的子分区

ORA-14630:子分区驻留于脱机的表空间中

ORA-14631:分区边界与分区的子分区边界不匹配

ORA-14632:在添加列表子分区时无法指定PARALLEL子句

ORA-14633:复合分区表的ADD列表子分区不允许使用索引维护子句

ORA-14634:在范围列表分区表的分区的SPLIT/MERGE期间无法指定子分区说明

ORA-14635:只能指定一个生成的子分区用于MERGESUBPARTITIONS

ORA-14636:只能指定2个生成的子分区用于SPLITSUBPARTITIONS

ORA-14637:不能合并一个子分区本身

ORA-14638:不能在不同范围的复合分区中MERGE子分区

ORA-14639:只能为散列,组合范围散列表/分区指定SUBPARTITIONS子句

ORA-14640:DROP/SPLITSUBPARTITION不能应用于LOCAL索引子分区

ORA-14641:只能为散列,组合范围散列表/分区指定STORE-IN子句

ORA-14642:ALTERTABLEEXCHANGEPARTITION中表的位图索引不匹配

ORA-14643:ALTERTABLEEXCHANGEPARTITION中表的Hakan因子不匹配

ORA-14644:表未按散列方法划分子分区

ORA-14645:不能为范围列表对象指定STOREIN子句

ORA-14646:Specifiedaltertableoperationinvolvingcompressioncannotbeperformedinthepresenceofusablebitmapindexes

ORA-15000:功能不可用

ORA-15001:功能不可用[]

ORA-15002:功能不可用[]

ORA-15003:功能不可用[]

ORA-15004:功能不可用[]

ORA-15005:功能不可用

ORA-15006:功能不可用[]

ORA-15007:功能不可用

ORA-15008:功能不可用

ORA-15009:功能不可用[]

ORA-15010:功能不可用

ORA-15011:功能不可用[]

ORA-15012:功能不可用[]

ORA-15013:功能不可用[]

ORA-15014:功能不可用[]

ORA-15015:功能不可用[]

ORA-15016:功能不可用[]

ORA-15017:功能不可用[]

ORA-15018:功能不可用

ORA-15019:功能不可用[]

ORA-15020:功能不可用[]

ORA-15021:功能不可用[]

ORA-15022:功能不可用[]

ORA-15023:功能不可用[]

ORA-15024:功能不可用[]

ORA-15025:功能不可用[]

ORA-15026:功能不可用[]

ORA-15027:功能不可用[]

ORA-15029:功能不可用[]

ORA-15030:功能不可用[]

ORA-15031:功能不可用[]

ORA-15032:功能不可用

ORA-15033:功能不可用[]

ORA-15034:功能不可用[]

ORA-15035:功能不可用[]

ORA-15036:功能不可用[]

ORA-15037:功能不可用[]

ORA-15038:功能不可用[]

ORA-15039:功能不可用

ORA-15040:功能不可用

ORA-15041:功能不可用

ORA-15042:功能不可用[]

ORA-15043:功能不可用[]

ORA-15044:功能不可用[]

ORA-15045:功能不可用[]

ORA-15046:功能不可用[]

ORA-15047:功能不可用[]

ORA-15048:功能不可用

ORA-15049:功能不可用[]

ORA-15050:功能不可用[]

ORA-15051:功能不可用[]

ORA-15052:功能不可用[]

ORA-15053:功能不可用[]

ORA-15100:功能不可用

ORA-15101:功能不可用

ORA-15102:功能不可用

ORA-15103:功能不可用

ORA-15104:功能不可用

ORA-15105:功能不可用

ORA-15106:功能不可用

ORA-15107:功能不可用

ORA-15108:功能不可用

ORA-15109:功能不可用

ORA-15110:功能不可用

ORA-15111:功能不可用

ORA-15112:功能不可用

ORA-15113:功能不可用

ORA-15114:功能不可用

ORA-15115:功能不可用

ORA-15116:功能不可用

ORA-15117:功能不可用

ORA-15118:功能不可用

ORA-15119:功能不可用

ORA-15120:功能不可用[]

ORA-15121:功能不可用[]

ORA-15122:功能不可用[]

ORA-15123:功能不可用[]

ORA-15124:功能不可用[]

ORA-15125:功能不可用[]

ORA-15126:功能不可用[]

ORA-15127:功能不可用[]

ORA-15128:功能不可用[]

ORA-15196:功能不可用[][][][][]

ORA-15197:功能不可用[]

ORA-15198:功能不可用[]

ORA-15199:内部跟踪事件号15199

ORA-16000:打开数据库以进行只读访问

ORA-16001:数据库已经被另一例程打开以进行只读访问

ORA-16002:数据库已经被另一例程打开以进行读写访问

ORA-16003:待用数据库仅限只读访问

ORA-16004:备份数据库需要恢复

ORA-16005:数据库需要恢复

ORA-16006:audit_trail目标与数据库打开模式不兼容

ORA-16007:无效的备份控制文件检查点

ORA-16008:不确定的控制文件检查点

ORA-16009:远程归档日志目的地必须为STANDBY数据库

ORA-16010:远程归档日志目的地数据库已经为更新打开

ORA-16011:归档日志远程文件服务器进程处于错误状态

ORA-16012:归档日志待用数据库标识符不匹配

ORA-16013:日志的序列号不需要归档

ORA-16014:日志的序列号未归档,没有可用的目的地

ORA-16015:日志的序列号未归档,介质恢复被禁用

ORA-16016:为线程的序列号归档的日志不可用

ORA-16017:无法使用没有主归档目的地的LOG_ARCHIVE_DUPLEX_DEST

ORA-16018:无法使用带LOG_ARCHIVE_DEST_n的

ORA-16020:可用的目的地少于由LOG_ARCHIVE_MIN_SUCCEED_DEST指定的数量

ORA-16021:会话的目的地不能与会话的目的地相同

ORA-16022:LOG_ARCHIVE_DEST不能为NULL,因为LOG_ARCHIVE_DUPLEX_DEST为非空

ORA-16023:系统的目的地不能与会话的目的地相同

ORA-16024:参数不能进行语法分析

ORA-16025:参数包含重复或冲突的选项

ORA-16026:参数包含无效的数值属性值

ORA-16027:参数丢失目的地选项

ORA-16028:新导致少于LOG_ARCHIVE_MIN_SUCCEED_DEST所需的目的地数量

ORA-16029:无法更改LOG_ARCHIVE_MIN_SUCCEED_DEST,没有归档日志目的地

ORA-16030:会话特定的更改需要LOG_ARCHIVE_DEST_n目的地

ORA-16031:参数的目的地字符串超过的字符串限制

ORA-16032:参数的目的地字符串无法被翻译

ORA-16033:参数的目的地不能与参数的目的地相同

ORA-16034:FROM参数与MANAGED恢复不兼容

ORA-16035:所需的关键字丢失

ORA-16036:无效的MANAGED恢复CANCEL选项

ORA-16037:用户已请求取消受管恢复操作

ORA-16038:日志序列号无法归档

ORA-16039:RFS要求的版本不匹配

ORA-16040:待用目的地归档日志文件已锁定

ORA-16041:远程文件服务器出现严重错误

ORA-16042:用户已请求立即取消受管恢复操作

ORA-16043:已取消维持的恢复会话

ORA-16044:不能在会话级上指定目标的属性

ORA-16045:循环的归档日志目标相关性链

ORA-16046:由于相关目标失败,归档日志目标失败

ORA-16047:相关归档日志目标不能是备用数据库

ORA-16048:在写入归档日志时导致模拟错误

ORA-16049:写入归档日志出现模拟错误

ORA-16050:目标已超过指定的限额大小

ORA-16051:参数包含无效的延迟时间

ORA-16052:取间隔序列时出了问题,已取消介质恢复。

ORA-16053:FAL归档失败,无法归档线程号序列号

ORA-16054:用于自动检测RFS间隔序列的事件

ORA-16055:已拒绝FAL请求

ORA-16056:使用备份控制文件归档需要正确的语法

ORA-16057:使用当前控制文件归档需要正确的语法

ORA-16058:未装载备用数据库例程

ORA-16059:日志文件为空或下一个可用块无效

ORA-16060:日志文件是最新版本

ORA-16061:日志文件状态已更改

ORA-16062:日志未归档

ORA-16063:远程归档已由另一个例程启用

ORA-16064:远程归档已被另一个例程禁用

ORA-16065:远程归档已在备用目标上禁用

ORA-16066:远程归档已禁用

ORA-16067:归档日志中的激活标识符匹配出错

ORA-16068:重做日志文件的激活标识符匹配出错

ORA-16069:归档日志备用数据库的激活标识符匹配出错

ORA-16070:参数包含无效的REGISTER属性值

ORA-16071:未找到相关的归档日志文件

ORA-16072:需要一个备用数据库目标的最小值

ORA-16073:必须启用归档

ORA-16074:必须激活ARCH进程

ORA-16075:备用数据库目标匹配出错

ORA-16076:未知的备用数据库目标

ORA-16077:模拟网络传输错误

ORA-16078:介质恢复已禁用

ORA-16079:未启用备用归档

ORA-16080:用于APPLY的LogMiner会话无效

ORA-16081:APPLY的进程数不足

ORA-16082:逻辑备用未正确初始化

ORA-16083:尚未创建LogMiner会话

ORA-16084:一个应用引擎已在运行

ORA-16085:应用引擎相关的事件

ORA-16086:备用数据库未包含可用的备用日志文件

ORA-16087:进行从容切换需要备用或当前的控制文件

ORA-16088:归档日志未完全归档

ORA-16089:归档日志已注册

ORA-16090:要被替换的归档日志不是由受管备用进程创建的

ORA-16091:相关归档日志目标已经归档

ORA-16092:相关归档日志目标未激活

ORA-16093:相关归档日志目标不支持LGWR

ORA-16094:归档操作过程中关闭了数据库

ORA-16095:移去不活动的相关目标

ORA-16096:ALTERDATABASEPREPARETOSWITCHOVERTOPHYSICALSTANDBY

ORA-16097:ALTERDATABASEPREPARETOSWITCHOVERTOPRIMARY

ORA-16098:为了保护主数据库,已强行关闭不可访问的备用数据库

ORA-16099:备用数据库中出现内部错误ORA-00600

ORA-16100:不是一个有效的逻辑备用数据库

ORA-16101:未找到有效的起始SCN

ORA-16102:远程信息对于指定的主数据库不可用

ORA-16103:必须停止逻辑备用应用,才能允许进行此操作

ORA-16104:请求的逻辑备用选项无效

ORA-16105:逻辑备用已在后台运行

ORA-16106:启用netslave测试的事件

ORA-16107:已处理主数据库中的所有日志数据

ORA-16108:数据库不再是备用数据库

ORA-16109:无法应用前一个主数据库的日志数据

ORA-16110:逻辑备用应用DDL的用户过程处理

ORA-16111:日志挖掘和应用正在启动

ORA-16112:日志挖掘和应用正在停止

ORA-16113:正在应用对表或序列对象号的更改

ORA-16114:正在通过提交SCN应用DDL事务处理

ORA-16115:正在加载LogMiner字典数据

ORA-16116:无可用工作

ORA-16117:正在处理

ORA-16119:正在SCN上构建事务处理

ORA-16120:正在计算SCN为的事务处理的相关性

ORA-16121:正在通过提交SCN应用事务处理

ORA-16122:正在SCN上应用大的dml事务处理

ORA-16123:事务处理正在等待批准提交

ORA-16124:事务处理正在等待另一事务处理

ORA-16125:大的事务处理正在等待另一事务处理

ORA-16126:加载表或序列对象号

ORA-16127:因等待要应用的其它事务处理而停滞

ORA-16128:用户启动的关闭操作已成功完成

ORA-16129:遇到不受支持的dml

ORA-16130:日志流中丢失补充的日志信息

ORA-16131:在备用的终端恢复过程中发生错误。

ORA-16132:在备用激活过程中发生错误。

ORA-16133:数据文件的终端恢复戳不正确。

ORA-16134:无效的MANAGEDrecoveryFINISH选项

ORA-16135:终端恢复未找到线程号序列号的日志。

ORA-16136:受管备用恢复未激活

ORA-16137:不需要终端恢复

ORA-16138:未从主数据库收到日志流的结尾部分

ORA-16139:需要介质恢复

ORA-16140:备用联机日志尚未恢复

ORA-16141:启用模拟的归档日志错误

ORA-16142:模拟的归档日志错误

ORA-16143:终端恢复过程中或之后不允许进行RFS连接

ORA-16144:在进行终端恢复时模拟RFS错误

ORA-16145:线程号序列号的归档操作正在进行中

ORA-16146:备用目标控制文件不能入队

ORA-16147:备用数据库已由多个归档日志目标引用

ORA-16148:用户请求的受管恢复操作过期

ORA-16149:启用模拟的ARCHRAC归档测试

ORA-16150:在另一个较旧的备用数据库上执行了FINISH恢复

ORA-16151:“受管备用恢复”不可用

ORA-16152:备用数据库处于'不丢失数据'保护模式

ORA-16153:启用“ARCH物理RFS”客户机调试

ORA-16154:有疑问的属性:

ORA-16155:启用的归档进程数不超过log_archive_max_processes

ORA-16156:如果数据库是受备用数据库保护的,则不允许存在LGWR归档日志相关性

ORA-16157:成功的FINISH恢复后面不允许进行介质恢复

ORA-16158:进行终端恢复时模拟失败

ORA-16159:不能更改受保护的备用目标属性

ORA-16160:不能更改受保护的备用数据库配置

ORA-16161:不能将组的备用重做日志文件成员和联机重做日志文件成员混合

ORA-16162:无法将新的备用数据库添加到受保护的配置中

ORA-16163:LGWR网络服务器主机连接错误

ORA-16164:LGWR网络服务器主机分离错误

ORA-16165:LGWR从网络服务器接收消息失败

ORA-16166:LGWR网络服务器无法发送远程消息

ORA-16167:LGWR网络服务器无法切换到非阻塞模式

ORA-16168:LGWR网络服务器无法切换到阻塞模式

ORA-16169:LGWR网络服务器的参数无效

ORA-16170:并行终端恢复可能会丢失比必需的数据更多的数据

ORA-16171:由于线程,序列-的间隔,因此不允许使用RECOVER...FINISH

ORA-16172:在终端上到达重做日志末端后又检测到归档日志

ORA-16173:活动的归档网络连接不兼容

ORA-16174:userrequestedthread/sequenceterminationofmanagedrecovery

ORA-16175:cannotshutdowndatabasewhenmediarecoveryisactive

ORA-16199:终端恢复无法恢复到一致点

ORA-16200:跳过过程已请求跳过语句

ORA-16201:跳过过程已请求应用语句

ORA-16202:跳过过程已请求替换语句

ORA-16203:无法解释跳过过程的返回值

ORA-16204:成功应用了DDL

ORA-16205:由于跳过设置而跳过了DDL

ORA-16206:数据库已配置为逻辑备用数据库

ORA-16207:不允许构建逻辑备用字典。

ORA-16208:开始构建逻辑备用字典时失败。

ORA-16209:完成构建逻辑备用字典时失败。

ORA-16210:由于出现错误,逻辑备用协调程序进程终止

ORA-16211:在归档重做日志中找到不支持的记录

ORA-16212:指定的“应用”进程数太多

ORA-16213:遇到DDL,停止应用引擎

ORA-16214:由于应用延迟而停止应用

ORA-16300:LSBY已构建跟踪事件

ORA-16501:数据防护中介操作失败

ORA-16502:数据防护中介操作成功,但有警告

ORA-16503:站点ID分配失败

ORA-16504:数据防护配置已存在

ORA-16505:站点ID无效

ORA-16506:内存不足

ORA-16507:请求标识符无法识别

ORA-16508:通道句柄未初始化

ORA-16509:请求超时

ORA-16510:使用ksrwait时消息传送出错

ORA-16511:使用ksrget时消息传送出错

ORA-16512:参数超过了最大大小限制

ORA-16513:超过了最大请求数

ORA-16514:未找到请求

ORA-16515:没有rcv通道

ORA-16516:资源状态无效

ORA-16517:对象句柄无效

ORA-16518:无法分配虚拟例程ID

ORA-16519:资源句柄无效

ORA-16520:无法分配资源ID

ORA-16521:无法创建一般模板ID

ORA-16522:未找到一般模板

ORA-16523:属性数已耗尽

ORA-16524:操作不受支持

ORA-16525:数据防护中介尚不可用

ORA-16526:无法分配任务元素

ORA-16527:无法分配SGA堆

ORA-16528:无法分配PGA堆

ORA-16529:发送方ID无效

ORA-16530:缓冲区或长度无效

ORA-16531:无法发送消息

ORA-16532:数据防护配置不存在

ORA-16533:数据防护中介的状态不一致

ORA-16534:无法接受更多的请求

ORA-16535:故障转移请求被拒绝

ORA-16536:未知的对象类型

ORA-16537:超过了子代数目

ORA-16538:请求的项没有匹配项

ORA-16539:未找到任务元素

ORA-16540:参数无效

ORA-16541:站点未启用

ORA-16542:无法识别操作

ORA-16543:对中介的请求无效

ORA-16544:无法产生请求

ORA-16545:无法获取响应

ORA-16546:缺少段或段无效

ORA-16547:无法删除请求

ORA-16548:资源未启用

ORA-16549:字符串无效

ORA-16550:结果被截断

ORA-16551:已复制短字符串

ORA-16552:无法启动数据防护中介进程(DMON)

ORA-16553:无法关闭数据防护中介进程(DMON)

ORA-16554:转换无效

ORA-16555:数据防护资源未激活

ORA-16556:错误消息已采用XML形式

ORA-16557:资源已在使用

ORA-16558:为切换指定的站点不是备用站点

ORA-16559:在上内存不足

ORA-16560:无法转换文档,在""上发生语法错误

ORA-16561:必须使用ONLINE父状态,在""上出现语法错误

ORA-16562:此处未使用intended_state,在""上出现语法错误

ORA-16563:无法添加值,在""上出现语法错误

ORA-16564:查找失败,在上出现语法错误

ORA-16565:属性重复,在上出现语法错误

ORA-16566:文档类型不受支持

ORA-16567:在""上出现数据防护中介内部语法分析程序错误

ORA-16568:无法设置属性

ORA-16569:未启用数据防护配置

ORA-16570:操作需要重新启动站点""

ORA-16571:无法创建数据防护配置数据文件

ORA-16572:未找到数据防护配置数据文件

ORA-16573:试图移动已启用的DRC上的配置文件

ORA-16574:数据防护配置数据文件未关闭

ORA-16575:未正确取消数据防护配置数据文件的标识

ORA-16576:无法更新数据防护配置数据文件

ORA-16577:检测到数据防护配置数据文件已损坏

ORA-16578:无法读取数据防护配置数据文件

ORA-16579:检测到DataGuardNetSlave状态错误

ORA-16580:DataGuardNetSlave网络链接错误

ORA-16581:DataGuardNetSlave无法向DRCX发送消息

ORA-16582:数据防护连接进程从NetSlave收到了错误

ORA-16583:数据防护连接进程DRCX的状态错误

ORA-16584:备用站点上的操作非法

ORA-16585:主站点上的操作非法

ORA-16586:数据防护中介无法更新站点上的配置

ORA-16587:对象句柄不明确

ORA-16588:内部缓冲区不足

ORA-16589:数据防护连接进程检测到一个网络传输错误

ORA-16590:未在数据防护配置中建立主站点

ORA-16591:文档中存在未知字段""

ORA-16592:文档中缺少字段""

ORA-16593:XML转换失败

ORA-16594:进程发现不存在DMON进程

ORA-16595:无法终止NetSlave进程

ORA-16596:站点不是数据防护配置的成员

ORA-16597:数据防护中介检测到两个或更多的主站点

ORA-16598:数据防护中介检测到配置中存在错误的匹配

ORA-16599:数据防护中介检测到过时的配置

ORA-16600:只能在目标站点上提交故障转移操作

ORA-16601:站点包含的某些必备资源已被禁用

ORA-16602:要执行此操作,必须禁用资源

ORA-16603:数据防护中介检测到配置ID中存在错误的匹配

ORA-16604:无法描述使用程序包""的模板

ORA-16605:模板正在使用中,因此无法删除它

ORA-16606:未找到属性""

ORA-16607:一个或多个站点出了故障

ORA-16608:一个或多个站点有警告信息

ORA-16609:一个或多个资源出了故障

ORA-16610:一个或多个资源有警告信息

ORA-16611:应用户要求中止了操作

ORA-16612:属性""的字符串值过长

ORA-16613:正在对站点进行初始化

ORA-16614:对象的父对象已被禁用

ORA-16615:DataGuardNetSlave测试事件

ORA-16616:DataGuardNetSlave监视测试事件

ORA-16617:请求中指定了未知的对象标识符

ORA-16618:响应文档有""字节,过大

ORA-16619:健康检查超时

ORA-16620:无法为删除操作连接一个或多个站点

ORA-16621:用于创建站点的主机名和SID名必须是唯一的

ORA-16622:两个或更多的“中介”站点解析为同一个物理站点

ORA-16623:检测到旧的DRCUID序列号

ORA-16624:检测到中介协议版本不匹配

ORA-16625:不能到达主站点

ORA-16626:无法启用指定的对象

ORA-16627:所有备用数据库都不支持总体保护模式

ORA-16628:“中介”保护模式与数据库设置不一致

ORA-16629:databasereportsadifferentprotectionlevelfromtheprotectionmode

ORA-16701:一般资源防护请求失败

ORA-16702:一般资源管理器警告

ORA-16703:请求状态未知

ORA-16704:暂挂前一次状态设置操作

ORA-16705:资源防护遇到严重的内部错误

ORA-16706:资源防护不可用

ORA-16707:提供给资源防护的值无效

ORA-16708:提供给资源防护的状态无效

ORA-16709:资源防护忙,无法为请求进行服务

ORA-16710:资源防护的内存不足

ORA-16711:资源防护索引超出了界限

ORA-16712:资源句柄无效

ORA-16713:为请求进行服务时,资源防护超时

ORA-16714:资源防护超过了其重试限制值

ORA-16715:逻辑备用数据库需要实例化

ORA-16716:清除参数LOG_ARCHIVE_DEST时失败

ORA-16717:清除参数LOG_ARCHIVE_DUPLEX_DEST时失败

ORA-16718:未找到数据库资源

ORA-16719:无法查询V$ARCHIVE_DEST固定视图

ORA-16720:没有可用的LOG_ARCHIVE_DEST_n参数

ORA-16721:无法设置LOG_ARCHIVE_DEST_n参数

ORA-16722:无法设置LOG_ARCHIVE_DEST_STATE_n参数

ORA-16723:V$ARCHIVE_DEST中缺少连接描述符

ORA-16724:资源的目标状态已设置为OFFLINE

ORA-16725:提供给资源管理器的阶段无效

ORA-16726:提供给资源管理器的外部条件无效

ORA-16727:资源防护无法关闭数据库

ORA-16728:无法设置日志归档目标

ORA-16729:执行dbms_logstdby.log过程时出错

ORA-16730:执行dbms_logstdby.skip_txn过程时出错

ORA-16731:执行dbms_logstdby.unskip_txn过程时出错

ORA-16732:执行dbms_logstdby.skip过程时出错

ORA-16733:执行dbms_logstdby.unskip过程时出错

ORA-16734:执行dbms_logstdby.skip_error过程时出错

ORA-16735:执行dbms_logstdby.unskip_error过程时出错

ORA-16736:无法设置备用日志归档目标参数

ORA-16737:无法设置日志归档格式参数

ORA-16738:无法设置数据库文件名转换参数

ORA-16739:无法设置日志文件名转换参数

ORA-16740:无法设置日志归档跟踪参数

ORA-16741:无法设置控制文件参数

ORA-16742:无法设置锁名跟踪参数

ORA-16743:无法设置FAL客户机参数

ORA-16744:无法设置FAL服务器参数

ORA-16745:卸载数据库期间,资源防护遇到错误

ORA-16746:装载数据库期间,资源防护遇到错误

ORA-16747:无法打开逻辑备用防护

ORA-16748:打开数据库期间,资源防护遇到错误

ORA-16749:在切换到逻辑主数据库时,资源防护遇到错误

ORA-16750:在激活逻辑主数据库时,资源防护遇到错误

ORA-16751:在切换到主数据库时,资源防护遇到错误

ORA-16752:资源防护无法装载备用数据库

ORA-16753:资源防护无法打开备用数据库

ORA-16754:资源防护无法激活备用数据库

ORA-16755:资源防护无法卸载备用数据库

ORA-16756:资源防护无法打开只读备用数据库

ORA-16757:资源防护无法获取属性

ORA-16758:资源防护无法验证属性

ORA-16759:资源防护无法用初始SCN启动逻辑应用引擎

ORA-16760:资源防护无法启动逻辑应用引擎

ORA-16761:资源防护无法停止逻辑应用引擎

ORA-16762:数据库状态无效

ORA-16763:为某些意外联机的站点提供的日志传输服务

ORA-16764:为某些意外脱机的站点提供的日志传输服务

ORA-16765:物理应用服务意外联机

ORA-16766:物理应用服务意外脱机

ORA-16767:逻辑应用服务意外联机

ORA-16768:逻辑应用服务意外脱机

ORA-16769:执行apply_set过程时出错

ORA-16770:执行apply_unset过程时出错

ORA-16771:启动ARCH进程时出错

ORA-16772:在主数据库和备用数据库之间切换时出错

ORA-16773:启动物理应用服务(MRP进程)时出错

ORA-16774:停止物理应用服务(MRP进程)时出错

ORA-16775:物理应用服务过早终止

ORA-16776:日志传输服务的健康检查失败

ORA-16777:在V$ARCHIVE_DEST中未找到某个站点的目标条目

ORA-16778:某些站点的日志传输服务存在错误

ORA-16779:某些站点的目标参数存在语法错误

ORA-16780:某些站点的限额已用完

ORA-16781:某些站点的日志传输服务状态未知

ORA-16782:无法获取某些关键可配置属性的值

ORA-16783:尚未设置某些关键可配置属性

ORA-16784:属性Dependency或Alternate中指定的站点名不正确

ORA-16785:数据库不处于ARCHIVELOG模式

ORA-16786:资源防护无法访问数据防护元数据

ORA-16787:DataGuardResourceGuard进程事件测试

ORA-16788:无法设置一个或多个数据库配置属性值

ORA-16789:备用重做日志缺失

ORA-16790:可配置属性的值无效

ORA-16791:无法检查备用重做日志是否存在

ORA-16792:某些可配置属性的值与数据库设置不一致

ORA-16793:逻辑备用数据库Guard意外关闭

ORA-16794:数据库Guard已为主数据库打开

ORA-16795:数据库资源防护程序检测到数据库需要重新实例化

ORA-16796:一个或多个属性无法从数据库导入

ORA-16797:DataGuard中介环境中缺少SPFILE

ORA-16798:在备用数据库上无法完成终端恢复

ORA-16799:物理应用服务已经脱机

ORA-16800:某些站点的日志传输服务被错误设置为ALTERNATE

ORA-16801:某些与日志传输相关的属性不一致

ORA-16802:无法将属性'Alternate'设置为主站点名称

ORA-16803:无法查询数据库表或固定视图

ORA-16804:元数据中的一个或多个配置属性具有无效值

ORA-16805:LogXptMode属性的更改违反了总体保护模式

ORA-16806:补充事件记录功能未启用

ORA-16807:unabletosetprotectionmodetothedatabase

ORA-16900:客户机无法初始化

ORA-16901:环境无法初始化

ORA-16902:无法分配句柄

ORA-16903:无法连接到数据库

ORA-16904:无法设置属性

ORA-16905:失败。

ORA-16906:无法接受命令:内存不足

ORA-16907:字段缺失

ORA-16908:未知选项:""

ORA-16909:出现严重错误。正在退出...

ORA-16910:无法向服务器发出命令

ORA-16911:警告:

ORA-16912:未知的命令""。请尝试使用"帮助"

ORA-16913:可使用以下命令:

ORA-16914:缺少连接字符串。请尝试使用"帮助"

ORA-16915:已连接。

ORA-16916:缺少站点。请尝试使用"帮助"

ORA-16917:缺少XML文档。请尝试使用"帮助"

ORA-16918:未知的文档类型

ORA-16919:缺少文档

ORA-16920:文档已损坏

ORA-16921:已成功。

ORA-16922:警告:

ORA-16923:错误:

ORA-16925:退出程序

ORA-16926:显示框架,站点或资源的配置

ORA-16927:启用框架,站点或资源

ORA-16928:禁用框架,站点或资源

ORA-16929:显示指定命令的帮助

ORA-16930:使框架,站点或资源联机

ORA-16931:使框架,站点或资源脱机

ORA-16932:显示特定站点的Console日志

ORA-16933:显示特定站点的预警日志

ORA-16934:显示框架的版本

ORA-16935:从容切换到备用站点

ORA-16936:故障转移到备用站点

ORA-16937:连接到服务器

ORA-16938:向恢复框架发送命令

ORA-16939:无法将""作为主站点启动

ORA-16940:已将""作为新的主站点启动

ORA-16941:切换已成功。新的主站点是""

ORA-16942:无法将""作为备用站点启动

ORA-16943:已将""作为备用站点启动

ORA-16944:故障转移已成功。新的主站点是""

ORA-16945:在""上存在语法错误

ORA-16946:未找到站点""

ORA-16947:""不以主角色运行

ORA-16948:""不以备用角色运行

ORA-16949:未找到资源""

ORA-16950:无法检索"",以进行编辑

ORA-16951:未找到管理器信息

ORA-16952:无法描述配置

ORA-16953:站点或资源""不存在

ORA-16954:资源不能以该方式在多个站点上运行

ORA-16955:无法创建或找到模板

ORA-16956:缺少模板名

ORA-16957:未找到模板""

ORA-16958:无法转换文档

ORA-16959:框架的应答为NULL

ORA-16960:状态不可用

ORA-16961:创建配置,站点或资源

ORA-16962:编辑配置,站点或资源

ORA-16963:移去配置,站点或资源

ORA-16964:移去未用的模板

ORA-16965:没有关于""的帮助

ORA-16966:没有属性

ORA-16967:--按回车键继续,或按Q退出--

ORA-16968:""的当前状态:

ORA-16969:已将配置""添加到主站点""

ORA-16970:已将模板""作为"."创建。

ORA-16971:将数据库一般资源""添加到角色""。

ORA-16972:已添加数据库资源""。

ORA-16973:配置""的默认主数据库当前是""。

ORA-16974:禁用。

ORA-16975:启用。

ORA-16976:已更新属性""。

ORA-16977:已移去配置。

ORA-16978:已从配置移去站点""。

ORA-16979:资源""在主角色中的默认状态设为""。

ORA-16980:资源""在备用角色中的默认状态设为""。

ORA-16981:已从配置中移去资源""。

ORA-16982:已将站点""添加到配置。

ORA-16983:已启动。

ORA-16984:已停止。

ORA-16985:存在个模板:

ORA-16986:模板都在使用中。

ORA-16987:存在一个模板:

ORA-16988:已移去未用的模板""。

ORA-16989:有效状态是:

ORA-16990:已更新站点""。

ORA-16991:资源名不明确

ORA-16992:您必须手动重新启动站点""。

ORA-17500:ODM错误:

ORA-17501:逻辑块大小无效

ORA-17502:ksfdcre:未能创建文件

ORA-17503:ksfdopn:未能打开文件

ORA-17504:ksfddel:无法删除文件

ORA-17505:ksfdrsz:未能将文件大小调整为大小为的块

ORA-17506:I/O错误模拟

ORA-17507:I/O请求大小不是逻辑块大小的倍数

ORA-17508:I/O请求缓冲区ptr未对齐

ORA-17509:试图超出block1的偏移量执行I/O

ORA-17510:试图超出文件的大小执行I/O

ORA-17610:文件''不存在,大小也未指定

ORA-17611:ksfd:无法访问文件'',已关闭全局打开特性

ORA-17612:FailedtodiscoverOracleDiskManagerlibrary,returnvalue

ORA-18000:大纲名称无效

ORA-18001:没有为ALTEROUTLINE指定选项

ORA-18002:指定的大纲不存在

ORA-18003:已经有该签名的大纲存在

ORA-18004:大纲已存在

ORA-18005:该操作需要创建大纲权限

ORA-18006:该操作需要删除大纲权限

ORA-18007:该操作需要更改大纲权限

ORA-18008:无法找到OUTLN方案

ORA-18009:一个或多个大纲系统表不存在

ORA-18010:命令丢失必须的CATEGORY关键字

ORA-18011:FROM子句中指定的大纲不存在

ORA-18012:该操作需要select_catalog_role角色

ORA-18013:等待资源时超时

ORA-18014:等待资源时检测到死锁

ORA-18015:源大纲签名无效

ORA-19000:缺少RELATIONAL关键字

ORA-19001:指定的存储选项无效

ORA-19002:缺少XMLSchemaURL

ORA-19003:缺少XML根元素名

ORA-19004:XMLTypeOBJECTRELATIONAL存储选项重复

ORA-19005:XMLTypeLOB存储选项重复

ORA-19006:XMLTypeTYPE存储选项不适用于存储类型

ORA-19007:方案和元素不匹配

ORA-19008:XMLType的版本无效

ORA-19009:缺少XMLSchema关键字

ORA-19010:无法插入XML片段

ORA-19011:字符串缓冲区太小

ORA-19012:无法将XML片段转换到所需的数据类型

ORA-19013:无法创建包含XMLType的VARRAY列

ORA-19015:XML标记的标识符()无效

ORA-19016:属性不能出现在元素说明后面

ORA-19017:属性只能是简单标量

ORA-19018:XML标记''中存在无效字符

ORA-19019:传给DBMS_XMLGEN.GETXML的上下文无效

ORA-19020:XMLType列的解除引用无效

ORA-19021:XML操作的一般事件

ORA-19022:XMLXPath函数已禁用

ORA-19023:UPDATEXML运算符的第一个参数必须是XMLTYPE

ORA-19024:必须命名游标表达式

ORA-19025:EXTRACTVALUE只返回一个节点的值

ORA-19026:EXTRACTVALUE只能检索叶节点的值

ORA-19027:用XML运算符隐藏查询重写的事件

ORA-19028:传递给toObject()函数的ADT参数无效

ORA-19029:无法将指定XMLType转换为所需的类型

ORA-19030:用于不基于方案的XML文档的方法无效。

ORA-19031:XML元素或属性与类型.中的任何元素或属性都不匹配

ORA-19032:XML标记应为,但却获得

ORA-19033:XML文档中指定的方案与方案参数不匹配

ORA-19034:方案生成过程中不支持该类型

ORA-19200:列说明无效

ORA-19201:数据类型不受支持

ORA-19202:XML处理时出错

ORA-19203:DBMS_XMLGEN处理时出错

ORA-19204:非标量值''被标记为XML属性

ORA-19205:属性''限定了选择列表中的一个非标量值

ORA-19206:用于查询或REFCURSOR参数的值无效

ORA-19207:XMLELEMENT的标量参数不能有别名。

ORA-19208:参数(用于函数)必须具有别名

ORA-19209:格式化参数无效或不受支持

ORA-19300:uri处理时出错

ORA-19320:在HTTPURL中未指定主机名

ORA-19321:无法打开到主机()的HTTP连接:端口()

ORA-19322:从主机()读取时,遇到了错误:端口()

ORA-19323:url字符串无效

ORA-19330:类型''.''未安装。使用CREATE_DBURI运算符前,请先安装该类型

ORA-19331:CREATE_DBURI运算符的最后一个参数必须是一个列

ORA-19332:CREATE_DBURI运算符中的列无效

ORA-19333:CREATE_DBURI运算符中的标志无效

ORA-19334:CREATE_DBURI运算符中的列说明无效

ORA-19335:格式类型对象无效

ORA-19336:缺少XML根元素

ORA-19400:系统类型和对象SYS.相冲突

ORA-19500:设备块大小无效

ORA-19501:文件"",块编号读错误(块大小=)

ORA-19502:文件"",块编号写错误(块大小=)

ORA-19503:无法获得有关的设备信息,名称="",类型="",参数=""

ORA-19504:无法创建文件""

ORA-19505:无法识别文件""

ORA-19506:无法创建顺序文件,名称="",参数=""

ORA-19507:无法检索顺序文件,句柄="",参数=""

ORA-19508:无法删除文件""

ORA-19509:无法删除顺序文件,句柄="",参数=""

ORA-19510:无法设置区块的大小给文件""(块大小=)

ORA-19511:从介质管理器层接收到错误,错误文本为:

ORA-19550:无法在使用调度程序时使用备份/恢复功能

ORA-19551:设备正忙,设备类型:,设备名称:

ORA-19552:设备类型无效

ORA-19553:设备名称无效

ORA-19554:配置设备时出错,设备类型:,设备名称:

ORA-19555:无效的LOG_ARCHIVE_MIN_SUCCEED_DEST参数值

ORA-19556:当前所需的目的地LOG_ARCHIVE_DUPLEX_DEST延期

ORA-19557:设备错误,设备类型:,设备名称:

ORA-19558:撤消配置设备时出错

ORA-19559:发送设备命令时出错:

ORA-19560:不是有效的设备限制

ORA-19561:需要一个DISK通道

ORA-19562:文件为空

ORA-19563:标题(文件)验证失败

ORA-19564:写入个字节(在块编号)时出错

ORA-19565:对顺序设备进行双工时BACKUP_TAPE_IO_SLAVES禁用

ORA-19566:超出损坏块限制(文件)

ORA-19567:由于正在备份或复制而无法缩小文件

ORA-19568:设备已配置给此会话

ORA-19569:设备未配置给此会话

ORA-19570:文件号超出有效范围1到

ORA-19571:控制文件中未找到recidstamp

ORA-19572:由于正在调整文件大小而无法处理文件

ORA-19573:无法获得入队(数据文件的)

ORA-19574:必须指定输出文件名

ORA-19575:需要块(在文件中),找到

ORA-19576:未在控制文件中定义数据文件

ORA-19577:文件丢失

ORA-19578:对顺序文件进行双工时到达卷的末尾,备份片不完整。

ORA-19579:未找到的归档日志记录

ORA-19580:交谈不活动

ORA-19581:未命名任何文件

ORA-19582:的归档日志文件标题验证失败

ORA-19583:交谈因错误而终止

ORA-19584:文件已在使用中

ORA-19585:段上出现卷的预先结尾

ORA-19586:千位限制过小,致使无法保留段目录

ORA-19587:在块编号处读取个字节时出错

ORA-19588:recidstamp不再有效

ORA-19589:不是快照或备份控制文件

ORA-19590:对话正在进行中

ORA-19592:错误的对话类型

ORA-19593:数据文件号已包括为

ORA-19594:控制文件已包括为

ORA-19595:归档日志已包含在备份对话中

ORA-19596:未创建快照控制文件

ORA-19597:文件块大小不匹配的设置块大小

ORA-19598:必须为增量备份指定起始SCN

ORA-19599:块编号已在中损坏

ORA-19600:输入文件为()

ORA-19601:输出文件为()

ORA-19602:无法按NOARCHIVELOG模式备份或复制活动文件

ORA-19603:无法用KEEP..备份或复制活动文件UNRECOVERABLE选项

ORA-19604:对话文件的命名阶段已结束

ORA-19605:必须指定输入文件名

ORA-19606:无法复制到(或恢复为)快照控制文件

ORA-19607:位于活动的控制文件中

ORA-19608:不是一个备份段

ORA-19609:来自不同的备份集:stampcount

ORA-19610:目录块已损坏

ORA-19611:备份段出现混乱。要求的是但找到

ORA-19612:数据文件没有恢复,因为

ORA-19613:在备份集中未找到数据文件

ORA-19614:在备份集中未找到存档日志线程序列

ORA-19615:有些文件在备份集中未找到

ORA-19616:如果未安装数据库,则必须指定输出文件名

ORA-19617:文件含有不同的重置日志数据

ORA-19618:在调用restoreValidate之后,无法为文件命名

ORA-19619:在给文件命名之后,无法调用restoreValidate

ORA-19621:已指定存档日志范围

ORA-19622:存档日志线程序列没有恢复,因为

ORA-19623:文件已打开

ORA-19624:操作失败,如果可能请重试

ORA-19625:识别文件时出错

ORA-19626:备份集类型为-无法在此对话中处理

ORA-19627:在控制文件应用期间,无法读取备份段

ORA-19628:无效的SCN范围

ORA-19629:在指定的存档日志SCN范围中没有任何文件

ORA-19630:在复制备份段时,遇到卷结尾

ORA-19631:存档日志记录不包含任何文件名

ORA-19632:在控制文件中未找到文件名

ORA-19633:控制文件记录与恢复目录不同步

ORA-19634:此函数需要文件名

ORA-19635:输入及输出文件名是相同的

ORA-19636:已包括存档日志线程序列

ORA-19637:在使用DISK设备时,backupPieceCreate需要文件名

ORA-19638:文件不够新,所以无法应用此增量备份

ORA-19639:文件比此增量备份还要新

ORA-19640:数据文件检查点为SCN时间

ORA-19641:备份数据文件检查点为SCN时间

ORA-19642:增量-起始SCN为

ORA-19643:数据文件:增量-起始SCN太新

ORA-19644:数据文件:增量-起始SCN在重置日志SCN之前

ORA-19645:数据文件:增量-起始SCN在创建SCN之前

ORA-19646:无法将数据文件的大小从更改为

ORA-19647:在INCREMENTAL为FALSE时,无法指定非零LEVEL

ORA-19648:数据文件:增量-起始SCN等于检查点SCN

ORA-19649:脱机范围记录recidstamp未在此文件中找到

ORA-19650:脱机范围记录recidstamp(位于文件)具有SCN

ORA-19651:无法将脱机范围记录应用于数据文件:SCN不匹配

ORA-19652:无法将脱机范围记录应用于数据文件:文件模糊

ORA-19653:无法切换至旧的文件原型

ORA-19654:必须使用备份控制文件才能切换文件原型

ORA-19655:无法切换至具有不同重置日志数据的原型

ORA-19656:无法备份,复制或删除联机日志

ORA-19657:无法检查当前的数据文件

ORA-19658:无法检查-文件来自不同的重置日志

ORA-19659:增量恢复将使文件超过重置日志

ORA-19660:无法验证备份集中的某些文件

ORA-19661:无法验证数据文件

ORA-19662:无法验证存档的日志线程序列

ORA-19663:无法将当前的脱机范围应用到数据文件

ORA-19664:文件类型:,文件名:

ORA-19665:文件标题的大小不匹配合实际文件的大小

ORA-19666:无法对控制文件进行增量恢复

ORA-19667:无法对数据文件进行增量恢复

ORA-19668:无法对数据文件进行完整恢复

ORA-19669:代理复制功能不能在DISK通道上运行

ORA-19670:文件已恢复

ORA-19671:介质管理软件返回无效的代理句柄

ORA-19672:介质管理软件返回无效的文件状态

ORA-19673:对文件进行代理复制期间出错

ORA-19674:文件已在用代理副本进行备份

ORA-19675:文件在代理复制期间被修改

ORA-19676:在代理备份或恢复期间一个或多个文件失效

ORA-19677:RMAN配置名超过了最大长度

ORA-19678:RMAN配置值超过了最大长度

ORA-19679:RMAN配置编号位于从1到的有效范围之外

ORA-19680:某些块没有得到恢复。有关详细资料,请参阅跟踪文件

ORA-19681:无法进行控制文件上的块介质恢复

ORA-19682:文件不在块介质恢复上下文中

ORA-19683:文件的实际块大小和备份块大小不相等

ORA-19684:由于数据库挂起,块介质恢复失败

ORA-19685:无法验证SPFILE

ORA-19686:由于而没有恢复SPFILE

ORA-19687:在备份集内找不到SPFILE

ORA-19688:在控制文件自动备份格式()中,对于没有%F

ORA-19689:在控制文件自动备份格式()中,对于不能有多个%F

ORA-19690:备份部分的版本与Oracle版本不兼容

ORA-19700:设备类型超出最大长度

ORA-19701:设备名称超出最大长度

ORA-19702:设备参数超出最大长度

ORA-19703:设备命令字符串超出最大长度

ORA-19704:文件名超出最大长度

ORA-19705:标记值超出最大长度个字符

ORA-19706:无效的SCN

ORA-19707:无效的记录块编号-

ORA-19708:日志目标超出最大长度个字符

ORA-19709:数值参数必须是非负整数

ORA-19710:不受支持的字符集

ORA-19711:数据库打开时不能使用reNormalizeAllFileNames

ORA-19712:表名超过了最大长度

ORA-19713:副本编号无效:

ORA-19714:生成的段名长度长于的长度

ORA-19715:段名格式无效

ORA-19720:将OCI号转换为SCN时出错

ORA-19721:无法找到带绝对文件号的数据文件(在表空间中)

ORA-19722:数据文件版本错误

ORA-19723:无法重建插入的只读数据文件

ORA-19724:快照太旧:快照时间在文件的插入时间之前

ORA-19725:无法获取插入排队

ORA-19726:无法将数据[](在级)插入以兼容级运行的数据库

ORA-19727:无法将数据[](在级)插入正在运行的Oracle数据库

ORA-19728:数据对象号在表和分区间(在表中)冲突

ORA-19729:文件不是插入的数据文件的初始版本

ORA-19730:无法转换脱机插入的数据文件

ORA-19731:无法更改未验证的插入数据文件

ORA-19732:表空间的数据文件号不正确

ORA-19733:COMPATIBLE参数需要为或更大

ORA-19734:创建SCN错误-控制文件需要经转换的插入的数据文件

ORA-19735:创建SCN错误-控制文件需要初始的插入的数据文件

ORA-19736:不能使用不同国家字符集把表空间加入到数据库

ORA-19999:skip_row过程被调用

ORA-24381:数组 DML 出错,原因:该错误一般出现在批量操作时,可能是程序调用的Oracle客户端的动态库与服务端版本不兼容,或者批量操作绑定的参数数组设置不正确,或者批量操作时条数过多,或者SQL语句中有序列已经无法实例化,或者表空间的剩余空间不足,或者批量插入时有多行数据无法插入,等等。

24.2  网络断开错误码

ORA-01012:没有登录。

ORA-01017:无效的用户名/口令;拒绝登录。

ORA-01034:ORACLE不可用。

ORA-01089:正在进行紧急关闭-不允许进行任何操作。

ORA-03113:通信通道的文件结束。

ORA-03114:未连接到ORALCE。

ORA-03135:

ORA-12170:TNS:出现连接超时。

ORA-12514:TNS:监听进程不能解析在连接描述符中给出的SERVICE_NAME。

ORA-12541:TNS:没有监听器。

ORA-12528:

ORA-12543:TNS:无法到达目的地主机。

ORA-12609:

ORA-24324:

ORA-25402:事务必须回滚。一般出现在用TAF方式连接RAC服务器后,发生实例或节点切换,切换后必须先回滚事务后才能继续执行事务。

 

SQLNET.RECV_TIMEOUT = 1

SQLNET.SEND_TIMEOUT = 1

SQLNET.INBOUND_CONNECT_TIMEOUT = 1

 

25 SQL语句语法

[]中括号表示可有可无,{}大括号表示选择其中一个,|竖线表示或者。

25.1  ALTER TABLE  修改表

ALTER TABLE [schema.]table

  [ alter_table_properties

  | column_clauses

  | constraint_clauses

  | alter_table_partitioning

  | alter_external_table

  | move_table_clause

  ]

  [  enable_disable_clause

  |  {  ENABLE  |  DISABLE  }  {  TABLE LOCK  |  ALL TRIGGERS  }  ] ...

  ;

25.2  ALTER DATABASE  修改数据库

 

25.3  database_file_clauses  数据库文件子句

 

25.4  create_datafile_clause

 

25.5  alter_datafile_clause

 

25.6  alter_tempfile_clause

 

25.7  CREATE TABLESPACE  创建表空间

CREATE  [BIGFILE  |  SMALLFILE]

  {  permanent_tablespace_clause

  |  temporary_tablespace_clause

  |  undo_tablespace_clause

  }  ;

 

说明:

1、  BIGFILE表示大数据文件,SMALLFILE表示小数据文件,默认为SMALLFILE小数据文件。

2、  小数据文件表空间最多可以包含1024个DBF小数据文件,小数据文件最大大小为34359721984字节、32吉字节,最大块数为4194302。

3、  大数据文件表空间只能包含一个DBF大数据文件,大数据文件最大大小为35184372064256字节、32太字节,最大块数为4294967293。

4、  大数据文件表空间的性能要比小数据文件表空间的快很多。

25.8  permanent_tablespace_clause  永久表空间子句

TABLESPACE  永久表空间名称  [DATAFILE  file_specification  文件规范,file_specification  文件规范,……]

  { 

25.9  temporary_tablespace_clause  临时表空间子句

TEMPORARY  TABLESPACE  临时表空间名称  [TEMPFILE  file_specification  文件规范,file_specification  文件规范,……]

  { 

25.10 undo_tablespace_clause  重做表空间子句

 

25.11 ALTER TABLESPACE  修改表空间

ALTER  TABLESPACE  表空间名称

  {  DEFAULT  [table_compression]  [storage_clause]

  |  MINIMUM  EXTENT  size_clause  大小子句

  |  RESIZE  size_clause  大小子句

  |  COALESCE

  |  SHRINK  SPACE  [KEEP  size_clause  大小子句]

  |  RENAME  TO  new_tablespace_name

  |  {  BEGIN  |  END  }  BACKUP

  |  datafile_tempfile_clauses  永久数据文件或临时数据文件子句

  |  tablespace_logging_clauses

  |  tablespace_group_clause

  |  tablespace_state_clauses  表空间状态子句

  |  autoextend_clause  自动增长子句

  |  flashback_mode_clause

  |  tablespace_retention_clause

  } ;

 

说明:

1、  这里的autoextend_clause  自动增长子句只能用于大文件的表空间,不能用于小文件的表空间。

25.12 datafile_tempfile_clauses  永久数据文件或临时数据文件子句

{  ADD  { DATAFILE  |  TEMPFILE  }  file_specification  文件规范

|  DROP  { DATAFILE  |  TEMPFILE  }  {  '文件完整绝对路径'  |  文件标识编号  }

|  SHRINK  TEMPFILE  {  '文件完整绝对路径'  |  文件标识编号  }  [  KEEP  size_clause  大小子句  ]

|  RENAME  DATAFILE  '文件完整绝对路径','文件完整绝对路径'…  TO  '文件完整绝对路径','文件完整绝对路径'…

|  {  DATAFILE  |  TEMPFILE  }  {  ONLINE  |  OFFLINE  }

}

 

说明:

1、  ADD子句表示添加一个数据文件或临时文件。

2、  DROP子句表示摘除一个数据文件或临时文件,并删除文件,以下情况无法摘除和删除:

1)   数据库没有打开。

2)   数据文件里还是内容,删除时会报ORA-03262:文件非空。

3)   数据文件是某个表空间的第一个或唯一一个数据文件,删除时会报ORA-03263:无法删除表空间的第一个文件。

4)   数据文件是某个只读表空间或系统表空间的。

5)   数据文件是OFFLINE脱机状态,删除时会报ORA-03264:无法删除本地管理的表空间中的脱机数据文件。

3、  SHRINK子句表示尽可能的缩小临时文件的大小,KEEP子句表示缩小临时文件时的最小大小,SHRINK子句是一个ONLINE操作,不影响其他的查询。

4、  RENAME子句表示将数据文件或临时文件进行重命名。

5、  ONLINE或OFFLINE子句表示将表空间下所有的数据文件或临时文件进行立即联机或立即脱机。由于该OFFLINE子句进行立即脱机不会生成检查点,所以只能在归档模式下使用,非归档模式下使用会报ORA-01145:除非启用了介质恢复,否则不允许立即脱机。

非归档模式下可以用ALTER  TABLESPACE  表空间名称  OFFLINE;进行立即脱机。还可以用ALTER  DATABASE  DATAFILE  '文件完整绝对路径'  OFFLINE  FOR  DROP;对数据文件或临时文件强制进行立即脱机,再次立即联机时,则需要先对该文件使用recover子句进行恢复。

25.13 tablespace_state_clauses  表空间状态子句

{  {  ONLINE  |  OFFLINE  [  NORMAL  |  TEMPORARY  |  IMMEDIATE]  }

|  READ  {  ONLY  |  WRITE  }

|  {  PERMANENT  |  TEMPORARY  }

}

 

说明:

1、  ONLINE或OFFLINE子句表示将表空间及表空间下所有的数据文件或临时文件进行立即联机或立即脱机。如果是立即脱机,则会先自动生成一个检查点,然后再进行立即脱机,所以归档模式和非归档模式都可以用该子句。

25.14 file_specification  文件规范

{  datafile_tempfile_spec  数据文件或临时文件规范

|  redo_log_file_spec  重做日志文件规范

}

25.15 datafile_tempfile_spec  数据文件或临时文件规范

'文件完整绝对路径'  [  SIZE  size_clause  大小子句  ]  [  REUSE  ]  [  autoextend_clause  自动增长子句  ]

 

SIZE参数和REUSE参数描述:

1、  如果没有指定SIZE子句,但指定了REUSE子句,那么文件完整绝对路径必须是一个已存在的文件,表示重用这个文件,不改变文件大小。

2、  如果指定了SIZE子句,但没有指定REUSE子句,那么文件完整绝对路径必须是一个不存在的文件,表示新建这个文件,并初始化文件大小。

3、  如果即指定了SIZE子句,又指定了REUSE子句,那么如果文件完整绝对路径是一个已存在的文件,那么就重用这个文件,并重新初始化文件大小,如果文件完整绝对路径是一个不存在的文件,那么就新建这个文件,并重新初始化文件大小。

4、  SIZE参数和REUSE参数至少指定一个。

 

注意:

1、  REUSE使用的文件,是不能属于任何表空间的,即某个表空间已删除,但是文件还在,那么再创建表空间的时候就可以重新使用这个文件。

2、  建议文件在REUSE使用之前,在操作系统可以对其改名,使其尽量和新表空间名一致。

3、  如果没有指定autoextend_clause  自动增长子句,则自动增长默认为OFF关闭。

4、  如果指定了autoextend_clause  自动增长子句,但没有指定其中的NEXT子句,则数据文件的每次自动增长的块数默认为1。

5、  如果指定了autoextend_clause  自动增长子句,但没有指定其中的maxsize_clause  最大大小子句,则默认情况下,小数据文件最大大小为34359721984字节、32吉字节,最大块数为4194302,大数据文件最大大小为35184372064256字节、32太字节,最大块数为4294967293。

25.16 redo_log_file_spec  重做日志文件规范

 

25.17 autoextend_clause  自动增长子句

AUTOEXTEND  {  OFF  |  ON  [  NEXT  size_clause  大小子句  ]  [  maxsize_clause  最大大小子句  ]  }

25.18 maxsize_clause  最大大小子句

MAXSIZE  {  UNLIMITED  |  size_clause  大小子句  }

25.19 size_clause  大小子句

integer整数  [  {  K  |  M  |  G  |  T  |  P  |  E  }  ]

 

默认单位为字节。

25.20 CREATE FUNCTION  创建函数

CREATE [ OR REPLACE ] FUNCTION

  plsql_source

posted @ 2015-02-28 20:44  赤勇玄心行天道  阅读(8724)  评论(0编辑  收藏  举报