oracle系统中poord是什么,Oracle常用sql(持续更新)

本文介绍了Oracle数据库的一些关键管理操作,包括查看表空间使用、检查自动扩展、锁定表的查询、杀死进程的方法,以及树型查询、死循环检测等。此外,还涉及到了数据清理、临时表空间管理、字段个数统计、字符串处理和分区信息查询。同时,文章也提到了MySQL中实现逗号分隔和删除重复数据的技巧。通过这些内容,读者可以更好地理解和处理数据库中的各种问题。
摘要由CSDN通过智能技术生成

--1、oracle查看表空间使用情况

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_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 4 DESC;

--2、oracle是否开启自动扩展

SELECT T.TABLESPACE_NAME,

D.FILE_NAME,

D.AUTOEXTENSIBLE,

D.BYTES,

D.MAXBYTES,

D.STATUS

FROM DBA_TABLESPACES T, DBA_DATA_FILES D

WHERE T.TABLESPACE_NAME = D.TABLESPACE_NAME

ORDER BY TABLESPACE_NAME, FILE_NAME;

--3、oracle中查看表是否被锁定:

SELECT s.USERNAME,s.STATUS, object_name, machine, s.sid, s.serial#

from gv$locked_object i, dba_objects o, gv$session s

where i.object_id = o.object_id

and i.session_id = s.sid;

--4、杀死进程语句:

--alter system kill session 'sid, serial#'

alter system kill session '2838, 58765'; --(sid, srial#)

--5、Oracle递归查询(树型查询)

--prior放的左右位置决定了检索是自底向上还是自顶向下. 左边是自上而下(找子节点),右边是自下而上(找父节点)

SELECT T.AREA_CODE, T.AREA_NAME, T.AREA_LEVEL

FROM TBL_SYS_AREA_CODE T

CONNECT BY PRIOR T.AREA_CODE = T.PARENT_AREA_CODE

START WITH T.PARENT_AREA_CODE = 'xxxx';

SELECT T.AREA_CODE, T.AREA_NAME, T.AREA_LEVEL

FROM TBL_SYS_AREA_CODE T

CONNECT BY T.AREA_CODE = PRIOR T.PARENT_AREA_CODE

START WITH T.Area_Name = 'xxxx';

--查找死循环

select * from table_t t where t.id=t.p_id;

select *

from (select id, p_id, CONNECT_BY_ISCYCLE CYCLED

from table_t

connect by nocycle prior id = p_id

start with id = 'xxx') a

where a.CYCLED > 0;

--6、同一字段用逗号分隔(列转行):

SELECT LISTAGG(CASE

WHEN FUNC_CHECKDISABILITYCARD(S.AAD003) = 0 THEN

S.AAD003

END) WITHIN GROUP(ORDER BY S.AHH002) AS C022_DESC

FROM AA01_2014 T, AH02_2014 S

WHERE T.STATUS <> 0

AND S.STATUS <> 0

AND T.AAA001 = S.AAA001

AND T.AAH009 <> '-1'

AND T.BASENUM_FLAG = '2016'

AND T.AAH009 IS NOT NULL

GROUP BY S.AAA001;

--7、mysql逗号分隔

select Group_concat(id SEPARATOR ',') from tT;

--8、复制表结构及数据

create table_name as select * from Source_table where 1=1;

复制表结构

create table_name as select * from Source_table where 1 <> 1;

--9、oracle 排序: dense_rank() over(order by t.df desc)

--10、根据表名查询过程名

SELECT name,

type,

referenced_owner,

referenced_name,

referenced_type

FROM user_dependencies

WHERE referenced_name = upper('tb_poor_tpysdf')

AND type = 'PROCEDURE';

SELECT DISTINCT NAME

FROM USER_SOURCE

WHERE TYPE = 'PROCEDURE'

AND UPPER(TEXT) LIKE UPPER('%insert into TBL_DA_POOR_VILLAGE_INFO%');

--11、查询Oracle正在执行的sql语句及执行该语句的用户

SELECT b.sid oracleID,

b.username Oracle用户,

b.serial#,

spid 操作系统ID,

paddr,

sql_text 正在执行的SQL,

b.machine 计算机名

FROM v$process a, v$session b, v$sqlarea c

WHERE a.addr = b.paddr

AND b.sql_hash_value = c.hash_value;

--12、查看正在执行sql的发起者的发放程序

SELECT A.serial#,OSUSER 电脑登录身份,

PROGRAM 发起请求的程序,

USERNAME 登录系统的用户名,

SCHEMANAME,

B.Cpu_Time 花费cpu的时间,

STATUS,

B.SQL_TEXT 执行的sql

FROM V$SESSION A

LEFT JOIN V$SQL B ON A.SQL_ADDRESS = B.ADDRESS

AND A.SQL_HASH_VALUE = B.HASH_VALUE

ORDER BY b.cpu_time DESC

--13、查出oracle当前的被锁对象

SELECT l.session_id sid,

s.serial#,

l.locked_mode 锁模式,

l.oracle_username 登录用户,

l.os_user_name 登录机器用户名,

s.machine 机器名,

s.terminal 终端用户名,

o.object_name 被锁对象名,

s.logon_time 登录数据库时间

FROM v$locked_object l, all_objects o, v$session s

WHERE l.object_id = o.object_id

AND l.session_id = s.sid

ORDER BY sid, s.serial#;

--14、

SELECT b.sid oracleID,

b.username 登录Oracle用户名,

b.serial#,

spid 操作系统ID,

paddr,

sql_text 正在执行的SQL,

b.machine 计算机名

FROM v$process a,

v$session b,

v$sqlarea c

WHERE a.addr = b.paddr

AND b.sql_hash_value = c.hash_value;

--15、查出锁定表的sid, serial#,os_user_name, machine_name, terminal,锁的type,mode

SELECT s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,

s.terminal, s.logon_time, l.type

FROM v$session s, v$lock l

WHERE s.sid = l.sid

AND s.username IS NOT NULL

ORDER BY sid;

--16、查看临时表空间

select *

from (Select a.tablespace_name,

to_char(a.bytes / 1024 / 1024, '99,999.999') total_bytes,

to_char(b.bytes / 1024 / 1024, '99,999.999') free_bytes,

to_char(a.bytes / 1024 / 1024 - b.bytes / 1024 / 1024,

'99,999.999') use_bytes,

to_char((1 - b.bytes / a.bytes) * 100, '99.99') || '%' use

from (select tablespace_name, sum(bytes) bytes

from dba_data_files

group by tablespace_name) a,

(select tablespace_name, sum(bytes) bytes

from dba_free_space

group by tablespace_name) b

where a.tablespace_name = b.tablespace_name

union all

select c.tablespace_name,

to_char(c.bytes / 1024 / 1024, '99,999.999') total_bytes,

to_char((c.bytes - d.bytes_used) / 1024 / 1024, '99,999.999') free_bytes,

to_char(d.bytes_used / 1024 / 1024, '99,999.999') use_bytes,

to_char(d.bytes_used * 100 / c.bytes, '99.99') || '%' use

from (select tablespace_name, sum(bytes) bytes

from dba_temp_files

group by tablespace_name) c,

(select tablespace_name, sum(bytes_cached) bytes_used

from v$temp_extent_pool

group by tablespace_name) d

where c.tablespace_name = d.tablespace_name)

order by tablespace_name ;

--17、表空间大小以及使用率

SELECT A.TABLESPACE_NAME "表空间名",

ROUND(TOTAL / 1024 / 1024 / 1024, 4) 表空间大小GB,

ROUND(FREE / 1024 / 1024 / 1024, 4) 表空间剩余大小GB,

ROUND((TOTAL - FREE) / 1024 / 1024 / 1024, 4) 表空间使用大小GB,

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, SUM(BYTES) TOTAL

FROM DBA_DATA_FILES

GROUP BY TABLESPACE_NAME) B

WHERE A.TABLESPACE_NAME = B.TABLESPACE_NAME

ORDER BY 5 DESC;

--18、查看临时表分区

SELECT *

FROM (SELECT USERNAME,

SESSION_ADDR,

SQL_ID,

CONTENTS,

SEGTYPE,

BLOCKS * 8 / 1024 / 1024 GB

FROM V$SORT_USAGE

ORDER BY BLOCKS DESC)

WHERE ROWNUM <= 200;

--19、查询表的字段个数

select count(1) from user_col_comments where table_name = upper( 'tbl_sys_user');

--20、字段用逗号隔开转成一行

SELECT LISTAGG(COLUMN_NAME, ',') WITHIN GROUP(ORDER BY COLUMN_ID) AS COLUMN_ORDER

FROM DBA_TAB_COLUMNS

WHERE OWNER = UPPER('hndajzfp')

AND TABLE_NAME = UPPER('tbl_fpxm_poor_jyfp')

ORDER BY COLUMN_ID;

--20、删除重复数据

UPDATE TBL_POOR_FAMILY_SIGN S

SET S.STATE = '0'

WHERE (S.USER_ID, SUBSTR(S.CREATE_TIME, 0, 10)) IN

(SELECT T.USER_ID, SUBSTR(T.CREATE_TIME, 0, 10)

FROM TBL_POOR_FAMILY_SIGN T

WHERE T.CREATE_TIME IS NOT NULL

AND T.STATE != '0'

GROUP BY SUBSTR(T.CREATE_TIME, 0, 10), T.USER_ID

HAVING COUNT(T.USER_ID) > 1)

AND ROWID NOT IN (SELECT MIN(ROWID)

FROM TBL_POOR_FAMILY_SIGN T

WHERE T.CREATE_TIME IS NOT NULL

AND T.STATE != '0'

GROUP BY SUBSTR(T.CREATE_TIME, 0, 10), T.USER_ID

HAVING COUNT(T.USER_ID) > 1);

--21、回车符换行符替换为空

SELECT translate(t.xjbfdw,chr(13)||chr(10),',') FROM tbl_hyfp_wsfp t

--22、分区、子分区信息

SELECT * FROM USER_TAB_PARTITIONS;

SELECT * FROM USER_TAB_SUBPARTITIONS;

--23、存在2017年分区但不存在2018年分区

SELECT S.TABLE_NAME

FROM (SELECT MAX(INSTR(T.PARTITION_NAME, '2018')) EXISTPAR2018,

MAX(INSTR(T.PARTITION_NAME, '2017')) EXISTPAR2017,

T.TABLE_NAME

FROM USER_TAB_PARTITIONS T

GROUP BY T.TABLE_NAME) S

WHERE S.EXISTPAR2018 = 0

AND EXISTPAR2017 > 0;

--24、逗号分割

select regexp_substr(t.BFRY_RY_TYPE, '[^,]+', 1, rownum)

from TBL_JCXX_BFRY t

where t.BFRY_PHONE = '18740760464'

connect by rownum <= length(regexp_replace(t.BFRY_RY_TYPE, '[^,]', null));

--25、字符串相似度

select *

from (select

s.USER_TYPE,

t.BFRY_RY_TYPE,

SYS.UTL_MATCH.edit_distance_similarity(s.USER_ID,t.BFRY_RY_TYPE) 相似度

from TBL_JCXX_BFRY t,TBL_SYS_USER s where t.BFRY_RY_TYPE=s.USER_ID)

order by 相似度 desc;

--26、interval 用法

select sysdate - interval '10' day as "10天前",

sysdate - interval '10' hour as "10小时前",

sysdate - interval '10' minute as "10分钟前",

sysdate - interval '10' second as "10秒钟前",

sysdate - 10 as "10天前",

sysdate - 10 / 24 as "10小时前",

sysdate - 10 / (24 * 60) as "10分钟前",

sysdate - 10 / (24 * 3600) as "10秒钟前"

from dual; --------------------- 本文来自 xulei_19850322 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/xulei_19850322/article/details/4233445?utm_source=copy

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值