--======================查询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;删除归档日志
$ rmanRMAN> connect target sys/xxxxxRMAN> 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.machinefrom v$process a, v$session b, v$sqlarea cwhere a.addr = b.paddrand b.sql_hash_value = c.hash_value;-- 2 根据sid与serial# kill 需要中止的sql语句
select sql_text, b.sid,b.serial#, 'alter system kill session'''||b.SID||','||b.serial#||''';',b.usernamefrom v$process a, v$session b, v$sqlarea cwhere a.addr = b.paddrand 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_timefrom v$locked_object a, all_objects b, v$session cwhere a.object_id = b.object_id and a.session_id = c.sidorder 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) bytesfrom dba_data_filesgroup by tablespace_name) a,(select tablespace_name,sum(bytes) bytes,max(bytes) largestfrom dba_free_spacegroup by tablespace_name) bwhere 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$session b, 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