Oracle DBA 数据库日常维护手册 常用SQL 脚本

合集下载

oracle维护常用sql语句(主要)

oracle维护常用sql语句(主要)

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_BYTESFROM SYS.DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) F,(SELECT DD.TABLESPACE_NAME,ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB FROM SYS.DBA_DATA_FILES DDGROUP BY DD.TABLESPACE_NAME) DWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAMEORDER BY F.TABLESPACE_NAME;查询结果显示:非系统表空间使用和(M)select sum("已使用空间(M)") "已使用空间(M)和" from(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_MB FROM SYS.DBA_DATA_FILES DDGROUP BY DD.TABLESPACE_NAME) DWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME and F.TABLESPACE_NAME NOT IN ('SYSAUX','USERS','UNDOTBS1','SYSTEM'))2、查询当前用户默认表空间的使用情况select tablespacename,sum(totalContent),sum(usecontent),sum(sparecontent),avg(sparepercent) from(SELECT b.file_id as id,b.tablespace_name as tablespacename,b.bytes as totalContent,(b.bytes-sum(nvl(a.bytes,0))) as usecontent,sum(nvl(a.bytes,0)) as sparecontent,sum(nvl(a.bytes,0))/(b.bytes)*100 as sparepercentFROM dba_free_space a,dba_data_files bWHERE a.file_id=b.file_id and b.tablespace_name = (select default_tablespace from dba_users where username = user)group by b.tablespace_name,b.file_name,b.file_id,b.bytes)GROUP BY tablespacename;3、查询所有用户表使用大小的前三十名select * from (select segment_name,bytes from dba_segmentswhere owner = USER order by bytes desc ) where rownum <= 304、查询单张表的使用情况select segment_name,bytes from dba_segments where segment_name = 'RE_STDEVT_FACT_DAY' and owner = USERRE_STDEVT_FACT_DAY是您要查询的表名称5、计算每个用户占用的磁盘空间select owner,sum(bytes)/1024/1024/1024 "Space(G)"from dba_segmentsgroup by ownerorder by 2;6、计算某个用户占用的磁盘空间select owner,sum(bytes)/1024/1024/1024 "Space(G)"from dba_segmentswhere owner='LIAOJL'group by owner;7、查看表空间的名称及大小(分配大小):select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name group by t.tablespace_name;8、查看表空间物理文件的名称及大小(分配大小):select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;9、查看回滚段名称及大小:select segment_name, tablespace_name, r.status,(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,max_extents, v.curext CurExtentFrom dba_rollback_segs r, v$rollstat vWhere r.segment_id = n(+)order by segment_name;10、如何查看某个回滚段里面,跑的什么事物或者正在执行什么sql语句:select d.sql_text,from v$rollname a,v$transaction b,v$session c,v$sqltext dwhere n=b.xidusn and b.addr=c.taddr and c.sql_address=d.address and c.sql_hash_value=d.hash_value and n==2;(备注:你要看哪个,就把usn=?写成几就行了)查看控制文件:SQL>select * from v$controlfile;查看日志文件:SQL> col member format a50SQL>select * from v$logfile;11、如何查看当前SQL*PLUS用户的sid和serial#:SQL>select sid, serial#, status from v$session where audsid=userenv('sessionid');12、怎样识别IO竞争和负载平衡:SQL>col 文件名 format a35SQL>select 文件名,fs.phyrds 读次数,fs.phywrts 写次数,(fs.readtim/decode(fs.phyrds,0,-1,fs.phyrds)) 读时间,(fs.writetim/decode(fs.phywrts,0,-1,fs.phywrts)) 写时间fromv$datafile df,v$filestat fswhere df.file#=fs.file#order by 13、查看有哪些用户连接select s.osuser os_user_name, decode(sign(48 - command), 1, to_char(command),'Action Code #' || to_char(command) ) action, p.program oracle_process,status session_status,s.paddr ddr, s.terminal terminal, s.program program,ername user_name, s.fixed_table_sequence activity_meter, '' query,0 memory, 0 max_memory, 0 cpu_usage, s.sid, s.serial# serial_numFrom v$session s, v$process p Where s.paddr=p.addr and s.type = 'USER'order by ername, s.osuser解析机器名到ipselect utl_inaddr.get_host_address(s.machine) from v$session snetstat -an |grep 152114、查看数据库的版本Select version FROM Product_component_versionWhere SUBSTR(PRODUCT,1,6)='Oracle';15、捕捉运行很久的SQLselect username,sid,opname,round(sofar*100 / totalwork,0) || '%' as progress,time_remaining,sql_textfrom v$session_longops , v$sqlwhere time_remaining <> 0 and sql_address = address and sql_hash_value = hash_value15、查看数据表的参数信息SELECT partition_name, high_value, high_value_length, tablespace_name,pct_free, pct_used, ini_trans, max_trans, initial_extent,next_extent, min_extent, max_extent, pct_increase, FREELISTS,freelist_groups, LOGGING, BUFFER_POOL, num_rows, blocks,empty_blocks, avg_space, chain_cnt, avg_row_len, sample_size,last_analyzedFROM dba_tab_partitions-- WHERE table_name = 'EMP' AND table_owner = 'USER02'ORDER BY partition_position16、如果发生了锁等待,我们可能更想知道是谁锁了表而引起谁的等待,以下的语句可以查询到谁锁了表,而谁在等待。

Oracle数据库维护常用的SQL代码示例

Oracle数据库维护常用的SQL代码示例

1、求当前会话的SID,SERIAL#1.SELECT Sid, Serial#2.FROM V$session3.WHERE Audsid = Sys_Context('USERENV', 'SESSIONID');2、查询session的OS进程ID1.SELECT p.Spid "OS Thread", "Name-User", s.Program, s.Sid, s.Serial#,2.s.Osuser, s.Machine3.FROM V$process p, V$session s, V$bgprocess b4.WHERE p.Addr = s.Paddr5.AND p.Addr = b.Paddr6.And (s.sid=&1 or p.spid=&1)7.UNION ALL8.SELECT p.Spid "OS Thread", ername "Name-User", s.Program, s.Sid,9.s.Serial#, s.Osuser, s.Machine10.FROM V$process p, V$session s11.WHERE p.Addr = s.Paddr12.And (s.sid=&1 or p.spid=&1)13.AND ername IS NOT NULL;3、根据sid查看对应连接正在运行的sql1.SELECT /*+ PUSH_SUBQ */mand_Type, Sql_Text, Sharable_Mem, Persistent_Mem, Runtime_Mem, Sorts,3.Version_Count, Loaded_Versions, Open_Versions, Users_Opening, Executions,ers_Executing, Loads, First_Load_Time, Invalidations, Parse_Calls,5.Disk_Reads, Buffer_Gets, Rows_Processed, SYSDATE Start_Time,6.SYSDATE Finish_Time, '>' || Address Sql_Address, 'N' Status7.FROM V$sqlarea8.WHERE Address = (SELECT Sql_Address9.FROM V$session10.WHERE Sid = &sid );4、查找object为哪些进程所用1.SELECT p.Spid, s.Sid, s.Serial# Serial_Num, ername User_Name,2. a.TYPE Object_Type, s.Osuser Os_User_Name, a.Owner,3. a.OBJECT Object_Name,4.Decode(Sign(48 - Command), 1, To_Char(Command), 'Action Code #' || To_Char(Command)) Action,5.p.Program Oracle_Process, s.Terminal Terminal, s.Program Program,6.s.Status Session_Status7.FROM V$session s, V$access a, V$process p8.WHERE s.Paddr = p.Addr9.AND s.TYPE = 'USER'10.AND a.Sid = s.Sid11.AND a.OBJECT = '&obj'12.ORDER BY ername, s.Osuser5、查看有哪些用户连接1.SELECT s.Osuser Os_User_Name,2.Decode(Sign(48 - Command),1,To_Char(Command),3.'Action Code #' || To_Char(Command)) Action,4.p.Program Oracle_Process, Status Session_Status, s.Terminal Terminal,5.s.Program Program, ername User_Name,6.s.Fixed_Table_Sequence Activity_Meter, '' Query, 0 Memory,7.0 Max_Memory, 0 Cpu_Usage, s.Sid, s.Serial# Serial_Num8.FROM V$session s, V$process p9.WHERE s.Paddr = p.Addr10.AND s.TYPE = 'USER'11.ORDER BY ername, s.Osuser6、根据v.sid查看对应连接的资源占用等情况1.SELECT , v.VALUE, n.CLASS, n.Statistic#2.FROM V$statname n, V$sesstat v3.WHERE v.Sid = &sid4.AND v.Statistic# = n.Statistic#5.ORDER BY n.CLASS, n.Statistic#7、查询耗资源的进程(top session)1.SELECT s.Schemaname Schema_Name,2.Decode(Sign(48 - Command),3.1, To_Char(Command), 'Action Code #' || To_Char(Command)) Action,4.Status Session_Status, s.Osuser Os_User_Name, s.Sid, p.Spid,5.s.Serial# Serial_Num, Nvl(ername, '[Oracle process]') User_Name,6.s.Terminal Terminal, s.Program Program, St.VALUE Criteria_Value7.FROM V$sesstat St, V$session s, V$process p8.WHERE St.Sid = s.Sid9.AND St.Statistic# = To_Number('38')10.AND ('ALL' = 'ALL' OR s.Status = 'ALL')11.AND p.Addr = s.Paddr12.ORDER BY St.VALUE DESC, p.Spid ASC, ername ASC, s.Osuser ASC8、查看锁(lock)情况1.SELECT /*+ RULE */2.Ls.Osuser Os_User_Name, ername User_Name,3.Decode(Ls.TYPE,4.'RW', 'Row wait enqueue lock', 'TM', 'DML enqueue lock',5.'TX', 'Transaction enqueue lock', 'UL', 'User supplied lock') Lock_Type,6.o.Object_Name OBJECT,7.Decode(Ls.Lmode,8.1, NULL, 2, 'Row Share', 3, 'Row Exclusive',9.4, 'Share', 5, 'Share Row Exclusive', 6, 'Exclusive',10.NULL) Lock_Mode,11.o.Owner, Ls.Sid, Ls.Serial# Serial_Num, Ls.Id1, Ls.Id212.FROM Sys.Dba_Objects o,13.(SELECT s.Osuser, ername, l.TYPE, l.Lmode, s.Sid, s.Serial#, l.Id1,14.l.Id215.FROM V$session s, V$lock l16.WHERE s.Sid = l.Sid) Ls17.WHERE o.Object_Id = Ls.Id118.AND o.Owner <> 'SYS'19.ORDER BY o.Owner, o.Object_Name9、查看等待(wait)情况1.SELECT Ws.CLASS, Ws.COUNT COUNT, SUM(Ss.VALUE) Sum_Value2.FROM V$waitstat Ws, V$sysstat Ss3.WHERE IN ('db block gets', 'consistent gets')4.GROUP BY Ws.CLASS, Ws.COUNT10、求process/session的状态1.SELECT p.Pid, p.Spid, s.Program, s.Sid, s.Serial#2.FROM V$process p, V$session s3.WHERE s.Paddr = p.Addr;11、求谁阻塞了某个session(10g)1.SELECT Sid, Username, Event, Blocking_Session, Seconds_In_Wait, Wait_Time2.FROM V$session3.WHERE State IN ('WAITING')4.AND Wait_Class != 'Idle';12、查会话的阻塞1.col user_name format a322.SELECT /*+ rule */3.Lpad(' ', Decode(l.Xidusn, 0, 3, 0)) || l.Oracle_Username User_Name,4.o.Owner, o.Object_Name, s.Sid, s.Serial#5.FROM V$locked_Object l, Dba_Objects o, V$session s6.WHERE l.Object_Id = o.Object_Id7.AND l.Session_Id = s.Sid8.ORDER BY o.Object_Id, Xidusn DESC;9.col username format a1510.col lock_level format a811.col owner format a1812.col object_name format a3213.SELECT /*+ rule */ername,15.Decode(l.TYPE, 'tm', 'table lock', 'tx', 'row lock', NULL) Lock_Level,16.o.Owner, o.Object_Name, s.Sid, s.Serial#17.FROM V$session s, V$lock l, Dba_Objects o18.WHERE l.Sid = s.Sid19.AND l.Id1 = o.Object_Id(+)20.AND ername IS NOT NULL;13、求等待的事件及会话信息/求会话的等待及会话信息1.SELECT Se.Sid, ername, Se.Event, Se.Total_Waits, Se.Time_Waited,2.Se.Average_Wait3.FROM V$session s, V$session_Event Se4.WHERE ername IS NOT NULL5.AND Se.Sid = s.Sid6.AND s.Status = 'ACTIVE'7.AND Se.Event NOT LIKE '%SQL*Net%'8.ORDER BY ername;9.SELECT s.Sid, ername, Sw.Event, Sw.Wait_Time, Sw.State,10.Sw.Seconds_In_Wait11.FROM V$session s, V$session_Wait Sw12.WHERE ername IS NOT NULL13.AND Sw.Sid = s.Sid14.AND Sw.Event NOT LIKE '%SQL*Net%'15.ORDER BY ername;14、求会话等待的file_id/block_id1.col event format a242.col p1text format a123.col p2text format a124.col p3text format a125.SELECT Sid, Event, P1text, P1, P2text, P2, P3text, P36.FROM V$session_Wait7.WHERE Event NOT LIKE '%SQL%'8.AND Event NOT LIKE '%rdbms%'9.AND Event NOT LIKE '%mon%'10.ORDER BY Event;11.SELECT NAME, Wait_Time12.FROM V$latch l13.WHERE EXISTS (SELECT 114.FROM (SELECT Sid, Event, P1text, P1, P2text, P2, P3text, P315.FROM V$session_Wait16.WHERE Event NOT LIKE '%SQL%'17.AND Event NOT LIKE '%rdbms%'18.AND Event NOT LIKE '%mon%') x19.WHERE x.P1 = tch#);15、求会话等待的对象1.col owner format a182.col segment_name format a323.col segment_type format a324.SELECT Owner, Segment_Name, Segment_Type5.FROM Dba_Extents6.WHERE File_Id = &File_Id7.AND &Block_Id BETWEEN Block_Id AND Block_Id + Blocks - 1;16、求出某个进程,并对它进行跟踪1.SELECT s.Sid, s.Serial#2.FROM V$session s, V$process p3.WHERE s.Paddr = p.Addr4.AND p.Spid = &1;5.Exec Dbms_System.Set_Sql_Trace_In_Session(&1, &2, TRUE);6.Exec Dbms_System.Set_Sql_Trace_In_Session(&1, &2, FALSE);17、求当前session的跟踪文件1.SELECT P1.VALUE || '/' || P2.VALUE || '_ora_' || p.Spid || '.ora' Filename2.FROM V$process p, V$session s, V$parameter P1, V$parameter P23.WHERE = 'user_dump_dest'4.AND = 'instance_name'5.AND p.Addr = s.Paddr6.AND s.Audsid = Userenv('SESSIONID')7.AND p.Background IS NULL8.AND Instr(p.Program, 'CJQ') = 0;18、求出锁定的对象1.SELECT Do.Object_Name, Session_Id, Process, Locked_Mode2.FROM V$locked_Object Lo, Dba_Objects Do3.WHERE Lo.Object_Id = Do.Object_Id;来源:网络编辑:联动北方技术论坛。

OracleDBA常用SQL语句

OracleDBA常用SQL语句

sql>select decode(nvl(position,-1),-1,rbo,1,cbo) from plan_table where id=0;
如何查看系统当前最新的scn号:
sql>select max(ktuxescnw * power(2,32) + ktuxescnb) from x$ktuxe;
from v$session where audsid = userenv(sessionid);
end;
查询当前日期:
sql> select to_char(sysdate,yyyy-mm-dd,hh24:mi:ss) from dual;
查看所有表空间对应的数据文件名:
from sys.sm$ts_avail a,sys.sm$ts_used b,sys.sm$ts_free c
where a.tablespace_name=b.tablespace_name and a.tablespace_name=c.tablespace_name;
column tablespace_name format a18;
from (select p.spid from sys.v_$mystat m,sys.v_$session s,
sys.v_$process p where m.statistic# = 1 and
s.sid = m.sid and p.addr = s.paddr) p,(select value from sys.v_$parameter where name =user_dump_dest) d;
查看表空间物理文件的名称及大小:
sql>select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;

ORACLE深入第一章ORACLEDBA常用语句和脚本

ORACLE深入第一章ORACLEDBA常用语句和脚本

ORACLE深入第一章ORACLEDBA常用语句和脚本ORACLE深入系列,翻译自Thomas Kyte 的 Expert Oracle Database Architecture我的BLOG一, 常用到的设置环境参数的语句设置SCOTT/TIGER的DEMO运行@ORACLE_HOME/sqlplus/demo/demobld.sql (响应的demodrop.sql.是DROP SCOTT的脚本)做一个登陆用的login.sqldefine _editor=viset serveroutput on size 1000000 使DBMS_OUTPUT有效.set trimspool on SPOOL不会以定长来控制,而是以空格来控制set long 5000 LONG或CLOG 显示的长度set linesize 100set pagesize 9999 每9999行后打印HEADcolumn plan_plus_exp format a80 autotrace后explain plan output的格式column global_name new_value gnameset termout offdefine gname=idlecolumn global_name new_value gnameselect lower(user) || ’@’ || substr( global_name, 1,decode( dot, 0, length(global_name), dot-1) ) global_name from (select global_name, instr(global_name,’.’) dot from global_name );set sqlprompt ’&gname>’set termout onset trimspool on; 去除重定向(spool)输出每行的拖尾空格,缺省为off得到username@dbname的提示符. scott@WWMDB>二, 常用到的DBA脚本Runstats 比较两个作相同事情的方法的优劣点。

oracledba常用sql脚本分类文档

oracledba常用sql脚本分类文档

Oracle 正常SQL监控SQL1.监控事例的等待:select event,sum(decode(wait_time,0,0,1)) prev, sum(decode(wait_time,0,1,0)) curr,count(*) from v$session_waitgroup by event order by 4;2.回滚段的争用情况:select name,waits,gets,waits/gets ratio from v$rollstat a,v$rollname b where n=n; 3.监控表空间的I/O比例:select df.tablespace_name name,df.file_name "file",f.phyrds pyr,f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbwfrom v$filestat f,dba_data_files dfwhere f.file#=df.file_id4.监空文件系统的I/O比例:select substr(a.file#,1,2) "#”,substr(,1,30) "name”,a.status,a.bytes,b.phyrds,b.phywrtsfrom v$datafile a,v$filestat bwhere a.file#=b.file#5.在某个用户下找所有的索引:select user_indexes.table_name, user_indexes.index_name,uniqueness, column_namefrom user_ind_columns, user_indexeswhere user_ind_columns.index_name = user_indexes.index_nameand user_ind_columns.table_name = user_indexes.table_nameorder by user_indexes.table_type, user_indexes.table_name,user_indexes.index_name, column_position;6.进程监控:select distinct p.spid unix_process,s.terminal,to_char(s.logon_time,'YYYY/MON/DD HH24:MI') Logon_Time, ernamefrom v$process p, v$session swhere p.addr=s.paddr order by 27.监控SGA中字典缓冲区的命中率select parameter, gets,Getmisses , getmisses/(gets+getmisses)*100 "miss ratio", (1-(sum(getmisses)/(sum(gets)+sum(getmisses))))*100 "Hit ratio"from v$rowcachewhere gets+getmisses <>0group by parameter, gets, getmisses;8.监控SGA中共享缓存区的命中率,应该小于1%select sum(pins) "Total Pins", sum(reloads) "Total Reloads",sum(reloads)/sum(pins) *100 libcachefrom v$librarycache;select sum(pinhits-reloads)/sum(pins) "hit radio",sum(reloads)/sum(pins) "reload percent" from v$librarycache;9.显示所有数据库对象的类别和大小select count(name) num_instances ,type ,sum(source_size) source_size , sum(parsed_size)parsed_size ,sum(code_size) code_size ,sum(error_size) error_size, sum(source_size) +sum(parsed_size)+sum(code_size) +sum(error_size) size_required from dba_object_sizegroup by type order by 2;10.监控SGA中重做日志缓存区的命中率,应该小于1%SELECT name, gets, misses, immediate_gets, immediate_misses,Decode(gets,0,0,misses/gets*100) ratio1,Decode(immediate_gets+immediate_misses,0,0,immediate_misses/(immediate_gets+immediate_misses)*100) ratio2FROM v$latch WHERE name IN ('redo allocation', 'redo copy');11.监控内存和硬盘的排序比率,最好使它小于.10,增加sort_area_sizeSELECT name, value FROM v$sysstat WHERE name IN ('sorts (memory)', 'sorts (disk)');12.监控当前数据库谁在运行什么SQL语句SELECT osuser, username, sql_text from v$session a, v$sqltext bwhere a.sql_address =b.address order by address, piece;13.监控字典缓冲区SELECT (SUM(PINS - RELOADS)) / SUM(PINS) "LIB CACHE" FROM V$LIBRARYCACHE;SELECT (SUM(GETS - GETMISSES - USAGE - FIXED)) / SUM(GETS) "ROW CACHE" FROM V$ROWCACHE;SELECT SUM(PINS) "EXECUTIONS", SUM(RELOADS) "CACHE MISSES WHILE EXECUTING" FROM V$LIBRARYCACHE;后者除以前者,此比率小于1%,接近0%为好。

oracleDBA日常维护攻略

oracleDBA日常维护攻略

linux中oracle的日常维护命令分类:Oracle Basic Knowledge2009-11-10 10:10 2511人阅读评论(0) 收藏举报oraclelinuxsystemsqldatabase数据库1. 检查Oracle的进程$ ps -ef|grep "ora_"|grep -v greporacle 5998 1 0 11:15:59 ? 0:01 ora_j000_PPRD10oracle 2968 1 0 21:16:57 ? 0:00 ora_q000_PPRD10oracle 2927 1 0 21:16:33 ? 0:00 ora_pmon_PPRD10oracle 2933 1 0 21:16:34 ? 0:07 ora_dbw0_PPRD10oracle 2945 1 0 21:16:34 ? 0:02 ora_mmon_PPRD10oracle 2931 1 0 21:16:33 ? 0:00 ora_mman_PPRD10oracle 2949 1 0 21:16:34 ? 0:00 ora_d000_PPRD10oracle 2970 1 0 21:16:57 ? 0:00 ora_q001_PPRD10oracle 2935 1 0 21:16:34 ? 0:05 ora_lgwr_PPRD10oracle 2951 1 0 21:16:34 ? 0:00 ora_s000_PPRD10oracle 2939 1 0 21:16:34 ? 0:06 ora_smon_PPRD10oracle 2957 1 0 21:16:47 ? 0:00 ora_qmnc_PPRD10oracle 2943 1 0 21:16:34 ? 0:05 ora_cjq0_PPRD10oracle 2947 1 0 21:16:34 ? 0:00 ora_mmnl_PPRD10oracle 2937 1 0 21:16:34 ? 0:18 ora_ckpt_PPRD10oracle 2941 1 0 21:16:34 ? 0:00 ora_reco_PPRD10oracle 2929 1 0 21:16:33 ? 0:00 ora_psp0_PPRD10在检查Oracle的进程命令输出后,输出显示至少应包括以下一些进程:? Oracle写数据文件的进程,输出显示为:“ora_dbw0_ORCL”? Oracle写日志文件的进程,输出显示为:“ora_lgwr_ORCL”? Oracle监听实例状态的进程,输出显示为:“ora_smon_ORCL”? Oracle监听客户端连接进程状态的进程,输出显示为:“ora_pmon_ORCL”? Oracle进行归档的进程,输出显示为:“ora_arc0_ORCL”? Oracle进行检查点的进程,输出显示为:“ora_ckpt_ORCL”? Oracle进行[url=javascript:;]恢复[/url]的进程,输出显示为:“ora_reco_ORCL”2 . 查看数据库的实例:SQL> select instance_name,status,version,database_status from v$instance;INSTANCE_NAME STATUS VERSION DATABASE_STATUS---------------- ------------ ----------------- -----------------PPRD10 OPEN 10.2.0.4.0 ACTIVE其中“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。

数据库(Oracle)运维工作内容及常用脚本命令

数据库(Oracle)运维工作内容及常用脚本命令

数据库(Oracle)运维⼯作内容及常⽤脚本命令1、系统资源状况:--内存及CPU资源--linux,solaris,aixvmstat 5--说明:1)观察空闲内存的数量多少,以及空闲内存量是否稳定,如果不稳定就得想办法来解决,怎么解决还得看具体情况,⼀般可以通过调整相关内存参数来解决,各种操作系统输出指标、解释及内存调整参数及⽅法不完全⼀样;2)观察CPU资源利⽤情况,⾸先,需要观察CPU上运⾏的任务数,也就是vmstat输出中位于第⼀列上的指标,如果该指标持续⼤于CPU 核⼼数,应该引起注意;如果该指标持续⼤于CPU核⼼数的两倍,那么应该引起重视;如果持续为CPU核⼼数的多倍,系统⼀般会出现应⽤可感知的现象,必须⽴刻想办法解决。

当然,在观察该指标的同时,还要结合CPU利⽤率的指标情况,如:⽤户使⽤百分⽐,系统使⽤百分⽐,空闲百分⽐等指标,如果空闲百分⽐持续低于20%,应该引起注意;如果持续低于10%,应该引起重视;如果持续为0,系统⼀般会出现应⽤可感知的现象,应该⽴刻想办法解决问题;3)CPU⽤户使⽤百分⽐和系统使⽤百分⽐的⽐例,也是应该注意的。

⼀般来说,在⼀个状态正常的系统上,⽤户使⽤百分⽐应该⽐系统使⽤百分⽐⼤很多,⼏倍到⼗⼏倍甚⾄更⾼,如果系统使⽤百分⽐持续接近⽤户使⽤百分⽐,甚⾄⼤于⽤户使⽤百分⽐,说明系统的状态是不正常的,可能是硬件或者操作系统问题,也可能是应⽤问题。

有关vmstat输出中各指标及解释等,可以参照本⼈博客中相关⽂章:。

--IO状况--linux,solarisiostat -dx 5--aixiostat 5--说明:1)该命令主要⽤来观察系统存储设备的负载和性能状况,⾸先,需要观察系统各存储设备的繁忙程度,如果该繁忙程度指标持续超过80%,那么应该引起注意;如果持续超过90%,应该引起重视;如果持续100%,⼀般会出现应⽤感知的现象,应该⽴刻想办法解决问题; 2)其次,需要注意的是系统上各存储设备的IO能⼒,就是每秒钟各存储设备的输⼊、输出的数据量,这个和具体设备的硬件及配置有关,没有⼀个严格的标准,性能好点的能达到每秒上G,甚⾄⼏个G,差的只能到每秒⼏⼗兆甚⾄⼗⼏兆;3)最后,需要观察存储设备完成每次读写操作耗费的时间,这个也是和具体设备硬件和配置相关的,好的设备可能不到1毫秒,差的能到⼏⼗毫秒甚⾄上百毫秒;iostat的输出,在各种操作系统上的输出和解释也不尽相同,具体可以参照本⼈博客的相关⽂章:。

Oracle DBA 常用技巧、脚本、操作命令

Oracle DBA 常用技巧、脚本、操作命令

I一些小技巧A)dba常用工具TOAD 功能之一:获取重建表的脚本putty:连接ssh的服务器的工具Xmanager:这个恐怕不用说了,不过使用的机会并不多,主要是做数据库安装和升级的时候Ultraedit:ultraedit的最大优点是打开的文件变化时能够捕捉到变化,并重新更新。

因此经常使用ultraedit来读取netterm的session log文件Cygwin:一个可以在WINDOWS下模拟LIUNX的软件,在这个软件里可以在WINDOWS下使用LINUX的命令,比如dd,awk,gc++等等,直接在windows下用awk调用ass分析systemstate dump是十分有用的,有时候需要写个简单的c程序,也可以用cygwin来调试Wincvs,可能听说的朋友比较少,cvs是著名的文档版本管理软件,用来管理文档的Firefox+scrapboo:知识库收集工具,在网上看到喝什么好的文档,立即拉到知识库里B)制作sql脚本的注意事项01复制脚本时可能会出现全角空格,全角空格会导致脚本执行失败解决方法:用word查找全角空格并替换为半角,全角空格的代码是^u1228802用vi作为sqlplus编辑器,最后不能以“;”分号结尾。

应该以“/”作为结束符号C)表重建的方法首先通过工具取出建表的相关脚本(使用TOAD或者类似的工具)然后将表RENAME(包含所有索引)然后重建表再将数据用INSERT /*+ APPEND */ SELECT...的方法从原表中导入数据。

D)控制文件和数据文件头中的SCN相关信息以及在数据库启动检查中的作用控制文件中存在4种与SCN有关的信息:●system checkpoint SCN●datafile CNT●datafile checkpoint SCN (在数据库启动过程的一系列检查中不起作用)●datafile stop SCN数据文件头中保存了:●datafile CNT●datafile checkpoint SCN (区别于控制文件,被称为start SCN,实际上跟控制文件中的datafile checkpoint SCN始终保持一致)各类SCN信息的作用:system checkpoint SCN:系统检查点SCN,表示整个数据库位于逻辑时钟的哪个时间点上。

Oracle+DBA日常工作手册

Oracle+DBA日常工作手册

第一章.Oracle DBA日常工作手册事前阶段一、日常工作-每天应做工作内容1、工作内容-日常环境监控1.1系统运行环境监控检查文件系统以及oracle数据库数据文件所在卷的使用(剩余空间),如果文件系统的剩余1.2数据库运行状况监控1.2.1 外部确认所有的INSTANCE状态正常(保证实例正常),检查Oracle 实例核心后台进程是否都存在、状态是否正常1.2.2 内部1).检查trace 文件记录alert 和trace文件中的错误。

telnet192.168.150.1 su–oraprod在oraprod用户下$cd 到bdump 目录,通常是$ORACLE_BASE/admin/<SID>/bdump使用Unix的‘tail -f’命令来查看alert_<SID>.log文件如果发现任何新的ORA-错误,记录并解决2).查看DBSNMP的运行情况检查每个被管理机器的‘DBSNMP’进程并将它们记录到日志中。

在UNIX 中,在命令行中,键入ps –ef | grep dbsnmp,将回看到2 个DBSNMP 进程在运行。

如果没有,重启DBSNMP。

(注意:此步骤在oraprod下只有1 个进程,需要研究)3). 检查回滚段回滚段的状态一般是在线的,除了一些为复杂工作准备的专用段一般状态是离线的。

a) 每个数据库都有一个回滚段名字的列表。

b) 你可以用V$ROLLSTAT 来查询在线或是离线的回滚段的现在状态;1.2.3 日常操作1).不要在服务器上直接执行rm操作当有文件需要删除时,把这些文件mv到一个规定的文件夹,然后CD进入此文件夹再进行删除操作。

(注意:在rm日志文件时直接rm即可,若rm文件夹一定要rm–r)2).数据库备份校验命令:rman target/连接到数据库,rman>restore database validate;3).查看数据库连接信息定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。

Oracle+DBA日常工作手册

Oracle+DBA日常工作手册

Oracle+DBA日常工作手册作为一名软件开发人员或数据库管理员(DBA),你需要掌握一些基本的数据库管理技能。

本手册旨在为你提供有关Oracle数据库处理和DBA日常工作的知识。

基本概念数据库一个数据库是一组相互关联的数据的集合。

Oracle数据库是一种关系型数据库管理系统(RDBMS),使用SQL语言访问和管理数据。

DBADBA是数据库管理员的缩写。

DBA是管理和维护数据库并确保其正常运行的人。

OracleOracle是一种基于云的数据库管理系统(DBMS),适用于云计算,本地管理和混合环境。

它提供了对多种数据类型的支持和通用的、高效的性能。

数据库管理安装Oracle数据库安装Oracle数据库需要有管理员权限,并且需要满足特定的硬件和操作系统要求。

在安装过程中,你需要选择合适的数据库版本并配置一些选项,例如是否使用默认的端口号、安装路径、以及创建数据库管理员账户等。

备份和恢复数据库备份是一种重要的数据保护机制,可以保证在数据意外丢失或数据库出现故障的情况下,可以快速地恢复数据。

在备份数据库时,你需要选择一个适当的备份方法和技术,例如全量备份、增量备份和日志备份。

同时,为了确保数据的安全性,你还需要定期测试和验证备份数据的完整性。

监控数据库性能监测数据库性能的目的是确保数据库在任何时候都能够正常运行。

为了实现这个目的,你需要监控不同的性能指标,例如CPU使用率、内存使用率、磁盘使用率等等。

你还需要监控执行时间、查询运行时间和缓存命中率等数据库性能相关的指标。

数据库维护数据库维护是确保数据库正常运行和性能维护的过程,包括诊断和解决故障、进行数据库调整、对数据库进行修复、维护数据库备份等。

SQL操作SQL是结构化查询语言的缩写,它是一种通用、标准化的语言,用于管理Oracle数据库。

在Oracle数据库中,SQL语言提供了很多基本操作,例如:•创建/修改/删除表•插入/更新/处理记录•进行数据查询和分析•处理事务和索引总结这里只涉及了Oracle数据库中的一些基本操作和数据库管理技巧,但可以帮助你更好地理解如何管理和维护数据库。

Oracle DBA 日常维护规范

Oracle DBA 日常维护规范

Oracle DBA 日常維護手冊編寫目的: Oracle DBA日常維護手冊給資料庫管理人員提供了較詳細Database運行狀態檢查計劃,內容包括:Daily CheckList\Weekly CheckList\Monthly CheckList本手冊使用的所有SQL語句參見附錄部分。

I. Daily CheckListA. 確認所有的instances 正常運行以ORACLE用戶登錄,使用下面命令查看所有ORACLE的instance的後臺進程是否運行正常:$ps –ef|grep ora運行每個instance的daily reports 或test scripts,確定資料庫正常運行。

B. 檢查alert_log 的最新資訊.以ORACLE用戶或其他用戶登錄主機系統(使用'xshell' 或‘ssh’ 等軟體)。

檢查每個instance的alert_log文件。

該文檔通常在$ORACLE_BASE/admin/<SID>/bdump目錄下。

使用linux的‘tail’ 命令檢查alert_<SID>.log中的最近資訊,或者使用vi或more命令按日期查找最近的警告資訊。

如果檔中存在任何ORA-errors ,應仔細研究,確認問題的所在。

使用’ls -l’命令查看alert_log檔的大小,如果該檔很大(>10M),應將該文件備份並做清除工作。

C. 檢查ORACLE後臺進程生成的TRACE檔檢查每個instance生成的TRACE檔。

該檔通常位於$ORACLE_BASE/admin/<SID>/bdump目錄下. 檔案名’*.trc’。

使用vi或more命令查看每個TRACE檔中的資訊,如果發現錯誤要與以確認。

D. 檢查用戶進程生成的TRACE檔檢查用戶進程生成的TRACE檔。

該檔通常位於$ORACLE_BASE/admin/<SID>/udump目錄下. 檔案名’*.trc’。

ORACLE DBA常用脚本

ORACLE DBA常用脚本

ORACLE DBA常用脚本及命令(一)1、查看表空间的名称及大小select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_sizefrom dba_tablespaces t, dba_data_files dwhere t.tablespace_name = d.tablespace_namegroup by t.tablespace_name;2、查看表空间物理文件的名称及大小select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_spacefrom dba_data_filesorder by tablespace_name;3、查看回滚段名称及大小select segment_name, tablespace_name, r.status,(initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,max_extents, v.curext CurExtentFrom dba_rollback_segs r, v$rollstat vWhere r.segment_id = n(+)order by segment_name ;4、查看控制文件select name from v$controlfile;5、查看日志文件select member from v$logfile;6、查看表空间的使用情况select sum(bytes)/(1024*1024) as free_space,tablespace_namefrom dba_free_spacegroup by tablespace_name;SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE CWHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;7、查看数据库库对象select owner, object_type, status, count(*) count# from all_objects group by owner, object_type, status;8、查看数据库的版本Select version FROM Product_component_versionWhere SUBSTR(PRODUCT,1,6)='Oracle';9、查看数据库的创建日期和归档方式Select Created, Log_Mode, Log_Mode From V$Database;10、查看当前所有对象SQL> select * from tab;11、建一个和a表结构一样的空表SQL> create table b as select * from a where 1=2;SQL> create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;12、察看数据库的大小,和空间使用情况SQL> col tablespace format a20SQL> select b.file_id 文件ID,b.tablespace_name 表空间,b.file_name 物理文件名,b.bytes 总字节数,(b.bytes-sum(nvl(a.bytes,0))) 已使用,sum(nvl(a.bytes,0)) 剩余,sum(nvl(a.bytes,0))/(b.bytes)*100 剩余百分比from dba_free_space a,dba_data_files bwhere a.file_id=b.file_idgroup by b.tablespace_name,b.file_name,b.file_id,b.bytesorder by b.tablespace_name/dba_free_space --表空间剩余空间状况dba_data_files --数据文件空间占用情况13、查看现有回滚段及其状态SQL> col segment format a30SQL> SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;14、查看数据文件放置的路径SQL> col file_name format a50SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id; 15、显示当前连接用户SQL> show user16、把SQL*Plus当计算器SQL> select 100*20 from dual;17、连接字符串SQL> select 列1||列2 from 表1;SQL> select concat(列1,列2) from 表1;18、查询当前日期SQL> select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss') from dual;19、用户间复制数据SQL> copy from user1 to user2 create table2 using select * from table1;20、视图中不能使用order by,但可用group by代替来达到排序目的SQL> create view a as select b1,b2 from b group by b1,b2;21、通过授权的方式来创建用户SQL> grant connect,resource to test identified by test;SQL> conn test/test一、ORACLE的表的分类:1、REGULAR TABLE:普通表,ORACLE推荐的表,使用很方便,人为控制少。

DBA常用脚本

DBA常用脚本

DBA常用脚本DBA常用的脚本很多。

每个人使用的可能不尽相同。

下面提供一些供大家使用DBA常用SQL语句系列,欢迎补充,在不断更新中一、数据库构架体系1、表空间的监控是一个重要的任务,我们必须时刻关心表空间的设置,是否满足现在应用的需求,以下的语句可以查询到表空间的详细信息SELECTTABLESPACE_NAME,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENT S,MAX_EXTENTS,PCT_INCREASE,MIN_EXTLEN,STATUS,CONTENTS,LOGGING,EXTENT_MANAGEMENT, -- Columns not available in v8.0.x ALLOCATION_TYPE, -- Remove these columns if running PLUGGED_IN, -- against a v8.0.x databaseSEGMENT_SPACE_MANAGEMENT --use only in v9.2.x or later FROM DBA_TABLESPACESORDER BY TABLESPACE_NAME;2、对于某些数据文件没有设置为自动扩展的表空间来说,如果表空间满了,就将意味着数据库可能会因为没有空间而停止下来。

监控表空间,最主要的就是监控剩余空间的大小或者是使用率。

以下是监控表空间使用率与剩余空间大小的语句SELECT D.TABLESPACE_NAME,SPACE"SUM_SPACE(M)",BLOCKS SUM_BLOCKS,SPACE-NVL(FREE_SPACE,0) "USED_SPACE(M)",ROUND((1-NVL(FREE_SPACE,0)/SPACE)*100,2)"USED_RATE(%)",FREE_SPACE "FREE_SPACE(M)"FROM(SELECTTABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKSFROM DBA_DATA_FILESGROUP BY TABLESPACE_NAME) D,(SELECTTABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) FREE_SPACEFROM DBA_FREE_SPACEGROUP BY TABLESPACE_NAME) FWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)UNION ALL --if have tempfileSELECT D.TABLESPACE_NAME,SPACE "SUM_SPACE(M)",BLOCKS SUM_BLOCKS,USED_SPACE"USED_SPACE(M)",ROUND(NVL(USED_SPACE,0)/SPACE*100,2) "USED_RATE(%)",NVL(FREE_SPACE,0) "FREE_SPACE(M)"FROM(SELECTTABLESPACE_NAME,ROUND(SUM(BYTES)/(1024*1024),2) SPACE,SUM(BLOCKS) BLOCKSFROM DBA_TEMP_FILESGROUP BY TABLESPACE_NAME) D,(SELECTTABLESPACE_NAME,ROUND(SUM(BYTES_USED)/(1024*1024),2) USED_SPACE,ROUND(SUM(BYTES_FREE)/(1024*1024),2) FREE_SPACEFROM V$TEMP_SPACE_HEADERGROUP BY TABLESPACE_NAME) FWHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME(+)3、除了监控表空间的剩余空间,有时候我们也有必要了解一下该表空间是否具有自动扩展空间的能力,虽然我们建议在生产系统中预先分配空间。

oracle 数据库管理员日常操作手册

oracle 数据库管理员日常操作手册

oracle 数据库管理员日常操作手册摘要:I.简介- 数据库管理员(DBA) 的角色和职责- Oracle 数据库的概述II.数据库安装和配置- 安装Oracle 数据库的要求和步骤- 配置Oracle 数据库的方法和技巧III.数据库的备份和恢复- 备份Oracle 数据库的方法和策略- 恢复Oracle 数据库的步骤和注意事项IV.数据库性能优化- 数据库性能优化的目标和技巧- 数据库性能监控和调整的方法V.数据库安全管理- 数据库安全管理的措施和方法- 数据库访问控制和权限管理VI.数据库日常维护- 数据库维护的任务和策略- 数据库日志和监控的使用VII.常见问题处理- 处理数据库故障和错误的方法- 数据库性能问题的诊断和解决正文:Oracle 数据库管理员日常操作手册作为数据库管理员(DBA),日常工作涉及Oracle 数据库的安装、配置、备份、恢复、性能优化、安全管理和维护等多个方面。

本手册将为您提供关于Oracle 数据库管理员的日常操作指南。

I.简介数据库管理员(DBA) 是负责管理和维护数据库的专业人员。

他们负责确保数据库的安全、稳定和高效运行。

Oracle 数据库是一款功能强大、稳定可靠的关系型数据库管理系统,广泛应用于各种企业和组织的信息系统中。

II.数据库安装和配置在开始使用Oracle 数据库之前,首先需要在计算机上安装Oracle 数据库。

安装过程需要遵循Oracle 官方的安装指南,并按照指定的步骤进行操作。

在安装过程中,您需要配置Oracle 数据库的一些参数,例如内存分配、进程数量等。

正确配置这些参数可以提高数据库的性能和稳定性。

III.数据库的备份和恢复备份是数据库管理员的重要任务之一。

定期备份数据库可以防止数据丢失,确保数据的安全性。

Oracle 数据库提供了多种备份方法,如全备份、增量备份和归档日志备份等。

您需要根据实际情况选择合适的备份策略。

恢复是数据库管理员的另一个重要任务。

DBA常用sql语句

DBA常用sql语句

Sql语句自收集一、表的操作1.查当前用户下所有的表:select * from tab;或者:select * from user_tablesselect * from tab where tabtype = 'TABLE'查其他用户的表select * from all_tables WHERE OWNER = 'XXX'2.查看数据库的版本信息:select * from v&version;3.创建一个用户:create user test1 identified by test1;4.授予该用户权限:grant connect, resource to test1;5.修改用户口令格式alter user 用户名identified by 新密码;SQL> alter user system identified by manager;6.解锁被锁定的oracle用户SQL> alter user test account unlock;7.创建表:create table test(id number, name varchar2(20));8.插入数据:insert into test values(001, ‘Perter’);9.更新数据:update test set name=’Jack’ where id=001;10.删除数据:delete from test where id=001;11.更改表的结构:alter table test modify(name char(10));12.查询字符集:select property_name,property_value from database_properties;或者select userenv('language') from dual;或者:Select * from v$NLS_PARAMETERS WHERE PARAMETER=‘NLS_CHARACTERSET’;二、表空间相关查询1.2.3.4.5.6.7.8.9.总结性查看用户,权限,角色,对象等查询方法1、查看所有用户:select * from dba_user;select * from all_users;select * from user_users;2、查看用户系统权限:select * from dba_sys_privs;select * from all_sys_privs;select * from user_sys_privs;3、查看用户对象权限:select * from dba_tab_privs;select * from all_tab_privs;select * from user_tab_privs;4、查看所有角色:select * from dba_roles;5、查看用户所拥有的角色:select * from dba_role_privs;select * from user_role_privs;6、查看角色所拥有的权限:select * from role_sys_privs;select * from role_tab_privs;7、查看所有系统权限select * from system_privilege_map;8、查看所有对象权限select * from table_privilege_map;查看占文件系统的空间。

Oracle维护常用SQL语句

Oracle维护常用SQL语句

Oracle维护常用SQL语句1.oracle常规命令1.1ORACLE的启动和关闭1.1.1在单机环境下要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下su – oraclea、启动ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>startupSVRMGR>quitb、关闭ORACLE系统oracle>svrmgrlSVRMGR>connect internalSVRMGR>shutdownSVRMGR>quit启动oracle9i数据库命令:$ sqlplus /nologSQL-Plus: Release 9.2.0.1.0 - Production on Fri Oct 3113:53:532003 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.SQL> connect / as sysdbaConnected to an idle instance.SQL> startupORACLE instance started.1.1.2在双机环境下要想启动或关闭ORACLE系统必须首先切换到root用户,如下su - roota、启动ORACLE系统hareg -y oracleb、关闭ORACLE系统hareg -n oracle1.2Oracle数据库有哪几种启动方式有以下几种启动方式:1、startup nomount非安装启动,这种方式启动下可执行:重建控制文件、重建数据库读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件。

2、startup mount dbname安装启动,这种方式启动下可执行:数据库日志归档、数据库介质恢复、使数据文件联机或脱机,重新定位数据文件、重做日志文件。

Oracle DBA 数据库日常维护手册 常用SQL 脚本

Oracle DBA 数据库日常维护手册 常用SQL 脚本

Oracle数据库日常维护【版本整理日期:2011/02/26 】版本整理人:1634068400@本文档包含以下内容:1.Oracle数据库日常维护2.Oracle DBA 常用管理脚本3.Oracle DB 常用SQL 语句/******************************************************** (若跳转不成功,请复制到浏览器或联系Q) /item.htm?id=7437120468Metalink Sharing ********************************************************/在Oracle数据库运行期间,DBA应该对数据库的运行日志及表空间的使用情况进行监控,及早发现数据库中存在的问题。

一、Oracle警告日志文件监控Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况:l数据库的启动、关闭,启动时的非缺省参数;l数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因;l对数据库进行的某些操作,如创建或删除表空间、增加数据文件;l数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA -600)DBA 应该定期检查日志文件,根据日志中发现的问题及时进行处理问题处理 启动参数不对 检查初始化参数文件因为检查点操作或归档操作没有完成造成重做日志不能切换 如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率;有人未经授权删除了表空间 检查数据库的安全问题,是否密码太简单;如有必要,撤消某些用户的系统权限出现坏块 检查是否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建表空间不够增加数据文件到相应的表空间 出现ORA-600 根据日志文件的内容查看相应的TRC文件,如果是Oracle 的bug ,要及时打上相应的补丁二、数据库表空间使用情况监控(字典管理表空间)数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,DBA 应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。

oracle日常维护SQL语句

oracle日常维护SQL语句

Oracle日常维护语句1、检查Oracle实例状态select instance_name,host_name,startup_time,status,database_status from v$instance;2、检查数据库归档模式select name,log_mode,open_mode from v$database;3、检查数据库无效对象select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM';4、检查数据库资源Select resource_name,CURRENT_UTILIZATION,max_utilization,initial_allocation, limit_value from v$resource_limit;5、检查数据库连接情况select sid,serial#,username,program,machine,status from v$session;6、检查表空间使用情况select f.tablespace_name,a.total,f.free,round((f.free/a.total)*100) "% Free" from (select tablespace_name,sum(bytes/(1024*1024)) total from dba_data_files group by tablespace_name) a, (select tablespace_name, round(sum(bytes/(1024*1024))) free from dba_free_space group by tablespace_name) f WHERE a.tablespace_name =f.tablespace_name(+) order by "% Free";7、检查SYSTEM表空间对象select distinct(owner) from dba_tables where tablespace_name='SYSTEM' and owner!='SYS' and owner!='SYSTEM' union select distinct(owner) from dba_indexes where tablespace_name='SYSTEM' and owner!='SYS' and owner!='SYSTEM';请确保SYSTEM表空间不要存在非SYS和SYSTEM用户的对象8、检查数据库等待事件select sid,event,p1,p2,p3,WAIT_TIME,SECONDS_IN_WAIT from v$session_wait where event not like 'SQL%' and event not like 'rdbms%';如果数据库长时间持续出现大量像latch free,enqueue,buffer busy waits,db file sequential read,db file scattered read等等待事件时,需要对其进行分析,可能存在问题的语句。

oracle常用运维sql语句

oracle常用运维sql语句

oracle常⽤运维sql语句1.查询dblink语句col owner for a20col db_link for a30col username for a20col host for a30set linesize 120set pages 60select * from dba_db_links order by owner;2.查询数据库job语句alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';col owner for a20col job_name for a30col LAST_START_DATE for a20col NEXT_RUN_DATE for a20col job_action for a40col what for a40col status for a10set linesize 200set pages 100select * from (with a as(select log_Date, job_name, statusfrom ALL_SCHEDULER_JOB_LOG lwhere owner not in ('SYS','SYSTEM','SYSMAN')),b as(select job_name, max(log_date) m_datefrom ALL_SCHEDULER_JOB_LOG lwhere owner not in ('SYS','SYSTEM','SYSMAN')group by job_name),c as(select j.owner,j.job_name,st_start_date,j.next_run_date,j.JOB_ACTIONfrom all_scheduler_jobs jwhere j.owner not in ('SYS','SYSTEM','SYSMAN'))select c.owner,a.job_name,to_char(ST_START_DATE, 'yyyy-mm-dd hh24:mi:ss') LAST_START_DATE,to_char(c.NEXT_RUN_DATE, 'yyyy-mm-dd hh24:mi:ss') NEXT_RUN_DATE,c.job_action,a.status,sysdate "search_date"from a, b, cwhere a.job_name = b.job_nameand a.job_name = c.job_nameand a.log_date = b.m_date)union allselect schema_user,to_char(job) "job_name",to_char(last_date, 'yyyy-mm-dd hh24:mi:ss') "LAST_DATE",to_char(next_date, 'yyyy-mm-dd hh24:mi:ss') "NEXT_DATE",what,casewhen failures = 0 then'SUCCEEDED'else'FAILED'end case,sysdatefrom dba_jobswhere schema_user not in ('SYS','SYSTEM','SYSMAN') and broken = 'N';3.查询表空间使⽤率和数据⽂件碎⽚普通表空间:col total_mb for 999999col free_mb for 99999col free_rate for a15col used_rate for a15select d.tablespace_name,d.mb total_mb,f.mb free_mb,round((f.mb / d.mb), 4) * 100 || '%' free_rate,round((d.mb - f.mb) / d.mb, 4) * 100 || '%' used_ratefrom (select tablespace_name, bytes / 1024 / 1024 mb from dba_data_files) d,(select tablespace_name, sum(bytes) / 1024 / 1024 mbfrom dba_free_spacegroup by tablespace_name) fwhere d.tablespace_name = f.tablespace_name(+)order by (d.mb - f.mb) / d.mb desc;临时表空间:SELECT A.tablespace_name tablespace,D.mb_total,SUM(ed_blocks * D.block_size) / 1024 / 1024 mb_used,D.mb_total - SUM(ed_blocks * D.block_size) / 1024 / 1024 mb_freeFROM v$sort_segment@ A,(SELECT , C.block_size, SUM(C.bytes) / 1024 / 1024 mb_totalFROM v$tablespace@ B, v$tempfile@ CWHERE B.ts# = C.ts#GROUP BY , C.block_size) DWHERE A.tablespace_name = GROUP by A.tablespace_name, D.mb_total;数据⽂件碎⽚:select file_name,ceil((nvl(hwm, 1) * 8192) / 1024 / 1024 / 1024) smallest,ceil(blocks * 8192 / 1024 / 1024 / 1024) currsize,ceil(blocks * 8192 / 1024 / 1024 / 1024) -ceil((nvl(hwm, 1) * 8192) / 1024 / 1024 / 1024) savingsfrom dba_data_files a,(select file_id, max(block_id + blocks - 1) hwmfrom dba_extentsgroup by file_id) bwhere a.file_id = b.file_id(+);4.查询数据库死锁alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';col oracle_username for a15col os_user_name for a15col object_name for a30col machine for a20set linesize 150set pages 100SELECT l.session_id sid, s.serial#,l.oracle_username,l.os_user_name,s.machine,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 and s.status<>'ACTIVE' ORDER BY sid, s.serial#;杀掉僵死会话:alter system kill session 'sid,serial#' immediate;5.闪回查询SELECT * FROM(SELECT * FROM comp_rs_ins_comp as of timestamp (to_date('2014-12-2 15:50:00','yyyy-mm-dd hh24:mi:ss')) )WHERE comp_rs_ins_id in ('5030933252');6.查询asm磁盘组空间使⽤率set feedback offset linesize 120col grp_name for a10col grp_num for a10col used_rate for a10select 'grp'||group_number grp_num,name grp_name,type,round(total_mb/1024,2) total_gb,round(free_mb/1024,2)free_gb,round(REQUIRED_MIRROR_FREE_MB/1024,2) req_mir_free_gb,round(USABLE_FILE_MB/1024,2) usable_gb,round((total_mb-free_mb)/total_mb*100,2)||'%' used_rate from v$asm_diskgroup_stat;7.查询DBA⾓⾊包含哪些权限col grantee for a10col privilege for a40set pagesize 100select * from dba_sys_privs where grantee='DBA';8.查询隐含参数select x.ksppinm name,y.ksppstvl value,y.ksppstdf isdefault,decode(bitand(y.ksppstvf, 7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE') ismod,decode(bitand(y.ksppstvf, 2), 2, 'TRUE', 'FALSE') isadjfrom sys.x$ksppi x, sys.x$ksppcv ywhere x.inst_id = userenv('Instance')and y.inst_id = userenv('Instance')and x.indx = y.indxand x.ksppinm like '%_optimizer_cbqt_no_size_restriction%'order by translate(x.ksppinm, ' _', ' ');9.查询latch情况col name for a30col gets for 9999999999999999col misses for 9999999999999999col immediate_gets for 999999999999999select * from (select name,gets,misses,immediate_gets,immediate_misses,sleeps from v$latch order by misses desc) where rownum<10;10.查询ashselect sql_id,event,count(*) from v$active_session_history where sql_id is not null and event is not null and sample_time betweento_date('20161125150000','yyyy-mm-dd hh24:mi:ss') and to_date('20161125160000','yyyy-mm-dd hh24:mi:ss') group by sql_id,event order by count(*) desc;11.查询⼤事务以及对应的sqlcol xid for a20col schemaname for a20col sql_text for a40set linesize 150set pagesize 100select s.sid,s.serial#,s.status,t.start_time, t.xidusn||'.'||t.xidslot||'.'||t.xidsqn xid,ername,decode(s.sql_id,null,s.prev_sql_id,s.sql_id) sqlidfrom v$transaction t, v$session swhere s.saddr = t.ses_addrorder by t.start_time;select s.sid,s.serial#,s.status,t.start_time, t.xidusn||'.'||t.xidslot||'.'||t.xidsqn xid,ername,decode(s.sql_id,null,s.prev_sql_id,s.sql_id) sqlid,l.sql_textfrom v$transaction t, v$session s,v$sql lwhere s.saddr = t.ses_addr and l.sql_id=s.sql_idorder by t.start_time;12.查询pga和uga使⽤量select ,b.value from v$statname a,v$sesstat b where a.statistic#=b.statistic# and b.sid=(select sid from v$mystat where rownum=1) and ( like '%ga %' or like '%direct temp%')union allselect 'total: '||,sum(b.value) from v$statname a,v$sesstat b,v$session c where a.statistic#=b.statistic# and ( like '%ga %' or like '%direct temp%') and b.sid=c.sid and ername is not null group by 'total: '||;。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle数据库日常维护【版本整理日期:2011/02/26 】版本整理人:1634068400@本文档包含以下内容:1.Oracle数据库日常维护2.Oracle DBA 常用管理脚本3.Oracle DB 常用SQL 语句/******************************************************** (若跳转不成功,请复制到浏览器或联系Q) /item.htm?id=7437120468Metalink Sharing ********************************************************/在Oracle数据库运行期间,DBA应该对数据库的运行日志及表空间的使用情况进行监控,及早发现数据库中存在的问题。

一、Oracle警告日志文件监控Oracle在运行过程中,会在警告日志文件(alert_SID.log)中记录数据库的一些运行情况:l数据库的启动、关闭,启动时的非缺省参数;l数据库的重做日志切换情况,记录每次切换的时间,及如果因为检查点(checkpoint)操作没有执行完成造成不能切换,会记录不能切换的原因;l对数据库进行的某些操作,如创建或删除表空间、增加数据文件;l数据库发生的错误,如表空间不够、出现坏块、数据库内部错误(ORA -600)DBA 应该定期检查日志文件,根据日志中发现的问题及时进行处理问题处理 启动参数不对 检查初始化参数文件因为检查点操作或归档操作没有完成造成重做日志不能切换 如果经常发生这样的情况,可以考虑增加重做日志文件组;想办法提高检查点或归档操作的效率;有人未经授权删除了表空间 检查数据库的安全问题,是否密码太简单;如有必要,撤消某些用户的系统权限出现坏块 检查是否是硬件问题(如磁盘本生有坏块),如果不是,检查是那个数据库对象出现了坏块,对这个对象进行重建表空间不够增加数据文件到相应的表空间 出现ORA-600 根据日志文件的内容查看相应的TRC文件,如果是Oracle 的bug ,要及时打上相应的补丁二、数据库表空间使用情况监控(字典管理表空间)数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,DBA 应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。

select tablespace_name,count(*) chunks ,max(bytes/1024/1024) max_chunkfrom dba_free_spacegroup by tablespace_name;上面的SQL列出了数据库中每个表空间的空闲块情况,如下所示:TABLESPACE_NAME CHUNKS MAX_CHUNK-------------------- ---------- ----------INDX 1 57.9921875RBS 3 490.992188RMAN_TS 1 16.515625SYSTEM 1 207.296875TEMP 20 70.8046875TOOLS 1 11.8359375USERS 67 71.3671875其中,CHUNKS列表示表空间中有多少可用的空闲块(每个空闲块是由一些连续的Oracle数据块组成),如果这样的空闲块过多,比如平均到每个数据文件上超过了100个,那么该表空间的碎片状况就比较严重了,可以尝试用以下的SQL命令进行表空间相邻碎片的接合:alter tablespace 表空间名 cascade;此处是有误吧,coalesce;然后再执行查看表空间碎片的SQL语句,看表空间的碎片有没有减少。

如果没有效果,并且表空间的碎片已经严重影响到了数据库的运行,则考虑对该表空间进行重建。

MAX_CHUNK列的结果是表空间上最大的可用块大小,如果该表空间上的对象所需分配的空间(NEXT值)大于可用块的大小的话,就会提示ORA-1652、ORA-1653、ORA-1654的错误信息,DBA应该及时对表空间的空间进行扩充,以避免这些错误发生。

对表空间的扩充对表空间的数据文件大小进行扩展,或向表空间增加数据文件,具体操作见“存储管理”部份。

三、查看数据库的连接情况DBA要定时对数据库的连接情况进行检查,看与数据库建立的会话数目是不是正常,如果建立了过多的连接,会消耗数据库的资源。

同时,对一些“挂死”的连接,可能会需要DBA手工进行清理。

以下的SQL语句列出当前数据库建立的会话情况:select sid,serial#,username,program,machine,statusfrom v$session;输出结果为:SID SERIAL# USERNAME PROGRAM MACHINE STATUS---- ------- ---------- ----------- --------------- --------1 1 ORACLE.EXE WORK3 ACTIVE2 1 ORACLE.EXE WORK3 ACTIVE3 1 ORACLE.EXE WORK3 ACTIVE4 1 ORACLE.EXE WORK3 ACTIVE5 3 ORACLE.EXE WORK3 ACTIVE6 1 ORACLE.EXE WORK3 ACTIVE7 1 ORACLE.EXE WORK3 ACTIVE8 27 SYS SQLPLUS.EXE WORKGROUP\WORK3 ACTIVE11 5 DBSNMP dbsnmp.exe WORKGROUP\WORK3 INACTIVE其中,SID 会话(session)的ID号;SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;USERNAME 建立该会话的用户名;PROGRAM 这个会话是用什么工具连接到数据库的;STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;如果DBA要手工断开某个会话,则执行:alter system kill session 'SID,SERIAL#';注意,上例中SID为1到7(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。

四、控制文件的备份在数据库结构发生变化时,如增加了表空间,增加了数据文件或重做日志文件这些操作,都会造成Oracle数据库控制文件的变化,DBA应及进行控制文件的备份,备份方法是:执行SQL语句:alter databasebackup controlfile to '/home/backup/control.bak';或:alter databasebackup controlfile to trace;这样,会在USER_DUMP_DEST(初始化参数文件中指定)目录下生成创建控制文件的SQL命令。

五、检查数据库文件的状态DBA要及时查看数据库中数据文件的状态(如被误删除),根据实际情况决定如何进行处理,检查数据文件的状态的SQL如下:select file_name,statusfrom dba_data_files;如果数据文件的STATUS列不是A V AILABLE,那么就要采取相应的措施,如对该数据文件进行恢复操作,或重建该数据文件所在的表空间。

六、检查数据库定时作业的完成情况如果数据库使用了Oracle的JOB来完成一些定时作业,要对这些JOB的运行情况进行检查:select job,log_user,last_date,failuresfrom dba_jobs;如果FAILURES列是一个大于0的数的话,说明JOB运行失败,要进一步的检查。

七、数据库坏块的处理当Oracle数据库出现坏块时,Oracle会在警告日志文件(alert_SID.log)中记录坏块的信息:ORA-01578: ORACLE data block corrupted (file # 7, block # <BLOCK>) ORA-01110: data file <AFN>: '/oracle1/oradata/V920/oradata/V816/users01.dbf'其中,<AFN>代表坏块所在数据文件的绝对文件号,<BLOCK>代表坏块是数据文件上的第几个数据块出现这种情况时,应该首先检查是否是硬件及操作系统上的故障导致Oracle数据库出现坏块。

在排除了数据库以外的原因后,再对发生坏块的数据库对象进行处理。

1.确定发生坏块的数据库对象SELECT tablespace_name,segment_type,owner,segment_nameFROM dba_extentsWHERE file_id = <AFN>AND <BLOCK>between block_id AND block_id+blocks-1;2.决定修复方法如果发生坏块的对象是一个索引,那么可以直接把索引DROP掉后,再根据表里的记录进行重建;如果发生坏块的表的记录可以根据其它表的记录生成的话,那么可以直接把这个表DROP掉后重建;如果有数据库的备份,则恢复数据库的方法来进行修复;如果表里的记录没有其它办法恢复,那么坏块上的记录就丢失了,只能把表中其它数据块上的记录取出来,然后对这个表进行重建。

3.用Oracle提供的DBMS_REPAIR包标记出坏块exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS('<schema>','<tablename>');4.使用Create table as select命令将表中其它块上的记录保存到另一张表上create table corrupt_table_bakasselect * from corrupt_table;5.用DROP TABLE命令删除有坏块的表drop table corrupt_table;6.用alter table rename命令恢复原来的表alter table corrupt_table_bakrename to corrupt_table;7.如果表上存在索引,则要重建表上的索引八、操作系统相关维护DBA要注意对操作系统的监控:l文件系统的空间使用情况(df -k),必要时对Oracle的警告日志及TRC文件进行清理l如果Oracle提供网络服务,检查网络连接是否正常l检查操作系统的资源使用情况是否正常l检查数据库服务器有没有硬件故障,如磁盘、内存报错.数据字典和动态性能视图数据字典是oracle数据库的最重要的组成部分,它提供了数据库的相关系统信息;动态性能视图记载了例程启动以来的相关性能信息。

相关文档
最新文档