oracle查看列状态unused,Oracle9i下将列设为UNUSED时的系统行为
下面以例子说话:
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时的系统行为相关推荐
- 监控io性能,free命令,ps网络命令,查看网络状态,Linux下抓包
10.6 监控io性能 磁盘的io是一个非常重要的指标,所以要更详细的查看磁盘状态,需要用到iostat命令,如果之前已经安装了sysstat包的话,在安装sysstat包时iostat命令就已经被安 ...
- oracle 查看用户状态,Oracle数据库查看用户状态
一.当前ORACLE用户的状态可查看视图DBA_USERS;一般情况下在使用的正常用户均处于OPEN状态. select username,account_status from dba_users; ...
- Linux日常运维管理技巧(一)监控系统状态、监控网卡流量、监控IO性能、查看系统进程、查看网络状态、Linux下抓包tcpdump、Linux网络相关、DNS配置
目录 监控系统状态 监控网卡流量 监控IO性能 查看系统进程 查看网络状态 Linux下抓包 Linux网络相关 监控系统状态 w/uptime查看系统负载 [root@zyshanlinux-01 ...
- 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月7日)监控io性能、free命令、ps命令、查看网络状态、linux下抓包...
2019独角兽企业重金招聘Python工程师标准>>> 10.6 监控IO性能 1.监控 io 性能 这个 iostat 命令,在安装 sar 命令的时候,就一起安装了,所以不用重新 ...
- 监控io性能、free命令、ps命令、查看网络状态、linux下抓包
2019独角兽企业重金招聘Python工程师标准>>> 监控io性能 iostat -x 磁盘使用 iostat 在安装sysstat的时候会自动安装上这个命令.它和sar是同一个包 ...
- centost查看网络信息_监控io性能、free命令、ps命令、查看网络状态、Linux下抓包...
一.监控io性能 iostat命令 iostat命令被用于监视系统输入输出设备和cpu的使用情况.它的特点是汇报磁盘活动统计情况,同时也会汇报出cpu使用情况.通vmstat一样,iostat也有一个 ...
- linux下怎么监控网络 io swap,监控io性能,free命令,ps命令,查看网络状态,linux下抓包(示例代码)...
监控io性能 [[email protected] ~]# iostat Linux 3.10.0-514.el7.x86_64 (localhost.localdomain) 2017年09月12日 ...
- oracle 查看监听命令_linux下使用Oracle常用命令
进入Oracle用户 1 su - oracle 以dba身份进入sql语句 1 sqlplus / as sysdba 启动数据库相关命令 启动数据库 1 startup 启动监听(关闭监听的命令l ...
最新文章
- asp.net母板使用注意
- 安卓上比较好的python开发软件-手机随时随地写Python,还可以开发安卓APP,太厉害了!...
- 背完这444句,你的口语绝对不成问题了
- CentOS 6使用rpm方式安装JDK8
- leetcode35 C++ 4ms 搜索插入位置
- 如何在 ASP.NET MVC 中集成 AngularJS
- mongodb ttl java,在mongoDB集合上设置ttl-是在应用程序中还是在shell中?
- 在Docker官网上浏览版本号
- 使用UIWebView中html标签显示富文本
- win11beta版如何升级正式版 Windows11beta升级正式版的步骤方法
- Atitit 网络技术体系图 目录 1. 的三网融合是	1 1.1. 电话网、有线电视网	1 1.2. 计算机网	1 2. 计算机网	1 2.1. 互联网	1 2.2. 局域网	1 3. 第1章 计
- springboot日志写入mysql_springboot运用logback将日志写入数据库
- 计算机里什么文件无法删除,电脑里面有哪些不能删除的文件?
- u盘虚拟启动cd linux,CDlinux系统用U盘搭建启动盘
- CSS性能优化的几个技巧
- struts的框架介绍
- 别耍小聪明—leo看赢在中国第三季(1)
- quicklz php,使用quicklz缩小程序体积
- mysql distinct where_MySQL-数据库表数据查询基础(DISTINCT、WHERE)
- 网和aoe网的区别_阳泉锌铝石笼网信赖推荐
热门文章
- spring学习(46):spring的单例bean
- spring学习(40):注入数组类型
- MATLAB K-means聚类代码讲解
- OpenCV:SURF算法浅析
- NetCore 依赖注入之服务之间的依赖关系
- Notepad++连接VMWare中Linux只能看到/root目录
- 「洛谷2495」「BZOJ3052」「SDOI2001」消耗战【虚树+树形动态规划】
- idea中lombok的使用
- poj 1637 Sightseeing tour——最大流+欧拉回路
- Codeforces Round #496 (Div. 3 ) E1. Median on Segments (Permutations Edition)(中位数计数)