Oracle教程之管理表(二)--Oracle管理普通表
2013-04-02 09:32
288 查看
1、建立普通表02:25:59 SQL> create table deparment(02:26:52 2 deptno number(4),dname varchar2(20),loc varchar2(12))02:27:22 3 pctfree 20 pctused 50 tablespace users0102:27:45 4 storage(minextents 3);Table created.02:28:19 SQL> alter table deparment rename to department;Table altered.02:28:52 SQL> desc department; Name Null? Type ---------- -------- ----------------- DEPTNO NUMBER(4)DNAME VARCHAR2(20)LOC VARCHAR2(12)02:30:13 SQL> select tablespace_name,extents,bytes from user_segments02:30:31 2 where segment_name='DEPARTMENT';TABLESPACE_NAME EXTENTS BYTES------------------------------ ---------- ----------USERS01 3 39321602:30:47 SQL>查看EMP1表段信息:22:59:29 SQL> COL SEGMENT_NAME FOR A2022:59:40 SQL> R 1 select SEGMENT_NAME,SEGMENT_TYPE,BLOCKS,EXTENTS,INITIAL_EXTENT ,TABLESPACE_NAME from user_segments 2* where segment_name='EMP1'SEGMENT_NAME SEGMENT_TYPE BLOCKS EXTENTS INITIAL_EXTENT TABLESPACE_NAME-------------------- ------------------ ---------- ---------- -------------- ------------------------------EMP1 TABLE 8 1 65536 USERS23:00:31 SQL> SELECT TABLE_NAME,BLOCKS,NUM_ROWS,EMPTY_BLOCKS FROM USER_TABLES23:01:31 2 WHERE TABLE_NAME='EMP1';TABLE_NAME BLOCKS NUM_ROWS EMPTY_BLOCKS------------------------------ ---------- ---------- ------------EMP1 4 13 023:01:40 SQL> ANALYZE TABLE EMP1 COMPUTE STATISTICS;Table analyzed.23:02:36 SQL> SELECT TABLE_NAME,BLOCKS,NUM_ROWS,EMPTY_BLOCKS FROM USER_TABLES23:02:39 2 WHERE TABLE_NAME='EMP1';TABLE_NAME BLOCKS NUM_ROWS EMPTY_BLOCKS------------------------------ ---------- ---------- ------------EMP1 4 13 423:02:42 SQL> DELETE FROM EMP1;13 rows deleted.23:03:30 SQL> ANALYZE TABLE EMP1 COMPUTE STATISTICS;Table analyzed.23:03:35 SQL> SELECT TABLE_NAME,BLOCKS,NUM_ROWS,EMPTY_BLOCKS FROM USER_TABLES23:03:39 2 WHERE TABLE_NAME='EMP1';TABLE_NAME BLOCKS NUM_ROWS EMPTY_BLOCKS------------------------------ ---------- ---------- ------------EMP1 4 0 423:03:43 SQL> TRUNCATE TABLE EMP1;Table truncated.23:04:37 SQL> ANALYZE TABLE EMP1 COMPUTE STATISTICS;Table analyzed.23:04:44 SQL> SELECT TABLE_NAME,BLOCKS,NUM_ROWS,EMPTY_BLOCKS FROM USER_TABLES23:04:47 2 WHERE TABLE_NAME='EMP1';TABLE_NAME BLOCKS NUM_ROWS EMPTY_BLOCKS------------------------------ ---------- ---------- ------------EMP1 0 0 823:05:29 SQL> SELECT SEGMENT_NAME ,EXTENT_ID,BLOCKS FROM USER_EXTENTS23:06:01 2 WHERE SEGMENT_NAME='EMP1';SEGMENT_NAME EXTENT_ID BLOCKS-------------------- ---------- ----------EMP1 0 8
2、修改表的物理结构02:52:49 SQL> alter table department 02:52:56 2 pctfree 40 pctused 35 initrans 3;Table altered.00:10:38 SQL> create table emp3(id int,name varchar2(10))00:10:50 2 PCTFREE 2000:11:07 3 PCTUSED 4000:11:23 4 STORAGE(00:11:27 5 NEXT 200K00:11:30 6 MINEXTENTS 200:11:37 7 MAXEXTENTS 10);Table created.Emp3 默认表空间为users ,其表空间管理方式local,没有定义initial 参数,其初始化extent大小为64k00:11:40 SQL> select segment_name,blocks,extents,initial_extent,next_extent,MIN_EXTENTS,MAX_EXTENTS from user_segments00:11:50 2 where segment_name='EMP3';SEGMENT_NAME BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS-------------------- ---------- ---------- -------------- ----------- ----------- -----------EMP3 40 5 270336 1 214748364500:12:02 SQL> select segment_name,blocks,extents,initial_extent/1024,next_extent,MIN_EXTENTS,MAX_EXTENTS from user_segments00:13:23 2 where segment_name='EMP3';SEGMENT_NAME BLOCKS EXTENTS INITIAL_EXTENT/1024 NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS-------------------- ---------- ---------- ------------------- ----------- ----------- -----------EMP3 40 5 264 1 2147483645INITIAL_EXTENT=64 + 200 k ,初始化extent 为64,next extent 200,最少分配两个区(minextents=2);3、重新组织表02:55:06 SQL> alter table department move tablespace users01;Table altered重新组织表后,原来的索引会无效,必须重建索引。4、手工分配和释放表空间02:59:18 SQL> COL FILE_NAME FOR A3002:59:29 SQL> R 1* select * from dba_data_files where tablespace_name like 'USERS01'FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_------------------------------ ---------- ------------------------------ ---------- ---------- --------- ------------ --- ---------- --------/disk1/oradata/orcl/user01.dbf 6 USERS01 10485760 1280 AVAILABLE 6 NO 0 0 0 10354688 1264 ONLINE
03:02:12 SQL> alter table department allocate extent03:02:31 2 (size 500k datafile '/disk1/oradata/orcl/user01.dbf');Table altered.03:03:00 SQL> alter table department deallocate unused keep 0;Table altered.默认情况下释放剩余空间后表段的区个数不会低于MINEXTENTS,而如果要释放minextents下的剩余空间,需要带有keept 0 的选项。 5、修改列定义03:37:52 SQL> desc department; Name Null? Type ----------------------------------------------------------------------------------------------------------------- -------- ----------------- DEPTNO NUMBER(2) DNAME VARCHAR2(10)03:38:02 SQL> alter table department add (loc varchar2(10));Table altered.03:38:33 SQL> alter table department modify loc varchar2(15);Table altered.需要注意:当缩减char类型列的长度时,如果该表中已经包含数据,就必须将初始化参数blank_trimming 设置为true03:01:37 SQL> show parameter blankNAME TYPE VALUE------------------------------------ ----------- ------------------------------blank_trimming boolean FALSE03:41:00 SQL> 6、修改列名03:40:49 SQL> alter table department rename column loc to loca;Table altered.03:42:59 SQL> desc department; Name Null? Type ----------------------------------------------------------------------------------------------------------------- -------- ----------------- DEPTNO NUMBER(2) DNAME VARCHAR2(10) LOCA VARCHAR2(15)修改列名会使视图、过程等相关对象转变为无效状态。
更多oracle视频教程请点击:http://crm2.qq.com/page/portalpage/wpa.php?uin=800060152&f=1&ty=1&aty=0&a=&from=6
2、修改表的物理结构02:52:49 SQL> alter table department 02:52:56 2 pctfree 40 pctused 35 initrans 3;Table altered.00:10:38 SQL> create table emp3(id int,name varchar2(10))00:10:50 2 PCTFREE 2000:11:07 3 PCTUSED 4000:11:23 4 STORAGE(00:11:27 5 NEXT 200K00:11:30 6 MINEXTENTS 200:11:37 7 MAXEXTENTS 10);Table created.Emp3 默认表空间为users ,其表空间管理方式local,没有定义initial 参数,其初始化extent大小为64k00:11:40 SQL> select segment_name,blocks,extents,initial_extent,next_extent,MIN_EXTENTS,MAX_EXTENTS from user_segments00:11:50 2 where segment_name='EMP3';SEGMENT_NAME BLOCKS EXTENTS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS-------------------- ---------- ---------- -------------- ----------- ----------- -----------EMP3 40 5 270336 1 214748364500:12:02 SQL> select segment_name,blocks,extents,initial_extent/1024,next_extent,MIN_EXTENTS,MAX_EXTENTS from user_segments00:13:23 2 where segment_name='EMP3';SEGMENT_NAME BLOCKS EXTENTS INITIAL_EXTENT/1024 NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS-------------------- ---------- ---------- ------------------- ----------- ----------- -----------EMP3 40 5 264 1 2147483645INITIAL_EXTENT=64 + 200 k ,初始化extent 为64,next extent 200,最少分配两个区(minextents=2);3、重新组织表02:55:06 SQL> alter table department move tablespace users01;Table altered重新组织表后,原来的索引会无效,必须重建索引。4、手工分配和释放表空间02:59:18 SQL> COL FILE_NAME FOR A3002:59:29 SQL> R 1* select * from dba_data_files where tablespace_name like 'USERS01'FILE_NAME FILE_ID TABLESPACE_NAME BYTES BLOCKS STATUS RELATIVE_FNO AUT MAXBYTES MAXBLOCKS INCREMENT_BY USER_BYTES USER_BLOCKS ONLINE_------------------------------ ---------- ------------------------------ ---------- ---------- --------- ------------ --- ---------- --------/disk1/oradata/orcl/user01.dbf 6 USERS01 10485760 1280 AVAILABLE 6 NO 0 0 0 10354688 1264 ONLINE
03:02:12 SQL> alter table department allocate extent03:02:31 2 (size 500k datafile '/disk1/oradata/orcl/user01.dbf');Table altered.03:03:00 SQL> alter table department deallocate unused keep 0;Table altered.默认情况下释放剩余空间后表段的区个数不会低于MINEXTENTS,而如果要释放minextents下的剩余空间,需要带有keept 0 的选项。 5、修改列定义03:37:52 SQL> desc department; Name Null? Type ----------------------------------------------------------------------------------------------------------------- -------- ----------------- DEPTNO NUMBER(2) DNAME VARCHAR2(10)03:38:02 SQL> alter table department add (loc varchar2(10));Table altered.03:38:33 SQL> alter table department modify loc varchar2(15);Table altered.需要注意:当缩减char类型列的长度时,如果该表中已经包含数据,就必须将初始化参数blank_trimming 设置为true03:01:37 SQL> show parameter blankNAME TYPE VALUE------------------------------------ ----------- ------------------------------blank_trimming boolean FALSE03:41:00 SQL> 6、修改列名03:40:49 SQL> alter table department rename column loc to loca;Table altered.03:42:59 SQL> desc department; Name Null? Type ----------------------------------------------------------------------------------------------------------------- -------- ----------------- DEPTNO NUMBER(2) DNAME VARCHAR2(10) LOCA VARCHAR2(15)修改列名会使视图、过程等相关对象转变为无效状态。
更多oracle视频教程请点击:http://crm2.qq.com/page/portalpage/wpa.php?uin=800060152&f=1&ty=1&aty=0&a=&from=6
相关文章推荐
- Oracle教程之Oracle管理数据字典(一)--Oracle常用数据字典
- Oracle教程之Oracle管理索引(一)--Oracle管理索引
- Oracle教程之管理约束(五)--Oracle使用延期约束检查
- Oracle12.2 RAC集群管理之IP地址修改_Oracle12cR2视频教程(项目实战之七)
- Oracle教程之管理表空间(六)--改变表空间状态
- Oracle教程之管理UNDO(十)--Oracle管理UNDO表空间
- Oracle教程之管理索引(四)--Oracle修改索引
- Oracle教程之管理约束(四)--Oracle修正约束数据
- Oracle教程之Oralce OMF功能详解(三)--使用Oralce OMF管理控制文件
- Oracle教程之管理索引(三)--Oracle建立索引
- Oracle教程之log buffer的内部管理机制
- Oracle性能优化之物化视图管理_超越OCP精通Oracle视频教程培训39
- Oracle基础教程-第十章 安全管理
- oracle dba 培训教程 第13章 用户及系统资源和安全的管理
- Oracle教程之Oracle管理约束(三)--Oracle禁止和激活约束
- Oracle教程之Oracle管理权限(三)--Oracle对象权限的管理
- Oracle SQL语言DDL和对象管理_超越OCP精通Oracle视频教程培训27
- Oracle教程之管理表空间(二)--表空间的管理
- oracle教程之管理undo表空间
- Oracle教程之管理索引(一)--Oracle管理索引