濮阳杆衣贸易有限公司

主頁 > 知識庫 > ORACLE數(shù)據(jù)庫日常維護知識點總結(jié)

ORACLE數(shù)據(jù)庫日常維護知識點總結(jié)

熱門標簽:慧營銷crm外呼系統(tǒng)丹丹 哈爾濱電話機器人銷售招聘 地圖標注養(yǎng)老院 愛客外呼系統(tǒng)怎么樣 百度地圖標注途經(jīng)點 山東crm外呼系統(tǒng)軟件 圖吧網(wǎng)站地圖標注 哪個400外呼系統(tǒng)好 開發(fā)外呼系統(tǒng)

首先要說的是,不同版本數(shù)據(jù)庫提供的系統(tǒng)表會有不同,你可以根據(jù)數(shù)據(jù)字典查看該版本數(shù)據(jù)庫所提供的表
like this:
select * from dict where table_name like '%SESSION% ';
就可以查出一些表,然后根據(jù)這些表就可以獲得會話信息。

像這樣就是 查詢當前正在操作的會話:

SELECT SID, SERIAL#, STATUS, USERNAME, SCHEMANAME, OSUSER,TERMINAL, MACHINE,
PROGRAM, A.NAME FROM V$SESSION S, AUDIT_ACTIONS A WHERE S.COMMAND = A.ACTION;

一、查看數(shù)據(jù)庫的連接情況

DBA要定時對數(shù)據(jù)庫的連接情況進行檢查,看與數(shù)據(jù)庫建立的會話數(shù)目是不是正常,如果建立了過多的連接,會消耗數(shù)據(jù)庫的資源。同時,對一些“掛死”的連接,可能會需要DBA手工進行清理。

以下的SQL語句列出當前數(shù)據(jù)庫建立的會話情況:

select sid,serial#,username,program,machine,status

from v$session;


其中,
SID                           會話(session)的ID號;
SERIAL#                  會話的序列號,和SID一起用來唯一標識一個會話;
USERNAME            建立該會話的用戶名;
PROGRAM              這個會話是用什么工具連接到數(shù)據(jù)庫的;
STATUS                   當前這個會話的狀態(tài),ACTIVE表示會話正在執(zhí)行某些任務(wù),INACTIVE表示當前會話沒有執(zhí)行任何操作;
 

如果DBA要手工斷開某個會話,則執(zhí)行:


alter system kill session 'SID,SERIAL#';

注意,上例中SID為1到7(USERNAME列為空)的會話,是Oracle的后臺進程,不要對這些會話進行任何操作。

二、常用命令

select count(*) from v$session  #連接數(shù)
Select count(*) from v$session where status='ACTIVE' #并發(fā)連接數(shù)
show parameter processes  #最大連接
alter system set processes = value scope = spfile;重啟數(shù)據(jù)庫  #修改連接

1:oracle中怎樣查看總共有哪些用戶
select * from all_users;


2:查看oracle當前連接數(shù)
怎樣查看oracle當前的連接數(shù)呢?只需要用下面的SQL語句查詢一下就可以了。

select * from v$session where username is not null

select username,count(username) from v$session where username is not null group by username #查看不同用戶的連接數(shù) 
select count(*) from v$session  #連接數(shù)
Select count(*) from v$session where status='ACTIVE' #并發(fā)連接數(shù)
show parameter processes  #最大連接
alter system set process

3:列出當前數(shù)據(jù)庫建立的會話情況:

select sid,serial#,username,program,machine,status from v$session;

三、 Oracle警告日志文件監(jiān)控
Oracle在運行過程中,會在警告日志文件(alert_SID.log)中記錄數(shù)據(jù)庫的一些運行情況:
#61548; 數(shù)據(jù)庫的啟動、關(guān)閉,啟動時的非缺省參數(shù);
#61548; 數(shù)據(jù)庫的重做日志切換情況,記錄每次切換的時間,及如果因為檢查點(checkpoint)操作沒有執(zhí)行完成造成不能切換,會記錄不能切換的原因;
#61548; 對數(shù)據(jù)庫進行的某些操作,如創(chuàng)建或刪除表空間、增加數(shù)據(jù)文件;
#61548; 數(shù)據(jù)庫發(fā)生的錯誤,如表空間不夠、出現(xiàn)壞塊、數(shù)據(jù)庫內(nèi)部錯誤(ORA-600)

DBA應該定期檢查日志文件,根據(jù)日志中發(fā)現(xiàn)的問題及時進行處理
問題 處理
啟動參數(shù)不對 檢查初始化參數(shù)文件
因為檢查點操作或歸檔操作沒有完成造成重做日志不能切換 如果經(jīng)常發(fā)生這樣的情況,可以考慮增加重做日志文件組;想辦法提高檢查點或歸檔操作的效率;
有人未經(jīng)授權(quán)刪除了表空間 檢查數(shù)據(jù)庫的安全問題,是否密碼太簡單;如有必要,撤消某些用戶的系統(tǒng)權(quán)限
出現(xiàn)壞塊 檢查是否是硬件問題(如磁盤本生有壞塊),如果不是,檢查是那個數(shù)據(jù)庫對象出現(xiàn)了壞塊,對這個對象進行重建
表空間不夠 增加數(shù)據(jù)文件到相應的表空間
出現(xiàn)ORA-600 根據(jù)日志文件的內(nèi)容查看相應的TRC文件,如果是Oracle的bug,要及時打上相應的補丁

四、 數(shù)據(jù)庫表空間使用情況監(jiān)控(字典管理表空間)

數(shù)據(jù)庫運行了一段時間后,由于不斷的在表空間上創(chuàng)建和刪除對象,會在表空間上產(chǎn)生大量的碎片,DBA應該及時了解表空間的碎片和可用空間情況,以決定是否要對碎片進行整理或為表空間增加數(shù)據(jù)文件。

select tablespace_name,
count(*) chunks ,
max(bytes/1024/1024) max_chunk
from dba_free_space
group by tablespace_name;

上面的SQL列出了數(shù)據(jù)庫中每個表空間的空閑塊情況,如下所示:
TABLESPACE_NAME CHUNKS MAX_CHUNK
-------------------- ---------- ----------
INDX 1 57.9921875
RBS 3 490.992188
RMAN_TS 1 16.515625
SYSTEM 1 207.296875
TEMP 20 70.8046875
TOOLS 1 11.8359375
USERS 67 71.3671875

其中,CHUNKS列表示表空間中有多少可用的空閑塊(每個空閑塊是由一些連續(xù)的Oracle數(shù)據(jù)塊組成),如果這樣的空閑塊過多,比如平均到每個數(shù)據(jù)文件上超過了100個,那么該表空間的碎片狀況就比較嚴重了,可以嘗試用以下的SQL命令進行表空間相鄰碎片的接合:

alter tablespace 表空間名 coalesce;

然后再執(zhí)行查看表空間碎片的SQL語句,看表空間的碎片有沒有減少。如果沒有效果,并且表空間的碎片已經(jīng)嚴重影響到了數(shù)據(jù)庫的運行,則考慮對該表空間進行重建。
MAX_CHUNK列的結(jié)果是表空間上最大的可用塊大小,如果該表空間上的對象所需分配的空間(NEXT值)大于可用塊的大小的話,就會提示ORA-1652、ORA-1653、ORA-1654的錯誤信息,DBA應該及時對表空間的空間進行擴充,以避免這些錯誤發(fā)生。
對表空間的擴充對表空間的數(shù)據(jù)文件大小進行擴展,或向表空間增加數(shù)據(jù)文件,具體操作見“存儲管理”部份。

五、 控制文件的備份

在數(shù)據(jù)庫結(jié)構(gòu)發(fā)生變化時,如增加了表空間,增加了數(shù)據(jù)文件或重做日志文件這些操作,都會造成Oracle數(shù)據(jù)庫控制文件的變化,DBA應及進行控制文件的備份,備份方法是:
執(zhí)行SQL語句:

alter database
backup controlfile to '/home/backup/control.bak';

或:
alter database
backup controlfile to trace;
這樣,會在USER_DUMP_DEST(初始化參數(shù)文件中指定)目錄下生成創(chuàng)建控制文件的SQL命令。

六、 檢查數(shù)據(jù)庫文件的狀態(tài)

DBA要及時查看數(shù)據(jù)庫中數(shù)據(jù)文件的狀態(tài)(如被誤刪除),根據(jù)實際情況決定如何進行處理,檢查數(shù)據(jù)文件的狀態(tài)的SQL如下:
select file_name,status
from dba_data_files;
如果數(shù)據(jù)文件的STATUS列不是AVAILABLE,那么就要采取相應的措施,如對該數(shù)據(jù)文件進行恢復操作,或重建該數(shù)據(jù)文件所在的表空間。

七、 檢查數(shù)據(jù)庫定時作業(yè)的完成情況

如果數(shù)據(jù)庫使用了Oracle的JOB來完成一些定時作業(yè),要對這些JOB的運行情況進行檢查:
select job,log_user,last_date,failures
from dba_jobs;
如果FAILURES列是一個大于0的數(shù)的話,說明JOB運行失敗,要進一步的檢查。

八、 數(shù)據(jù)庫壞塊的處理

當Oracle數(shù)據(jù)庫出現(xiàn)壞塊時,Oracle會在警告日志文件(alert_SID.log)中記錄壞塊的信息:
ORA-01578: ORACLE data block corrupted (file # 7, block # BLOCK>)
ORA-01110: data file AFN>: '/oracle1/oradata/V920/oradata/V816/users01.dbf'

其中,<AFN>代表壞塊所在數(shù)據(jù)文件的絕對文件號,BLOCK>代表壞塊是數(shù)據(jù)文件上的第幾個數(shù)據(jù)塊
出現(xiàn)這種情況時,應該首先檢查是否是硬件及操作系統(tǒng)上的故障導致Oracle數(shù)據(jù)庫出現(xiàn)壞塊。在排除了數(shù)據(jù)庫以外的原因后,再對發(fā)生壞塊的數(shù)據(jù)庫對象進行處理。

1. 確定發(fā)生壞塊的數(shù)據(jù)庫對象

SELECT tablespace_name,
segment_type,
owner,
segment_name
FROM dba_extents
WHERE file_id = AFN>
AND BLOCK> between block_id AND block_id+blocks-1;

2. 決定修復方法
如果發(fā)生壞塊的對象是一個索引,那么可以直接把索引DROP掉后,再根據(jù)表里的記錄進行重建;
如果發(fā)生壞塊的表的記錄可以根據(jù)其它表的記錄生成的話,那么可以直接把這個表DROP掉后重建;
如果有數(shù)據(jù)庫的備份,則恢復數(shù)據(jù)庫的方法來進行修復;
如果表里的記錄沒有其它辦法恢復,那么壞塊上的記錄就丟失了,只能把表中其它數(shù)據(jù)塊上的記錄取出來,然后對這個表進行重建。
3. 用Oracle提供的DBMS_REPAIR包標記出壞塊
exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS('schema>','tablename>');
4. 使用Create table as select命令將表中其它塊上的記錄保存到另一張表上
create table corrupt_table_bak
as
select * from corrupt_table;
5. 用DROP TABLE命令刪除有壞塊的表
drop table corrupt_table;
6. 用alter table rename命令恢復原來的表
alter table corrupt_table_bak
rename to corrupt_table;
7. 如果表上存在索引,則要重建表上的索引

九、 操作系統(tǒng)相關(guān)維護

DBA要注意對操作系統(tǒng)的監(jiān)控:
#61548; 文件系統(tǒng)的空間使用情況(df -k),必要時對Oracle的警告日志及TRC文件進行清理
#61548; 如果Oracle提供網(wǎng)絡(luò)服務(wù),檢查網(wǎng)絡(luò)連接是否正常
#61548; 檢查操作系統(tǒng)的資源使用情況是否正常
#61548; 檢查數(shù)據(jù)庫服務(wù)器有沒有硬件故障,如磁盤、內(nèi)存報錯

您可能感興趣的文章:
  • 簡析Oracle數(shù)據(jù)庫常見問題及解決方案
  • oracle數(shù)據(jù)庫sql的優(yōu)化總結(jié)
  • Oracle數(shù)據(jù)庫數(shù)據(jù)丟失恢復的幾種方法總結(jié)
  • DB2數(shù)據(jù)庫切換為oracle數(shù)據(jù)庫經(jīng)驗教訓總結(jié)(必看篇)

標簽:固原 武漢 周口 承德 甘肅 青島 和田 開封

巨人網(wǎng)絡(luò)通訊聲明:本文標題《ORACLE數(shù)據(jù)庫日常維護知識點總結(jié)》,本文關(guān)鍵詞  ORACLE,數(shù)據(jù)庫,日常,維護,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ORACLE數(shù)據(jù)庫日常維護知識點總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于ORACLE數(shù)據(jù)庫日常維護知識點總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    星座| 调兵山市| 泰来县| 宣武区| 通辽市| 弥渡县| 北海市| 通山县| 克山县| 德昌县| 磐安县| 平顺县| 北海市| 万全县| 大港区| 周至县| 棋牌| 丹凤县| 泸州市| 志丹县| 荣昌县| 两当县| 同德县| 宣威市| 绥德县| 广州市| 榕江县| 华阴市| 太谷县| 闽清县| 横峰县| 庐江县| 江山市| 咸阳市| 民权县| 嘉定区| 平江县| 科技| 故城县| 阳信县| 兴文县|