dba的一天待细化

--查询返回实例名称,状态,正常状态应为open
select instance_name,status from v$instance;
--连接用户
select inst_id,username,count(*) from gv$session group by inst_id,username;
--会话信息  实例当前会话数和启动最高连接会话数量
select sessions_current,sessions_highwater from v$license;
---查询给定参数的设置值,示例参数缺省值为300,通常中等规模数据库推荐设置为1000
select value from v$parameter where name ='open_cursors';
---修改给定的初始化参数,RAC环境需要注意SID参数
alter system set undo_retention=3600 comment='default 900' SID='*' scope=both;


--实例异常 当连接数据库实例出现缓慢,挂起等现象,需要进行诊断和分析,甚至可能需要重新启动数据库实例
--1.信息采集
sqlplus -prelim / as sysdba
oradebug setmypid
oradebug unlimit
oradebug hanganalyze 3
oradebug dump systemstate 266
----间隔一定时间,如20秒,执行下一次数据采样
oradebug hanganalyze 3
oradebug dump systemstate 266
--- 以上示范命令,通过采集系统的hang信息,系统状态信息等,可以分析系统挂起的原因,间隔采样,可以用于对比变化,辅助分析


--2.跟踪
alter session set events '10046' trace name context forever level 12;
shutdown immediate;
startup mount ;
alter session set events '10046' trace name context forever level 12;
alter database open ;
如果在数据库关闭,启动时遇到阻塞,挂起等,可以通过示范命令进行跟踪,获取跟踪文件进行分析
--3.安全停库
alter system checkpoint;
alter system archive log current;
shutdown immediate;
如果数据库出现异常,需要重新启动,可以通过示范命令执行检查点,归档命令,然后尝试以立即方式关闭数据库
---3(1)
shutdown abort;
startup nomount;
alter datebase mount;
alter database open;
如果立即方式不能顺利关闭数据库,强制的关闭,可以通过分步骤的方式执行数据库的启动




--连接异常  当连接数据库出现异常,需要检测包括网络连通性,监听状态等信息
--1.连通性
tnsping tns_name --通过tnsping工具测试配置的服务名称,观察网络是否连通以及响应时间
--2.监听器
lsnrctl status LISTENER
lsnrctl status LISTENER_SCAN1
lsnrctl service
--3.监听日志检查
asrci> show alert
在服务器上,可以通过adrci工具,显示各类告警文件,检查监听器日志,可以诊断监听问题




--日志信息检查  
--检查数据库各类日志信息,确认数据库实例,集群等是否出现错误,告警,如存在问题,则需要进一步分析和应对


--告警日志:
$ORACLE_BASE/diag/rdbms/<db_name>/$ORACLE_SID/trace/alert_$ORACLE_SID.log
show parameter background background_dump_dest--根据示例找到告警日志,检查实例是否存在ora-错误提示等
---集群日志
$GRID_HOME/log/<nodename>/alert<nodename>.log
$GRID_HOME/log/<nodename>/(crsd,cssd,evmd,ohasd)/
--在相应的路径找到RAC集群日志,检查是否存在错误提示信息等


--ASM日志
$GRID_HOME/diag/asm/+asm/<ASM_instance_name>/trace/alert<instance_name>.log


--trace文件的检查
select value from v$diag_info where name='Default Trace File';
show parameter user_dump_dest  --获取会话或全局转储位置,诊断时需要相应的文件内容


----集群状态
crsctl status resource -t   --确保资源状态显示在线


---errorstack分析
当遇到ora-错误,而数据库输出信息不足时,可以采用errorstack进行跟踪,采集更详细的转出信息






----重做日志维护
Oracle redo 日志是数据库的核心组建,检查其状态,维护其成员,监控其归档,审核其性能,是dba的重要工作


select group#,sequence#,archived,status from v$log;--查询日志组号,序号,是否归档完成和状态信息,如多组日志显示active状态,则可能说明数据库存在io方面的性能问题
select group#,member from v$logfile;--检查日志组和成员信息


--redo维护
alter database add logfile group 10('/oracle/dbs/log1c.rdo')size 500m;
alter database add logfile member '/oracle/dbs/log2c.rdo' to group 10;
在日至切换频繁是,可能需要增加日志组或者加大日志大小
alter database drop logfile group 10;
alter database drop logfile member '/oracle/dbs/redo03.log';
删除指定日志组或日至成员,注意只能对inactice状态的日志执行删除动作


---执行归档
alter system switch logfile;--切换日志组,开始写入下一个日志组
alter system archive log current;--对当前日志组执行归档,Thread参数指定归档实例
--调整归档路径
alter system set log_archive_dest_2='location=&path 'sid=&sid'';
如果数据库因归档耗尽空间,可以指定另外的归档路径,以尽快归档日志,恢复数据库运行




---空间信息检查  确保数据存储空间可用,定期检查表空间余量,进行表空间和数据文件的维护
select * from sys.sm$ts_used;--查看数据库表空间的使用信息
select * from sys.sm$ts_used;--查看数据库表空间的剩余空间
---文件信息
select tablespace_name,file_name from dba_data_files;--查看数据库表空间的数据文件信息、
--文件维护
alter database datafile '&path'resize 900M;
alter tablespacef &tbs_name add datafile '&path' size 900m;--对数据库的表空间容量进行扩容




---锁闩信息检查
lock/latch是数据库控制并发的核心手段,检查相关信息可以监控数据库的事物和运行状况
--锁信息
select sid,type,lmode,ctime,block from v$lock where type not in('MR','AE');--查看锁会话ID,类型,持有时间等,注意如果block>1,可能意味著阻塞了其它的会话
--锁故障排查  在数据库出现锁竞争和阻塞时,需要排查和处理锁定,必要时通过kill阻塞进程消除锁定
select sid,sql_id,status,blocking_session from v$session where sid in(
    select session_id from v$locked_object);--查询当前锁事物中阻塞会话与被阻塞会话的sid,sql_id查询出阻塞的sql语句
--阻塞sql文本
select sql_id,sql_text from v$sqltest where sql_id='&sql_id'order by piece;
--锁阻塞对象信息
select owner,object_name,object_type from dba_objects where object_id in(select object_id from v$locked_object);--通过sid查询阻塞对象的详细信息如对象名称,所属用户等
--查询阻塞会话
alter system kill session 'sid,serial#';
--杀系统进程
select pro.spid,pro.program from v$session ses,v$process pro 
   where ses.sid=&sid and ses.paddr=pro.addr;
kill -9 spid  --无论何时需要认真分析,并且避免误杀重要后台进程(windows需要orakill)


---闩检查
select name,gets,misses,immediate_gets,spin_gets from v$latch order by 2;--检查数据库闩的使用情况,misses,spin_gets统计高的,需要关注
--闩使用检查
select addr,gets from v$latch_children where name='cache buffer chains';
select hladdr,file#,dbablk from x$bh where hladdr in(
  select addr from v$latch_children where addr='&addr');--仅供参考:通过获得的latch地址,找到该latch守护的x$bh中相关的buffer
  


---等待  统计数据
wait和statistics数据分别代表了数据库的等待和运行数据,观察这些数据以了解数据库的等待瓶颈和健康程度
--等待时间查询
select sid,event,wait_time_micro from v$session_wait order by 3;--通过等待事件和等待时间,了解数据库当前连接会话的等待情况,注意,如果会话众多,需要限定查询输出行数
--top10等待事件
select * from (select event,total_waits,average_wait,time_waited from v$system_event where wait_class<>'Idle'order by time_waited desc) where rownum<=10;--查看当前数据库中top10等待事件,需要分析和关注非空闲的显著等待
--会话统计数据
select s.sid,s.statistic#,n.name,s.value from v$sesstat s,v$statname n where s.statistic#=n.statistic# and n.name='redo size' and sid='&sid';--查询数据库会话的统计信息数据,示例查询了redo的大小,sid需要提供
--系统级统计数据
select * from v$sysstat where name ='redo size';--查询整个系统的统计数据,示例显示数据库实例启动以来的redo日志生成量




--表,索引,分区,约束等是数据库的核心存储对象,其核心信息和对象维护是dba重要的日常工作
--索引信息数据
select * from (select index_name,num_rows,leaf_blocks,clustering_factor from dba_indexes order by 4 desc nulls last) where rownum<11;--索引的基本信息,输出包括叶块数和聚簇因子等,如聚簇因子接近行数可能代表索引效率不高
--分区对象检查
select table_name,partitioning_type,partition_count,status from dba_part_tables;
select table_name,partition_name,high_value from dba_tab_patitions where rownum<11;--查看分区表的基本信息:分区类型,数量,边界值等
--结构信息
set long 12000
select dbms_metadata.get_ddl('&obj_type','&obj_name','&user') from dual;--根据提供的对象类型(table,index)和用户(需大写)获取结构信息
--统计信息收集
exec dbms_stats_gather_table_stats(ownname=>'&owner',tabname=>'&table_name');
exec dbms_stats_gather_index_stats(ownname=>'&owner',indname=>'&index_name');--收集统计信息是一项复杂任务,需谨慎,实例对给出用户,索引名的对象采集统计信息
--约束信息
select constraint_name,constraint_type from dba_constraints where table_name='&table_name'--查询指定数据表的约束信息,包括名称和类型
--失效对象检查
select owner,object_name,object_type,status from dba_objects where status<>'VALID';--检查数据库中的失效对象信息,通常运行健康的数据库中不应有失效的对象。
--闪回查询
闪回查询功能对于恢复dml及部分ddl误操作非常便利,dba必备技能
--时间闪回
select * from &table_name as of timestammp to_timestamp('2015-01-01 00:00:01','yyyy-mm-dd hh24:mi:ss');--闪回表数据,基于时间点的表数据闪回查询
--scn闪回
select * from $table_name as of scn &scn;
--闪回drop
flashback table &old_table to before drop rename to &new_table;--闪回删除操作,对已经删除的表进行闪回恢复并重命名




---awr报告检查
通过awr报告了解日常高峰时段数据库各项指标和运行状况,通过对比报告观察和基线的变化,通过趋势分析持续关注数据库日常运行状态
--本地awr
@?/rdbms/admin/awrrpt--生成本地awr报告信息,需要根据提示输入相应的信息
--指定实例awr
@?/rdbms/admin/awrrpti--生成指定实例awr报告
--awr对比报告
@?/rdbms/admin/awrddrpt--生成本地awr时间段对比报告
--指定实例对比
@?/rdbms/admin/awrddrpi--生成指定实例awr时间段的对比报告
--awr信息提取
@?/rdbms/admin/awrextr --使用awrextr脚本将awr性能数据导出,可以用于留错或者异地分析
--awr信息加载
@?/rdbms/admin/awrload  --awrload,可以将导出的awr性能数据导入到其它数据库中,便于集中和分析




--sql报告检查
对top sql进行持续关注和分析,通过sql报告分析sql的效率,性能,并做出报告和优化建议等
--explain sql执行计划
explain plan for select count(*) from user_objects;
select * from table(dbms_xplan.display);--示例通过explain plan for方法获取sql执行计划
--autotrace sql执行计划
set autotrace traceonly explain;
select count(*) from user_objects;
set autotrace off;
--dbms_xplan sql执行计划
select * from table(dbms_xplan.display_cursor('&sql_id',null,'advanced');--
---10053时间跟踪
alter session set tracefile_identifier='10053';
alter session set events '10053 trace name context forever,level 1';
<execute sql statements>
alter session set events '10053 trace name context off';--通过10053事件来查看执行计划和详细的sql解析过程,trace文件提供了oracle如何选择执行计划的原因
---绑定变量
select dbms_sqltune.extract_bind(bind_data,1),value_string from wrh$_sqlstat where sql_id='&sql_id';--查询sql语句的绑定变量以及历史绑定变量值,需要给定sql_id信息
--sql报告
@?/rdbms/admin/awrsqrpt
@?/rdbms/admin/awrsqrpi
--指定sql的监控报告
select dbms_sqltune.report_sql_monitor(sql_id=>'&sql_id',report_level=>'ALL',tyoe=>'ACTIVE')as report from dual;--生成指定sql_id的sql monitor report




--定时任务检查
检查数据库定时任务执行情况,确保后台任务正确执行,尤其应关注统计信息收集等核心人物
用户定时任务
select job,log_user,last_date,next_date,intercal,broken,failures from dba_jobs;--查询用户的定时任务job信息,确保任务在期望的时间成功执行,这是dba的重要工作之一
--系统定时任务
select job_name,start_date,repeat_interval from dba_scheduler_jobs;--查询系统定时调度信息,查询显示了任务名称,初始启动日期以及重复间隔
--系统定时任务-11g+
select client_name,mean_job_duration from dba_autotash_client;--11g之后增加的字典表,记录每个在7天和30天维护任务的统计信息,查询显示名称和平均执行时间
--启停统计信息任务-10g
exec dbms_scheduler.disable('SYS.GATHER_STATS_JOB');
EXEC DBMS_SCHEDULER.ENABLE('SYS.GATHER_STATS_JOB');--关闭和开启oracle 10g统计信息自动采集任务
--启停统计信息任务-11g+
exec dbms_auto_task_admin.disable(client_name=>'auto optimizer stats collection',operation=> null,window_name=>null);
exec dbms_auto_task_admin.enable(client_name=>'auto optimizer stats collection',operation=> null,window_name=>null);--关闭和开启统计信息自动采集任务






--备份
数据备份重于一切,日常应检查备份执行情况,并检查备份的有效性,确保本分能够保障数据安全,备份安全加密也应兼顾
---用户模式exp/imp
exp enmo/enmo file=/enmo.dmp log=/enmo.log owner=enmo
imp enmo/enmo file=/enmo.dmp log=/enmo.log fromuser=enmo touser=abby
--用户模式expdp/impdp
expdp system/manager directory=svr_dir schemas=scott dumpfile=expdp.dmp;
impdp system/manager directory=svr_dir schemas=scott dumpfile=expdp.dmp remap_schema=scott:enmo remap_tablespace=sers:enmo;
--表模式expdp/impdp
expdp scott/tiger directory=svr_dir tables=emp,dept dumpfile=tables.dmp;
impdp scott/tiger directory=svr_dir dumpfike=table.dmp table=emp,dept;
--物理备份检查
select backup_type,start_time,completion_time,block_size from v$backup_set;--检查备份集信息,确保备份有效和及时是dba的重要工作之一,rman的备份信息记录在控制文件中
--控制文件
--自动控制文件备份(控制文件备份的几种方法??)
show all
configure controlfile autobackup on;--控制文件对数据库非常重要,建议启动控制文件的自动备份,示范显示的是通过rman的设置
--手动控制文件备份
ater database backup controlfile to '/tmp/control.bak';--通过rman或者sql命令手动备份控制文件,备份的是控制文件的二进制拷贝
--转储控制文件
alter session set events 'immediate trace name control level 8';--通过命令转储控制文件二进制信息到文本,研究这些信息,可以极大加深对于数据库的了解
alter database backup controlfile to trace;--通过sql命令转储控制文件到文本,可以用于重建控制文件
--rman备份数据库
backup format '/data/backup/%U'database plus archivelog;--对于dba备份是第一重要的工作,在归档模式下,执行全库备份可以简化为示例的一条命令(需要根据容量进行分片)




---基本信息检查
基本信息包括版本,组建,补丁集等信息,定期检查数据库信息并登记在案是数据库生命周期管理的重要内容之一
--版本组件
select * from v$version;
select * from v$option;--查看数据库的组件信息
---容量检查
asmcmd>lsdg
select group_number,mount_status,total_mb,free_mb from v$asm_disk;
select group_number,name,state,total_mb,free_mb from v$asm_diskgroup;--如果使用了asm管理,可以通过示例查看asm磁盘及磁盘组容量等
---psu检查
select * from dba_registry_history;--查看数据库的版本升级历史信息
$ORACLE_HOME/OPatch/opatch Isinventory--查询数据库补丁历史信息,是系统级命令的工具



















  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle官方文档是学习和了解Oracle数据库的重要资源之一。对于一个DBA(数据库管理员),研读Oracle官方文档是非常重要的。官方文档提供了丰富的技术指南、手册、教程和示例,可以帮助DBA深入理解Oracle数据库的各个方面。 如果有2天的时间可以专门用来学习Oracle官方文档,DBA可以从以下几方面进行学习和了解: 首先,了解Oracle数据库的基本概念和架构。官方文档提供了详细的介绍和解释,可以帮助DBA建立起对Oracle数据库的整体认识。 其次,掌握Oracle数据库的安装和配置。官方文档提供了详细的安装指南和配置说明,DBA需要了解如何正确地安装和配置Oracle数据库环境。 然后,学习Oracle数据库的管理和维护。官方文档包含了大量关于数据库管理和维护的指导,包括如何进行备份和恢复、性能优化、安全管理等方面的内容。 最后,深入研究Oracle数据库的高级特性和功能。官方文档提供了各种高级特性的详细介绍和使用方法,如分区、集群、复制等。DBA可以选择自己感兴趣的主题进行深入学习。 通过花2天的时间仔细阅读Oracle官方文档,DBA可以获得大量有关Oracle数据库的知识和技能。然而,要想真正掌握Oracle数据库,还需要不断地实践和实际操作,结合实际情况进行学习和应用。官方文档只是一个学习的起点,通过不断地学习和实践,DBA可以逐渐成为一名熟练的Oracle数据库管理员。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值