oracle壓縮表(二)
在低版本的oracle中,一旦對錶進行了壓縮,就不能新增刪除欄位了。但在10g下,可以對壓縮表進行結構的變更。
看下面的例子:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
SQL> create table tom(id number) compress;
Table created
SQL> insert /*+ append */ into tom select rownum from dba_objects;
6186 rows inserted
SQL> commit;
Commit complete
SQL> alter table tom nocompress;
Table altered
SQL> alter table tom move;
Table altered
SQL> alter table tom add(b number);
alter table tom add(b number)
ORA-22856: 無法在物件表中新增列
在9201中,無論怎麼做無法對錶進行新增刪除列的操作。
在9204中,有了一點改進,雖然也不能用直接的方法對錶結構進行修改,但可以透過曲折的步驟修改壓縮表結構。
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
PL/SQL Release 9.2.0.4.0 - Production
CORE 9.2.0.3.0 Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production
SQL> create table tom(id number) compress;
Table created.
SQL> insert /*+ append */ into tom select rownum from dba_objects;
30837 rows created.
SQL> commit;
Commit complete.
SQL> alter table tom add(b number);
alter table tom add(b number)
*
ERROR at line 1:
ORA-22856: cannot add columns to object tables
SQL> alter table tom nocompress;
Table altered.
SQL> alter table tom add(b number);
alter table tom add(b number)
*
ERROR at line 1:
ORA-22856: cannot add columns to object tables
SQL> alter table tom move;
Table altered.
SQL> alter table tom add(b number);
Table altered.
SQL> alter table tom compress;
Table altered.
SQL> alter table tom move;
Table altered.
歸結一下:
1) alter table xxx nocompress;
2) alter xxx move;
3) alter table xxx
4) alter table xxx compress;
5) alter table xxx move
6) 最後,如果有索引的話不要忘了重建索引
在10g下,oracle顯然修正了這個bug
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Solaris: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
SQL> create table tom(id number) compress;
表已建立。
SQL> insert /*+ append */ into tom select rownum from dba_objects;
已建立51880行。
SQL> commit;
提交完成。
SQL> alter table tom add(b number);
表已更改。
看下面的例子:
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
PL/SQL Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
SQL> create table tom(id number) compress;
Table created
SQL> insert /*+ append */ into tom select rownum from dba_objects;
6186 rows inserted
SQL> commit;
Commit complete
SQL> alter table tom nocompress;
Table altered
SQL> alter table tom move;
Table altered
SQL> alter table tom add(b number);
alter table tom add(b number)
ORA-22856: 無法在物件表中新增列
在9201中,無論怎麼做無法對錶進行新增刪除列的操作。
在9204中,有了一點改進,雖然也不能用直接的方法對錶結構進行修改,但可以透過曲折的步驟修改壓縮表結構。
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
PL/SQL Release 9.2.0.4.0 - Production
CORE 9.2.0.3.0 Production
TNS for Linux: Version 9.2.0.4.0 - Production
NLSRTL Version 9.2.0.4.0 - Production
SQL> create table tom(id number) compress;
Table created.
SQL> insert /*+ append */ into tom select rownum from dba_objects;
30837 rows created.
SQL> commit;
Commit complete.
SQL> alter table tom add(b number);
alter table tom add(b number)
*
ERROR at line 1:
ORA-22856: cannot add columns to object tables
SQL> alter table tom nocompress;
Table altered.
SQL> alter table tom add(b number);
alter table tom add(b number)
*
ERROR at line 1:
ORA-22856: cannot add columns to object tables
SQL> alter table tom move;
Table altered.
SQL> alter table tom add(b number);
Table altered.
SQL> alter table tom compress;
Table altered.
SQL> alter table tom move;
Table altered.
歸結一下:
1) alter table xxx nocompress;
2) alter xxx move;
3) alter table xxx
4) alter table xxx compress;
5) alter table xxx move
6) 最後,如果有索引的話不要忘了重建索引
在10g下,oracle顯然修正了這個bug
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
PL/SQL Release 10.2.0.3.0 - Production
CORE 10.2.0.3.0 Production
TNS for Solaris: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production
SQL> create table tom(id number) compress;
表已建立。
SQL> insert /*+ append */ into tom select rownum from dba_objects;
已建立51880行。
SQL> commit;
提交完成。
SQL> alter table tom add(b number);
表已更改。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63799/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle表壓縮Oracle
- oracle 表壓縮Oracle
- oracle壓縮表(一)Oracle
- oracle 的表壓縮Oracle
- Oracle表的壓縮Oracle
- Oracle壓縮黑科技(一)—基礎表壓縮Oracle
- Oracle壓縮黑科技(二)—壓縮資料的修改Oracle
- ORACLE 壓縮Oracle
- oracle 11g 新特性 表壓縮Oracle
- DB2 V9表壓縮(二)DB2
- oracle (11gR2)中的表壓縮Oracle
- oracle 索引壓縮Oracle索引
- 表壓縮技術
- Oracle 表壓縮(Table Compression)技術介紹Oracle
- oracle 11g對於表壓縮改進Oracle
- oracle壓縮技術Oracle
- Oracle資料壓縮Oracle
- MySQL 5.6的表壓縮MySql
- MYSQL壓縮表測試MySql
- Sqlserver表和索引壓縮SQLServer索引
- 【表壓縮】使用表壓縮技術將表所佔用空間降低到最小
- oracle10g表壓縮後的效率比對Oracle
- OGG Oracle 分割槽壓縮表 到 MySQL分表的實現OracleMySql
- Oracle——EXPDP加密和壓縮Oracle加密
- oracle壓縮表表空間Oracle
- myisampack工具(MyISAM表壓縮工具)
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- JAVA壓縮和解壓縮Java
- zip壓縮和解壓縮
- 字串壓縮(二)之LZ4字串
- oracle 壓縮技術(compress)Oracle
- oracle compress壓縮小記Oracle
- ORACLE備份中的壓縮Oracle
- linux壓縮解壓縮Linux
- 字串的壓縮和解壓縮字串
- 檔案壓縮和解壓縮
- SQL Server 2008 表和索引的行壓縮和頁壓縮SQLServer索引
- MySQL 壓縮二進位制日誌MySql