加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle 11g R2 常见问题处理

发布时间:2020-12-12 13:29:28 所属栏目:百科 来源:网络整理
导读:--======================查询Oracle错误日志和警告日志 通过命令查看错误日志目录 SQL show parameter background_dump_dest; 根据错误提示的PID:3159 模糊查询对应的错误日志 find -name "*ora*3159*.trc" more orcl_ora_3159.trc 查询归档日志 SQL select
--======================查询Oracle错误日志和警告日志

通过命令查看错误日志目录
SQL> show parameter background_dump_dest;
根据错误提示的PID:3159 模糊查询对应的错误日志
find -name "*ora*3159*.trc"
more orcl_ora_3159.trc

查询归档日志
SQL> select * from v$recovery_file_dest;

删除归档日志
$ rman
RMAN> connect target sys/xxxxx
RMAN> crosscheck archivelog all;
RMAN> delete ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';

查询警告日志
$ find -name "alert*.log"
$ more alert_orcl.log;


--======================强制中止正在执行的SQL语句

-- 1 查询正在执行的sql语句
select b.sid,b.username,b.serial#,a.spid,b.paddr,c.sql_text,b.machine
from v$process a,v$session b,v$sqlarea c
where a.addr = b.paddr
and b.sql_hash_value = c.hash_value;

-- 2 根据sid与serial# kill 需要中止的sql语句
? select sql_text,b.sid,'alter system kill session'''||b.SID||','||b.serial#||''';',b.username
from v$process a,v$sqlarea c
where a.addr = b.paddr
and b.sql_hash_value = c.hash_value

-- 3 查询oracle当前被锁对象
select a.session_id,c.serial#,a.locked_mode,a.oracle_username,a.os_user_name,c.machine,
??????? c.terminal,b.object_name,c.logon_time
from?? v$locked_object a,all_objects b,v$session c
where? a.object_id = b.object_id and a.session_id = c.sid
order? by c.sid,c.serial#;


--======================表空间不足引起的问题及解决方法

-- 1 向数据库导入数据时报了ORA-01653: unable to extend table错误,网上查了下原因是由于表空间不足引起的;

查询表空间使用情况语句

select a.tablespace_name,a.bytes/1024/1024 total,(a.bytes-b.bytes)/1024/1024 used,b.bytes/1024/1024 free,round((a.bytes-b.bytes)/a.bytes*100,2) used_rate
from
(
select tablespace_name,sum(bytes) bytes
from dba_data_files
group by tablespace_name
) a,
(
select tablespace_name,sum(bytes) bytes,max(bytes) largest
from dba_free_space
group by tablespace_name
) b
where a.tablespace_name = b.tablespace_name;


-- 2 以上语句可以查询出表空间使用情况,如果发现表空间容量不足,查看数据文件文件所在位置及文件编号

查看数据文件位置
? select file#,name from v$datafile;
?
-- 3 修改表空间大小有两种方法
?
修改数据文件大小
? alter database datafile '/usr/oracle/app/oradata/orcl/Test.dbf' resize 20480M; 修改后的大小要比实际大小大至少50%,最好大一倍以上
?
增加数据文件
? alter tablespace XXX add datafile '/home/oracle/data/XXX_1.dbf' size 1024M;


? 1.生成单实例 AWR 报告:


@$ORACLE_HOME/rdbms/admin/awrrpt.sql


2.生成 Oracle RAC AWR 报告:


@$ORACLE_HOME/rdbms/admin/awrgrpt.sql


3.生成 RAC 环境中特定数据库实例的 AWR 报告:


@$ORACLE_HOME/rdbms/admin/awrrpti.sql


4.生成 Oracle RAC 环境中多个数据库实例的 AWR 报告的方法:


@$ORACLE_HOME/rdbms/admin/awrgrpti.sql


5.生成 SQL 语句的 AWR 报告:


@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql


6.生成特定数据库实例上某个 SQL 语句的 AWR 报告:


@$ORACLE_HOME/rdbms/admin/awrsqrpi.sql


--生成 AWR 时段对比报告


7.生成单实例 AWR 时段对比报告


@$ORACLE_HOME/rdbms/admin/awrddrpt.sql


9.生成 Oracle RAC AWR 时段对比报告


@$ORACLE_HOME/rdbms/admin/awrgdrpt.sql


10.生成特定数据库实例的 AWR 时段对比报告


@$ORACLE_HOME/rdbms/admin/awrddrpi.sql



--查询redo log文件状态

select * from v$log;
select * from v$logfile;


--查询archive log目录
select open_mode from v$database;
archive log list;
show parameter log_archive_dest;


--查询alert日志
show parameter background_dump_dest;



--查询Oracle正在执行的sql语句及执行该语句的用户

SELECT b.sid oracleID,?
?????? b.username 登录Oracle用户名,?
?????? b.serial#,?
?????? spid 操作系统ID,?
?????? paddr,?
?????? sql_text 正在执行的SQL,?
?????? b.machine 计算机名 ?
FROM v$process a,v$sqlarea c ?
WHERE a.addr = b.paddr ?
?? AND b.sql_hash_value = c.hash_value

--查看正在执行sql的发起者的发放程序

SELECT OSUSER 电脑登录身份,?
?????? PROGRAM 发起请求的程序,?
?????? USERNAME 登录系统的用户名,?
?????? SCHEMANAME,?
?????? B.Cpu_Time 花费cpu的时间,?
?????? STATUS,?
?????? B.SQL_TEXT 执行的sql ?
FROM V$SESSION A ?
LEFT JOIN V$SQL B ON A.SQL_ADDRESS = B.ADDRESS ?
?????????????????? AND A.SQL_HASH_VALUE = B.HASH_VALUE ?
ORDER BY b.cpu_time DESC

--查出oracle当前的被锁对象

SELECT l.session_id sid,?
?????? s.serial#,?
?????? l.locked_mode 锁模式,?
?????? l.oracle_username 登录用户,?
?????? l.os_user_name 登录机器用户名,?
?????? s.machine 机器名,?
?????? s.terminal 终端用户名,?
?????? 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 ?
ORDER BY sid,s.serial#;

--kill掉当前的锁对象可以为

alter system kill session 'sid, s.serial#‘;





11.生成 Oracle RAC 环境下特定(多个)数据库实例的 AWR 时段对比报告

@$ORACLE_HOME/rdbms/admin/awrgdrpi.sql

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读