2
DBA的一天
4639
1页
195次
墨值5
1
2
3
4
5
6
7
8
9
10
11
12
通过查询基本视图确认数
据库和实例处于正常运行状
态,可以对外提供数据服务。
Oracle REDO 日志是数据库
的核心组件检查其状态
维护其成员监控其归档
审核其性能 DBA 的重
要工作。
确保数据存储空间可用
定期检查表空间余量
行表空间和文件维护。
TOP SQL
析,通 SQL
告分析 SQL 的效率、性能,
并做出报告和优化建议
等。
Lock/Latch
制并发的核心手段检查
相关信息可以监控数据库
的事务和运行状况。
AWR报告检查
通过 AWR 报告了解日常高峰
时段数据库各项指标和运行状
通过对比报告观察和基线
的变化通过趋势分析持续关
注数据库日常运行状态。
基本信息检查
基本信息包括版本组件
丁集等信息定期检查数据库
信息并登记在案是数据库生命
周期管理的重要内容之一。
检查数据库各类日志信
确认数据库实例
集群等是否出现错误
告警如存在问题
需要进一步分析和应对。
索引、分区约束等是数据库
的核心存储对象,其核心信息和对
象维护是 DBA 重要的日常工作。
数据备份重于一切,日常
应检查备份执行情况,
检查备份的有效性,确保
备份能够保障数据安全
备份安全加密也应兼顾。
重做日志维护
活动状态检查
日志信息检查
空间信息检查
锁 闩信息检查
Wait Statistics 数据分别代表了数据
库的等待和运行数据观察这些数据以
了解数据库的等待瓶颈和健康程度。
等待 统计数据
对象检查
SQL报告检查
备份
SELECT sessions_current,sessions_
highwater FROM v$license;
SQL> archive log list;
SQL> startup mount
SQL> alter database archivelog;
检查数据库是否处于归档模式。
MOUNT 状态改变归档模式,启动归档模式之后 ,
务必制订备份归档的日常策略,防止磁盘空间被耗尽。
SELECT group#,sequence#,archived,status FROM v$log;
select group#, member from v$logfile where type='STANDBY';
select group#, dbid, bytes from v$standby_log;
查询日志组号、序号 , 是否归档完成和状态信息,
如多组日志显示 ACTIVE 状态,则可能说明数据库存在 IO 方面的性能问题。
SELECT group#,member FROM v$logfile;
查看日志组和成员信息。
查看 DataGuard 及 Active DataGuard 中 standby Redo log 的信息
实例当前会话数和启动最高连接会话数量。
SELECT inst_id,username,COUNT(*)
FROM gv$session
GROUP BY inst_id,username;
查询数据库以用户分组连接数。
当连接数据库实例出现缓慢、挂起等现象,需要进行
诊断和分析,甚至可能需要重新启动数据库实例。
信息采集
跟踪
SQL> sqlplus -prelim / as sysdba
SQL> oradebug setmypid
SQL> oradebug unlimit
SQL> oradebug hanganalyze 3
SQL> oradebug dump systemstate 266
SQL> oradebug hanganalyze 3
SQL> oradebug dump systemstate 266
SQL> alter session set events '10046 trace
name context forever,level 12';
SQL> shutdown immedaite;
SQL> startup mount;
SQL> alter session set events '10046
trace name context forever,level 12';
SQL> alter database open;
如果在数据库关闭、启动时遇到阻塞、挂起等,可以通过
示范命令进行跟踪,获取跟踪文件进行分析。
SQL> alter system checkpoint;
SQL> alter system archive log current;
SQL> shutdown immediate;
如果数据库出现异常需要重新启动,
可以通过示范命令执行检查点、归档命令,
然后尝试以立即方式关闭数据库。
tnsping
tns_name
在数据库服务器上,通过 lsnrctl 工具检查监听
状态和服务信息。
在服务器上,可以通过 adrci 工具,
显示各类告警文件,检查监听器日志,
可以诊断监听问题。
<<<<< 间隔一定时间,如 20 秒,执行下一次数据采样 .
示范命令,通过采集系统的 Hang 信息、系统状态信息等,
可以分析系统挂起的原因,间隔采样,可以用于对比变化,
辅助分析。
通过 tnsping 工具测试配置的服务名称,
观察网络是否连通以及响应时间。
lsnrctl status
lsnrctl status
lsnrctl service
adrci>show alert
SQL> shutdown abort;
SQL> startup nomount;
SQL> alter database mount;
SQL> alter database open;
如果立即方式不能顺利关闭数据库,
强制的关闭方式为 abort。示范命令
可以通过分步骤的方式执行数据库启动。
当遇到 ORA- 错误,而数据库的输出信息不足时,可以采用 errorstack 进行
跟踪,采集更详细的转储信息。
在数据库出现锁竞争和阻塞时,需要排查和处理锁定,
必要时通过 Kill 阻塞进程消除锁定。
查询当前锁事物中阻塞会话与被阻塞会话的 sid,sql_id 和状态信息。
通过 sql_id 查询得到 SQL 文本,例如通过 sql_id 查询出阻塞的 SQL 语句。
通过 sid 查询阻塞对象的详细信息如对象名称,所属用户等。
有时对于活动进程,在系统层面中止更为快速安全,示例找到系统进程号,然后 kill 中止。
注意:无论何时,需要认真分析,并且避免误杀重要后台进程。
在 Oracle 实例内杀死阻塞的会话进程 , 其中 sid,serial# 为中止会话对应信息,来自 v$session。
示例显示了对 ORA-600 错误设置跟踪,并关闭。
SQL> alter system set events='600 trace name
errorstack forever, level 10';
SQL> alter system set events='600 trace name
errorstack off';
安全停库
连通性
强制停库
SQL> SELECT sid,sql_id,status,blocking_session
FROM v$session WHERE sid in(SELECT session_id FROM v$locked_object);
SQL>SELECT pro.spid,pro.program
FROM v$session ses,v$process pro
WHERE ses.sid=&sid and ses.paddr=pro.addr;
# kill -9 spid
查询阻塞会话
SQL> SELECT sql_id,sql_text FROM v$sqltext WHERE sql_id='&sql_id' ORDER BY piece;
SQL> SELECT owner,object_name,object_type FROM dba_objects
WHERE object_id in (SELECT object_id FROM v$locked_object);
SQL>alter system kill session 'sid,serial#';
阻塞SQL文本
锁阻塞对象信息
查询阻塞会话
杀系统进程
监听器
监听日志检查
$ exp enmo/enmo file=/enmo.dmp log=
/enmo.log owner=enmo
$ imp enmo/enmo file=/enmo.dmp log=/
enmo.log fromuser=enmo touser=enmo
将数据按指定用户导出。
将数据库进行按用户导出和导入示例,impdp 示例中,
分别重新映射了导入的 Schema 和表空间。
$ 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=users:enmo;
用户模式exp/imp
用户模式-expdp/impdp
将数据库进行按表导出和导入。
$ expdp scott/tiger directory=svr_dir
tables=emp,dept dumpfile=tables.dmp;
$ impdp scott/tiger directory=svr_
dir dumpfile=tables.dmp tables=emp,dept;
表模式-expdp/impdp
RMAN> show all;
RMAN> CONFIGURE CONTROLFILE
AUTOBACKUP ON;
通过 RMAN 或者 SQL 命令手动备份控制文件,
备份的是控制文件的二进制拷贝。
控制文件对数据库十分重要,建议启动控制文件的自动备份,
示范显示的是通过 RMAN 的设置。
RMAN> backup current controlfile;
SQL> alter database backup controlfile
to '/tmp/control.bak';
自动控制文件备份
手动控制文件备份
通过以上命令转储控制文件二进制信息到文本,研究这些信息,
可以极大加深对于数据库的了解。
SQL> alter session set events 'immediate
trace name controlf level 8';
通过 SQL 命令转储控制文件到文本,可以用于重建控制文件。
SQL> alter database backup controlfile to trace;
转储控制文件
SELECT * FROM DBA_DB_LINKS;
Bethune 对连入数据库的 IP 做链接趋
势和孤立 Ip 分析,帮助工程师发现链
接异常的情况
SQL> @?/rdbms/admin/awrrpt
生成本地 AWR 报告信息,需要根据提示输入相应的信息。
生成指定实例 AWR 报告
SQL> @?/rdbms/admin/awrrpti
@$ORACLE_HOME/rdbms/admin/awrgrpt.sql
@$ORACLE_HOME/rdbms/admin/awrgrpti.sql
本地AWR
指定实例AWR
RAC AWR
生成本地 AWR 时间段对比报告
生成指定实例 AWR 时间段对比报告
@$ORACLE_HOME/rdbms/admin/perfhubrpt.sql
系统性能集成报告
SQL> @?/rdbms/admin/awrddrpt
SQL> @?/rdbms/admin/awrddrpi
AWR对比报告
指定实例对比
实例状态
SELECT instance_name,status
FROM gv$instance
实例状态 实例 / 数据库状态
查询返回实例名称、状态,正常状态应为
Open。
$crsctl status resource -t
集群状态
select name,open_mode from
v$PDBS
PDB 状态
GDSCTL> config shard
Sharding 状态
闩检查
SELECT name,gets,misses,
immediate_gets,spin_gets
FROM v$latch ORDER BY 2;
检查数据库闩的使用情况,misses、
spin_gets 统计高的,需要关注。
闩使用检查
SQL> SELECT addr,gets FROM v$latch_children
WHERE name='cache buffers chains';
SQL> SELECT hladdr,file#,dbablk FROM x$bh
WHERE hladdr in
(SELECT addr FROM v$latch_children WHERE addr='
仅供学习:通过获得 Latch 的地址,找到该 Latch 守护的 X$BH 中相关的 Buffer。
物理备份检查
如果数据库因归档耗尽空间,可以指定另外的
归档路径,以尽快归档日志,恢复数据库运行。
调整归档路径
当连接数据库出现异常,
需要检测包括网络连通性,
监听器状态等信息。
结构信息
控制文件
会话信息
连接用户
RMAN> backup format '/data/backup/%U'
database plus archivelog;
对于 DBA 备份是第一重要的工作,在归档模式下,
执行全库备份可以简化为示例的一个命令(需要根据容量进行分片)
SQL> SELECT * FROM v$version;
查看数据库的版本信息
RMAN备份数据库
SQL> ALTER DATABASE ADD LOGFILE GROUP 10
('/oracle/dbs/log1c.rdo') SIZE 500M;
SQL> ALTER DATABASE ADD LOGFILE MEMBER
'/oracle/dbs/log2c.rdo' TO GROUP 10;
SQL> ALTER DATABASE DROP LOGFILE GROUP 10;
SQL> ALTER DATABASE DROP LOGFILE
MEMBER '/oracle/dbs/redo03.log';
删除指定日志组或日志成员,注意只能对 INACTIVE 状态的日志执行删除操作。
在日志切换频繁时,可能需要增加日志组或者加大日志大小。
SQL> alter database add logfile thread 2 group 10
增加 RAC 中的日志组
连接异常
实例异常
锁故障排查
闪回查询功能对于恢复 DML 及部分 DDL 误操作
非常便利,DBA 必备技能。
闪回表数据 , 基于时间点的表数据闪回查询。
闪回表数据,基于 SCN 的表数据查询,需要提供 SCN,
如果不明确 SCN,可以通过时间点闪回查询。
闪回删除操作,对已经删除的表进行闪回回复并重命名。
SQL> SELECT * FROM
时间闪回
SQL> SELECT * FROM
SQL> flashback table
SCN闪回
闪回DROP
闪回查询
SELECT sid,event,wait_time_micro
FROM v$session_wait ORDER BY 3;
通过等待事件和等待时间,了解数据库当前连接会话的等待情况。
注意,如果会话众多,需要限定查询输出行数。
查看当前数据中 TOP10 等待事件信息,需要分析和关注非空闲的显著等待。
SQL> 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等待事件
SQL> SELECT * FROM (
SELECT owner,table_name,num_rows
FROM dba_tables ORDER BY num_rows desc nulls last )
WHERE rownum < 11;
SELECT * FROM (
SELECT index_name,num_rows,leaf_
blocks,clustering_factor
FROM dba_indexes ORDER BY 4 desc nulls last)
WHERE rownum<11;
查看表的基本信息数据:属主,表名,记录行数等。
查询给定表(需大写),查询最后的统计信息分析收集时间。
统计信息影响执行计划,当 SQL 执行异常时,需要重点分析统计信息。
索引的基本信息 , 输出包括叶块数和聚簇因子等,
如聚簇因子接近行数可能代表索引效率不高。
SQL> SELECT table_name,partitioning_type,
partition_count,status
FROM dba_part_tables;
SQL> SELECT table_name,partition_name,high_value
FROM dba_tab_partitions WHERE rownum <11;
查看分区表的基本信息:分区类型,数量 , 边界值等。
SQL> set long 12000
SQL> SELECT dbms_metadata.get_ddl
('
根据提供的对象类型 (TABLE,INDEX) 和用户(需大写)
获取结构信息。
启停统计信息任务-11g+
SQL> exec DBMS_AUTO_TASK_ADMIN.DISABLE
(client_name => 'auto optimizer stats collection',
operation => NULL,window_name => NULL);
SQL> exec DBMS_AUTO_TASK_ADMIN.ENABLE
(client_name => 'auto optimizer stats collection',
operation => NULL,window_name => NULL);
关闭和开启统计信息自动采集任务。
SELECT client_name,mean_job_duration
FROM dba_autotask_client;
SQL> SELECT backup_type,start_time,completion_time,block_size
FROM v$backup_set;
11g 之后增加的字典表,记录每个在 7 天和 30 天维护任务的统计信息,
查询显示名称和平均执行时间。
检查备份集信息,确保备份有效和及时是 DBA 的重要工作之一。RMAN 的备份信息记录
在控制文件中。
SQL> SELECT table_name,last_analyzed FROM dba_tab_statistics
WHERE table_name='
表信息数据
表统计信息
SQL> 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='
查询数据库会话的统计信息数据,示例查询了 REDO 的大小,
SID 需要提供。
查询整个系统的统计数据,示例显示数据库实例启动以来的
REDO 日志生成量。
SQL> SELECT * FROM v$sysstat WHERE name
='redo size';
会话统计数据
系统级统计数据
SQL> @?/rdbms/admin/awrsqrpt
SQL> @?/rdbms/admin/awrsqrpi
生成指定 SQL_ID 的 SQL Monitor Report
SELECT dbms_sqltune.report_sql_monitor(sql_id=>
指定SQL的监控报告
监听日志检查
索引信息数据
Dblink信息
分区对象检查
REDO组和成员
回复 ”D2 ”
回复 ”D3 ”
回复 ”D4 ”
回复 ”D5 ”
回复 ”D6 ”
回复 ”D8 ”
回复 ”D9 ”
回复 ”D10 ”
回复 ”D12 ”
回复 ”D11 ”
回复 ”D7 ”
关注云和恩墨微信,回复关键字
"D1" 查看此步骤下全部命令
errorstack 分析
REDO维护
归档维护
SQL> alter system set log_archive_
dest_2='location=
查看锁会话 ID,类型,持有时间等 ,
注意如果 block >1, 可能意味着阻塞了其他会话。
SQL> SELECT sid, type, lmode, ctime, block
FROM v$lock WHERE type not in ('MR','AE');
查看数据库表空间的使用信息。
SQL> SELECT * FROM sys.sm$ts_used;
查看数据库表空间的剩余空间。
ASM 磁盘组的空间
SQL> SELECT * FROM sys.sm$ts_used;
SQL> select group_number,name,total
_mb,free_mb from v$asm_diskgroup;
空间使用
alter database datafile '
文件维护
锁信息
查询 SQL 语句的绑定变量以及历史绑定变量值 , 需要给定 SQL_ID 信息。
SELECT dbms_sqltune.extract_bind(bind_data,
1).value_string FROM wrh$_sqlstat WHERE sql_id
= '
绑定变量
版本组件
SQL> SELECT * FROM v$option;
查看数据库的组件信息
ASMCMD> lsdg
SQL> SELECT group_number,mount_status,total_mb,free_mb
FROM v$asm_disk;
SQL> SELECT group_number,name,state,total_mb,free_mb
FROM v$asm_diskgroup;
如果使用了 ASM 管理,可以通过示例查看 ASM 磁盘及磁盘组容量等信息。
容量检查
对数据库的表空间容量进行扩容。
SQL报告
SQL> explain plan for SELECT count(*) FROM user_objects;
SQL> SELECT * FROM table(dbms_xplan.display);
通过 DBMS_XPLAN 包获取 SQL 执行计划,sql_id 需要提供。
通过 SQL*Plus 的 autotrace 功能获取 SQL 执行计划。
示例通过 explain plan for 方法获取 SQL 执行计划。
SQL> set autotrace traceonly explain;
SQL> SELECT count(*) FROM user_objects;
SQL> set autotrace off;
SQL> SELECT * FROM table(dbms_xplan.display_cursor
('
Autotrace SQL执行计划
DBMS_XPLAN SQL执行计划
Explain SQL执行计划
定时任务检查
检查数据库定时任务执行
情况,确保后台任务正确
执行,尤其应关注统计信
息收集等核心任务。
系统定时任务-11g+
SELECT constraint_name,
constraint_type FROM dba_constraints
WHERE table_name='
约束信息
SELECT owner,object_name,object_type,status
FROM dba_objects WHERE status <>'VALID';
检查数据库中的失效对象信息,
通常运行健康的数据库中不应有失效的对象。
失效对象检查
SQL> exec dbms_stats.gather_table_stats
(ownname=>'
SQL> exec dbms_stats.gather_index_stats
(ownname=>'
收集统计信息是一项复杂任务,需谨慎,示例对给出用户、
索引名的对象采集统计信息。
统计信息收集
查询指定数据表的约束信息,包括名称和类型。
启停统计信息任务-10g
关闭和开启 oralce 10g 统计信息自动采集任务
SQL>exec dbms_scheduler.disable
('SYS.GATHER_STATS_JOB');
SQL>exec dbms_scheduler.enable
('SYS.GATHER_STATS_JOB');
SELECT job_name,start_date,
repeat_interval
FROM dba_scheduler_jobs
查询系统定时调度信息,查询显示了任务名称、
初始启动日期以及重复间隔。
系统定时任务
SELECT job,log_user,last_date,next_date,
interval,broken,failuresFROM dba_ jobs;
查询用户的定时任务(job)信息,确保任务在期望的时间
成功执行,这是 DBA 的重要工作之一。
用户定时任务
SQL> SELECT * FROM dba_registry_history;
查询数据库的版本升级历史信息。
$ $ORACLE_HOME/OPatch/opatch lsinventory
查询数据库补丁历史信息,是系统级的命令工具。
PSU检查
SQL> alter session set tracefile_identifier='10053';
SQL> alter session set events '10053 trace name context
forever ,level 1';
SQL> <
通过 10053 事件来查看执行计划和详细的 SQL 解析过程,trace 文件提供了 Oracle
如何选择执行计划的原因。
10053事件跟踪
SQL> SELECT value FROM v$diag_info WHERE
name='Default Trace File';
SQL> show parameter user_dump_dest
获取会话或全局转储位置,诊断时需查相应文件内容。
Trace文件检查
SELECT value FROM v$parameter
WHERE name='open_cursors';
查询给定参数的设置值,
示例参数缺省值为 300,
通常中等规模数据库推荐设置为 1000。
ALTER SYSTEM SET undo_retention=3600
COMMENT='default 900' SID='*' SCOPE=both;
修改给定的初始化参数,RAC 环境需要注意 SID 参数。
ALTER SYSTEM SET "_optimizer_use_
feedback"=FALSE SCOPE=spfile;
应对特殊问题,有时需设置以下划线开头的隐含参数。
ALTER SYSTEM SET ”_optimizer_use_
feedback”=FALSE SCOPE=spfile;
示例关闭了 11.2 中引入的 Cardinality Feedba
ck
基线反馈特性。
ALTER SYSTEM SET “_use_single_log_
writer”=TRUE;
示例关闭了 12c 中的并行 LGWR 特性
参数修改参数检查
隐含参数
SQL> ALTER SYSTEM SWITCH LOGFILE;
切换日志组,开始写入下一个日志组。
SQL> ALTER SYSTEM ARCHIVE LOG
CURRENT;
对当前日志组执行归档,切换到下一个日志组 ,
RAC 会对所有实例执行归档,Thread 参数指定
归档实例。
执行归档
数据库模型优化服务 数据库系统性能优化服务 数据库迁移服务 数据归档服务 数据库培训服务 数据恢复软件与服务
云和恩墨(北京)信息技术有限公司
YUNHE ENMO (BEIJING) INFORMATION TECHNOLOGY CO.,LTD.
www.enmotech.com
4006608755
广州办事处
成都办事处 南京办事处 贵阳办事处
上海办事处北京总公司
查看数据库表空间的数据文件信息。
SQL> SELECT tablespace_name,
file_name
FROM dba_data_files;
文件信息
使用 awrextr 脚本将 AWR 性能数据导出,
可以用于留错或者异地分析。
SQL>@?/rdbms/admin/awrextr
AWR信息提取
通过 awrload,可以将导出的 AWR 性能数据导入
到其他数据库中,便于集中和分析。
SQL>@?/rdbms/admin/awrload
AWR信息加载
LISTENER
LISTENER_SCAN1
云和恩墨专注于 SQL 审核
和优化的工具产品,致力于在
源头开发环节控制 SQL 质量,
提升应用性能。
云和恩墨专业的数据恢复,
在各种危急故障下挽救损坏
的文件和数据。
云和恩墨分布式存储解决方案,
上百倍的改善数据库 I/O 性能。
zData
TM
DBA的一天
Oracle Life
Oracle Data
Recovery
回复 ”10053 ”
回复 ”SQL 执行”
回复 ”zData ”
回复 ”转储 ”
回复 ”Recovery”
回复 ”z3 ”
回复 ”闪回 ”
回复 ”errorstack ”
回复 ”监听 ”
回复 ”实例异常 ”
&path
' resize 900M;
alter tablespace
&tbs_name
add datafile
'
&path
' size 900M;
&addr
');
&sid
';
&table_name
';
&table_name
'
&owner
',tabname=>'
&table_name
');
&owner
',indname=>'
&index_name
');
&sql_id
',null,'advanced');
&sql_id
',
report_level => 'ALL',
TYPE=> 'ACTIVE') as report FROM dual;
&sql_id
';
&obj_type
','
&obj_name
','
&user
') FROM dual;
&table_name
as of timestamp
to_timestamp('2015-02-04 00:02:09','
yyyy-mm-dd hh24:mi:ss');
&table_name
as of scn
&scn;
&old_table
to
before drop rename to
&new_table
;
execute sql statements
>
SQL> alter session set events '10053 trace name context off';
&path
' sid='
&sid
';
回复 ”Bethune ”
Bethune 数据库智能诊断平
台,从数据库安全、稳定性、
性能等各个维度对系统做体
验,帮助您快速发现系统的
现有和潜在问题,免于隐患。
Bethune
数据和云微信号:OraNews
of 1
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜
近期活动
全部
暂无活动,敬请期待...
相关课程
全部