欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
精心整理了一套Oracle日常巡檢腳本,速速收藏!

SQL專(zhuān)欄

SQL數據庫基礎知識匯總
SQL數據庫高級知識匯總

前言



0.登錄數據庫

sqlplus / nolog
conn /as sysdba(或者conn 賬號/密碼)

1. 檢查數據庫基本狀況
包含:檢查Oracle實(shí)例狀態(tài),檢查Oracle服務(wù)進(jìn)程,檢查Oracle監聽(tīng)進(jìn)程,共三個(gè)部分。

1.1. 檢查Oracle實(shí)例狀態(tài)
設置打印輸出一行的字符數,這里設置成500。

set linesize 500;
select instance_name,host_name,startup_time,
status,database_status
from v$instance;
其中v$instance是實(shí)例狀態(tài)視圖;
“STATUS”表示Oracle當前的實(shí)例狀態(tài),必須為“OPEN”;
“DATABASE_STATUS”表示Oracle當前數據庫的狀態(tài),必須為“ACTIVE”。

1.2. 檢查Oracle在線(xiàn)日志狀態(tài)

select 
group#,status,type,member 
from v$logfile;
其中v$logfile是描述重做日志信息的視圖,上面的輸出結果應該有3條以上(包含3條)記錄,“STATUS”應該為非“INVALID”,非“DELETED”。
注:“STATUS”顯示為空表示正常。

1.3. 檢查Oracle表空間的狀態(tài)

select 
tablespace_name,status 
from dba_tablespaces;
dba_tablespaces是所有表空間的描述信息,上面的輸出結果中STATUS應該都為ONLINE。

1.4. 檢查Oracle所有數據文件狀態(tài)

select name,status from v$datafile;
其中v$datafile是從oracle的控制文件中獲得的數據文件的信息的,上面的輸出結果中“STATUS”應該都為“ONLINE”。

1.5. 檢查無(wú)效對象

select 
owner,object_name,object_type
from dba_objects
where status!='VALID' 
and owner!='SYS' 
and owner!='SYSTEM';
如果有記錄返回,則說(shuō)明存在無(wú)效對象。若這些對象與應用相關(guān),那么需要重新編譯生成這個(gè)對象,或者:

SELECT 
owner, object_name, object_type
FROM dba_objects
WHERE status= 'INVALID';

1.6. 檢查所有回滾段狀態(tài)

select 
segment_name,status 
from dba_rollback_segs;
輸出結果中所有回滾段的“STATUS”應該為“ONLINE”。

 
2. 檢查Oracle相關(guān)資源的使用情況

  • a.檢查Oracle初始化文件中相關(guān)的參數值

  • b.檢查數據庫連接情況,檢查系統磁盤(pán)空間

  • c.檢查Oracle各個(gè)表空間使用情況,檢查一些擴展異常的對象,

  • d.檢查system表空間內的內容,檢查對象的下一擴展與表空間的最大擴展值,總共七個(gè)部分。


2.1. 檢查Oracle初始化文件中相關(guān)參數值

select resource_name,
max_utilization,
initial_allocation,
limit_value
from v$resource_limit;
若LIMIT_VALU-MAX_UTILIZATION<=5,則表明與RESOURCE_NAME相關(guān)的Oracle初始化參數需要調整。
可以通過(guò)修改Oracle初始化參數文件$ORACLE_BASE/admin/CKDB/pfile/initORCL.ora來(lái)修改。


2.2. 檢查數據庫連接情況

查看當前會(huì )話(huà)連接數,是否屬于正常范圍。

select count(*) from v$session;

select 
sid,serial#,username,program,machine,status 
from v$session;
其中:SID 會(huì )話(huà)(session)的ID號;
SERIAL# 會(huì )話(huà)的序列號,和SID一起用來(lái)唯一標識一個(gè)會(huì )話(huà);
USERNAME 建立該會(huì )話(huà)的用戶(hù)名;
PROGRAM 這個(gè)會(huì )話(huà)是用什么工具連接到數據庫的;
STATUS 當前這個(gè)會(huì )話(huà)的狀態(tài),ACTIVE表示會(huì )話(huà)正在執行某些任務(wù),INACTIVE表示當前會(huì )話(huà)沒(méi)有執行任何操作;
如果建立了過(guò)多的連接,會(huì )消耗數據庫的資源,同時(shí),對一些“掛死”的連接可能需要手工進(jìn)行清理。如果DBA要手工斷開(kāi)某個(gè)會(huì )話(huà),則執行:
(一般不建議使用這種方式去殺掉數據庫的連接,這樣有時(shí)候session不會(huì )斷開(kāi)。容易引起死連接。建議通過(guò)sid查到操作系統的spid,
使用ps –ef|grep spidno的方式確認spid不是ORACLE的后臺進(jìn)程。使用操作系統的kill -9命令殺掉連接)

alter system kill session 'SID,SERIAL#';
注意:上例中SID為1到10(USERNAME列為空)的會(huì )話(huà),是Oracle的后臺進(jìn)程,不要對這些會(huì )話(huà)進(jìn)行任何操作。


2.3. 檢查系統磁盤(pán)空間

如果文件系統的剩余空間過(guò)小或增長(cháng)較快,需對其進(jìn)行確認并刪除不用的文件以釋放空間。
[oracle@local ~]$ df -h

2.4. 檢查表空間使用情況

select f.tablespace_name,
a.total,
f.free,
round((f.free / a.total) * 100) '% Free'
from (select tablespace_name, sum(bytes / (1024 * 1024)) total
from dba_data_files
group by tablespace_name) a,
(select tablespace_name, round(sum(bytes / (1024 * 1024))) free
from dba_free_space
group by tablespace_name) f
WHERE a.tablespace_name = f.tablespace_name(+)
order by '% Free';
如果空閑率%Free小于10%以上(包含10%),則注意要增加數據文件來(lái)擴展表空間而不要是用數據文件的自動(dòng)擴展功能。
請不要對表空間增加過(guò)多的數據文件,增加數據文件的原則是每個(gè)數據文件大小為2G或者4G,自動(dòng)擴展的最大限制在8G。


2.5. 檢查一些擴展異常的對象

select Segment_Name,
Segment_Type,
TableSpace_Name,
(Extents / Max_extents) * 100 Percent
From sys.DBA_Segments
Where Max_Extents != 0
and (Extents / Max_extents) * 100 >= 95
order By Percent;
如果有記錄返回,則這些對象的擴展已經(jīng)快達到它定義時(shí)的最大擴展值。對于這些對象要修改它的存儲結構參數。


2.6. 檢查system表空間內的內容

select distinct (owner)
from dba_tables
where tablespace_name = 'SYSTEM'
and owner != 'SYS'
and owner != 'SYSTEM'
union
select distinct (owner)
from dba_indexes
where tablespace_name = 'SYSTEM'
and owner != 'SYS'
and owner != 'SYSTEM';
如果記錄返回,則表明system表空間內存在一些非system和sys用戶(hù)的對象。應該進(jìn)一步檢查這些對象是否與我們應用相關(guān)。
如果相關(guān)請把這些對象移到非System表空間,同時(shí)應該檢查這些對象屬主的缺省表空間值。

2.7. 檢查對象的下一擴展與表空間的最大擴展值

select a.table_name, a.next_extent, a.tablespace_name
from all_tables a,
(select tablespace_name, max(bytes) as big_chunk
from dba_free_space
group by tablespace_name) f
where f.tablespace_name = a.tablespace_name
and a.next_extent > f.big_chunk
union
select a.index_name, a.next_extent, a.tablespace_name
from all_indexes a,
(select tablespace_name, max(bytes) as big_chunk
from dba_free_space
group by tablespace_name) f
where f.tablespace_name = a.tablespace_name
and a.next_extent > f.big_chunk;
如果有記錄返回,則表明這些對象的下一個(gè)擴展大于該對象所屬表空間的最大擴展值,需調整相應表空間的存儲參數。

 
3. 檢查Oracle數據庫備份結果

  • a.檢查數據庫備份日志信息;

  • b.檢查backup卷中文件產(chǎn)生的時(shí)間;

  • c.檢查oracle用戶(hù)的email


3.1. 檢查數據庫備份日志信息

假設:備份的臨時(shí)目錄為/backup/hotbakup,我們需要檢查2009年7月22日的備份結果,則用下面的命令來(lái)檢查:

#cat /backup/hotbackup/hotbackup-09-7-22.log|grep –i error
備份腳本的日志文件為hotbackup-月份-日期-年份.log,在備份的臨時(shí)目錄下面。如果文件中存在“ERROR:”,則表明備份沒(méi)有成功,存在問(wèn)題需要檢查。

3.2. 檢查backup卷中文件產(chǎn)生的時(shí)間

#ls –lt /backup/hotbackup
backup卷是備份的臨時(shí)目錄,查看輸出結果中文件的日期,都應當是在當天凌晨由熱備份腳本產(chǎn)生的。如果時(shí)間不對則表明熱備份腳本沒(méi)執行成功。

3.3. 檢查oracle用戶(hù)的email

#tail –n 300 /var/mail/oracle
熱備份腳本是通過(guò)Oracle用戶(hù)的cron去執行的。cron執行完后操作系統就會(huì )發(fā)一條Email通知Oracle用戶(hù)任務(wù)已經(jīng)完成。查看Oracle email中今天凌晨部分有無(wú)ORA-,Error,Failed等出錯信息,如果有則表明備份不正常。


4. 檢查Oracle數據庫性能

在本節主要檢查Oracle數據庫性能情況,包含:檢查數據庫的等待事件,檢查死鎖及處理,檢查cpu、I/O、內存性能,查看是否有僵死進(jìn)程,檢查行鏈接/遷移,定期做統計分析,檢查緩沖區命中率,檢查共享池命中率,檢查排序區,檢查日志緩沖區,總共十個(gè)部分。

4.1. 檢查數據庫的等待事件

set pages 80
set lines 120
col event for a40
select sid, event, p1, p2, p3, WAIT_TIME, SECONDS_IN_WAIT
from v$session_wait
where event not like 'SQL%'
and event not like 'rdbms%';

如果數據庫長(cháng)時(shí)間持續出現大量像latch free,enqueue,buffer busy waits,db file sequential read,db file scattered read等等待事件時(shí),
需要對其進(jìn)行分析,可能存在問(wèn)題的語(yǔ)句。


4.2. Disk Read最高的SQL語(yǔ)句的獲取

SELECT SQL_TEXT
FROM (SELECT * FROM V$SQLAREA ORDER BY DISK_READS)
WHERE ROWNUM <= 5;
4.3. 查找前十條性能差的sql

SELECT *
FROM (SELECT PARSING_USER_ID
EXECUTIONS,
SORTS,
COMMAND_TYPE,
DISK_READS,
SQL_TEXT
FROM V$SQLAREA
ORDER BY DISK_READS DESC)
WHERE ROWNUM < 10;
4.4. 等待時(shí)間最多的5個(gè)系統等待事件的獲取

SELECT *
FROM (SELECT *
FROM V$SYSTEM_EVENT
WHERE EVENT NOT LIKE 'SQL%'
ORDER BY TOTAL_WAITS DESC)
WHERE ROWNUM <= 5;

4.5. 檢查運行很久的SQL

COLUMN USERNAME FORMAT A12
COLUMN OPNAME FORMAT A16
COLUMN PROGRESS FORMAT A8

SELECT USERNAME,
       SID,
       OPNAME,
       ROUND(SOFAR * 100 / TOTALWORK, 0) || '%' AS PROGRESS,
       TIME_REMAINING,
       SQL_TEXT
FROM V$SESSION_LONGOPS, V$SQL
WHERE TIME_REMAINING <> 0
AND SQL_ADDRESS = ADDRESS
AND SQL_HASH_VALUE = HASH_VALUE;

4.6. 檢查消耗CPU最高的進(jìn)程

SET LINE 240
SET VERIFY OFF
COLUMN SID FORMAT 999
COLUMN PID FORMAT 999
COLUMN S_# FORMAT 999
COLUMN USERNAME FORMAT A9 HEADING 'ORA USER'
COLUMN PROGRAM FORMAT A29
COLUMN SQL FORMAT A60
COLUMN OSNAME FORMAT A9 HEADING 'OS USER'
SELECT P.PID PID,
       S.SID SID,
       P.SPID SPID,
       S.USERNAME USERNAME,
       S.OSUSER OSNAME,
       P.SERIAL# S_#,
       P.TERMINAL,
       P.PROGRAM PROGRAM,
       P.BACKGROUND,
       S.STATUS,
       RTRIM(SUBSTR(A.SQL_TEXT, 1, 80)) SQLFROM V$PROCESS P,
       V$SESSION S,
       V$SQLAREA A
WHERE P.ADDR = S.PADDR
AND S.SQL_ADDRESS = A.ADDRESS(+)
AND P.SPID LIKE '%&1%';
4.7. 檢查碎片程度高的表

SELECT segment_name table_name, COUNT(*) extents
FROM dba_segments
WHERE owner NOT IN ('SYS', 'SYSTEM')
GROUP BY segment_name
HAVING COUNT(*) = (SELECT MAX(COUNT(*))
                     FROM dba_segments
                    GROUP BY segment_name);

4.8. 檢查表空間的I/O比例

SELECT DF.TABLESPACE_NAME NAME,
       DF.FILE_NAME 'FILE',
       F.PHYRDS PYR,
       F.PHYBLKRD PBR,
       F.PHYWRTS PYW,
       F.PHYBLKWRT PBW
  FROM V$FILESTAT F, DBA_DATA_FILES DF
 WHERE F.FILE# = DF.FILE_ID
 ORDER BY DF.TABLESPACE_NAME;

4.9. 檢查文件系統的I/O比例

SELECT SUBSTR(A.FILE#, 1, 2) '#',
       SUBSTR(A.NAME, 1, 30) 'NAME',
       A.STATUS,
       A.BYTES,
       B.PHYRDS,
       B.PHYWRTS
  FROM V$DATAFILE A, V$FILESTAT B
 WHERE A.FILE# = B.FILE#;

4.10.檢查死鎖及處理
查詢(xún)目前鎖對象信息:

select sid,
       serial#,
       username,
       SCHEMANAME,
       osuser,
       MACHINE,
       terminal,
       PROGRAM,
       owner,
       object_name,
       object_type,
       o.object_id
  from dba_objects o, v$locked_object l, v$session s
 where o.object_id = l.object_id
   and s.sid = l.session_id;
oracle級kill掉該session:

alter system kill session '&sid,&serial#';
操作系統級kill掉session:

#kill -9 pid

5. 檢查數據庫cpu、I/O、內存性能
記錄數據庫的cpu使用、IO、內存等使用情況,使用vmstat,iostat,sar,top等命令進(jìn)行信息收集并檢查這些信息,判斷資源使用情況。

5.1 CPU使用情況:
#top
注意顯示結果中的藍色字體部分,此部分內容表示系統剩余的cpu,當其平均值下降至10%以下的時(shí)視為CPU使用率異常,需記錄下該數值,并將狀態(tài)記為異常。


5.2 內存使用情況:

# free -m

結果中的藍色部分表示系統總內存,紅色部分表示系統使用的內存,黃色部分表示系統剩余內存,當剩余內存低于總內存的10%時(shí)視為異常。


5.3 系統I/O情況:

# iostat -k 1 3
結果中藍色字體部分表示磁盤(pán)讀寫(xiě)情況,紅色字體部分為cpu IO等待情況。

5.4 系統負載情況:

#uptime
結果中藍體字部分表示系統負載,后面的3個(gè)數值如果有高于2.5的時(shí)候就表明系統在超負荷運轉了,并將此值記錄到巡檢表,視為異常。

5.5.查看是否有僵死進(jìn)程

select spid 
from v$process
where addr not in (
select paddr from v$session
);

有些僵尸進(jìn)程有阻塞其他業(yè)務(wù)的正常運行,定期殺掉僵尸進(jìn)程。

5.6.檢查行鏈接/遷移

select table_name, num_rows, chain_cnt
From dba_tables
Where owner = 'CTAIS2'
And chain_cnt <> 0;
注:含有long raw列的表有行鏈接是正常的,找到遷移行保存到chained_rows表中,如沒(méi)有該表執行../rdbms/admin/utlchain.sql

analyze table tablename list chained rows;
可通過(guò)表chained_rows中table_name,head_rowid看出哪些行是遷移行

create table aa as 
select a.*
from sb_zsxx a,chained_rows b
where a.rowid=b.head_rowid
and b.table_name ='SB_ZSXX';

delete from sb_zsxx
where rowid in (
select head_rowid
from chained_rows
where table_name = 'SB_ZSXX'
);

insert into sb_zsxx
select * from chained_row
where table_name = 'SB_ZSXX';
5.7 定期做統計分析
對于采用Oracle Cost-Based-Optimizer的系統,需要定期對數據對象的統計信息進(jìn)行采集更新,使優(yōu)化器可以根據準備的信息作出正確的explain plan。在以下情況更需要進(jìn)行統計信息的更新:
a. 應用發(fā)生變化
b. 大規模數據遷移、歷史數據遷出、其他數據的導入等
c .數據量發(fā)生變化
查看表或索引的統計信息是否需更新,如:

Select 
table_name,num_rows,last_analyzed
From user_tables
where table_name ='DJ_NSRXX'
select count(*) from DJ_NSRXX如num_rows和count(*)
如果行數相差很多,則該表需要更新統計信息,建議一周做一次統計信息收集,如:

exec sys.dbms_stats.gather_schema_stats(ownname=>'CTAIS2',cascade => TRUE,degree => 4);

5.8 檢查緩沖區命中率

SELECT a.VALUE + b.VALUE logical_reads,
       c.VALUE phys_reads,
       round(100 * (1 - c.value / (a.value + b.value)), 4) hit_ratio
FROM v$sysstat a, v$sysstat b, v$sysstat c
WHERE a.NAME = 'db block gets'
   AND b.NAME = 'consistent gets'
   AND c.NAME = 'physical reads';
如果命中率低于90%則需加大數據庫參數db_cache_size。


5.9 檢查共享池命中率

select sum(pinhits) / sum(pins) * 100 from v$librarycache;
如低于95%,則需要調整應用程序使用綁定變量,或者調整數據庫參數shared pool的大小。


5.10 檢查排序區

select name,value from v$sysstat where name like '%sort%';
如果disk/(memoty+row)的比例過(guò)高,則需要調整sort_area_size(workarea_size_policy=false)或pga_aggregate_target(workarea_size_policy=true)。


5.11 檢查日志緩沖區

select name,value from v$sysstat
where name in (
'redo entries','
redo buffer allocation retries'

);
如果redo buffer allocation retries/redo entries超過(guò)1%,則需要增大log_buffer。

 
6. 檢查數據庫安全性
在本節主要檢查Oracle數據庫的安全性,包含:檢查系統安全信息,定期修改密碼,總共兩個(gè)部分。

6.1. 檢查系統安全日志信息

系統安全日志文件的目錄在/var/log下,主要檢查登錄成功或失敗的用戶(hù)日志信息。

檢查登錄成功的日志:

# grep -i accepted /var/log/secure

檢查登錄失敗的日志:

# grep -i inval /var/log/secure &&grep -i failed /var/log/secure
在出現的日志信息中沒(méi)有錯誤(Invalid、refused)提示,如果沒(méi)有(Invalid、refused)視為系統正常,出現錯誤提示,應作出系統告警通知。

6.2. 檢查用戶(hù)修改密碼

在數據庫系統上往往存在很多的用戶(hù),如:第三方數據庫監控系統,初始安裝數據庫時(shí)的演示用戶(hù),管理員用戶(hù)等等,這些用戶(hù)的密碼往往是寫(xiě)定的,被很多人知道,會(huì )被別有用心的人利用來(lái)攻擊系統甚至進(jìn)行修改數據。需要修改密碼的用戶(hù)包括:
數據庫管理員用戶(hù)SYS,SYSTEM;其他用戶(hù)。
登陸系統后,提示符下輸入cat /etc/passwd,在列出來(lái)的用戶(hù)中查看是否存在已經(jīng)不再使用的或是陌生的賬號。若存在,則記錄為異常。

修改密碼方法:

alter user USER_NAME identified by PASSWORD;


7、生成AWR報告

7.1. 登錄SQLPLUS,直接執行

exec dbms_workload_repository.create_snapshot();

7.2. 快照生成完成后,再進(jìn)行輸出報告awr文件

@?/rdbms/admin/awrrpt.sql

7.3. 選擇生成格式,默認是html可以默認即。

7.4. 要輸出報告的天數,可根據自己情況設定
填寫(xiě)1表示1天前的報告

7.5. 輸入開(kāi)始節點(diǎn)和結束節點(diǎn)

7.6. 輸入想要生成的報告名稱(chēng),以html格式結尾 (例如:awr_20200116.html)

7.7. 生成的awr默認在登陸數據庫的路徑,也可以使用!pwd命令來(lái)查看


8、AWR報告解讀

8.1 DB Time不包括Oracle后臺進(jìn)程消耗的時(shí)間。
如果DB Time遠遠小于Elapsed時(shí)間,說(shuō)明數據庫比較空閑。
db time= cpu time + wait time(不包含空閑等待) (非后臺進(jìn)程)
CPU利用率=DB Time/(cpus*Elapsed)

8.2 Redo size:Redo size 單位 bytes,redo size可以用來(lái)估量update/insert/delete的頻率,大的redo size往往對lgwr寫(xiě)日志,和arch歸檔造成I/O壓力。
如何解決每秒鐘產(chǎn)生大量redo?
增加redo log的size
增加redo log組
增加redo buffer

8.3 Logical reads 的單位是塊,例如表中每秒讀了50290.4塊,那么大小就是50290.4*8K=393M;邏輯讀影響全表掃描

8.4 Parses、Hard parses:SQL軟解析以及硬解析的次數,評估SQL是否需要優(yōu)化。

8.5 Executes、Transactions:每秒/每事務(wù)SQL執行次數、每秒事務(wù)數.每秒產(chǎn)生的事務(wù)數,反映數據庫任務(wù)繁重與否。

8.6 Recursive Call:遞歸調用占所有操作的比率.遞歸調用的百分比,如果有很多PL/SQL,那么這個(gè)值就會(huì )比較高。

8.7 Rollback:每秒回滾率及每事物回滾率,因為回滾很耗資源,如果回滾率過(guò)高,可能說(shuō)明你的數據庫經(jīng)歷了太多的無(wú)效操作 ,過(guò)多的回滾可能還會(huì )帶來(lái)Undo Block的競爭。

——End——

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
數據庫日常健康檢查方式方法
Oracle常用命令筆記
ORACLE使用100問(wèn)
oracle數據庫開(kāi)發(fā)的一些經(jīng)驗積累
利用已有的建立好的數據庫,直接改相關(guān)配置文件到新的盤(pán)符
詳細介紹ORACLE sqlplus命令 - jack198409的個(gè)人空間 - ITPU...
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久