知识大全 Oracle 数据对象分析

Posted 视图

篇首语:别总是羡慕别人光芒万丈,却忘了自己也会发光。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Oracle 数据对象分析相关的知识,希望对你有一定的参考价值。

Oracle 数据对象分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   过程和函数    过程和函数都以编译后的形式存放在数据库中 函数可以没有参数也可以有多个参数并有一个返回值 过程有零个或多个参数 没有返回值 函数和过程都可以通过参数列表接收或返回零个或多个值 函数和过程的主要区别不在于返回值 而在于他们的调用方式 过程是作为一个独立执行语句调用的     pay_involume(invoice_nbr due_date);    函数以合法的表达式的方式调用     order_volumn:=open_orders(SYSDATE );    创建过程的语法如下     CREATE [ OR REPLACE] PROCEDURE [schema ]procedure_name  [parameter_lister]  AS|IS  declaration_section  BEGIN  executable_section  [EXCEPTION  exception_section]  END [procedure_name]    每个参数的语法如下     paramter_name mode datatype [(:=|DEFAULT) value]    mode有三种形式 IN OUT INOUT     IN表示在调用过程的时候 实际参数的取值被传递给该过程 形式参数被认为是只读的 当过程结束时 控制会返回控制环境 实际参数的值不会改变     OUT在调用过程时实际参数的取值都将被忽略 在过程内部形式参数只能是被赋值 而不能从中读取数据 在过程结束后形式参数的内容将被赋予实际参数     INOUT这种模式是IN和OUT的组合 在过程内部实际参数的值会传递给形式参数 形势参数的值可读也可写 过程结束后 形势参数的值将赋予实际参数     创建函数的语法和过程的语法基本相同 唯一的区别在于函数有RETUREN子句    CREATE [ OR REPLACE] FINCTION [schema ]function_name  [parameter_list]  RETURN returning_datatype  AS|IS  declaration_section  BEGIN  executable_section  [EXCEPTION]  exception_section  END [procedure_name]    在执行部分函数必须有哟个或多个return语句     在创建函数中可以调用单行函数和组函数 例如     CREATE OR REPLACE FUNCTION my_sin(DegreesIn IN NUMBER)  RETURN NUMBER  IS  pi NUMBER=ACOS( );  RadiansPerDegree NUMBER;    BEGIN  RadiansPerDegree=pi/ ;  RETURN(SIN(DegreesIn*RadiansPerDegree));  END  包    包是一种将过程 函数和数据结构捆绑在一起的容器 包由两个部分组成 外部可视包规范 包括函数头 过程头 和外部可视数据结构 另一部分是包主体(package body) 包主体包含了所有被捆绑的过程和函数的声明 执行 异常处理部分     打包的PL/SQL程序和没有打包的有很大的差异 包数据在用户的整个会话期间都一直存在 当用户获得包的执行授权时 就等于获得包规范中的所有程序和数据结构的权限 但不能只对包中的某一个函数或过程进行授权 包可以重载过程和函数 在包内可以用同一个名字声明多个程序 在运行时根据参数的数目和数据类型调用正确的程序     创建包必须首先创建包规范 创建包规范的语法如下     CREATE [OR REPLACE] PACKAGE package_name  AS|IS  public_variable_declarations |  public_type_declarations |  public_exception_declarations |  public_cursor_declarations |  function_declarations |  procedure_specifications  END [package_name]    创建包主体使用CREATE PACKAGE BODY语句     CREATE [OR REPLACE] PACKAGE BODY package_name  AS|IS  private_variable_declarations |  private_type_declarations |  private_exception_declarations |  private_cursor_declarations |  function_declarations |  procedure_specifications  END [package_name]    私有数据结构是那些在包主体内部 对被调用程序而言是不可见的      触发器(Triggers)    触发器是一种自动执行响应数据库变化的程序 可以设置为在触发器事件之前或之后触发或执行 能够触发触发器事件的事件包括下面几种     DML事件  DDL事件  数据库事件    DML事件触发器可以是语句或行级触发器 DML语句触发器在触发语句之前或之后触发DML行级触发器在语句影响的行变化之前或之后触发 用户可以给单一事件和类型定义多个触发器 但没有任何方法可以增强多触发器触发的命令 下表列出了用户可以利用的触发器事件     事件   触发器描述  INSERT  当向表或视图插入一行时触发触发器  UPDATE  更新表或视图中的某一行时触发触发器  DELETE  从表或视图中删除某一行时触发触发器  CREATE  当使用CREATE语句为数据库或项目增加一个对象时触发触发器  ALTER  当使用ALTER语句为更改一个数据库或项目的对象时触发触发器  DROP   当使用DROP语句删除一个数据库或项目的对象时触发触发器  START  打开数据库时触发触发器 在事件后触发  SHUTDOWN 关闭数据库时触发 事件前触发  LOGON  当一个会话建立时触发 事件前触发  LOGOFF  当关闭会话时触发 事件前触发  SERVER  服务器错误发生时触发触发器 事件后触发    创建触发器的语法如下     CREATE [OR REPLACE] TRIGGER trigger_name  before|after|instead of event  ON table_or_view_name|DATABASE  [FOR EACH ROW[WHEN condition]]  trigger_body    只有DML触发器(INSERT UPDATE DELETE)语句可以使用INSTEAD OF触发器并且只有表的DML触发器可以是BEFORE或AFTER触发器     象约束一样触发器可以被设置为禁用或启用来关闭或打开他们的执行体(EXECUTE) 将触发器设置为禁用或启用使用ALTER TRIGGER语句     ALTER TRIGGER trigger_name ENABLE;  ALTER TRIGGER trigger_name DISABLE;    要禁用或启用表的所有触发器 使用ALTER TABLE语句    ALTER TRIGGER table_name DISABLE ALL TRIGGER;  ALTER TRIGGER table_name ENABLE ALL TRIGGER;    删除触发器使用DROP TRIGGER    DROP TRIGGER trigger_name;     数据字典    Oracle数据字典包含了用户数据库的元数据 带下划线的表名称中带OBJ$ UET$ SOURCE$ 这些表是在执行CREATE DATABASE语句期间由sql bsq脚本创建的 一般情况下用户很少访问这些表 脚本catalog sql(通常位于$oracle_home/rdbms/admin)在CREATE DATABASE语句之后立即运行 创建数据字典视图     数据字典视图大致可以分为三类      前缀为USER_的数据字典视图 包含了用户拥有的对象的信息      前缀为ALL_的数据字典视图 包含了用户当前可以访问的全部对象和权限的信息      前缀为DBA_的数据字典视图 包含了数据库拥有的所有对象和权限的信息     在绝大多数数据字典视图中都有象DBA_TABLES ALL_TABLES和USER_TABLES这样的视图家族 Oracle中有超过 个视图家族 所以要全面介绍这些视图家族是单调乏味的而且没有多大的意义 在下表中列出了最重要和最常用的视图家族 需要注意的是每个视图家族都有一个DBA_ 一个ALL_一个USER_视图     视图家族(View Family)  描述  COL_PRIVS        包含了表的列权限 包括授予者 被授予者和权限  EXTENTS         数据范围信息 比如数据文件 数据段名(segment_name)和大小  INDEXES         索引信息 比如类型 唯一性和被涉及的表  IND_COLUMNS       索引列信息 比如索引上的列的排序方式  OBJECTS         对象信息 比如状态和DDL time  ROLE_PRIVS       角色权限 比如GRANT和ADMIN选项  SEGMENTS        表和索引的数据段信息 比如tablespace和storage  SEQUECNCES       序列信息 比如序列的cache cycle和ast_number  SOURCE         除触发器之外的所有内置过程 函数 包的源代码  SYNONYMS        别名信息 比如引用的对象和数据库链接db_link  SYS_PRIVS        系统权限 比如grantee privilege admin选项  TAB_COLUMNS       表和视图的列信息 包括列的数据类型  TAB_PRIVS        表权限 比如授予者 被授予者和权限  TABLES         表信息 比如表空间(tablespace) 存储参数(storage parms)和数据行的数量  TRIGGERS        触发器信息 比如类型 事件 触发体(trigger body)  USERS          用户信息 比如临时的和缺省的表空间  VIEWS          视图信息 包括视图定义    在Oracle中还有一些不常用的数据字典表 但这些表不是真正的字典家族 他们都是一些重要的单一的视图     VIEW NAME       描述  USER_COL_PRIVS_MADE  用户授予他人的列权限  USER_COL_PRIVS_RECD  用户获得的列权限  USER_TAB_PRIVS_MADE  用户授予他人的表权限  USER_TAB_PRIVS_RECD  用户获得的表权限    其他的字典视图中主要的是V$视图 之所以这样叫是因为他们都是以V$或GV$开头的 V$视图是基于X$虚拟视图的 V$视图是SYS用户所拥有的 在缺省状况下 只有SYS用户和拥有DBA系统权限的用户可以看到所有的视图 没有DBA权限的用户可以看到USER_和ALL_视图 但不能看到DBA_视图 与DBA_ ALL 和USER_视图中面向数据库信息相反 这些视图可视的给出了面向实例的信息     在大型系统上化几周时间手工输入每一条语句    手工输入带用户名变量的语句 然后再输入每一个用户名 这需要花好几个小时的时间    写一条SQL语句 生成需要的ALTER USER语句 然后执行他 这只需要几分钟时间    很明显我们将选择生成SQL的方法     例     SELECT ALTER USER ||username||   TEMPORARY TABLESPACE temp;   FROM DBA_USERS  WHERE username<> SYS   AND temporary_tablespace<> TEMP ;    这个查询的结果将被脱机处理到一个文件中 然后在执行     ALTER USER SYSTEM TEMPORARY TABLESPACE temp;  ALTER USER OUTLN TEMPORARY TABLESPACE temp;  ALTER USER DBSNMP TEMPORARY TABLESPACE temp;  ALTER USER SCOTT TEMPORARY TABLESPACE temp;  ALTER USER DEMO TEMPORARY TABLESPACE temp; cha138/Article/program/Oracle/201311/17206

相关参考

知识大全 Oracle中关数据库对象的统计分析

Oracle中关数据库对象的统计分析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ORACLE

知识大全 oracle段管理分析

  ()段区段块  Oracle中的段segment是占用磁盘存储空间的一个对象从逻辑上讲一个数据库由若干表空间(TABLESAPCE)组成每个表空间有若干个表(TABLE)每个表又可以分为若干数据段

知识大全 ORACLE数据库对象与用户管理

ORACLE数据库对象与用户管理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一ORACLE数

知识大全 Oracle数据库入门之DDL与数据库对象

Oracle数据库入门之DDL与数据库对象  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据库

知识大全 使用OLE对象访问Oracle数据库

使用OLE对象访问Oracle数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  OLE即对象

知识大全 ORACLE中常用的SQL语法和数据对象

ORACLE中常用的SQL语法和数据对象  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一数据控

知识大全 导出oracle数据库对象--同义词,系列,视图

  脚本可分两部分:    同义词    :synonymcmd:    sqlplusdxsq/teledoone@jnnew@synonymsql    synonymsql:    create

知识大全 JDBC存取ORACLE大型数据对象LOB几种情况的示范类

JDBC存取ORACLE大型数据对象LOB几种情况的示范类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 如何自动获取Oracle数据库启动时在Shared pool里面的对象

如何自动获取Oracle数据库启动时在Sharedpool里面的对象  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快

知识大全 关于oracle中大对象处理的一些方法和实例

  在oracle中有个大对象(lobs)类型可用分别是blobclobbfilenclob  下面是对lob数据类型的简单介绍  lblob:二进制lob为二进制数据最长可达GB存贮在数据库中  l