没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
最近在做交易系统项目的时候,因为要与测试人员数据库数据保持一致,所以需要从测试部那边把整个数据库导过来,但是就会发现导过来的表不完整,检查之后发现是因为测试部的空表没有导出来。
查询了之后,发现这是oracle 11g新增了一个参数:deferred_segment_creation,含义是段延迟创建,默认是true。如果这个参数设置为true,新建了一个表T1,并且没有向其中插入数据,那么这个表不会立即分配extent,
也就是不占数据空间,只有当你insert数据后才分配空间。这样可以节省少量的空间。
解决办法
1.设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment。
在sqlplus中,执行如下命令:
SQL>alter system set deferred_segment_creation=false scope=both sid='*';
查看:
SQL>show parameter deferred_segment_creation;
该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用。
注意并且要重新启动数据库,让参数生效;
2.上面说了只是对后面新增的表有效,但是由于我们很多项目都是正在开发的,数据库必然不能删掉重来,否则带来数据丢失这种灾难,那么接下来的这个办法则可以避免上述问题:
(1).查询当前用户下的所有空表(一个用户最好对应一个默认表空间)。命令如下:
-----------
SQL>select table_name from user_tables where NUM_ROWS=0;
-----------
根据上述查询,可以构建针对空表分配空间的命令语句,如下:
-----------
查询了之后,发现这是oracle 11g新增了一个参数:deferred_segment_creation,含义是段延迟创建,默认是true。如果这个参数设置为true,新建了一个表T1,并且没有向其中插入数据,那么这个表不会立即分配extent,
也就是不占数据空间,只有当你insert数据后才分配空间。这样可以节省少量的空间。
解决办法
1.设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment。
在sqlplus中,执行如下命令:
SQL>alter system set deferred_segment_creation=false scope=both sid='*';
查看:
SQL>show parameter deferred_segment_creation;
该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用。
注意并且要重新启动数据库,让参数生效;
2.上面说了只是对后面新增的表有效,但是由于我们很多项目都是正在开发的,数据库必然不能删掉重来,否则带来数据丢失这种灾难,那么接下来的这个办法则可以避免上述问题:
(1).查询当前用户下的所有空表(一个用户最好对应一个默认表空间)。命令如下:
-----------
SQL>select table_name from user_tables where NUM_ROWS=0;
-----------
根据上述查询,可以构建针对空表分配空间的命令语句,如下:
-----------
资源评论
郭翔阳
- 粉丝: 3
- 资源: 21
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功