一. 開發背景#
文件系統管理的數據卷,最大限制爲2T,每一個卷最多存放
60個數據文件.爲了不同窗們在加數據文件時誤操做違反該規定,同時爲了簡化操做開發了本功能.
本程序爲了通用性,同時兼顧了ASM存儲與老架構的文件系統,使用時注意參數的代入.
本程序同時適用於新建表空間.
二. 流程圖#
三. 參數說明#
1. 函數頭#
function add_tbs(tablespace_name varchar2, add_size_M number, force varchar2 default 'false', max_size_M_per_file number default 0, auto_extend varchar2 default 'true', next_size_M number default 100) return t_one_col_result_tab pipelined;
2. 參數#
新舊文件系統規範的開關,注意參數類型是varchar2,大小寫不敏感.
當參數值爲'false'時,嚴格遵照每一個數據卷只能有60個數據文件的約定,若是全部卷的數據文件個數已經達到60個,請向存儲組提交新建卷的申請。該取值爲參數默認值。
當參數值爲'true'時,忽略每一個卷60個文件的限制,只考慮存儲空間。該取值
只能在老架構的數據庫上使用。
指定新增數據文件的最大大小,單位是M.
默認值爲0,不指定文件大小,使用Oracle自身對文件大小限制。數據庫參數block_size爲8k的數據庫,單個數據文件最大爲32G,同理,16k的數據庫,最大爲64G。
當參數值大於0時(小於0的值按0處理),添加數據文件時會以該值限制每一個數據文件的最大大小。當值大於數據庫自己限制,已數據庫限制爲上限。
當參數auto_extend取值爲'false'時,max_size_M_per_file決定了每一個數據文件的初始大小,請務必當心。
數據文件自動擴展開關,參數類型是varchar2,大小寫不敏感. 默認值'true',開啓數據文件的自動擴展,而且每一個數據文件初始大小爲100M。
當參數值爲'false'時,關閉數據文件的自動擴展。
每一個數據文件的初始大小會根據max_size_M_per_file參數的大小肯定。請務必當心使用。
對自動擴展的數據文件有效,指定表空間每次擴展的大小,單位是M,默認值爲100M .
四 舉例 #
一、不帶force參數,超過60個文件是不能添加數據文件的。#
SQL> select * from table(dbmgr.autodb.add_tbs('lifedata',10)); OUTPUT ------------------------------------------------------------------------------------------------------------------------------------ 文件系統數據庫 ` ************************************************* * 請使用「col output for a132」獲取最佳顯示效果 * * 請使用 「set pages 200」 獲取最佳顯示效果 * ************************************************* ==================================================================================================================================== ` ` 卷信息: (**卷數據文件數不計算redo log以及temp文件**) ------------------------------------------------------------------------------------------------------------------------ |卷名 |卷數據文件數 | 卷大小(G) | 已使用(G) | 剩餘(G) |使用率% |剩餘率% | ------------------------------------------------------------------------------------------------------------------------ |/paic/bj/lbs/data | 152 | 2696 | 1942 | 754 | 72.03 | 27.97 | |/paic/bj/lbs/data2 | 76 | 1951 | 1222 | 729 | 62.63 | 37.37 | ------------------------------------------------------------------------------------------------------------------------ ==================================================================================================================================== ` ` 本次操做增長數據文件以下: OUTPUT ---------------------------------------------------------------------------------------------------------------------------- |數據文件 | 初始大小(M) |自動擴展|最大可擴展到(M)| 每次擴展(M) | ---------------------------------------------------------------------------------------------------------------------------- ==================================================================================================================================== 添加數據文件遇到異常: ERROR: 沒有找到合適的DATA卷,請向存儲組申請增長額外的DATA卷。 **Hint: 若是是未改造的舊存儲架構,能夠代入參數"force=>true"後從新執行過程。 ---------------------------------------------------------------------------------------------------------------------------------- ==================================================================================================================================== ` ` 表空間 <LIFEDATA> 概況 : ------------------------------------------------------------------------------- | 當前大小(M) | 已使用(M) | 剩餘(M) | 最大可擴展到(M) |當前剩餘率% |最大剩餘率% | ------------------------------------------------------------------------------- | 1019100 | 1018134 | 966 | 1536000 | 0 | 34 | -------------------------------------------------------------------------------
二、帶force參數能夠忽略60個文件的限制#
SQL> select * from table(dbmgr.autodb.add_tbs('lifedata',10,'true')); OUTPUT ------------------------------------------------------------------------------------------------------------------------------------ 文件系統數據庫 ` ***************************************************** * 請使用「col output for a132」獲取最佳顯示效果 * * 請使用 「set pages 200」 獲取最佳顯示效果 * ***************************************************** ==================================================================================================================================== ` ` 卷信息: (**卷數據文件數不計算redo log以及temp文件**) ------------------------------------------------------------------------------------------------------------------------ |卷名 |卷數據文件數 | 卷大小(G) | 已使用(G) | 剩餘(G) |使用率% |剩餘率% | ------------------------------------------------------------------------------------------------------------------------ |/paic/bj/lbs/data | 152 | 2696 | 1942 | 754 | 72.03 | 27.97 | |/paic/bj/lbs/data2 | 76 | 1951 | 1222 | 729 | 62.63 | 37.37 | ------------------------------------------------------------------------------------------------------------------------ ==================================================================================================================================== ` ` 本次操做增長數據文件以下: OUTPUT ----------------------------------------------------------------------------------------------------------------------- |數據文件 | 初始大小(M) |自動擴展|最大可擴展到(M)| 每次擴展(M) | ----------------------------------------------------------------------------------------------------------------------- |/paic/bj/lbs/data2/oradata/lubj0/lifedata049.dbf | 100 | 是 | 32767| 100| ----------------------------------------------------------------------------------------------------------------------- ==================================================================================================================================== ` ` 表空間 <LIFEDATA> 概況 : ------------------------------------------------------------------------------- | 當前大小(M) | 已使用(M) | 剩餘(M) | 最大可擴展到(M) |當前剩餘率% |最大剩餘率% | ------------------------------------------------------------------------------- | 1019200 | 1018134 | 1066 | 1568767 | 0 | 35 |