oracle学习笔记-表的管理-(8)

        Oracle中的数据库对象包括表、视图、索引、存储程序、序列等,这些数据库对象以一种逻辑关系组织在一起,这就是模式(schema)。模式是一个用户所拥有的数据库对象的集合,模式的名称和用户名相同。

一、表的管理

1、 表的结构

       创建一个表时,同时创建一个表段,用于存放表中的数据。表中的数据在物理上都是存放在数据块上的,数据块中存放的是一行行的数据,结构如下:


        行的头部记录了列数、行间的全连接、加锁信息等。列长度记录列的实际占用字节,列值记录实际存放的数据。

        表中的每行数据都包含一个行号,用来标识改行数据的物理位置,可通过伪列ROWID获得,他是一个18位的字符串,其组成如下:


        可以通过DBMS_ROWID程序包中的函数对行号进行分析,用法如下表:

函数

描述

ROWID_RELATIVE_FNO

返回一行数据所在数据文件的相对文件号

ROWID_OBJECT

返回一行数据所在数据库对象的编号

ROWID_BLOCK_NUMBER

返回一行数据所在数据块的编号

ROWID_ROW_NUMBER

返回一行数据在数据块中的行号

2、 表的创建

        创建表时可以通过CREATE TABLE子句指定一些重要属性。
        A. PCTFREE和PCTUSED子句
        指定数据块使用的情况,当剩余空间小于PCTFREE指定的值时不能再向数据块中写入数据,当所使用的空间低于PCRUSED指定的值时可以再次向数据块中写入数据。
        B. TABLESPACE子句
        指定将表创建在哪个表空间上,如果不指定,则创建在用户的默认表空间上。
        C. INITRANS和MAXTRANS子句
        ORACLE允许多个并发的事务同时修改一个数据块中的数据,该子句用于控制一个数据块上的并发事务数量。INITRANS指定初始的并发数,MAXTRANS指定最大的并发数。
        D. CACHE子句
        指定该子句后,当用户第一次访问数据表时,该表的所有数据将被读取到数据库高速缓存中,并保留一段时间。对较小的、访问频繁的表可以考虑指定。
        E. PARALLEL子句
        指定该子句后,在进行批量插入数据时可以并发执行。
        F. LOGGING子句
        默认为LOGGING,用户在执行DML和DDL时将产生重做日志,如果不希望产生重做日志,用户可以指定NOLOGGING。
        G. COMPRESS子句
        指定该子句后,一个数据块中两行完全相同的数据将被压缩为一行,并被存储在数据块的开始,数据块中本应该存储这两行数据的地方只存储该行数据的引用。
3、 表的修改
        A. 修改表的物理属性

ALTER TABLE tb_name 参数名 值
        B. 表的移动
        表移动的作用:
                >消除表中的存储碎片;
                >消除表中数据块间的链接;
                >把表移动的另一个表空间
                >修改表所使用的数据块大小    
例如:
SQL>ALTER TABLE TB1 MOVE TABLESPACE TBS1;
        表移动后原表索引将不可用。
        C. 存储空间的手工分配和回收
        存储空间的分配一般由oracle根据存储参数的设置自动进行。但也可以通过命令手工分配,   
SQL>ALTER TABLE TB1 ALLOCATE EXTENT (SIZE 512K);
        在表段HWM以下,可能存在一些尚未使用的数据块,可通过命令将这些数据块回收:
SQL>ALTER TABLE TB1 DEALLOCATE UNUSED;
4、 表的删除
          删除表将产生以下结果:
                  >表的结构信息从数据字典中被删除,表中数据不可访问;
                  >表上的所有索引和触发器被一起删除;
                  >所有建立在该表上的同义词、视图和存储程序变为无效;
                  >所有分配给表的区变为空闲,可被分配给其他数据库对象
        表被删除时,存储空间并不立即释放,而是重命名后放进回收站,回收站实际是一个数据字典,用于记录被删除的表、索引等数据库对象的信息。用户可以从回收站中恢复误删的数据库对象。

       但是当删除一个用户或者删除一个表空间时,用户或表空间中的数据库对象不会放入回收站,并且回收站中原本属于该用户或该表空间的数据也会被删除。

       >查看回收站是否开启

SQL> SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='recyclebin';

      >可以通过设置初始化参数recyclebin启用或禁用回收站功能。

SQL> ALTER SYSTEM SET RECYCLEBIN=OFF|ON;
      >查看回收站对象

SQL> SELECT * FROM RECYCLEBIN
      >还原回收站

SQL> FLASHBACK TABLE TEST TO BEFORE DROP;




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值