oracle11g之create table儲存引數minextents和maxextents含義之系列四
背景
建立表時不止可以指定initial和next,也可以指定minextents,或者maxextents;本文主要熟悉下minextents及maxextents引數的含義及作用
結論
1,基於本地管理表空間,minextents是在表級別指定分配多少個區這樣就可以控制初始表段的大小
2,基於本地管理表空間,不能使用ALTER變更表的minextents
3,minextents及maxextents僅能在表級別定義,不適用於表空間級別
4,maxextents僅適用於字典管理表空間,指定最大為表段分配多少個區
5,要建立一個字典管理的表空間,SYSTEM表空間必須是字典管理模式,而SYSTEM表空間不能由本地管理轉換為字典管理模式
測試
1,資料庫版本SQL> select * from v$version where rownum=1;
BANNER
----------------------------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
2,在本地管理的表空間下建立測試表,建表採用預設的引數值
SQL> select tablespace_name,initial_extent,next_extent,extent_management,allocation_type,segment_space_management from user_tablespaces where tablespace_name='USERS';
TABLESPACE_NAME INITIAL_EXTENT NEXT_EXTENT EXTENT_MANAGEMENT ALLOCATION_TYPE SEGMENT_SPAC
------------------------------ -------------- ----------- -------------------- ------------------ ------------
USERS 65536 LOCAL SYSTEM AUTO
SQL> create table t_min_extents(a int,b int);
Table created.
SQL> insert into t_min_extents values(1,1);
1 row created.
SQL> commit;
Commit complete.
3,可見建表採用默值值時,min_extents為1,此引數含義為控制建立表段最少要建立多少個區
SQL> select segment_name,extents,min_extents from user_segments where lower(segment_name)='t_min_extents';
SEGMENT_NAME EXTENTS MIN_EXTENTS
------------------------------ ---------- -----------
T_MIN_EXTENTS 1 1
SQL> select count(*) from user_extents where lower(segment_name)='t_min_extents';
COUNT(*)
----------
1
4,如果顯式指定minextents,測試表插入資料時分最少分配多少個區,可見minextents指定初始分配多少個區
SQL> drop table t_min_extents purge;
Table dropped.
SQL> create table t_min_extents(a int,b int) storage(minextents 3);
Table created.
SQL> insert into t_min_extents values(1,1);
1 row created.
SQL> commit;
Commit complete.
SQL> select count(*) from user_extents where lower(segment_name)='t_min_extents';
COUNT(*)
----------
3
5,再看下minextents與其它引數的一些關係,從官方文件發現,基於本地管理表空間,ORACLE使用minextents以及initial,next,pctincrease決定表段的初始大小
而顯式指定minextents相當於配置initial*minextents,這個就是初始表段的大小
SQL> select segment_name,bytes/1024/1024 segment_mb,blocks,initial_extent,next_extent,min_extents from user_segments where lower(segment_name)='t_min_extents';
SEGMENT_NAME SEGMENT_MB BLOCKS INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS
------------------------------ ---------- ---------- -------------- ----------- -----------
T_MIN_EXTENTS 3 384 2162688 1048576 1
6,minextents官方文件說不適用於表空間級別,如果是本地管理表空間,不能使用alter變更表的minextents
SQL> alter table t_min_extents storage(minextents 5);
alter table t_min_extents storage(minextents 5)
*
ERROR at line 1:
ORA-25150: ALTERING of extent parameters not permitted
SQL> host oerr ora 25150
25150, 00000, "ALTERING of extent parameters not permitted"
// *Cause: An attempt was made to alter the extent parameters for a segment
// in a tablespace with autoallocate or uniform extent allocation
// policy.
// *Action: Remove the appropriate extent parameters from the command.
SQL>
7,maxextents引數作用類似於minextents,此引數指定段最大可以分配多少個區,此引數僅適用於字典管理表空間,而在本地管理表空間,會忽略此引數
SQL> drop table t_min_extents purge;
Table dropped.
SQL> create table t_extents(a int,b int) storage(minextents 4 maxextents 6);
Table created.
SQL> select segment_name,extents,min_extents from user_segments where lower(segment_name)='t_extents';
no rows selected
SQL> insert into t_extents values(1,1);
1 row created.
SQL> commit;
Commit complete.
SQL> select segment_name,extents,min_extents from user_segments where lower(segment_name)='t_extents';
SEGMENT_NAME EXTENTS MIN_EXTENTS
------------------------------ ---------- -----------
T_EXTENTS 4 1
SQL> select segment_name,extents,min_extents,max_extents from user_segments where lower(segment_name)='t_extents';
SEGMENT_NAME EXTENTS MIN_EXTENTS MAX_EXTENTS
------------------------------ ---------- ----------- -----------
T_EXTENTS 4 1 2147483645
SQL>
SQL> insert into t_extents select level,level from dual connect by level<=1000000;
1000000 rows created.
SQL> commit;
Commit complete.
雖顯式指定maxextents為6,實際會忽略此引數配置
SQL> select count(*) from t_extents;
COUNT(*)
----------
1000001
8,要建立字典管理的表空間,SYSTEM表空間必須是字典管理模式,而SYSTEM表空間不能轉換為字典管理模式,所以沒有辦法
SQL> create tablespace tbs_dict datafile '/oracle/oradata/guowang/dict1.dbf' size 30m autoextend on extent management dictionary;
create tablespace tbs_dict datafile '/oracle/oradata/guowang/dict1.dbf' size 30m autoextend on extent management dictionary
*
ERROR at line 1:
ORA-12913: Cannot create dictionary managed tablespace
SQL> host oerr ora 12913
12913, 00000, "Cannot create dictionary managed tablespace"
// *Cause: Attemp to create dictionary managed tablespace in database
// which has system tablespace as locally managed
// *Action: Create a locally managed tablespace.
create tablespace tbs_dict datafile '/oracle/oradata/guowang/dict1.dbf' size 30m autoextend on extent management dictionary;
個人簡介
8年oracle從業經驗,具備豐富的oracle技能,目前在國內北京某專業oracle服務公司從事高階技術顧問。
服務過的客戶:
中國電信
中國移動
中國聯通
中國電通
國家電網
四川達州商業銀行
湖南老百姓大藥房
山西省公安廳
中國郵政
北京302醫院
河北廊坊新奧集團公司
專案經驗:
中國電信3G專案AAA系統資料庫部署及最佳化
中國聯通4G資料庫效能分析與最佳化
中國聯通4G資料庫效能分析與最佳化
中國聯通CRM資料庫效能最佳化
中國移動10086電商平臺資料庫部署及最佳化
湖南老百姓大藥房ERR資料庫sql最佳化專案
四川達州商業銀行TCBS核心業務系統資料庫模型設計和RAC部署及最佳化
四川達州商業銀行TCBS核心業務系統後端批處理儲存過程功能模組編寫及最佳化
北京高鐵訊號監控系統RAC資料庫部署及最佳化
河南宇通客車資料庫效能最佳化
中國電信電商平臺核心採購模組表模型設計及最佳化
中國郵政儲蓄系統資料庫效能最佳化及sql最佳化
北京302醫院資料庫遷移實施
河北廊坊新奧data guard部署及最佳化
山西公安廳身份證審計資料庫系統故障評估
國家電網上海災備專案4 node rac+adg
貴州移動crm及客服資料庫效能最佳化專案
貴州移動crm及客服務資料庫sql稽核專案
深圳穆迪軟體有限公司資料庫效能最佳化專案
貴州移動crm及客服資料庫效能最佳化專案
貴州移動crm及客服務資料庫sql稽核專案
深圳穆迪軟體有限公司資料庫效能最佳化專案
聯絡方式:
手機:18201115468
qq : 305076427
qq微博: wisdomone1
新浪微博:wisdomone9
qq群:275813900
itpub部落格名稱:wisdomone1 http://blog.itpub.net/9240380/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-1814746/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle11g之create table儲存引數buffer_pool含義及作用系列三Oracle
- oracle11g之create table儲存引數initial和表空間autoallocate或uniform的關係OracleORM
- oracle中用Create Table建立表時,Storage中引數的含義!Oracle
- create table進階學習系列(十一)之cluster
- MySQL之四 儲存引擎MySql儲存引擎
- create table之storage選項initial和其它
- SQL SERVER儲存過程AS和GO的含義SQLServer儲存過程Go
- create table進階學習系列(十一)之cluster_續(二)
- GoldenGate 基本引數含義Go
- layUI Table自定義工具欄和搜尋引數UI
- kubernetes系列(十二) - 儲存之Secret
- Impala之儲存和壓縮
- 儲存卡的class是什麼意思?宏旺半導體詳解TF卡的引數含義
- Nginx常用配置引數的含義Nginx
- plsql下nocopy引數的含義SQL
- MySQL入門系列:儲存程式(三)之儲存過程簡介MySql儲存過程
- MySQL入門系列:儲存程式(二)之儲存函式簡介MySql儲存函式
- create table進階學習(四)
- kubernetes系列(十三) - 儲存之Volume
- kubernetes系列(十四) - 儲存之PersistentVolume
- histb 引導核心 boot_cmd 引數含義boot
- 構建安全的XmlWebService系列之wse之證書儲存位置XMLWeb
- php引數3個點的含義PHP
- 部分Oracle 配置檔案引數含義Oracle
- 細粒度審計FGA儲存過程含義儲存過程
- LMT和DMT下儲存引數的異同
- SQL Server-儲存過程(Procedure),帶入引數和出引數SQLServer儲存過程
- SpringSession系列-儲存機制之Redis&MapSpringGseSessionRedis
- 分散式儲存技術解讀系列之GFS分散式
- cuda優化之常量儲存器和紋理儲存器優化
- PHP 編譯引數儲存PHP編譯
- Solarwinds部分引數儲存
- create table進階學習系列(八)
- create table進階學習系列(五)
- create table進階學習系列(七)
- create table進階學習系列(九)
- iOS引用計數管理之揭祕計數儲存iOS
- oracle,db2,mysql類比之四儲存管理OracleDB2MySql