oracle dba必会,Oracle DBA常用sql分享

十、序列/索引差异 比对结果后的创建语句 (例如:将A用户index和B用户对比,将A用户多B用户的在B用户创建)

【如下2个SQL都需要在 缺少sequence/index A用户执行】

--#SEQUENCE的创建语句:

SELECT 'CREATE SEQUENCE ' || SEQUENCE_NAME || ' MINVALUE ' || MIN_VALUE ||

' MAXVALUE ' || MAX_VALUE || ' START WITH ' || LAST_NUMBER ||

' INCREMENT BY ' || INCREMENT_BY || (CASE

WHEN CACHE_SIZE = 0 THEN

' NOCACHE'

ELSE

' CACHE ' || CACHE_SIZE

END ) || ';'

FROM USER_SEQUENCES W

WHERE --过滤掉登录用户存在的SEQUENCE

NOT EXISTS ( SELECT 1

FROM USER_SEQUENCES@DB_SINOSOFT W1

WHERE W.SEQUENCE_NAME = W1.SEQUENCE_NAME);

--#索引差异 结果的创建语句

SELECT 'CREATE ' || INDEX_TYPE || ' INDEX ' || INDEX_NAME || ' ON ' ||

TABLE_NAME || ' (' || LISTAGG(CNAME, ',' ) WITHIN GROUP (ORDER BY COLUMN_POSITION) || ');'

FROM (SELECT IC.INDEX_NAME,

IC.TABLE_NAME,

IC.COLUMN_NAME CNAME,

IC.COLUMN_POSITION,

COUNT(IC.INDEX_NAME) OVER ( PARTITION BY IC.INDEX_NAME, IC.TABLE_NAME) CON,

I.INDEX_TYPE

FROM USER_IND_COLUMNS@DB_SINOSOFT IC

JOIN USER_INDEXES@DB_SINOSOFT I

ON I.INDEX_NAME = IC.INDEX_NAME

WHERE

--过滤掉登录用户存在的INDEX

NOT EXISTS

( SELECT 1

FROM USER_IND_COLUMNS IC1

WHERE IC1.INDEX_OWNER = UPPER ( '&TO_USERNAME')

AND IC.INDEX_NAME = IC1.INDEX_NAME)

--过滤掉主键,避免索引创建,在创建主键报错 对象已存在

AND IC.INDEX_NAME NOT IN

( SELECT C.CONSTRAINT_NAME FROM USER_CONSTRAINTS@DB_SINOSOFT C)

ORDER BY IC.INDEX_NAME, IC.COLUMN_POSITION)

GROUP BY INDEX_TYPE, CON, INDEX_NAME, TABLE_NAME;

十一、查看热点块的对象

SELECT A.HLADDR, A.FILE#, A.DBABLK, A.TCH, A.OBJ, B.OBJECT_NAME

FROM X$BH A, DBA_OBJECTS B

WHERE (A.OBJ = B.OBJECT_ID OR A.OBJ = B.DATA_OBJECT_ID)

AND A.HLADDR = '0000000054435000' --V$SESSION_WAIT.P1RAW

UNION

SELECT HLADDR, FILE#, DBABLK, TCH, OBJ, NULL

FROM X$BH

WHERE OBJ IN ( SELECT OBJ

FROM X$BH

WHERE HLADDR = '0000000054435000'

MINUS

SELECT OBJECT_ID

FROM DBA_OBJECTS

MINUS

SELECT DATA_OBJECT_ID FROM DBA_OBJECTS)

AND HLADDR = '0000000054435000'

ORDER BY 4;

十一、查看某用户表大小/总数情况

SELECT T.TABLE_NAME,

TC.COMMENTS,

T.NUM_ROWS,

ROUND (SUM (S.BYTES / 1024 / 1024 / 1024 )) GB

FROM USER_TABLES T

JOIN USER_SEGMENTS S

ON S.SEGMENT_NAME = T.TABLE_NAME

JOIN USER_TAB_COMMENTS TC

ON TC.TABLE_NAME = T.TABLE_NAME

GROUP BY T.TABLE_NAME, TC.COMMENTS, T.NUM_ROWS

ORDER BY NUM_ROWS DESC  NULLS LAST ;

十二、 重新编译失效存储/包语句:

SELECT 'ALTER ' || (CASE

WHEN OBJECT_TYPE = 'PACKAGE BODY' THEN

'PACKAGE'ELSE OBJECT_TYPE

END) || ' ' || OWNER || '.' || OBJECT_NAME || ' COMPILE ' || (CASE

WHEN OBJECT_TYPE = 'PACKAGE BODY' THEN

'BODY;' ELSE ';' END), --除类型是PACKAGE BODY返回是PACKAGE,其他正常显示类型,是PACKAGE BODY显示COMPILE BODY 否则显示COMPILE

OWNER,

OBJECT_NAME,

OBJECT_TYPE,

STATUS,

O.CREATED,

LAST_DDL_TIME

FROM DBA_OBJECTS O

WHERE STATUS = 'INVALID'--&gt存储状态'无效';

十三、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 "空闲空间(G)",

F.MAX_BYTES "最大块(G)"

FROM (SELECT TABLESPACE_NAME,

ROUND (SUM (BYTES) / 1024 / 1024 / 1024 , 2) TOTAL_BYTES,

ROUND (MAX (BYTES) / 1024 / 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 / 1024 , 2) TOT_GROOTTE_MB

FROM SYS.DBA_DATA_FILES DD

GROUP BY DD.TABLESPACE_NAME) D

WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME;

十四、Oracle 查看TEMP表空间使用情况 :

SELECT F.BYTES_FREE + F.BYTES_USED TOTAL_BYTES,

F.BYTES_FREE + F.BYTES_USED - NVL (P.BYTES_USED, 0 ) FREE_BYTES,

D.FILE_NAME,

NVL (P.BYTES_USED, 0 ) USED_BYTES

FROM SYS.V_$TEMP_SPACE_HEADER F,

DBA_TEMP_FILES           D,

SYS.V_$TEMP_EXTENT_POOL  P

WHERE F.TABLESPACE_NAME(+) = D.TABLESPACE_NAME

AND F.FILE_ID(+) = D.FILE_ID

AND P.FILE_ID(+) = D.FILE_ID;

--&gt 等同于

SELECT TABLESPACE_NAME,

TF.TABLESPACE_SIZE,

TF.FREE_SPACE,

TF.TABLESPACE_SIZE - TF.FREE_SPACE

FROM DBA_TEMP_FREE_SPACE TF;

十五、 Oracle 查看回滚进度情况用的几个SQL:

SELECT DISTINCT KTUXESIZ FROM X$KTUXE WHERE KTUXESTA = 'ACTIVE' ;

SELECT USED_UBLK FROM V$TRANSACTION;

SELECT KTUXEUSN, KTUXESLT

FROM X$KTUXE

WHERE /*KTUXECFL = 'DEAD' AND*/

KTUXESTA = 'ACTIVE' ;

SELECT * FROM V_$FAST_START_TRANSACTIONS;

SELECT USED_UBLK, T.USED_UREC FROM V$TRANSACTION T;

--查询视图V$FAST_START_TRANSACTIONS中字段UNDOBLOCKSDONE,UNDOBLOCKSTOTAL估算SMON恢复进度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
changefilter.sql oracle的连接数查看和连接用户的查看.sql Sun30新建oracle用户.sql user_job.sql xaview.sql 修改分区索引.SQL 修改数据库核心字符集.txt 僵死进程查询.sql 创建ORACLE表空间.sql 回滚段等待.SQL 在数据库中建JOB.sql 外连接.SQL 外部例程.SQL 建6节点回滚段.SQL 建回滚段.SQL 建立一个与现存数据库相同但不含数据的空库.sql 扩展超过100M查询.sql 整理表空间碎片.sql 新建表.sql 显示数据文件信息.sql 查插入表的性能.sql 查看session正在执行什么SQL.sql 查看session正在等待何种系统资源.sql 查看哪些session正在使用哪些回滚段.sql 查看某个进程正在执行什么SQL语句.sql 查看用户表所占空间的大小.sql 查看系统SGA区状态.sql 查看系统中使用了哪些设备文件.sql 查看系统中每个表空间的使用情况.sql 查看系统中每个表空间的大小.sql 查看系统联接数.sql 查看系统锁.sql 查看表空间使用情况.sql 查看进程占用回滚段的情况.sql 查看那些数据库对象被修改过.sql 用oupput的ora过程.sql 用户命令查询.sql 用户进程查询.sql 监控数据库性能的SQL.sql 看user_job.sql 索引表清除sql生成.sql 索引表空间使用情况查询.sql 索引表空间整理.sql 统计.sql 获取数据库版本信息.sql 表空间使用情况.txt 表空间使用查询.sql 表空间剩余空间查看.sql 表空间回收.sql 过滤表清除sql生成.sql 进程使用回滚段查询.sql 锁表查询.sql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值