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
- MySQL 5.6的表壓縮MySql
- Sqlserver表和索引壓縮SQLServer索引
- MYSQL壓縮表測試MySql
- 壓縮錶轉非壓縮表(線上重定義)
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- Oracle RMAN備份以及壓縮原理分析Oracle
- Oracle Hybrid Columnar Compression(HCC) 混合列壓縮Oracle
- 字串壓縮(二)之LZ4字串
- 檔案壓縮和解壓縮
- Oracle表空間收縮方案Oracle
- MySQL 壓縮二進位制日誌MySql
- NET中SharpZipLib 的使用(二)【Web中壓縮與解壓】Web
- Python實現壓縮和解壓縮Python
- linux下壓縮解壓縮命令Linux
- linux壓縮和解壓縮命令整理Linux
- JS壓縮方法及批量壓縮JS
- Linux tar分卷壓縮與解壓縮Linux
- oracle壓力測試之orabm(二)Oracle
- 簡單瞭解一下壓縮表
- MySQL實現MYISAM表批次壓縮的方法MySql
- Android-圖片壓縮(二)-純乾貨Android
- 【Go】使用壓縮檔案優化io (二)Go優化
- Linux壓縮解壓Linux
- CentOS 壓縮解壓CentOS
- Redis 的基礎資料結構(二) 整數集合、跳躍表、壓縮列表Redis資料結構
- linux 高效壓縮工具之xz的壓縮解壓使用Linux
- Linux中檔案的壓縮和解壓縮Linux
- 打包/壓縮
- Gzipped 壓縮
- linuxtar解壓和壓縮Linux
- linux分卷壓縮解壓Linux
- 第二屆學習影象壓縮挑戰賽
- docker:映象構建、倉庫、壓縮、匯入 二Docker
- 當mysql表從壓縮表變成普通表會發生什麼MySql
- 壓縮包格式有哪些?壓縮包格式大全
- ppt怎麼壓縮,ppt壓縮的技巧分享