当前位置: 首页 > oracle > 正文

Oracle表管理

1. dual

神奇的dual表,属于sys模式

2. 表尺寸估算/回收

2.1 使用 database control 估算
2.2 使用 dbms_space.create_table_cost 估算
2.3 alter table tb_name deallocate unused;

3. 权限说明

自己模式: create table 系统权限
其他模式: create any table 系统权限

4. 建表

	create table
	collist
	constraints
	tablespace spc_name
	[--索引表
		orgnization index tablespace spc_name
		pctthreshold num				--溢出百分比
		overflow tablespace spc_name2	--溢出表空间
	]

5. 加列

	alter table tb_name add(colname type)

6. 减列

	alter table tb_name drop(colname)	--删除
	alter table tb_name set unused (col1, col2)	--快速删除、标记
	alter table tb_name drop unused columns	--删除所有标记无用的列
	[
		checkpoint no --没删除no行执行一个checkpoint
	]

7. 重命名列

	alter table tb_name rename column col1 to col2

8. 重命名表

	alter table tb_name rename to tb_name_new

9. 清空表

	truncate table tb_name;

10 cats创建表

	create table tb1 as
	select * from tb2
	[
		parallel degree 4	--多个进程并行加载数据
		nologging			--关闭重做日志
	]

11 修改表所属空间

	alter table tb_name move new_tbspace

12 删除表

	drop table tb_name
	[
		purge	--不进入回收站,直接删除
	]

13 临时表

	create global temporary table tb_name
	(col_list)
	on commit reserve rows	--会话临时表,事务结束时,记录保留
	on commit delelte rows	--事务临时表,只对使用该表的事务有效

14 分区表

范围分区

	create table tb_name
	(col_list)
	partition by range(col1, col2, col3)
	(
		partition p1 values less than (c1, c2, c3) tablespace sp1,
		partition p2 values less than (c1, c2, c3) tablespace sp2
	)

散列分区

	create table tb_name
	(col_list)
	partition by hash (col_list)
	partitions num				--分区数目
	store in (ts1, ts2, ..)		--储存的表空间

列表分区

	create table tb_name
	(col_list)
	partition by list (col1)
	(
		partition p1 values (c1, c2, c3) tablespace sp1,
		partition p2 values (c1, c2, c3) tablespace sp2
	)

组合范围-散列分区

	create table tb_name
	(col_list)
	partition by range(col1) subpartition by hash (col2)
	subpartitions num
	store in (ts1, ts ..)
	(
		partition p1 values less than (xx),
		partition p1 values less than (xx)
	)

组合范围-列表分区

	create table tb_name
	(col_list)
	partition by range(col1) subpartition by list (col2)
	(
		partition p1 values less than (xx) tablespace sp1
		(
			subpartition p1p1 values(vales_list),
			subpartition p1p2 values(vales_list)
		),
		partition p1 values less than (xx) tablespace sp2
		(
			subpartition p2p1 values(vales_list),
			subpartition p2p2 values(vales_list)
		)
	)

添加分区

alter table tb_name add partition p1 values less than (value_list) tablespace sp1;

分割分区

		alter table tb_name split partition p1 at (value) into (partition p1a, p2b)

合并分区

		alter table tb_name merge partitions p1a, p1b into partition p1

重命名分区

		alter table tb_name rename partition p1 to p2;

转换分区

		alter table tb_name exchange partition p_name with tb_other_name

删除分区

		alter table tb_name drop partition p1
		[ update  global indexes ] --重建全局索引

15 相关数据字典

	dba_tables		表信息
	dba_tab_partitions	分区信息
	dba_tab_columns		字段信息

16 获取创建表的ddl语句

	dbms_metadata.get_ddl('TABLE', 'TB_NAME);
	-- 需要设置 long 变量,不然可能无法完全显示 set long 2000
    分享到:

本文固定链接: http://klwang.info/manage-of-oracle-tables/ | 数据库|Linux|软件开发

该日志由 klwang 于2013年04月16日发表在 oracle 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: Oracle表管理 | 数据库|Linux|软件开发
【上一篇】
【下一篇】

Oracle表管理:等您坐沙发呢!

发表评论

*
快捷键:Ctrl+Enter