ORACLE表空间和常用SQL操作

  • A+
所属分类:数据库 系统运维
输入正文标题广告代码(非移动端)

1、查询表空间相关信息

使用系统用户登录,然后使用如下命令,查看数据库表空间相关信息:

select from dba_data_files;

2、创建表空间

创建临时表空间:

create temporary tablespace exercise_temptempfile 'D:\oracle\product\10.2.0\oradata\orcl\exercise_temp.dbf'size 50mautoextend onnext 50m maxsize 20480mextent management local;

注意:目录[D:\oracle\product\10.2.0\oradata\orcl]自己定义,并确保存在,且所在磁盘大小要超过参数maxsize的值。

创建数据表空间:

create tablespace exercise_dataloggingdatafile 'D:\oracle\product\10.2.0\oradata\orcl\exercise_data.dbf'size 50mautoextend onnext 50m maxsize 20480mextent management local;

创建用户并指定表空间:

create user username identified by passworddefault tablespace exercise_datatemporary tablespace exercise_temp;

用户授权:

grant connect,resource,dba to username;

3、查询表空间使用情况

SELECT UPPER(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间大小(M)",D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",F.TOTAL_BYTES "空闲空间(M)",F.MAX_BYTES "最大块(M)"FROM (SELECT TABLESPACE_NAME,ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTESFROM SYS.DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MBFROM SYS.DBA_DATA_FILES DDGROUP BY DD.TABLESPACE_NAME) DWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAMEORDER BY 1;

4、查询表空间总容量

select tablespace_name, sum(bytes) / 1024 / 1024 as MBfrom dba_data_filesgroup by tablespace_name;

5、删除表空间

删除用户:

drop user username cascade;

删除表空间:

drop tablespace tablespace_name including contents and datafiles;

6、查询当前表级锁SQL:

select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode from v$locked_object lo, dba_objects ao, v$session sess where ao.object_id = lo.object_id and lo.session_id = sess.sid;

7、杀掉表锁进程:

alter system kill session '436,35123';

8、监控当前数据库谁在运行什么SQL语句

select osuser, username, sql_text  from  v$session a, v$sqltext b where  a.sql_address =b.address order by address, piece;

9、找使用CPU多的用户session

select a.sid,spid,status,substr(a.program,1,40) prog, a.terminal,osuser,value/60/100 value from  v$session a,v$process b,v$sesstat c where  c.statistic#=12 andc.sid=a.sid anda.paddr=b.addr  order by value desc;

10、查看死锁信息

SELECT (SELECT username FROM v$session WHERE SID = a.SID) blocker, a.SID, 'is blocking',(SELECT username FROM v$session WHERE SID = b.SID) blockee, b.SID FROM v$lock a, v$lock bWHERE a.BLOCK = 1 AND b.request > 0 AND a.id1 = b.id1 AND a.id2 = b.id2;

11、查看消耗资源最多的SQL

SELECT hash_value, executions, buffer_gets, disk_reads, parse_callsFROM V$SQLAREAWHERE buffer_gets > 10000000 OR disk_reads > 1000000ORDER BY buffer_gets + 100 * disk_reads DESC;

12、查看某条SQL语句的资源消耗

SELECT hash_value, buffer_gets, disk_reads, executions, parse_callsFROM V$SQLAREAWHERE hash_Value = 228801498 AND address = hextoraw('CBD8E4B0');

13、查询会话执行的实际SQL

SELECT   a.SID, a.username, s.sql_textFROM v$session a, v$sqltext sWHERE a.sql_address = s.addressAND a.sql_hash_value = s.hash_valueAND a.status = 'ACTIVE'ORDER BY a.username, a.SID, s.piece;

14、显示正在等待锁的所有会话

SELECT FROM DBA_WAITERS;

输入正文底部广告代码(非移动端)
输入评论上方广告代码(非移动端)

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

目前评论:45   其中:访客  2   博主  0

    • 美琳 美琳 5

      哈 谢谢啦 !谢谢分享

      • 美琳 美琳 5

        哈 谢谢啦 !谢谢分享