Oracle数据库内常用的一些命令和操作
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">前言</a></li><li><a href="#_label1">1. 检查数据库状态</a></li><li><a href="#_label2">2. 检查表空间使用情况</a></li><li><a href="#_label3">3. 检查数据库日志</a></li><li><a href="#_label4">4. 检查数据库性能</a></li><li><a href="#_label5">5. 检查数据库参数</a></li><li><a href="#_label6">6. 检查数据库对象状态</a></li><li><a href="#_label7">7. 检查数据库备份</a></li><li><a href="#_label8">8. 检查数据库连接</a></li><li><a href="#_label9">9. 检查数据库版本</a></li><li><a href="#_label10">10. 检查数据库锁</a></li><li><a href="#_label11">11. 检查数据库存储</a></li><li><a href="#_label12">12. 检查数据库统计信息</a></li><li><a href="#_label13">13. 检查数据库角色和权限</a></li><li><a href="#_label14">14. 检查数据库错误</a></li><li><a href="#_label15">15. 退出 SQL*Plus</a></li></ul></div><p class="maodian"><a name="_label0"></a></p><h2>前言</h2><p>使用 <code>sqlplus / as sysdba</code> 登录到 Oracle 数据库后,你可以执行一系列命令来检查数据库的状态、配置和性能。以下是一些常用的命令和操作,帮助你检查 Oracle 数据库的健康状况:</p>
<p class="maodian"><a name="_label1"></a></p><h2>1. 检查数据库状态</h2>
<ul><li><p>查看数据库是否已启动:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT status FROM v$instance;</pre></div>
<ul><li>正常状态应为 <code>OPEN</code>。</li></ul></li><li><p>查看数据库的启动时间:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT startup_time FROM v$instance;</pre></div></li></ul>
<p class="maodian"><a name="_label2"></a></p><h2>2. 检查表空间使用情况</h2>
<ul><li>查看表空间的使用情况:<div class="jb51code"><pre class="brush:sql;">SELECT tablespace_name, ROUND(SUM(bytes) / 1024 / 1024, 2) AS total_mb, ROUND(SUM(bytes - NVL(free_bytes, 0)) / 1024 / 1024, 2) AS used_mb, ROUND(SUM(free_bytes) / 1024 / 1024, 2) AS free_mb FROM (SELECT tablespace_name, file_id, SUM(bytes) AS bytes FROM dba_data_files GROUP BY tablespace_name, file_id) LEFT JOIN (SELECT tablespace_name, file_id, SUM(bytes) AS free_bytes FROM dba_free_space GROUP BY tablespace_name, file_id) USING (tablespace_name, file_id) GROUP BY tablespace_name;</pre></div>
<ul><li>关注 <code>free_mb</code>,确保表空间有足够的空闲空间。</li></ul></li></ul>
<p class="maodian"><a name="_label3"></a></p><h2>3. 检查数据库日志</h2>
<ul><li>查看告警日志(Alert Log):<div class="jb51code"><pre class="brush:sql;">SELECT value FROM v$diag_info WHERE name = 'Diag Trace';</pre></div>
<ul><li>然后到返回的路径下查看 <code>alert_<SID>.log</code> 文件,检查是否有错误或警告信息。</li></ul></li></ul>
<p class="maodian"><a name="_label4"></a></p><h2>4. 检查数据库性能</h2>
<ul><li><p>查看当前会话的等待事件:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT event, total_waits, time_waited FROM v$session_event WHERE sid = (SELECT sid FROM v$mystat WHERE rownum = 1);</pre></div>
<ul><li>关注 <code>time_waited</code>,识别性能瓶颈。</li></ul></li><li><p>查看当前活动的 SQL 语句:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT sid, serial#, sql_id, sql_text FROM v$session WHERE status = 'ACTIVE' AND sql_id IS NOT NULL;</pre></div></li></ul>
<p class="maodian"><a name="_label5"></a></p><h2>5. 检查数据库参数</h2>
<ul><li>查看当前数据库参数:<div class="jb51code"><pre class="brush:sql;">SHOW PARAMETER;</pre></div>
<ul><li>或者查看特定参数:<div class="jb51code"><pre class="brush:sql;">SHOW PARAMETER <parameter_name>;</pre></div></li></ul></li></ul>
<p class="maodian"><a name="_label6"></a></p><h2>6. 检查数据库对象状态</h2>
<ul><li><p>检查无效对象:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT owner, object_name, object_type FROM dba_objects WHERE status = 'INVALID';</pre></div></li><li><p>检查索引的状态:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT index_name, table_name, status FROM dba_indexes WHERE status = 'UNUSABLE';</pre></div></li></ul>
<p class="maodian"><a name="_label7"></a></p><h2>7. 检查数据库备份</h2>
<ul><li>查看最近的 RMAN 备份信息:<div class="jb51code"><pre class="brush:sql;">SELECT * FROM v$rman_backup_job_details ORDER BY start_time DESC;</pre></div></li></ul>
<p class="maodian"><a name="_label8"></a></p><h2>8. 检查数据库连接</h2>
<ul><li><p>查看当前连接的会话:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT sid, serial#, username, status, machine, program FROM v$session;</pre></div></li><li><p>查看数据库的最大连接数和当前连接数:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT resource_name, current_utilization, max_utilization FROM v$resource_limit WHERE resource_name = 'processes';</pre></div></li></ul>
<p class="maodian"><a name="_label9"></a></p><h2>9. 检查数据库版本</h2>
<ul><li>查看数据库版本:<div class="jb51code"><pre class="brush:sql;">SELECT * FROM v$version;</pre></div></li></ul>
<p class="maodian"><a name="_label10"></a></p><h2>10. 检查数据库锁</h2>
<ul><li><p>查看当前锁的信息:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT sid, serial#, username, lockwait, status FROM v$session WHERE lockwait IS NOT NULL;</pre></div></li><li><p>查看锁定的对象:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT * FROM dba_locks;</pre></div></li></ul>
<p class="maodian"><a name="_label11"></a></p><h2>11. 检查数据库存储</h2>
<ul><li><p>查看数据文件的状态:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT file_name, status, bytes / 1024 / 1024 AS size_mb FROM dba_data_files;</pre></div></li><li><p>查看控制文件的状态:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT name, status FROM v$controlfile;</pre></div></li></ul>
<p class="maodian"><a name="_label12"></a></p><h2>12. 检查数据库统计信息</h2>
<ul><li>查看统计信息的收集时间:<div class="jb51code"><pre class="brush:sql;">SELECT table_name, last_analyzed FROM dba_tables WHERE owner = '<schema_name>';</pre></div></li></ul>
<p class="maodian"><a name="_label13"></a></p><h2>13. 检查数据库角色和权限</h2>
<ul><li><p>查看当前用户的角色:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT * FROM session_roles;</pre></div></li><li><p>查看当前用户的权限:</p>
<div class="jb51code"><pre class="brush:sql;">SELECT * FROM session_privs;</pre></div></li></ul>
<p class="maodian"><a name="_label14"></a></p><h2>14. 检查数据库错误</h2>
<ul><li>查看数据库中的错误信息:<div class="jb51code"><pre class="brush:sql;">SELECT * FROM dba_errors;</pre></div></li></ul>
<p class="maodian"><a name="_label15"></a></p><h2>15. 退出 SQL*Plus</h2>
<ul><li>退出 SQL*Plus:<div class="jb51code"><pre class="brush:sql;">EXIT;</pre></div></li></ul>
<p>通过以上命令,你可以全面检查 Oracle 数据库的健康状况,识别潜在问题并采取相应的措施。</p>
頁:
[1]