请教各位高手,如何只读一张跨表空间的表在某一个表空间的数据。 具体情况是这样的,我的数据库是oracle9i。里面有张表数据量很大,大概是八千万条数据。这张表是按时间把一段时间内的数据放在一个表空间内。现在这张表大概用了十来个表空间。我现在要取一段时间内的数据,正好是其中一个表空间的。如果直接insert进另一张表,报回滚段错误。我想能不能指定只读这张表在那个专门存取那个时间段的表空间的数据,其它的表空间数据不管。这样就应该不会有问题了吧。或者其他的什么办法都可以? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可能是分区吧。下面是这张表的建表语句的一部分:-- Create tablecreate table SKSKJ.JS_SKSKJ_YHKRJYHZ( RJYHZ_ID VARCHAR2(34) not null, NSRSBH VARCHAR2(20) not null, JSSJ DATE not null, JSR VARCHAR2(11) not null, JQBH VARCHAR2(16) not null, RQ DATE not null, DRZCFPS NUMBER(6) not null, DRTPS NUMBER(6) not null, DRFPS NUMBER(6) not null, SWJG_DM VARCHAR2(11) not null, DZQM VARCHAR2(256) not null, JQJG VARCHAR2(1))partition by range (JSSJ)( partition P_201001 values less than (TO_DATE(' 2010-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace LVSKSK_T_M_1001 pctfree 10 initrans 1 maxtrans 255 storage ( initial 128K next 128K minextents 1 maxextents unlimited pctincrease 0 ), partition P_201002 values less than (TO_DATE(' 2010-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace LVSKSK_T_M_1002 pctfree 10 initrans 1 maxtrans 255 storage ( initial 128K next 128K minextents 1 maxextents unlimited pctincrease 0 ), partition P_201003 values less than (TO_DATE(' 2010-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace LVSKSK_T_M_1003 pctfree 10 initrans 1 maxtrans 255 storage ( initial 128K next 128K minextents 1 maxextents unlimited pctincrease 0 ), partition P_201004 values less than (TO_DATE(' 2010-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN')) tablespace LVSKSK_T_M_1004 pctfree 10 initrans 1 maxtrans 255 storage ( initial 128K next 128K minextents 1 maxextents unlimited pctincrease 0 ), 分区可以单独操作,在逻辑上对应用透明你可能insert时某个地方错了再检查一下 insert没错。原表和导入的表结构一样。 我只是想提取一个月的数据出来进行操作。应该是表数据量太大才报回滚段错误。你从我回复的表结构语句可以知道,这张表的数据是按月放在不同的tablespace里面。 tablespace LVSKSK_T_M_1001 放201001的; tablespace LVSKSK_T_M_1002 放201002的;......就是这样存数据的。 接上面,这表是一个月数据放入一个tablespace。 我现在是想把这张表其中某一个月的数据读出来放入另一张结构相同的表。假设我只要201002月的数据,那么我怎样写sql语句才能只select tablespace LVSKSK_T_M_1002 里面的数据而不是全表扫描? 或者有其它方法解决表太大报回滚段错误? ps:我现在没管理员权限。 select * from SKSKJ.JS_SKSKJ_YHKRJYHZ partition(P_201002) hql case when 无法执行 为什么 oracle 简单问题 oracle stream技术能否实现多源数据库到一个目标数据库的复制 在线等,plsql中count包括所有下级的数据 新手请教 问个基础的问题,关于oracle监听器 小弟最近碰到了一个很奇怪的问题.连接oracle后,空闲时间超过5~10分钟,就必须重新连接一次,急在线等待. 关于rownum的一个问题,请大家帮忙 高手请我帮帮,关于全文索引的问题!!! 求助!表名是变量,查询数据怎么查? 如果写批处理文件 plsql无法连接linux orcle
可能是分区吧。下面是这张表的建表语句的一部分:
-- Create table
create table SKSKJ.JS_SKSKJ_YHKRJYHZ
(
RJYHZ_ID VARCHAR2(34) not null,
NSRSBH VARCHAR2(20) not null,
JSSJ DATE not null,
JSR VARCHAR2(11) not null,
JQBH VARCHAR2(16) not null,
RQ DATE not null,
DRZCFPS NUMBER(6) not null,
DRTPS NUMBER(6) not null,
DRFPS NUMBER(6) not null,
SWJG_DM VARCHAR2(11) not null,
DZQM VARCHAR2(256) not null,
JQJG VARCHAR2(1)
)
partition by range (JSSJ)
(
partition P_201001 values less than (TO_DATE(' 2010-02-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace LVSKSK_T_M_1001
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 128K
next 128K
minextents 1
maxextents unlimited
pctincrease 0
),
partition P_201002 values less than (TO_DATE(' 2010-03-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace LVSKSK_T_M_1002
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 128K
next 128K
minextents 1
maxextents unlimited
pctincrease 0
),
partition P_201003 values less than (TO_DATE(' 2010-04-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace LVSKSK_T_M_1003
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 128K
next 128K
minextents 1
maxextents unlimited
pctincrease 0
),
partition P_201004 values less than (TO_DATE(' 2010-05-01 00:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
tablespace LVSKSK_T_M_1004
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 128K
next 128K
minextents 1
maxextents unlimited
pctincrease 0
),
你可能insert时某个地方错了再检查一下
insert没错。原表和导入的表结构一样。 我只是想提取一个月的数据出来进行操作。应该是表数据量太大才报回滚段错误。你从我回复的表结构语句可以知道,这张表的数据是按月放在不同的tablespace里面。
tablespace LVSKSK_T_M_1001 放201001的;
tablespace LVSKSK_T_M_1002 放201002的;
......
就是这样存数据的。
我现在是想把这张表其中某一个月的数据读出来放入另一张结构相同的表。假设我只要201002月的数据,那么我怎样写sql语句才能只select tablespace LVSKSK_T_M_1002 里面的数据而不是全表扫描?
或者有其它方法解决表太大报回滚段错误?
ps:我现在没管理员权限。