表空间扩容-ADD_TBS()

一. 开发背景#

文件系统管理的数据卷,最大限制为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. 参数#

tablespace_name add_size_M force max_size_M_per_file auto_extend next_size_M
需要 增加或者 新建的表空间名, 大小写均可.
表空间需要增加的大小, 单位是M.
新旧文件系统规范的开关,注意参数类型是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 .

四 举例 #

1、不带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 |
-------------------------------------------------------------------------------

2、带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 | 

你可能感兴趣的:(表空间扩容-ADD_TBS())