oracle 表空间及磁盘大小查看
/*备注:
表空间是数据库的逻辑组成部分
从物理上将:数据库数据存放在数据文件中
从逻辑上将:数据库则是存放在表空间中
表空间由一个或是多个数据文件组成
*/
--1.查看用户下面的所有的表
SELECT * FROM USER_TABLES;
SELECT * FROM DBA_TABLES WHERE OWNER = 'COMM_USER';
--1.1查看表所在的表空间
select TABLE_NAME,TABLESPACE_NAME from dba_tables t where t.table_name='DM_LIST';
--1.2查看用户所属的表空间
SELECT DEFAULT_TABLESPACE FROM DBA_USERS WHERE USERNAME = 'COMM_USER';
--1.3.查看所有的表空间
SELECT * FROM DBA_TABLESPACES;
SELECT * FROM V$TABLESPACE;
--1.3查看默认的表空间
select * from database_properties where property_name='DEFAULT_PERMANENT_TABLESPACE';
--1.4创建索引到指定表空间
create index IDX_DM_FINISHTIME_ORGANID on DM_COMM_PREM_LIST (FINISH_TIME,ORGAN_ID) tablespace TBS_DW_DATA;
--1.5查看表空间下有多少用户,tablespace_name表空间 的名字一定要大写
SELECT DISTINCT S.OWNER
FROM DBA_SEGMENTS S
WHERE S.TABLESPACE_NAME = 'TBS_COMM_DATA';
--1.6所有表空间的使用情况
SELECT --B.file_name "文件名",
A.TABLESPACE_NAME "表空间名",
TOTAL "表空间大小",
FREE "表空间剩余大小",
(TOTAL - FREE) "表空间使用大小",
TOTAL / (1024 * 1024 * 1024) "表空间大小(G)",
FREE / (1024 * 1024 * 1024) "表空间剩余大小(G)",
(TOTAL - FREE) / (1024 * 1024 * 1024) "表空间使用大小(G)",
ROUND((TOTAL - FREE) / TOTAL, 4) * 100 "使用率 %"
FROM (SELECT TABLESPACE_NAME,
SUM(BYTES) FREE
FROM DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) A,
(SELECT TABLESPACE_NAME,
-- file_name,
SUM(BYTES) TOTAL
FROM DBA_DATA_FILES
GROUP BY TABLESPACE_NAME/*,file_name*/) B
WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME;
--2、linux中查看服务器硬盘的使用情况
df -k 以KB为单位显示磁盘使用量和占用率
df -m 以M为单位显示磁盘使用量和占用率
--3、给表空间新增数据文件并设置30G大小 在命令窗口中执行,数据文件的大小最大不能超过32G,
否则会报错:ORA-01144: 文件大小 (13107200 块) 超出 4194303 块的最大数
方法1)给白空间增加数据文件
SQL> alter tablespace AUDIT add datafile '/pi/app/oracle/oradata/enterprise_tbs05.dbf' size 30G;
alter tablespace 表空间名 add datafile '数据文件存放路径' size 数据文件大小;
方法2)手动增加数据文件尺寸
SQL>ALTER DATABASE AUDIT '/oracle/oradata/db/GAME.dbf' RESIZE 4000M;
方法3)设定数据文件自动扩展
SQL> ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf' AUTOEXTEND ON NEXT 100M MAXSIZE 10000M;
执行完上述1、2、3.1)步骤之后:DBA_DATA_FILES中新增的数据文件的bytes的值要比maxbytes的值要大的原因?
原因:当一个datafile 手工resize到一个大于maxsize(maxbytes)的值之后,DBA_DATA_FILES中bytes的值要比maxbytes的值要大。
当该datafile被设置为autoextend on之后,dba_data_files中的maxbytes 值被自动结算为一个非零值。dba_data_files中的bytes是该datafile的当前的大小(以bytes为单位)
不常用查询:
1)查看oracle数据库库对象
SELECT owner, object_type, status, COUNT(*) count# FROM all_objects GROUP BY owner, object_type, status;
2)查看oracle数据库的版本
SELECT version FROM product_component_version WHERE substr(product, 1, 6) = 'Oracle';
3)查看oracle数据库的创建日期和归档方式
SELECT created, log_mode FROM v$database;
4)查看oracle控制文件目录
SELECT NAME FROM v$controlfile;
5)查看oracle日志文件目录
SELECT MEMBER FROM v$logfile;