建设银行官网首页/搜索引擎优化关键词的处理
工作已经三个多月了,也积累了很多经验,脚本是一个可以简化工作的好工具,如果能用的恰到好处,那便可以事半功倍。
对于oracle DBA的工作,除了备份恢复之外,还要懂得日常维护,如果用几个简单的脚本,可以减轻每天重复的工作量,何乐为不为呢?
1.查看表空间使用情况的脚本 usedtablespace.sql
selecta.tablespace_name, round(a.total_size,1)"total(M)",
round(a.total_size)-round(nvl(b.free_size,0),1) "used(M)",
round(nvl(b.free_size,0),1) "free(M)",
round(nvl(b.free_size,0)/total_size*100,1) "free rate(%)"
from(selecttablespace_name,sum(bytes)/1024/1024 total_size
fromdba_data_files
groupbytablespace_name) a,
(selecttablespace_name,sum(bytes)/1024/1024 free_size
fromdba_free_space
groupbytablespace_name) b
wherea.tablespace_name = b.tablespace_name(+)
orderby"free rate(%)";
执行结果
SQL> start usedtablespace.sql
TABLESPACE_NAME total(M) used(M) free(M) free rate(%)
-------------------- ---------- ---------- ---------- ------------
SYSTEM 720 712.4 7.6 1.1
SYSAUX 804.2 763.5 40.5 5
EXAMPLE 100 77.7 22.3 22.3
USERS 5 3.1 1.9 38.8
UNDOTBS1 145 21.3 123.7 85.3
CMS_DATA 2048 238 1810 88.4
WBSC_DATA 2048 151 1897 92.6
DBS_OSS_KPI_INDEX 512 34.9 477.1 93.2
DBS_OSS_KPI_DAT 1024 29.4 994.6 97.1
BIZ_DATA 2048 33 2015 98.4
DBS_OSS_SAT_DAT 1024 7.6 1016.4 99.3
2.查看会话连接数的脚本 sumsessions.sql
SELECTA.OWNER,
A.OBJECT_NAME,
B.XIDUSN,
B.XIDSLOT,
B.XIDSQN,
B.SESSION_ID,
B.ORACLE_USERNAME,
B.OS_USER_NAME,
B.PROCESS,
B.LOCKED_MODE,
C.MACHINE,
C.STATUS,
C.SERVER,
C.SID,
C.SERIAL#,
C.PROGRAM
FROMALL_OBJECTS A,
V$LOCKED_OBJECT B,
SYS.GV_$SESSION C
WHERE( A.OBJECT_ID = B.OBJECT_ID )
AND(B.PROCESS = C.PROCESS )
ORDERBY1,2;
有时候需要杀死会话连接,才能更新表的内容,命令如下:
alter system kill session 'sid, serial#'
例如:
alter system kill session '379, 21132'
alter system kill session '374, 6938'
3.删除函数,存储过程,包的脚本delobj.sql,执行此脚本后会产生一个dropobj.sql脚本,这个脚本才是真正删除用户对象的脚本。
setheadingoff; --关闭表头
setfeedbackoff;--关闭回显
spool /tmp/dropobj.sql;
prompt --Drop constraint
select'alter table '||table_name||' drop constraint '||constraint_name||' ;'fromuser_constraintswhereconstraint_type='R';
prompt --Drop tables
select'drop table '||table_name ||';'fromuser_tables;
prompt --Drop view
select'drop view '||view_name||';'fromuser_views;
prompt --Drop sequence
select'drop sequence '||sequence_name||';'fromuser_sequences;
prompt --Drop function
select'drop function '||object_name||';'fromuser_objectswhereobject_type='FUNCTION';
prompt --Drop procedure
select'drop procedure '||object_name||';'fromuser_objectswhereobject_type='PROCEDURE';
prompt --Drop package
prompt --Drop package body
select'drop package '|| object_name||';'fromuser_objectswhereobject_type='PACKAGE';
prompt --Drop database link
select'drop database link '|| object_name||';'fromuser_objectswhereobject_type='DATABASE LINK';
spool off;
setheadingon;
setfeedbackon;
4.查看是否有table被锁的脚本 locktable.sql
col sidfor999999
col username fora10
col schemaname fora10
col osuser fora16
col machine fora16
col terminal fora20
col owner fora10
col object_name fora30
col object_type fora10
selectsid,serial#,username,SCHEMANAME,osuser,MACHINE,
terminal,PROGRAM,owner,object_name,object_type,o.object_id
fromdba_objects o,v$locked_object l,v$session s
whereo.object_id=l.object_idands.sid=l.session_id;