oracle数据库常用sql语句汇总
oracle数据库常用sql语句汇总
1 查看表空间名称、数据文件的路径、大小及使用率
select b.tablespace_name "TABLESPACE_NAME", b.file_name "DATAFILE_PATH", b.bytes/1024/1024 "SIZE(M)", substr((b.bytes-sum(nvl(a.bytes,0)))/(b.bytes)*100,1,5) "USAGE(%)" from dba_free_space a,dba_data_files b where a.file_id(+)=b.file_id group by b.tablespace_name,b.file_name,b.bytes order by 1,2;
2 查看表空间名称、数据文件的总大小、剩余大小及使用率
SELECT * FROM ( SELECT df.tablespace_name "tablespace name",df.total_space "total space(M)",fs.free_space "free space(M)", ROUND((1-fs.free_space/df.total_space)*100,2) "usage(%)" FROM (SELECT tablespace_name,ROUND(SUM(bytes)/(1024*1024),2) total_space FROM dba_data_files GROUP BY tablespace_name) df, (SELECT tablespace_name,ROUND(SUM(bytes)/(1024*1024),2) free_space FROM dba_free_space GROUP BY tablespace_name) fs WHERE df.tablespace_name=fs.tablespace_name UNION ALL SELECT A.tablespace_name "tablespace name", D.mb_total "total space(M)", D.mb_total - SUM (A.used_blocks * D.block_size) / 1024 / 1024 "free space(M)", ROUND(((SUM (A.used_blocks * D.block_size) / 1024 / 1024)/d.mb_total)*100,2) "usage(%)" FROM v$sort_segment A, (SELECT B.name, C.block_size, SUM (C.bytes) / 1024 / 1024 mb_total FROM v$tablespace B, v$tempfile C WHERE B.ts#= C.ts# GROUP BY B.name, C.block_size) D WHERE A.tablespace_name = D.name GROUP by A.tablespace_name, D.mb_total ) order by 4 desc;
3 查看表空间名、表空间大小、已使用空间、空闲空间、使用比率、最大块
SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", F.TOTAL_BYTES "空闲空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),\'990.99\') || \'%\' "使用比率", F.MAX_BYTES "最大块(M)" FROM (SELECT TABLESPACE_NAME, ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES, ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES FROM SYS.DBA_FREE_SPACE GROUP BY TABLESPACE_NAME) F, (SELECT DD.TABLESPACE_NAME, ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DD GROUP BY DD.TABLESPACE_NAME) D WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME ORDER BY 1;
4 增加表空间大小
首先需要查询表空间名称和数据文件所在路径,然后执行以下命令
alter tablespace "USERS" add datafile \'/u01/app/oracle/oradata/ORCL/users02.dbf\' size 10240M autoextend on;
5 查看数据库用户信息
select username,account_status,lock_date from dba_users;
USERNAME ACCOUNT_STATUS LOCK_DATE ------------------------------ -------------------------------- --------- SYS OPEN SYSTEM OPEN SCOTT OPEN HR OPEN OUTLN EXPIRED & LOCKED 17-SEP-11 MGMT_VIEW EXPIRED & LOCKED 17-SEP-11 FLOWS_FILES EXPIRED & LOCKED 17-SEP-11 MDSYS EXPIRED & LOCKED 17-SEP-11 ORDSYS EXPIRED & LOCKED 17-SEP-11
6 查看数据库用户数据写在了哪个数据文件里
select username,default_tablespace from user_users;
USERNAME DEFAULT_TABLESPACE ------------------------------ ------------------------------ SYS SYSTEM