【转自Oracle ACS--惜总】一个重设Oracle 数据文件大小的sql语句
2015-04-26 15:34
369 查看
转自:
http://ask.orasos.com/thread-11-1-1.html
下面来试验一下:
一共12个datafile,为啥resize的时候返回10行呢?因为生成resize的sql是有条件的:
http://ask.orasos.com/thread-11-1-1.html
set verify off column file_name format a50 word_wrapped column smallest format 999,990 heading "Smallest|Size|Poss." column currsize format 999,990 heading "Current|Size" column savings format 999,990 heading "Poss.|Savings" break on report compute sum of savings on report column value new_val blksize select value from v$parameter where name = 'db_block_size' / select file_name, ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest, ceil( blocks*&&blksize/1024/1024) currsize, ceil( blocks*&&blksize/1024/1024) - ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings from dba_data_files a, ( select file_id, max(block_id+blocks-1) hwm from dba_extents group by file_id ) b where a.file_id = b.file_id(+) / --上面的语句是查询datafile的现状,本行汉字是我自己加的。惜总的sql没有本行汉字。
column cmd format a75 word_wrapped select 'alter database datafile '''||file_name||''' resize ' || ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) || 'm;' cmd from dba_data_files a, ( select file_id, max(block_id+blocks-1) hwm from dba_extents group by file_id ) b where a.file_id = b.file_id(+) and ceil( blocks*&&blksize/1024/1024) - ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0 / --上面的语句是生成 datafile的resize语句。本行汉字是我自己加的。惜总的sql没有本行汉字。
下面来试验一下:
[oracle@rhel63single ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed Apr 22 18:44:43 2015 Copyright (c) 1982, 2013, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> set pages 200 SQL> set verify off SQL> column file_name format a50 word_wrapped SQL> column smallest format 999,990 heading "Smallest|Size|Poss." SQL> column currsize format 999,990 heading "Current|Size" SQL> column savings format 999,990 heading "Poss.|Savings" SQL> break on report SQL> compute sum of savings on report SQL> SQL> column value new_val blksize SQL> select value from v$parameter where name = 'db_block_size' 2 / VALUE -------------------------------------------------------------------------------- 8192 SQL> SQL> select file_name, 2 ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) smallest, 3 ceil( blocks*&&blksize/1024/1024) currsize, 4 ceil( blocks*&&blksize/1024/1024) - 5 ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) savings 6 from dba_data_files a, 7 ( select file_id, max(block_id+blocks-1) hwm 8 from dba_extents 9 group by file_id ) b 10 where a.file_id = b.file_id(+) 11 / Smallest Size Current Poss. FILE_NAME Poss. Size Savings -------------------------------------------------- -------- -------- -------- /u01/app/oracle/oradata/test/system01.dbf 801 810 9 /u01/app/oracle/oradata/test/tb_test_01.dbf 5 5 0 /u01/app/oracle/oradata/test/test_uni_sz_1m_01.dbf 13 200 187 /u01/app/oracle/oradata/test/sysaux01.dbf 3,219 3,310 91 /u01/app/oracle/oradata/test/users01.dbf 348 365 17 /u01/app/oracle/oradata/test/ten01.dbf 20 50 30 /u01/app/oracle/oradata/test/ts2.dbf 201 500 299 /u01/app/oracle/oradata/test/undotbs01.dbf 69 240 171 /u01/app/oracle/oradata/test/test01.dbf 7 50 43 /u01/app/oracle/oradata/test/test_uni_sz_2m_01.dbf 7 50 43 /u01/app/oracle/oradata/test/test.dbf 1 /u01/app/oracle/oradata/test/ts1.dbf 1 500 499 -------- sum 1,389 12 rows selected. SQL> column cmd format a75 word_wrapped SQL> SQL> select 'alter database datafile '''||file_name||''' resize ' || 2 ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) || 'm;' cmd 3 from dba_data_files a, 4 ( select file_id, max(block_id+blocks-1) hwm 5 from dba_extents 6 group by file_id ) b 7 where a.file_id = b.file_id(+) 8 and ceil( blocks*&&blksize/1024/1024) - 9 ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0 10 / CMD --------------------------------------------------------------------------- alter database datafile '/u01/app/oracle/oradata/test/system01.dbf' resize 801m; alter database datafile '/u01/app/oracle/oradata/test/test_uni_sz_1m_01.dbf' resize 13m; alter database datafile '/u01/app/oracle/oradata/test/sysaux01.dbf' resize 3219m; alter database datafile '/u01/app/oracle/oradata/test/users01.dbf' resize 348m; alter database datafile '/u01/app/oracle/oradata/test/ten01.dbf' resize 20m; alter database datafile '/u01/app/oracle/oradata/test/ts2.dbf' resize 201m; alter database datafile '/u01/app/oracle/oradata/test/undotbs01.dbf' resize 69m; alter database datafile '/u01/app/oracle/oradata/test/test01.dbf' resize 7m; alter database datafile '/u01/app/oracle/oradata/test/test_uni_sz_2m_01.dbf' resize 7m; alter database datafile '/u01/app/oracle/oradata/test/ts1.dbf' resize 1m; 10 rows selected. SQL>
一共12个datafile,为啥resize的时候返回10行呢?因为生成resize的sql是有条件的:
ceil( blocks*&&blksize/1024/1024) - ceil( (nvl(hwm,1)*&&blksize)/1024/1024 ) > 0
相关文章推荐
- 给定一个一oracle建表的sql语句,解析读出的字符串,将表名、字段名、字段类型数据取出,怎么实现啊?
- 【ORACLE】一个简单实用的对数据进行行列转换并统计的SQL语句
- 【ORACLE】一个简单实用的对数据进行行列转换并统计的SQL语句
- 【ORACLE】一个简单实用的对数据进行行列转换并统计的SQL语句
- oracle导入txt数据文件--sql语句
- ORACLE中如何用一条SQL语句删除一个表中所有某个列的值为空的数据?
- SqlServer和Oracle从多行记录(数据集)中查询结果并拼接成一个字符串的SQL语句(纵表数据转成拼接的文本)
- oracle问题:新建了一个PDM文件,建表后生成的sql语句中含有clustered
- oracle表中存在数据就修改,没有数据自动添加 的sql语句
- Oracle 查看表空间的大小及使用情况sql语句
- OFBiz安装的Oracle中导入数据的必须的sql语句
- oracle常用数据字典和SQL语句总结
- Oracle数据文件大小限制原因
- Oracle:SQL语句--对表的操作——修改列的数据类型( 即 修改字段的数据类型)
- Oracle:SQL语句--对表的操作——添加一个字段 (即 添加 一列)
- Oracle 查看表空间的大小及使用情况sql语句
- 在Oracle使用sql语句中如何插入日期格式的数据
- oracle sql语句查询数据中断
- oracle 不小心把表数据锁掉,sys查询被锁对象和解锁SQL语句
- Oracle 查看表空间的大小及使用情况sql语句