ORACLE日常维护的语句

1、SQL语句列出当前数据库建立的会话情况:
select sid,serial#,username,program,machine,status
from v$session;
其中,
SID 会话(session)的ID号;
SERIAL# 会话的序列号,和SID一起用来唯一标识一个会话;
USERNAME 建立该会话的用户名;
PROGRAM 这个会话是用什么工具连接到数据库的;
STATUS 当前这个会话的状态,ACTIVE表示会话正在执行某些任务,INACTIVE表示当前会话没有执行任何操作;
如果DBA要手工断开某个会话,则执行:
alter system kill session 'SID,SERIAL#';
注意,上例中SID为1到7(USERNAME列为空)的会话,是Oracle的后台进程,不要对这些会话进行任何操作。

2、数据库表空间使用情况监控(字典管理表空间)
数据库运行了一段时间后,由于不断的在表空间上创建和删除对象,会在表空间上产生大量的碎片,DBA应该及时了解表空间的碎片和可用空间情况,以决定是否要对碎片进行整理或为表空间增加数据文件。

select tablespace_name,
count(*) chunks ,
max(bytes/1024/1024) max_chunk
from dba_free_space
group by tablespace_name;
其中,CHUNKS列表示表空间中有多少可用的空闲块(每个空闲块是由一些连续的Oracle 数据块组成),如果这样的空闲块过多,比如平均到每个数据文件上超过了100个,那么该表空间的碎片状况就比较严重了,可以尝试用以下的SQL命令进行表空间相邻碎片的接合: alter tablespace 表空间名coalesce;
然后再执行查看表空间碎片的SQL语句,看表空间的碎片有没有减少。

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

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

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

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

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

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

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

3.用Oracle提供的DBMS_REPAIR包标记出坏块
exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS(' ','');
4.使用Create table as select命令将表中其它块上的记录保存到另一张表上
create table corrupt_table_bak
as
select * from corrupt_table;
5.用DROP TABLE命令删除有坏块的表
drop table corrupt_table;
6.用alter table rename命令恢复原来的表
alter table corrupt_table_bak
rename to corrupt_table;
7.如果表上存在索引,则要重建表上的索引。

合集下载

oracle日常维护巡检工作汇总

oracle日常维护巡检工作汇总

oracle 日常维护工作内容(1). 每天对ORACLE数据库的运行状态,日志文件,备份情况,数据库的空间使用情况,系统资源的使用情况进行检查,发现并解决问题。

(2). 每周对数据库对象的空间扩展情况,数据的增长情况进行监控,对数据库做健康检查,对数据库对象的状态做检查。

====================每天工作====================1.(1).确认所有的INSTANCE状态正常.登陆到所有数据库或例程,检测ORACLE后台进程:$ps –-ef|grep ora(2). 检查文件系统的使用(剩余空间)。

如果文件系统的剩余空间小于20%,需删除不用的文件以释放空间。

对于业务交易生产系统和数据库日志归档目录,当空间不足,请急时清理.$df -h(3). 检查日志文件和trace文件记录alert和trace文件中的错误.连接到数据库服务器cd 到bdump目录,通常是$ORACLE_BASE/admin/<SID>/bdump‘tail’命令来查看alert_<SID>.log文件如果发现任何新的ORA- 错误,记录并解决(4). 检查数据文件的状态记录状态不是“online”的数据文件,并做恢复。

Select file_name from dba_data_files where status=’OFFLINE’(5). 检查表空间的使用情况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_nameAND a.tablespace_name = c.tablespace_name;(6). 检查剩余表空间SELECT tablespace_name, SUM (blocks) AS free_blk,TRUNC (SUM (BYTES) / (1024 * 1024)) AS free_m,MAX (BYTES) / (1024) AS big_chunk_k, COUNT (*) AS num_chunks FROM dba_free_spaceGROUP BY tablespace_name;(7). 检查数据库性能,记录数据库的cpu使用、IO、buffer命中率等等使用vmstat,iostat,glance,top等命令====================每周工作====================(1). 监控数据库对象的空间扩展情况根据本周每天的检查情况找到空间扩展很快的数据库对象,并采取相应的措施alter tablespace 表空间名add datafile '/u1/oradata/userdata_002.ora' size *m;(2). 检查无效的数据库对象SELECT owner, object_name, object_typeFROM dba_objectsWHERE status = 'invalid';(3). 检查不起作用的约束SELECT owner, constraint_name, table_name, constraint_type, statusFROM dba_constraintsWHERE status = 'DISABLED' AND constraint_type = 'P' ;(4). 检查无效的triggerSELECT owner, trigger_name, table_name, statusFROM dba_triggersWHERE status = 'DISABLED';====================每月的工作====================(1). 检查表空间碎片根据本月每周的检查分析数据库碎片情况,找到相应的解决方法(2). 寻找数据库性能调整的机会比较每天对数据库性能的监控报告,确定是否有必要对数据库性能进行调整(3). 数据库性能调整如有必要,进行性能调整(4). 提出下一步空间管理计划根据每周的监控,提出空间管理的改进方法============================================================================|| ★★★Oracle DBA 日常管理★★★||============================================================================目的:这篇文档有很详细的资料记录着对一个甚至更多的ORACLE 数据库每天的,每月的,每年的运行的状态的结果及检查的结果,在文档的附录中你将会看到所有检查,修改的SQL和PL/SQL 代码。

oracle常用维护命令和技巧

oracle常用维护命令和技巧

常用维护命令与技巧目录操作系统命令 (3)通用操作系统命令 (3)LINUX (3)AIX (4)HPUX (6)Solaris (10)Oracle组件选项命令 (12)CRS (12)ASM (13)配置使用logminer (13)Oracle常用SQL语句 (16)SGA (16)UNDO管理 (16)dba_segments 和 dba_extents (17)查找LOB字段的信息 (18)Index (18)expdp impdp (18)怎么发现transaction table 竞争 (18)查找非缺省的参数(Non default parameter) (18)Determining Which Segments Have Many Buffers in the Pool (18)查询所有的PGA的大小 (19)CURSOR (19)compact Table space (19)Session (20)tablespace (20)ADDM (20)等待事件(wait event) (21)查询当前正在运行的SQL语句(current sql_text) (21)session sid and process sid (22)设置初始化参数 (22)操作系统命令通用操作系统命令DUMP磁盘的头部信息dd if=/dev/rhdisk28 bs=8192|od –c怎么使用truss或则trace查看运行脚本的输出:sh –x < program >debug我们要执行的程序或者命令:truss -o /tmp/mytruss <program> <any arguments>或者trace -o /tmp/mytruss <program> <any arguments> debug 子进程:truss -o /tmp/mytruss -fae <program> <any arguments> debug 一个已经运行了的进程:truss -o /tmp/mytruss -p <pid of process>或者trace -o /tmp/mytruss -p <pid of process>debug 一个已经运行了的进程的子进程truss -o /tmp/mytruss -fae -p <pid of process> LINUX检查机器内存的大小:# grep MemTotal /proc/meminfo检查机器SWAP的大小# grep SwapTotal /proc/meminfo检查可用的内存和SWAP大小# free检查可用的共享内存大小# df -k /dev/shm/检查系统的结构uname –m确定linux属于哪个厂商的那个版本# cat /proc/version确定Linux的核心# uname –r查询安装了的包# rpm -q <package_name>检查网络的流量/usr/bin/sar –n DEVAIX检查机器内存的大小:# /usr/sbin/lsattr -E -l sys0 -a realmem#svmon –G --检查内存使用情况#svmon -P -t 10 //查看最耗内存的10个进程,里面会有每个进程的详细信息。

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维护常用语

oracle维护常用语

1、查看表空间的名称及大小selectt.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from dba_tablespaces t, dba_data_files d where t.tablespace_name = d.tablespace_name group by t.tablespace_name;2、查看表空间物理文件的名称及大小selecttablespace_name, file_id, file_name, round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;3、查看回滚段名称及大小selectsegment_name, tablespace_name, r.status, (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent, max_extents, v.curextCurExtent From dba_rollback_segs r, v$rollstat v Where 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_name from dba_free_space group 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 C WHERE 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_version Where SUBSTR(PRODUCT,1,6)='Oracle';9、查看数据库的创建日期和归档方式Select Created, Log_Mode, Log_ModeFromV$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 a20 SQL> 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_spacea,dba_data_files bwhere a.file_id=b.file_id group 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 a30 SQL> SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;14、查看数据文件放置的路径SQL> col file_name format a50 SQL> 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数据库日常维护

Oracle数据库日常维护

1、查看监听器状态[bpm@www ~]$ lsnrctlLSNRCTL> statusLSNRCTL> exit2、启动监听器[bpm@www ~]$ lsnrctl start3、停止监听器[bpm@www ~]$ lsnrctl stopOracle数据库日常维护一、检查数据库文件的状态DBA要及时查看数据库中数据文件的状态(如被误删除),根据实际情况决定如何进行处理,检查数据文件的状态的SQL如下:select file_name,status from dba_data_files;如果数据文件的STATUS列不是AVAILABLE,那么就要采取相应的措施,如对该数据文件进行恢复操作,或重建该数据文件所在的表空间。

二、检查数据库定时作业的完成情况如果数据库使用了Oracle的JOB来完成一些定时作业,要对这些JOB的运行情况进行检查:select job,log_user,last_date,failures from 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数据库出现坏块。

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

oracle dba 日常维护操作手册命令总结

oracle dba 日常维护操作手册命令总结

oracle dba 日常维护操作手册命令总结Oracle DBA日常维护操作手册命令总结:Oracle数据库管理员(DBA)在日常维护数据库时,需要掌握一些常用的命令和操作。

以下是一些重要的Oracle DBA维护命令的总结:1. 数据库连接和认证命令:- sqlplus:用于连接Oracle数据库的命令行工具。

可以使用该命令连接到数据库并执行SQL语句。

- sqlldr:用于将数据从外部文件加载到Oracle数据库表中。

- exp和imp:用于导出和导入数据库对象和数据。

2. 数据库启动和关闭命令:- startup:启动Oracle数据库实例。

- shutdown:关闭Oracle数据库实例。

3. 数据库备份和恢复命令:- RMAN(Recovery Manager):用于备份和恢复Oracle数据库。

- backup:用于创建数据库备份。

- restore:用于从备份文件中恢复数据库。

4. 数据库性能和监控命令:- tkprof:用于分析和优化SQL查询语句的性能。

- awrreport和ashreport:用于生成数据库性能报告和分析。

- v$表名:用于查看数据库的不同性能指标。

5. 数据库对象管理命令:- create:用于创建数据库对象,如表、索引、视图等。

- alter:用于修改数据库对象的结构,例如修改表结构、添加索引等。

- drop:用于删除数据库对象。

6. 用户和权限管理命令:- create user:用于创建数据库用户。

- alter user:用于修改数据库用户的属性。

- grant和revoke:用于授予和收回用户的权限。

7. 数据库存储管理命令:- create tablespace:用于创建数据库表空间,用于存储数据库对象。

- alter tablespace:用于修改表空间的属性。

- alter database:用于修改数据库的参数和属性。

以上仅是一些常用的Oracle DBA日常维护操作命令的总结,实际使用中还有更多的命令和技术需要掌握。

oracle日常维护命令


该命令显示了 ASM 例程为所有客户机数据库管理的所有磁盘。在这些磁盘中,您可能决定利用以下命令来删除一个磁盘:
alter diskgroup dskgrp1 drop disk diskb23;
export ORACLE_SID=+ASM1
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/asm_1
生成报告:
@/opt/oracle10g/u01/rdbms/admin/awrrpt.sql;
修改awr收集快照的间隔和保留周期为 45分钟和10天(14400分钟),默认是1小时1次快照
begin
dbms_workload_repository.modify_snapshot_setting(retention=>14400,interval=>45);
所有实例和服务的状态
$ srvctl status database -d orcl
Instance orcl1 is running on node linux1
Instance orcl2 is running on node linux2
单个实例的状态
$ srvctl status instance -d orcl -i orcl2
SQL> alter database create datafile '/opt/oracle/product/9.2.0/dbs/UNNAMED00004'
as '/opt/oracle/oradata/primary/eygle01.dbf' reuse;
==总队==

最详细的oracle rac日常基本维护命令

最详细的oracle rac日常基本维护命令以下是一些使用Oracle RAC进行日常基本维护的常用命令:1. CRSCTL命令:- crsctl check crs:检查集群资源状态。

- crsctl start crs:启动整个集群资源服务。

- crsctl stop crs:停止整个集群资源服务。

- crsctl disable crs:禁用整个集群资源服务。

- crsctl enable crs:启用整个集群资源服务。

2. SRVCTL命令:- srvctl start instance -db <database_name> -instance<instance_name>:启动指定的实例。

- srvctl stop instance -db <database_name> -instance<instance_name>:停止指定的实例。

- srvctl status instance -db <database_name> -instance<instance_name>:检查指定实例的状态。

- srvctl start service -db <database_name> -service <service_name>:启动指定的服务。

- srvctl stop service -db <database_name> -service <service_name>:停止指定的服务。

- srvctl status service -db <database_name> -service<service_name>:检查指定服务的状态。

3. SQL*Plus命令:- sqlplus / as sysdba:以SYS用户身份登录数据库。

- startup:启动数据库实例。

linux中oracle的日常维护命令

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数据库日常维护作业计划

O RACLE A DVANCED P RODUCT S ERVICESOracle数据库日常维护手册1.1.工作内容 31.1.1 每日工作 (3)1.1.2 每周的工作(通过工具自动跑出结果,手工进行问题处理) (5)1.1.3 每月的工作(人工分析处理) (22)1.1.4 每年的工作(结合工具进行全面检查) (25)审阅记录分发记录相关文档1.1. 工作内容1.1.1每日工作1.1.1.1检查数据库状态(目前人工,以后自动,)确认所有的INSTANCE状态以及listener状态正常,登陆到所有数据库或例程,检测ORACLE 后台进程:1.1.1.2检查CPU使用率(自动,无报警即可)例如sar –u显示内容包括:%usr:CPU处在用户模式下的时间百分比。

%sys:CPU处在系统模式下的时间百分比。

%wio:CPU等待输入输出完成时间的百分比。

%idle:CPU空闲时间百分比对于%usr,建议客户定期收集,建立系统性能的基线,以便判断系统CPU使用的趋势。

如果%usr 突然异常增长,建议客户使用topas,glance找到使用CPU最高资源的进程,进行进一步分析。

如果是oracle用户进程,可以使用如下语句获得该进程正在执行的SQL:--通过PID找SQLSELECT /*+ ORDERED */ sql_textFROM v$sqltext aWHERE (a.hash_value, a.address) IN (SELECT DECODE (sql_hash_value, 0, prev_hash_value, sql_hash_value), DECODE (sql_hash_value, 0, prev_sql_addr, sql_address)FROM v$session bWHERE b.paddr = (SELECT addr FROM v$process c WHERE c.spid = '&pid')) ORDER BY piece ASC;而且我们通过v$session的sid,可以进一步从v$session_wait得到该进程的等待事件:--通过PID找该进程的等待事件:SELECT /*+ ORDERED */ event,p1,p2,p3FROM v$session_wait a WHERE a.sid IN (SELECT b.sid FROM v$session b WHERE b.paddr = (SELECT addr FROM v$process c WHERE c.spid = '&pid'));而得到该语句的执行计划,我们可以如下查询:SELECT /*+ ORDERED */OPERATION , OPTIONS, OBJECT_NAME, OPTIMIZER, ID, PARENT_ID, COST,CARDINALITY,BYTESFROM v$sql_plan a where a.hash_value='&hav' and a.address='&address';对于%wio,如果该数值过高,表示硬盘存在I/O等待。

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