zoukankan      html  css  js  c++  java
  • Oracle Concept

    1. Truncate

         Truncate是DDL命令。表的物理位置是保存在数据字典中表的定义的一部分。首次创建时,在数据库的数据文件内给表分配了一个固定大小的空间。这就是所谓的区间并且为空。那么当插入行时,就会填充该区间。填满以后,就会自动给表分配更多的区间。因此表由一个或多个区间组成,它们保存行。除了跟踪区间分配之外,数据字典还跟踪分配给表的空间已经使用了多少。这通过高水位线(high water mark)来完成。高水位线是已经使用的最后一个区间中的最后一个位置;高水位线以下的所用空间都在某段时间被使用过,高水位线以上的空间还没有被使用。

         注意,在高水位线以下可能有大量当时没有使用的空间;这是因为已经用delete命令删除了行。在表中插入行会提高高水位线。删除它们则高水位线的位置不变;它们占用的空间依然被分配给表,但可以自由地插入更多行。

         截断表会重置高水位线。在数据字典内,高水位线记录的位置被移到表的第一个区间的开头。因为Oralce假设没有行在高水位线之上,因此此效果就是从表中删除所用行。清空表,并且一直是空的,直到后续的插入重新抬高高水位线为止。按照这种方法,一个仅仅在数据字典中进行更行的DDL命令,就可以销毁表中的几十亿行。

    2. ACID

          ACID:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)

          原子性指一个事物的所有部分必须都完成,或都不完成。

          一致性指查询的结果必须与数据库在查询开始时的状态一致。

          隔离性指对于其他部分来说,未完成的(也是就未提交的)事物必须不可见。在某个事务进行期间,只有执行该事务的一个会话能看见所做的变更,而其他所有会话看见的都是没有变更的数据。

          持久性指一旦某个事务完成,数据库就不可能丢失这个事务。

    3. 除了用户发出的COMMIT或者ROLLBACK之外,还有一些情况会隐式终止事务

          1> 发出DDL或者DCL命令

          2> 退出用户工具(SQL*PLUS、SQL Developer或者其他工具)

          3> 用户会话终止

          4> 系统奔溃

          如果用户发出DDL(CREATE、ALTER或DROP)或者DCL(GRANT或REVOKE)命令,就会提交正在处理的事务。这是因为DDL和DCL本身都是事务。而SQL中不可能嵌套事务。

          退出正在使用的工具,事务就会终止-但是使用COMMIT终止还是ROLLBACK终止,则取决于使用的工具以及工具退出的方式。

          如果客户的会话因为某种原因而失败,那么数据库总是会回滚事务。

          如果数据库服务器因为某种原因奔溃,那么当它下一次启动时,就会回滚来自所有会话的所有之前正在处理的事务。   

    4.  写入重做日志的变更向量是所有的变更向量:应用于数据库(表和索引)的更改以及应用于撤销段的更改。既包括已提交事务,也包括未提交事务。

    5.  所有DML语句至少都需要两种锁:受影响行上的排他锁,以及包含受影响行的表上的共享锁。排他锁能够防止其他会话干预指定的行,而共享锁则能够阻止其他会话使用DDL语句修改表的定义。这两种锁会被自动请求。如果某条DML语句在指定行上无法获取所需的排他锁,那么会挂起这条语句直至获得所需的排他锁。

         执行DDL命令需要使用所涉及对象上的排他锁。只有在针对指定表的所有DML事务结束,且行上的排他锁以及表上的共享锁都被解除之后,我们才可以获得执行DDL命令所需的排他锁。

    6. ADR的位置由参数DIAGNOSTIC_DEST确定。默认位置是ORACLE_BASE。如果尚未设置ORACLE_BASE,则默认位置是ORACLE_HOME/log目录。在DIAGNOSTIC_DEST中,将有一个ADR_BASE目录,即DIAGNOSTIC_DEST/diag。ADR_BASE中具有每个Oralce产品(如RDBMS或数据库监听器)对应的目录。每个产品目录包含每个产品实例的目录,即实例的ADR_HOME。数据库实例的ADR_HOME是:ORACLE_BASE/diag/rdbms/database_name/instance_name,其中,database_name是数据库名称,而instance_name是实例名称。例如:/u01/app/oracle/diag/rdbms/orcl/orcl。

        ADR_HOME/trace目录是参数USER_DUMP_DEST(用户会话生成的跟踪文件)和BACKGROUND_DUMP_DEST(后台进程生成的警报日志和跟踪文件)的默认值。

         

  • 相关阅读:
    归并排序(Merge Sort)
    AtCoder AGC035D Add and Remove (状压DP)
    AtCoder AGC034D Manhattan Max Matching (费用流)
    AtCoder AGC033F Adding Edges (图论)
    AtCoder AGC031F Walk on Graph (图论、数论)
    AtCoder AGC031E Snuke the Phantom Thief (费用流)
    AtCoder AGC029F Construction of a Tree (二分图匹配)
    AtCoder AGC029E Wandering TKHS
    AtCoder AGC039F Min Product Sum (容斥原理、组合计数、DP)
    AtCoder AGC035E Develop (DP、图论、计数)
  • 原文地址:https://www.cnblogs.com/ivictor/p/3754657.html
Copyright © 2011-2022 走看看