oracle在各种环境下扩展表空间

来源:互联网 发布:魏红元 注会 知乎 编辑:程序博客网 时间:2024/06/14 21:28

一、查看表空间使用状况

查看表空间的是使用率可以通过多种方式查看,比如 oracle客户端管理器,OEM等等。这里使用命令方式查看:

SELECT tablespace_name, sum_m    as "sum(M) " , sum_free as "sum_free(M) ",to_char(100*(sum_m-sum_free)/sum_m, '99.99') || '%' AS pct_free FROM ( SELECT tablespace_name,sum(bytes)/1024/1024 AS sum_m FROM dba_data_files GROUP BY tablespace_name), ( SELECT tablespace_name AS ts_name, sum(bytes/1024/1024) AS sum_free FROM dba_free_space GROUP BY tablespace_name ) WHERE tablespace_name = ts_name (+) Union SELECT tablespace_name , sum_m    as "sum(M) " , sum_free as "sum_free(M) " , to_char(100*(sum_m-sum_free)/sum_m, '99.99') || '%' AS pct_free FROM (select tablespace_name, sum(bytes)/1024/1024 AS sum_m    from dba_temp_files group by tablespace_name), (select tablespace_name AS ts_name, sum(BYTES_FREE /1024/1024) AS sum_free from v$temp_space_header group by tablespace_name) Where tablespace_name = ts_name (+) order by pct_free; 

 

二、数据库文件存储方式

 Oracle的表空间存储方式主要有三种:

1.    文件系统(通常/dev目录开头,如/oradata

2.    裸设备(通常是/dev/r****方式)

3.    ASM/开头,以+开头)

 

如何查看表空间数据文件的存放位置,如下:

SQL>set linesize 200 SQL> col file_name format a50 SQL> col tablespace format a20 SQL> select file_id,file_name,tablespace_name from dba_data_files;  FILE_ID                       FILE_NAME                          TABLESPACE_NAME 1           +DATADG/primarydb/datafile/system.270.785597071            SYSTEM2           +DATADG/primarydb/datafile/sysaux.269.785597073             SYSAUX3           +DATADG/primarydb/datafile/undotbs1.264.785597075            UNDOTBS14           +DATADG/primarydb/datafile/users                             USERS5           +DATADG/primarydb/datafile/test.261.785597131                 TEST6           +DATADG/primarydb/datafile/test.259.785597479                 TEST7           /oracle/lixz01.dbf                                            LIXZ8           /dev/ruser_data01                                            USER_DATA01

这个数据库中三种存储方式都有,1-6号数据文件存放在 ASM+DATADG中,7号数据文件存放在文件系统中,8号数据文件存放在裸设备中。

注:一般 ORACLE不建议将数据文件以不同的方式存储,这里只是演示使用。

下面介绍下各个数据文件存储方式在不同操作系统下增加数据文件或者表空间的步骤。

 

三、文件系统

3.1 windows平台:

通过 dba_data_files视图查出的数据文件目录通常以盘符开头(如 D:\oradata

打开我的电脑查看对应的磁盘分区剩余空间,确保满足需求。通过如下命令增加数据文件:

SQL>alter tablespace XX add datafile ‘D:\xx\xx.dbf’ size xxM;

 

3.2 UNIX操作系统

如果通过 dba_data_files视图查出的数据文件是存放在 unix/linux下的文件系统,通过以下方 式查看文件系统的剩余空间,如下:

SQL> !df -k Filesystem              1K-blocks           Used Available Use% Mounted on/dev/hda3              28337624             15770924    11103984   59% //dev/hda1              101086               11825         84042    13% /boottmpfs                 1048576               383652       664924    37% /dev/shm

单位是 kb,’/’目录的剩余空间为 11103984 K大约为 10G

如果子目录不是文件系统的挂载目录,则表示数据存放在根目录中。

确保相应的文件系统剩余空间满足需求。通过以下命令增加数据文件:

SQL>alter tablespace XX add datafile ‘/xx/xx.dbf’ size xxM;

 

四、裸设备

通常我们的生产系统如果使用裸设备,都与双机系统结合使用。不同的 UNIX操作系统增加 裸设备的方法不同。

通过下列命令查看操作系统类型:

SQL> !uname -a

AIX    hostname     1 6 00F6AD424C00---------------------------------------------------#AIX操作系统。

HP-UX hotname B.11.31 U ia64 1857089066 unlimited-user license-------------#HP-UX操作系统

  

4.1  AIX操作系统

  1.   查看双机的状态

# lssrc -g cluster

Subsystem               Group                     PID                  Status

clstrmgrES           cluster                  9568604           active

 

2.    查看裸设备所在 vg信息

如下:

# lslv lv_nameLOGICAL VOLUME:          user_data08_03                  VOLUME GROUP:      xxvgLV IDENTIFIER:          00c05d9500004c00000001263670d134.70 PERMISSION:     read/writeVG STATE:               active/complete                 LV STATE:           opened/syncdTYPE:                   raw                              WRITE VERIFY:      offMAX LPs:                512                                   PP SIZE:       1024 megabyte(s)COPIES:                  1                               SCHED POLICY:      parallelLPs:                     5                                        PPs:        5STALE PPs:               0                                  BB POLICY:       relocatableINTER-POLICY:           minimum                           RELOCATABLE:        yesINTRA-POLICY:          middle                             UPPER BOUND:       1024MOUNT POINT:          N/A                                       LABEL:         None 

 

从上面可以了解到数据文件存放的 vg是 xxvg、LV类型是 raw、PP大小为 1024M

3.   增加共享 LV

#smit cl_admin

-->

HACMP Logical Volume Management

-->

Shared Logical Volume

-->

Add  a  Shared Logical Volume

-->

选择相应的 Shared Volume Group

根据需求设定裸设备的大小:LP的个数 n,对应的裸设备大小为 n*lp _size .

Logigcal volume name根据数据文件的原来命名规则命名,如 user_data01_08Logical volume type选择 raw

 

4.    为裸设备授权

#chown oracle:dba /dev/rlv_name

#chmod 660 /dev/rlv_name

双机的各个节点都必须执行。

 

5.    增加数据文件

SQL>alter tablespace XX add datafile ‘/dev/rlv_name’   size xxM;

注意:这里 size大小必须小于裸设备的大小。

 

4.2 HP-UX操作系统

 1.     查看双机的状态

#cmviewcl -vCLUSTER          STATUScluster1                     up NODE             STATUS           STATEdb1          up               runningPACKAGE              STATUS                 STATE          AUTO_RUN       NODEdb_pkg                 up                   running          enabled       db1 NODE             STATUS           STATEdb2          up               running 

查看到 2个节点正常运行双机,数据库资源在 db1节点上运行。

 

2.    查看 vg lv信息,找到数据文件对应的裸设备所在的 vg

如:

# lvdisplay lv_name--- Logical volumes ---LV Name                                     lv_nameVG Name                                     /dev/vgxxLV Permission                          read/writeLV Status                                 available/syncdMirror copies                          1Consistency Recovery               MWCSchedule                                   parallelLV Size (Mbytes)                     30720Current LE                               960Allocated PE                            1920Stripes                                     0Stripe Size (Kbytes)              0Bad block                                 onAllocation                                strictIO Timeout (Seconds)              default

从上面可以了解到数据文件存放的 vg vgxx

 

3.    创建裸设备

在数据库运行的节点创建裸设备:

#lvcreate -n lv_name   -L xx /dev/vgxx

Lv_name:根据数据文件的原来命名规则命名,如 user_data01_08

-L参数的单位为 M,根据需求设置大小。

4.    同步 VG信息

在创建 LV的节点上导出 vg信息,并复制到另一个节点:

查看 vgxx group id

#ll /dev/*/group

crw-r-----    1 root            sys         640x020000   Apr              1 18:47  /dev/vgxx/group

#vgexport   -p -v -s -m /tmp/vgxx.map   /dev/vgxx

#rcp /tmp/vgxx.map   server-b: /tmp/vgxx.map

 

在另一个节点导入 vg信息:

先清空原来的 vg信息

#vgexport /dev/vgxx

#mkdir /dev/vgxx

#mknode /dev/vgxx/group c 640x020000-------------------------------# group id上面查看得到

#vgimport -v -s -m /tmp/vgxx.map   vgxx

  

5.  为裸设备授权

#chown oracle:dba /dev/vgxx/rlv_name

#chmod 660 /dev/vgxx/rlv_name

双机的各个节点都必须执行。

6.  增加数据文件

SQL>alter tablespace XX add datafile ‘/dev/vgxx/rlv_name’   size xxM;

注意:这里 size大小必须小于裸设备的大小。

五、ASM

oracle 10g以后 oracle新增了一种存储方式自动存储管理(ASM),ASM省去了操作系统
方式的管理数据文件,而通过 oracle自身管理。如果通过 dba_data_files视图查出以 ASM式存储数据文件,

可以通过以下方式增加数据文件。 如何查看 ASM diskgroup剩余空间:

Oracle 10g:

在第一个节点执行:

#su -oracle

$export ORACLE_SID=+ASM1

$asmcmd

ASMCMD>lsdg

 

Oracle 11g:

#su - grid

$asmcmd

ASMCMD>lsdg

确保相应的 diskgroup Free_MB满足需求。

通过以下命令增加数据文件:

SQL>alter tablespace XX add datafile ‘+XX’   size xxM;

注意:ASM增加数据文件或者创建表空间不需要指定数据文件名,只要指定 diskgroup可!ASM会自动命名。

 

原创粉丝点击