精华内容
下载资源
问答
  • 2011年3月22日 星期二 〖农历 辛卯 免年 二月十八〗 晴要求:移动一个分区表中的两个列的位置:desc tbln_testA;BRCD NOT NULL CHAR(4)DSBSID...

    2011年3月22日 星期二 〖农历 辛卯 免年 二月十八〗  晴

    要求:

    移动一个分区表中的两个列的位置:

    desc tbln_testA;

    BRCD                                                                                NOT NULL CHAR(4)

    DSBSID                                                                              NOT NULL CHAR(3)

    CNCLDT                                                                                CHAR(8)

    USRIDCNCLOP                                                                      VARCHAR2(10)

    USRIDCNCLMNGR                                                                 VARCHAR2(10)

    交换USRIDCNCLOP 和 USRIDCNCLMNGR 位置,修改为:

    desc tbln_testA;

    BRCD                                                                                NOT NULL CHAR(4)

    DSBSID                                                                              NOT NULL CHAR(3)

    CNCLDT                                                                                CHAR(8)

    USRIDCNCLMNGR                                                                      VARCHAR2(10)

    USRIDCNCLOP                                                                 VARCHAR2(10)

    对 tbln_testA  进行分析:

    1. 上面有一个物化视图

    2. 上面一个主键索引

    3. 有三个分区

    4. 有一个同义词

    5. 一个public 查询权限

    6. select count(*) from tbln_testA;

    移动过程

    0.

    1. 创建临时表

    create table ln1.tbln_testA_TEMP

    partition by range (BRCD)

    (

    partition PT_5006 values less than ('5007')

    tablespace TS_5006

    pctfree 10

    initrans 1

    maxtrans 255

    storage

    (

    initial 1M

    next 1M

    minextents 1

    maxextents unlimited

    pctincrease 0

    ),

    partition PT_5201 values less than ('5202')

    tablespace TS_5201

    pctfree 10

    initrans 1

    maxtrans 255

    storage

    (

    initial 1M

    next 1M

    minextents 1

    maxextents unlimited

    pctincrease 0

    ),

    partition PT_5921 values less than ('5922')

    tablespace TS_5921

    pctfree 10

    initrans 1

    maxtrans 255

    storage

    (

    initial 1M

    next 1M

    minextents 1

    maxextents unlimited

    pctincrease 0

    )

    )

    as

    select  BRCD,DSBSID,CNCLDT ,USRIDCNCLMNGR,USRIDCNCLOP from ln1.tbln_testA;

    2. 验证临时表中的数据 select count(*) from tbln_testA_TEMP;  与select count(*) from ln1.tbln_testA; 数据一致

    3. 删除原表

    drop ln1.tbln_testA

    4. 重新创建表

    create table ln1.tbln_testA

    partition by range (BRCD)

    (

    partition PT_5006 values less than ('5007')

    tablespace TS_5006

    pctfree 10

    initrans 1

    maxtrans 255

    storage

    (

    initial 1M

    next 1M

    minextents 1

    maxextents unlimited

    pctincrease 0

    ),

    partition PT_5201 values less than ('5202')

    tablespace TS_5201

    pctfree 10

    initrans 1

    maxtrans 255

    storage

    (

    initial 1M

    next 1M

    minextents 1

    maxextents unlimited

    pctincrease 0

    ),

    partition PT_5921 values less than ('5922')

    tablespace TS_5921

    pctfree 10

    initrans 1

    maxtrans 255

    storage

    (

    initial 1M

    next 1M

    minextents 1

    maxextents unlimited

    pctincrease 0

    )

    )

    as select * from tbln_testA_TEMP;

    5. 创建主键索引

    6. 赋予public 查询权限

    7. 创建synonym

    8. 创建物化视图

    9. 检查 tbln_testA 相应的信息,确保正常, 查询dba_object 查询无效对象

    10. 删除bln_testA_TEMP

    ==========================

    如果表不是分区表可以这样做:

    1. create table tb_A_TEMP as select  正确的列的序列 from tb_A;

    2. alter table tb_A  rename to tb_A _bak;

    3.alter table tb_A_TEMP rename to tb_A;

    4. 验证结果,ok后可以drop tb_A _bak;

    展开全文
  • SQL> desc colName Null? Type------------------------------------------------------------------------ -------- ----------------...

    SQL> desc col

    Name                                                                     Null?    Type

    ------------------------------------------------------------------------ -------- ------------------------------

    TNAME                                                                    NOT NULL VARCHAR2(30)

    COLNO                                                                    NOT NULL NUMBER

    CNAME                                                                    NOT NULL VARCHAR2(30)

    COLTYPE                                                                           VARCHAR2(106)

    WIDTH                                                                    NOT NULL NUMBER

    SCALE                                                                             NUMBER

    PRECISION                                                                         NUMBER

    NULLS                                                                             VARCHAR2(19)

    DEFAULTVAL                                                                        LONG

    CHARACTER_SET_NAME                                                                VARCHAR2(44)

    SQL> explain plan for select tname,colno,cname from col;

    Explained.

    Elapsed: 00:00:00.29

    SQL> select * from table(dbms_xplan.display);

    PLAN_TABLE_OUTPUT

    -----------------------------------------------------------------------------------------------------------------

    Plan hash value: 4272774126

    ---------------------------------------------------------------------------------------------

    | Id  | Operation                      | Name       | Rows  | Bytes | Cost (%CPU)| Time     |

    ---------------------------------------------------------------------------------------------

    |   0 | SELECT STATEMENT               |            |  5242 |   470K|   331   (3)| 00:00:04 |

    |*  1 |  HASH JOIN RIGHT OUTER         |            |  5242 |   470K|   331   (3)| 00:00:04 |

    |   2 |   TABLE ACCESS FULL            | USER$      |    38 |   114 |     2   (0)| 00:00:01 |

    |*  3 |   HASH JOIN RIGHT OUTER        |            |  5242 |   455K|   329   (3)| 00:00:04 |

    |   4 |    TABLE ACCESS FULL           | OBJ$       | 13726 | 82356 |    48   (5)| 00:00:01 |

    |   5 |    NESTED LOOPS OUTER          |            |  5242 |   424K|   280   (2)| 00:00:04 |

    |   6 |     NESTED LOOPS               |            |  5242 |   291K|   123   (2)| 00:00:02 |

    |*  7 |      TABLE ACCESS FULL         | OBJ$       |   323 |  9690 |    48   (5)| 00:00:01 |

    |*  8 |      TABLE ACCESS CLUSTER      | COL$       |    16 |   432 |     1   (0)| 00:00:01 |

    |*  9 |       INDEX UNIQUE SCAN        | I_OBJ#     |     1 |       |     0   (0)| 00:00:01 |

    |  10 |     TABLE ACCESS BY INDEX ROWID| COLTYPE$   |     1 |    26 |     1   (0)| 00:00:01 |

    |* 11 |      INDEX UNIQUE SCAN         | I_COLTYPE2 |     1 |       |     0   (0)| 00:00:01 |

    ---------------------------------------------------------------------------------------------

    Predicate Information (identified by operation id):

    ---------------------------------------------------

    1 - access("OT"."OWNER#"="UT"."USER#"(+))

    3 - access("AC"."TOID"="OT"."OID$"(+))

    7 - filter(("T"."TYPE#"=2 OR "T"."TYPE#"=3 OR "T"."TYPE#"=4) AND

    "T"."OWNER#"=USERENV('SCHEMAID'))

    8 - filter(BITAND("C"."PROPERTY",32)=0)

    9 - access("T"."OBJ#"="C"."OBJ#")

    11 - access("C"."OBJ#"="AC"."OBJ#"(+) AND "C"."INTCOL#"="AC"."INTCOL#"(+))

    29 rows selected.

    Elapsed: 00:00:01.92

    展开全文
  • oracle调整表中列顺序

    2021-05-08 00:55:08
    有一个哥们提出一个问题:有个表,创建时候的列顺序是a,b,c如何使用select * 的时候,让列的显示顺序是a,c,b 而且任性地必须使用select *来查询,且不能重建表。假设有个表testSQL> select * from test;...

    有一个哥们提出一个问题:

    有个表,创建时候的列顺序是a,b,c

    如何使用select * 的时候,让列的显示顺序是a,c,b 而且任性地必须使用select *来查询,且不能重建表。

    假设有个表test

    SQL> select * from test;

    A B C

    -------------------- -------------------- --------------------

    you pig are

    SQL> select a,c,b from test;

    A C B

    -------------------- -------------------- --------------------

    you are pig

    SQL>

    按照其要求,应该是以下显示方式:

    SQL> select * from test;

    A C B

    -------------------- -------------------- --------------------

    you are pig

    SQL>

    可以通过修改sys.col$表来改变表中列的顺序

    SQL> SELECT owner,object_name,object_id FROM ALL_OBJECTS WHERE OBJECT_NAME='TEST';

    OWNER OBJECT_NAME OBJECT_ID

    ------------------------------ ------------------------------ ----------

    SYS TEST 88842

    SQL> select obj#,col#,name from sys.col$ where obj# =88842 order by col#;

    OBJ# COL# NAME

    ---------- ---------- ------------------------------

    88842 1 A

    88842 2 B

    88842 3 C

    SQL> update sys.col$ set col#=2 where obj# =88842 and name='C';

    1 row updated.

    SQL> update sys.col$ set col#=3 where obj# =88842 and name='B';

    1 row updated.

    SQL> commit;

    Commit complete.

    SQL> select * from test;

    A C B

    -------------------- -------------------- --------------------

    you are pig

    SQL>

    展开全文
  • Oracle修改字段顺序

    2013-12-12 11:21:22
    Oracle Pl/SQL 修改各字段显示的顺序
  • 在oarcle的sql脚本中字段长度超过4000执行会有异常,而在postgresql中超过4000仍可以正常执行,产品同时支持多个数据库,如oracle和postgresql,在基础数据较多时,只能通过导出基础数据相关表的dmp或backup文件进行...

    在oarcle的sql脚本中字段长度超过4000执行会有异常,而在postgresql中超过4000仍可以正常执行,产品同时支持多个数据库,如oracle和postgresql,在基础数据较多时,只能通过导出基础数据相关表的dmp或backup文件进行升级部署。开发的时候以oracle作为开发库,需要将基础数据弄到postgresql制作backup文件,通过程序直接读oracle表写到postgresql。

    步骤:

    1、修改oracle和postgresql库的ip、用户名和密码;

    2、修改库表列表;

    3、运行;

    public static void main(String[] args) throws Exception

    {

    long t0 = System.currentTimeMillis();

    Class.forName("oracle.jdbc.driver.OracleDriver");

    Class.forName("org.postgresql.Driver");

    Connection srcCon = null, dstCon = null;

    Statement srcStmt = null, dstStmt= null;

    PreparedStatement ps = null;

    try{

    /*创建连接*/

    srcCon = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.12:1521:orcl",

    "h2do", "h2do");

    dstCon = DriverManager.getConnection("jdbc:postgresql://192.168.1.23:5432/h2do",

    "postgres", "postgres");

    srcStmt = srcCon.createStatement();

    dstStmt = dstCon.createStatement();

    /*库表列表*/

    String[] tables = new String[]{

    "h2do",

    "e2say"

    };

    /*逐表处理*/

    for(String table : tables)

    {

    /*1、清理目标表*/

    dstStmt.execute("truncate table " + table);

    /*2、查询源表字段拼接预处理SQL语句*/

    ResultSet rs = srcStmt.executeQuery("select * from " + table);

    StringBuilder sql1 = new StringBuilder("insert into " + table + "(");

    StringBuilder sql2 = new StringBuilder(") values (");

    ResultSetMetaData rsmd = rs.getMetaData();

    for(int col = 1; col <= rsmd.getColumnCount(); col++)

    {

    if(col > 1){

    sql1.append(",");

    sql2.append(",");

    }

    sql1.append(rsmd.getColumnName(col).toLowerCase());

    sql2.append("?");

    }

    String sql = sql1.toString() + sql2.toString() + ")";

    System.out.println(sql);

    /*3、读取源表数据插入目标表,每千条提交一次*/

    int rows = 0;

    ps = dstCon.prepareStatement(sql);

    while(rs.next())

    {

    for(int col = 1; col <= rsmd.getColumnCount(); col++)

    {

    if(rsmd.getColumnType(col) == Types.CLOB){

    ps.setString(col, rs.getString(col));

    }else{

    ps.setObject(col, rs.getObject(col));

    }

    }

    ps.addBatch();

    rows++;

    if(rows%1000 == 0)

    {

    ps.executeBatch();

    dstCon.commit();

    ps.clearBatch();

    rows = 0;

    }

    }

    if(rows > 0){

    ps.executeBatch();

    dstCon.commit();

    }

    ps.close();

    System.out.println("耗时:" + (System.currentTimeMillis() - t0) + "毫秒(" + table + ")。");

    }

    }finally{

    try{if(null != srcStmt)srcStmt.close();}catch(Exception e){}

    try{if(null != srcCon )srcCon.close(); }catch(Exception e){}

    try{if(null != dstStmt)dstStmt.close();}catch(Exception e){}

    try{if(null != dstCon )dstCon.close(); }catch(Exception e){}

    }

    System.out.println("总耗时:" + (System.currentTimeMillis() - t0) + "毫秒。");

    }

    原文:http://my.oschina.net/h2do/blog/318976

    展开全文
  • 如何更改Oracle数据库表中字段顺序

    千次阅读 2021-02-08 21:20:48
    软件安装:装机软件必备包SQL是Structured Query Language(结构化查询语言)的缩写。SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。...本文主要给大家介绍了关于Oracle数据库表中字段顺序...
  • 之前使用mysql时,如果需要调整字段的顺序,可以使用Navicat客户端直接拖动要调整的字段至需要的位置即可。如果使用的是Oracle数据库,不管是用Natvicat还是使用PL SQL客户端,拖动字段顺序并不能调整字段的顺序,...
  • 1.添加字段:alter table 表名 add (字段 字段类型) [default '输入默认值'] [null/not null] ;2.添加备注:comment on column 库名.表名.字段名 is '输入的备注'; 如: 我要在ers_data库中 test表 document_type...
  • 转自:https://www.cnblogs.com/fx-blog/p/7132833.html...comment on column 表名.字段名 is '字段的注释信息';注意表名的大小写例如:1、创建表:CREATE TABLE Student(id varchar2(32) primary key,name varchar...
  • 大家都知道在我们建立含有lob字段的表时,oracle会自动为lob字段建立两个单独的segment,一个用来存放数据,另一个用来存放索引,并且它们都会存储在对应表指定的表空间中。但是当我们用alter table tb_name move ...
  • oracle 中update多个字段

    2021-05-07 09:31:38
    sql order by按俩个字段排序 f1用升序, f2降序,sql该这样写 ORDER BY f1, f2 DESC 也可以这样写,更清楚: ORDER BY f1 ASC, f2 DESC 如果都用降序,必须用两个desc O ... iOS Android图标生成器PHP Combox 实现...
  • 一。移动数据文件 移动数据文件使用的有2种办法 方法一、以数据文件为单位移动 SQL select name from v$datafile; ------ ------ 2.... ORACLE instance shut down. 3.MOUNT到数据库 S一。移动数...
  • 在我看到结果的时候也比较困惑oracle是怎么实现的,整理了一下头脑后,发现column_id很可疑,遂又继续验证了一步,嘿嘿 过程很有趣哟~~,下面是实验过程 试图测试性能(起初以为会有物理变化) SQL> drop table t ...
  • 缘起一个表空间太大,删除数据后由于文件尾被用,无法resize...(LOB类型例外)表move,我们分为:*普通表move*分区表move*LONG,LOB大字段类型move来进行测试和说明。索引的move,我们通过rebuild来实现SQL> select *...
  • ORACLE数据库导出的时候,发现有些表有BLOB和CLOB类型字段的时候,利用一般的导出方法是无法导出的会报错,其原因是sql无法生成这两种类型字段,这个时候,最好用的方法就是plsql自带的导出方式pde文件的导出,这...
  • 第一步,从数据字典视图查询出表的id select object_id from all_objects where owner=第一步,从数据字典视图查询出表的idselect object_id from all_objects...第二步,通过id查出该表中所有字段的顺序select obj#...
  • 背景因为项目某些模块的数据结构设计没有严格按照某规范设计,所以只能从数据库中查询数据结构,需要查询的信息如下:字段名称、数据类型、是否为空、默认值、主键、外键等等。在网上搜索了查询上述信息的方法,总结...
  • 问题描述:一个表空间太大,删除数据后由于文件尾被用,无法resize,打算把所有表...(LOB类型例外)表move,我们分为:*普通表move*分区表move*LONG,LOB大字段类型move下面来进行测试和说明。索引的move,我们通过rebuild...
  • 话不多说,直接上图。 1.首先选择自己的数据库。右键,data transfer 2.选择对应源数据库,目标数据库。点击start即可。如果中间失败,可多尝试几次。 2.
  • oracle移动表空间

    2021-05-08 16:49:50
    oracle中有时需要把表移动到其他表空间中,下面是移动的步骤。首先,使用下面的命令移动:alter table table_name move tablespace tablespace_name;然后,如果有索引的话必须重建索引:alter index index_name ...
  • ORACLE数据库调整表字段顺序

    千次阅读 2017-09-07 22:49:08
    本文主要介绍如何调整表结构字段的顺序
  • 2月9号的时候分享了篇Oracle针对大表在线修改的脚本,主要是使用Oracle自带的在线重定义功能,对于表结构的修改,非常的方便,强列推荐使用。脚本下载地址:oracle大表字段类型修改在线重定义脚本.txt最近在客户现场...
  • 有个客户跟我说:怎么将Oracle 10g的LOB表导出来,并导入到Oracle 11g。为什么无法使用IMPDP工具导入呢?那么今天就来演示下!思路:Oracle 10g 只有EXP/IMP工具,而EXP/IMP的工具都是一套的。所以,在Oracle 11g是...
  • 175 11.8 对不同组/分区同时实现聚集 177 11.9 移动范围取值分析 179 11.10 计算本期、新增、累加 182 11.11 listagg与小九九 186 第12章 分层查询 188 12.1 简单的树形查询 188 12.2 根节点、分支节点、叶子节点 ...
  • 很多人都知道在建立含有lob字段的表时,Oracle会自动为lob字段建立两个单独的segment,一个用来存放数据,另一个用来存放索引,并且它们都会存储在对应表指定的表空间中。但是当我们用alter table tb_name move ...
  • 利用正则表达式实现字段拆分(列转行) 一、数据准备 sql> drop table temp; sql> create table temp (col1 varchar2(3), col2 varchar2(200)); sql> insert into temp values('a','a,aa,aaa'); sql> insert into ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 35,049
精华内容 14,019
关键字:

oracle移动字段位置