下面以例子说话:

SQL> create table test1.unused_test  as select rownum a,rownum*2 b,rownum*10 c from dba_objects where rownum<=100;

Table created.

看看数据字典:

SQL> select column_name,data_type,column_id,hidden_column,segment_column_id seg_

cid,internal_column_id internal_cid from dba_tab_cols where wner='TEST1' and ta

ble_name='UNUSED_TEST';

COLUMN_NAM DATA_TYPE            COLUMN_ID HIDDEN    SEG_CID INTERNAL_CID

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

A          NUMBER                       1 NO              1            1

B          NUMBER                       2 NO              2            2

C          NUMBER                       3 NO              3            3

SQL> select column_name,data_type,column_id from dba_tab_columns where wner='TE

ST1' and table_name='UNUSED_TEST';

COLUMN_NAM DATA_TYPE            COLUMN_ID

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

A          NUMBER                       1

B          NUMBER                       2

C          NUMBER                       3

SQL> select object_id from dba_objects where wner='TEST1' and object_name='UNUS

ED_TEST' and object_type='TABLE';

OBJECT_ID

----------

6577

SQL> select col#,segcol#,name,intcol# from col$ where obj#=6577;

COL#    SEGCOL# NAME          INTCOL#

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

1          1 A                   1

2          2 B                   2

3          3 C                   3

通过DUMP数据库文件块可以看到每行有三列(这里不再列出DUMP文件内容)

下面将B列置为unused状态:

SQL> alter table test1.unused_test set unused (b);

Table altered.

SQL> select column_name,data_type,column_id,hidden_column,segment_column_id seg_

cid,internal_column_id internal_cid from dba_tab_cols where wner='TEST1' and ta

ble_name='UNUSED_TEST';

COLUMN_NAME                  DATA_T COLUMN_ID HIDDEN    SEG_CID INTERNAL_CID

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

A                            NUMBER         1 NO              1            1

SYS_C00002_08011915:24:34$   NUMBER           YES             2            2

C                            NUMBER         2 NO              3            3

这里原来的B列,其名字为系统自动生成的一列,命名形式为SYS_CNNNNN_YYMMDDHH24:MI:SS$,NNNNN为原来的COLUMN_ID,前面补0补足成5数。hidden已经变为YES,COLUMN_ID为空。其他两列A和C的COLUMN_ID顺序作了调整。这三列的SEGMENT_COLUMN_ID和INTERNAL_COLUMN_ID没有变化。

SQL> select column_name,data_type,column_id from dba_tab_columns where wner='TE

ST1' and table_name='UNUSED_TEST';

COLUMN_NAME                  DATA_T COLUMN_ID

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

A                            NUMBER         1

C                            NUMBER         2

在DBA_TAB_COLUMNS视图中,B列已经没有显示出来。

SQL> select col#,segcol#,name,intcol# from col$ where obj#=6577;

COL#    SEGCOL# NAME                            INTCOL#

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

1          1 A                                     1

0          2 SYS_C00002_08011915:24:34$            2

2          3 C                                     3

这里B列的COL#已经变成0.SEGCOL#和INTCOL#列没有变化,NAME也已经变化

DUMP出来的数据中,每一行仍然有三列。

尝试插入数据:

SQL> insert into test1.unused_test values (1234,4321,1);

insert into test1.unused_test values (1234,4321,1)

*

ERROR at line 1:

ORA-00913: too many values

SQL> insert into test1.unused_test values (1234,4321);

1 row created.

SQL> select rowid from test1.unused_test where a=1234 and c=4321;

ROWID

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

AAABmxAAFAAAAEuAAA

此ROWID对应的rfile#为5,block#为302,row number为0

DUMP出这一块查看第0行数据,发现在数据块中每行仍然是3列,第二列也就是原来的B列其值为NULL。

现在我们将C列删除:

SQL> alter table test1.unused_test drop (c);

Table altered.

SQL> select column_name,data_type,column_id,hidden_column,segment_column_id seg_

cid,internal_column_id internal_cid from dba_tab_cols where wner='TEST1' and ta

ble_name='UNUSED_TEST';

COLUMN_NAME                  DATA_T COLUMN_ID HIDDEN    SEG_CID INTERNAL_CID

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

A                            NUMBER         1 NO              1            1

这里可以看出B列和C列都已经删除。

SQL> select column_name,data_type,column_id from dba_tab_columns where wner='TE

ST1' and table_name='UNUSED_TEST';

COLUMN_NAME                  DATA_T COLUMN_ID

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

A                            NUMBER         1

SQL> select col#,segcol#,name,intcol# from col$ where obj#=6577;

COL#    SEGCOL# NAME                            INTCOL#

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

1          1 A                                     1

都可以看出B列和C列已经被删除。从这个实验就可以看出,在删除C时会将UNUSED列一并删除。

DUMP出数据块可以发展,块中每一行只有1列。因此SET UNUSED只是修改了数据字典,速度较多。而将COLUMN DROP掉,不仅修改数据字典,而且修改实际的块数据。如果表比较大,会耗费比较长的时间。

oracle查看列状态unused,Oracle9i下将列设为UNUSED时的系统行为相关推荐

  1. 监控io性能,free命令,ps网络命令,查看网络状态,Linux下抓包

    10.6 监控io性能 磁盘的io是一个非常重要的指标,所以要更详细的查看磁盘状态,需要用到iostat命令,如果之前已经安装了sysstat包的话,在安装sysstat包时iostat命令就已经被安 ...

  2. oracle 查看用户状态,Oracle数据库查看用户状态

    一.当前ORACLE用户的状态可查看视图DBA_USERS;一般情况下在使用的正常用户均处于OPEN状态. select username,account_status from dba_users; ...

  3. Linux日常运维管理技巧(一)监控系统状态、监控网卡流量、监控IO性能、查看系统进程、查看网络状态、Linux下抓包tcpdump、Linux网络相关、DNS配置

    目录 监控系统状态 监控网卡流量 监控IO性能 查看系统进程 查看网络状态 Linux下抓包 Linux网络相关 监控系统状态 w/uptime查看系统负载 [root@zyshanlinux-01 ...

  4. linux下怎么监控网络 io swap,监控io性能,free命令,ps命令,查看网络状态,linux下抓包...

    监控io性能 [root@localhost ~]# iostat Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 2017年09月12日 _x ...

  5. ​七周二次课(5月7日)监控io性能、free命令、ps命令、查看网络状态、linux下抓包...

    2019独角兽企业重金招聘Python工程师标准>>> 10.6 监控IO性能 1.监控 io 性能 这个 iostat 命令,在安装 sar 命令的时候,就一起安装了,所以不用重新 ...

  6. 监控io性能、free命令、ps命令、查看网络状态、linux下抓包

    2019独角兽企业重金招聘Python工程师标准>>> 监控io性能 iostat -x 磁盘使用 iostat 在安装sysstat的时候会自动安装上这个命令.它和sar是同一个包 ...

  7. centost查看网络信息_监控io性能、free命令、ps命令、查看网络状态、Linux下抓包...

    一.监控io性能 iostat命令 iostat命令被用于监视系统输入输出设备和cpu的使用情况.它的特点是汇报磁盘活动统计情况,同时也会汇报出cpu使用情况.通vmstat一样,iostat也有一个 ...

  8. linux下怎么监控网络 io swap,监控io性能,free命令,ps命令,查看网络状态,linux下抓包(示例代码)...

    监控io性能 [[email protected] ~]# iostat Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 2017年09月12日 ...

  9. oracle 查看监听命令_linux下使用Oracle常用命令

    进入Oracle用户 1 su - oracle 以dba身份进入sql语句 1 sqlplus / as sysdba 启动数据库相关命令 启动数据库 1 startup 启动监听(关闭监听的命令l ...

最新文章

  1. asp.net母板使用注意
  2. 安卓上比较好的python开发软件-手机随时随地写Python,还可以开发安卓APP,太厉害了!...
  3. 背完这444句,你的口语绝对不成问题了
  4. CentOS 6使用rpm方式安装JDK8
  5. leetcode35 C++ 4ms 搜索插入位置
  6. 如何在 ASP.NET MVC 中集成 AngularJS
  7. mongodb ttl java,在mongoDB集合上设置ttl-是在应用程序中还是在shell中?
  8. 在Docker官网上浏览版本号
  9. 使用UIWebView中html标签显示富文本
  10. win11beta版如何升级正式版 Windows11beta升级正式版的步骤方法
  11. Atitit 网络技术体系图 目录 1. 的三网融合是 1 1.1. 电话网、有线电视网 1 1.2. 计算机网 1 2. 计算机网 1 2.1. 互联网 1 2.2. 局域网 1 3. 第1章 计
  12. springboot日志写入mysql_springboot运用logback将日志写入数据库
  13. 计算机里什么文件无法删除,电脑里面有哪些不能删除的文件?
  14. u盘虚拟启动cd linux,CDlinux系统用U盘搭建启动盘
  15. CSS性能优化的几个技巧
  16. struts的框架介绍
  17. 别耍小聪明—leo看赢在中国第三季(1)
  18. quicklz php,使用quicklz缩小程序体积
  19. mysql distinct where_MySQL-数据库表数据查询基础(DISTINCT、WHERE)
  20. 网和aoe网的区别_阳泉锌铝石笼网信赖推荐

热门文章

  1. spring学习(46):spring的单例bean
  2. spring学习(40):注入数组类型
  3. MATLAB K-means聚类代码讲解
  4. OpenCV:SURF算法浅析
  5. NetCore 依赖注入之服务之间的依赖关系
  6. Notepad++连接VMWare中Linux只能看到/root目录
  7. 「洛谷2495」「BZOJ3052」「SDOI2001」消耗战【虚树+树形动态规划】
  8. idea中lombok的使用
  9. poj 1637 Sightseeing tour——最大流+欧拉回路
  10. Codeforces Round #496 (Div. 3 ) E1. Median on Segments (Permutations Edition)(中位数计数)