IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Oracle 23ai 表和视图的列最多支持到4096个

    惜分飞发表于 2024-08-05 14:17:13
    love 0

    联系:手机/微信(+86 17813235971) QQ(107644445)QQ咨询惜分飞

    标题:Oracle 23ai 表和视图的列最多支持到4096个

    作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]

    根据经验,oracle在以前常用版本中(包含oracle 19c),表和视图支持最大的列数量为1000,在oracle 23ai中允许支持最大列数量为4096,具体参见:23ai New Feature – Increased RDBMS Table/View Column Limit to 4096 (Doc ID 2947033.1),这里做了简单的试验,确认如果要支持4096列,需要设置max_columns=’EXTENDED’
    准备测试表1000列、4096列和4097列

    create table t_xff_col_1000(
    col1 number,
    col2 number,
    col3 number,
    col4 number,
    ……
    col1000 number
    );
    
    
    create table t_xff_col_4096(
    col1 number,
    col2 number,
    col3 number,
    col4 number,
    ……
    col4096 number
    );
    
    create table t_xff_col_4097(
    col1 number,
    col2 number,
    col3 number,
    col4 number,
    ……
    col4097 number
    );
    
    [oracle@xifenfei ~]$ cat tab_col_4096.sql |grep col|grep -v xff|wc -l
    4096
    [oracle@xifenfei ~]$ cat tab_col_1000.sql |grep col|grep -v xff|wc -l
    1000
    [oracle@xifenfei ~]$ cat tab_col_4097.sql |grep col|grep -v xff|wc -l
    4097
    

    在max_columns为默认值的情况下(STANDARD)23ai版本中最多也只能支持1000列

    [oracle@xifenfei ~]$ sqlplus / as sysdba
    
    SQL*Plus: Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems on Mon Aug 5 22:01:57 2024
    Version 23.5.0.24.07
    
    Copyright (c) 1982, 2024, Oracle.  All rights reserved.
    
    
    Connected to:
    Oracle Database 23ai Enterprise Edition Release 23.0.0.0.0 - for Oracle Cloud and Engineered Systems
    Version 23.5.0.24.07
    
    SQL> show parameter max_co;
    
    NAME                                 TYPE
    ------------------------------------ ----------------------
    VALUE
    ------------------------------
    max_columns                          string
    STANDARD
    
    SQL> @tab_col_1000.sql
    
    Table created.
    
    SQL> @tab_col_4096.sql
            col1001 number,
            *
    ERROR at line 1002:
    ORA-01792: maximum number of columns in a table or view is 1000
    

    在max_columns为EXTENDED的情况下能够支持列4096

    SQL> alter system set max_columns='EXTENDED';
    alter system set max_columns='EXTENDED'
                                          *
    ERROR at line 1:
    ORA-02096: specified initialization parameter is not modifiable with this
    option
    
    
    SQL>  alter system set max_columns='EXTENDED' scope=spfile;
    
    System altered.
    
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    
    ORACLE instance shut down.
    SQL> SQL> startup 
    ORACLE instance started.
    
    Total System Global Area 2413360688 bytes
    Fixed Size                  5363248 bytes
    Variable Size             570425344 bytes
    Database Buffers         1828716544 bytes
    Redo Buffers                8855552 bytes
    Database mounted.
    Database opened.
    SQL> show parameter max_co;
    
    NAME                                 TYPE
    ------------------------------------ ----------------------
    VALUE
    ------------------------------
    max_columns                          string
    EXTENDED
    SQL> @tab_col_4096.sql
    
    Table created.
    
    SQL> select table_name,count(1) from dba_tab_cols where table_name like 'T_XFF%' GROUP BY TABLE_NAME;
    
    TABLE_NAME
    --------------------------------------------------------------------------------
      COUNT(1)
    ----------
    T_XFF_COL_4096
          4096
    
    T_XFF_COL_1000
          1000
    
    SQL> @tab_col_4097.sql
    create table t_xff_col_4096(
    *
    ERROR at line 1:
    ORA-01792: maximum number of columns in a table or view is 4096
    
    • ORACLE 12C varchar2支持32k长度字符串
    • Oracle23ai新特性—SCHEMA级授权( grant select any table on schema)
    • ORACLE 12C Invisible Columns and Column Ordering
    • Oracle23ai新特性—sqlplus errordetails功能
    • 通过修改col$.col#改变列展示顺序
    • _use_single_log_writer和_max_outstanding_log_writes
    • Oracle 11g丢失access$恢复方法
    • 授权用户访问数据字典三种方式
    • 跳过obj$坏块方法
    • Oracle 12c undo异常处理—root pdb undo异常
    • 模拟ORA-04043并解决
    • ORACLE 12C In-Memory组件初试


沪ICP备19023445号-2号
友情链接