ORACLE資料庫日常維護的九大知識點

2020-12-17 IT168

  【IT168 評論】oracle資料庫是一種大型資料庫系統,一般應用於商業,政府部門,它的功能很強大,能夠處理大批量的數據,在網絡方面也用的非常多。首先要說的是,不同版本資料庫提供的系統表會有不同,你可以根據數據字典查看該版本資料庫所提供的表。

  like this:

  
select * from dict where table_name like '%SESSION% ';

  就可以查出一些表,然後根據這些表就可以獲得會話信息。

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

  SELECT SID, SERIAL#, STATUS, USERNAME, SCHEMANAME, OSUSER,TERMINAL, MACHINE,

  PROGRAM, A.NAME FROM V$SESSION S, AUDIT_ACTIONS A                      WHERE S.COMMAND
= A.ACTION;

  一、查看資料庫的連接情況

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

  以下的SQL語句列出當前資料庫建立的會話情況:

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

  from v$session;

  其中,

  SID 會話(session)的ID號;

  SERIAL# 會話的序列號,和SID一起用來唯一標識一個會話;

  USERNAME 建立該會話的用戶名;

  PROGRAM 這個會話是用什麼工具連接到資料庫的;

  STATUS 當前這個會話的狀態,ACTIVE表示會話正在執行某些任務,INACTIVE表示當前會話沒有執行任何操作;

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

  alter system kill session 'SID,SERIAL#';

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

  二、常用命令

  select count(*) from v$session #連接數

  Select count(*) from v$session where status='ACTIVE' #並發連接數

  show parameter processes #最大連接

  alter system set processes = value scope = spfile;重啟資料庫 #修改連接

  1:oracle中怎樣查看總共有哪些用戶

  select * from all_users;

  2:查看oracle當前連接數

  怎樣查看oracle當前的連接數呢?只需要用下面的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 #查看不同用戶的連接數

  select count(*) from v$session #連接數

  Select count(*) from v$session where status='ACTIVE' #並發連接數

  show parameter processes #最大連接

  alter system set process

  3:列出當前資料庫建立的會話情況:

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

  三、 Oracle警告日誌文件監控

  Oracle在運行過程中,會在警告日誌文件(alert_SID.log)中記錄資料庫的一些運行情況:

  ? 資料庫的啟動、關閉,啟動時的非預設參數;

  ? 資料庫的重做日誌切換情況,記錄每次切換的時間,及如果因為檢查點(checkpoint)操作沒有執行完成造成不能切換,會記錄不能切換的原因;

  ? 對資料庫進行的某些操作,如創建或刪除表空間、增加數據文件;

  ? 資料庫發生的錯誤,如表空間不夠、出現壞塊、資料庫內部錯誤(ORA-600)

  DBA應該定期檢查日誌文件,根據日誌中發現的問題及時進行處理

  問題 處理

  啟動參數不對 檢查初始化參數文件

  因為檢查點操作或歸檔操作沒有完成造成重做日誌不能切換 如果經常發生這樣的情況,可以考慮增加重做日誌文件組;想辦法提高檢查點或歸檔操作的效率;

  有人未經授權刪除了表空間 檢查資料庫的安全問題,是否密碼太簡單;如有必要,撤消某些用戶的系統權限

  出現壞塊 檢查是否是硬體問題(如磁碟本生有壞塊),如果不是,檢查是那個資料庫對象出現了壞塊,對這個對象進行重建

  表空間不夠 增加數據文件到相應的表空間

  出現ORA-600 根據日誌文件的內容查看相應的TRC文件,如果是Oracle的bug,要及時打上相應的補丁

  四、 資料庫表空間使用情況監控(字典管理表空間)

  資料庫運行了一段時間後,由於不斷的在表空間上創建和刪除對象,會在表空間上產生大量的碎片,DBA應該及時了解表空間的碎片和可用空間情況,以決定是否要對碎片進行整理或為表空間增加數據文件。

  select tablespace_name,

  count(
*) chunks ,

  max(bytes
/1024/1024) max_chunk

  from dba_free_space

  group by tablespace_name;

  上面的SQL列出了資料庫中每個表空間的空閒塊情況,如下所示:

  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列表示表空間中有多少可用的空閒塊(每個空閒塊是由一些連續的Oracle數據塊組成),如果這樣的空閒塊過多,比如平均到每個數據文件上超過了100個,那麼該表空間的碎片狀況就比較嚴重了,可以嘗試用以下的SQL命令進行表空間相鄰碎片的接合:

  alter tablespace 表空間名 coalesce;

  然後再執行查看表空間碎片的SQL語句,看表空間的碎片有沒有減少。如果沒有效果,並且表空間的碎片已經嚴重影響到了資料庫的運行,則考慮對該表空間進行重建。

  MAX_CHUNK列的結果是表空間上最大的可用塊大小,如果該表空間上的對象所需分配的空間(NEXT值)大於可用塊的大小的話,就會提示ORA-1652、ORA-1653、ORA-1654的錯誤信息,DBA應該及時對表空間的空間進行擴充,以避免這些錯誤發生。

  對表空間的擴充對表空間的數據文件大小進行擴展,或向表空間增加數據文件,具體操作見「存儲管理」部份。

  五、 控制文件的備份

  在資料庫結構發生變化時,如增加了表空間,增加了數據文件或重做日誌文件這些操作,都會造成Oracle資料庫控制文件的變化,DBA應及進行控制文件的備份,備份方法是:

  執行SQL語句:

  alter database

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

  或:

  alter database

  backup controlfile
to trace;

  這樣,會在USER_DUMP_DEST(初始化參數文件中指定)目錄下生成創建控制文件的SQL命令。

  六、 檢查資料庫文件的狀態

  DBA要及時查看資料庫中數據文件的狀態(如被誤刪除),根據實際情況決定如何進行處理,檢查數據文件的狀態的SQL如下:

  select file_name,status

  from dba_data_files;

  如果數據文件的STATUS列不是AVAILABLE,那麼就要採取相應的措施,如對該數據文件進行恢復操作,或重建該數據文件所在的表空間。

  七、 檢查資料庫定時作業的完成情況

  如果資料庫使用了Oracle的JOB來完成一些定時作業,要對這些JOB的運行情況進行檢查:

  select job,log_user,last_date,failures

  from dba_jobs;

  如果FAILURES列是一個大於0的數的話,說明JOB運行失敗,要進一步的檢查。

  八、 資料庫壞塊的處理

  當Oracle資料庫出現壞塊時,Oracle會在警告日誌文件(alert_SID.log)中記錄壞塊的信息:

  ORA-01578: ORACLE data block corrupted (file # 7, block # )

  ORA
-01110: data file : '/oracle1/oradata/V920/oradata/V816/users01.dbf'

  其中,代表壞塊所在數據文件的絕對文件號,代表壞塊是數據文件上的第幾個數據塊

  出現這種情況時,應該首先檢查是否是硬體及作業系統上的故障導致Oracle資料庫出現壞塊。在排除了資料庫以外的原因後,再對發生壞塊的資料庫對象進行處理。

  1. 確定發生壞塊的資料庫對象

  SELECT tablespace_name,

  segment_type,

  owner,

  segment_name

  FROM dba_extents

  WHERE file_id
=

  
AND between block_id AND block_id+blocks-1;

  2. 決定修複方法

  如果發生壞塊的對象是一個索引,那麼可以直接把索引DROP掉後,再根據表裡的記錄進行重建;

  如果發生壞塊的表的記錄可以根據其它表的記錄生成的話,那麼可以直接把這個表DROP掉後重建;

  如果有資料庫的備份,則恢復資料庫的方法來進行修復;

  如果表裡的記錄沒有其它辦法恢復,那麼壞塊上的記錄就丟失了,只能把表中其它數據塊上的記錄取出來,然後對這個表進行重建。

  3. 用Oracle提供的DBMS_REPAIR包標記出壞塊

 exec DBMS_REPAIR.SKIP_CORRUPT_BLOCKS('','');

  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. 如果表上存在索引,則要重建表上的索引

  九、 作業系統相關維護

  DBA要注意對作業系統的監控:

  文件系統的空間使用情況(df -k),必要時對Oracle的警告日誌及TRC文件進行清理

   如果Oracle提供網絡服務,檢查網絡連接是否正常

   檢查作業系統的資源使用情況是否正常

   檢查資料庫伺服器有沒有硬體故障,如磁碟、內存報錯

相關焦點

  • 金石科技承接武漢大學oracle資料庫一體機維保服務
    此次合作,是基於武漢大學、oracle公司、金石科技三方的共識,金石科技專注於IT數據服務平臺、數據安全技術研究,與oracle及眾多國際IT廠商均有密切合作,是Oracle公司可信賴和推薦的服務商。針對oracle高端一體機的維護維保項目,武漢大學相關業務負責人表示,正是考慮到金石科技的技術背景以及諸多優秀特質,才決定將運行核心業務的兩臺oracle資料庫一體機交予金石科技進行服務。
  • Oracle 資料庫的配置方案 完全分析
    本文從幾大方面詳細講述了Oracle資料庫的配置方案。 所有連接到Oracle的用戶必須執行兩個代碼模塊: 應用或Oracle工具:一資料庫用戶執行一資料庫應用或一個Oracle工具,可向Oracle資料庫發出SQL語句。
  • 資料庫詳解:Oracle 監聽器日誌解析
    本篇將從監聽器日誌入手,分析閱讀監聽器日誌和日常監聽器常見行為。1、Oracle監聽器功能在筆者《說說Oracle監聽器》(http://space.itpub.net/17203031/viewspace-682627)系列中,已經比較清楚的介紹過Oracle監聽器的工作方式和體系地位。這裡簡要加以累述。
  • Oracle資料庫優化的一些建議
    1、ORACLE 優化內容根據業務分析人員、設計人員、應用程式開發人員、資料庫管理員、系統管理員幾個不同的角色,針對每個不同角色,進行針對性的內容優化。2、怎樣寫好SQL語句(1)、 儘量簡單,模塊化(2)、易讀、易維護(3)、節省資源(4)、 內存(5)、CPU
  • Oracle 11g資料庫數據泵的實際應用
    將資料庫對象的元素數據(對象結構)或數據導出成二進位文件儲存;而數據泵導入則使用impdp工具將導出來二進位文件導入到Oracle資料庫中;這樣做可以實現數據移動/備份,若數據被意外/惡意損壞後可通過impdp來恢復資料庫的結構信息和數據。
  • Oracle資料庫常見真實問題處理步驟
    【IT168技術文章】1 解決Oracle 9.2.0.6版本資料庫由於ORA-07445宕機問題故障現象:XX網資料庫宕機,查看日誌發現以下內容:Wed Jun  8
  • 安裝oracle客戶端 和plsql 連接資料庫完整版教程
    首先下載oracle 資料庫客戶端,下面為下載地址https://www.oracle.com/database/technologies/112010-win64soft.html注意:這裡下載可能需要登錄oracle 帳號,登錄即可下載。
  • 「Oracle資料庫」oracle11g體系結構——數據字典詳解
    數據字典是oracle資料庫存放資料庫內部信息的地方,用來描述資料庫內部的運行和管理情況。比如像一個數據表的創建時間、所有者、用戶訪問權限等都是保存在數據字典中的,用戶可以通過查詢這些數據字典獲取幫助信息。
  • 測試員必備:資料庫Oracle+PLSQL常見操作文檔整理!
    前言:本篇文章主要針對oracle資料庫進行介紹,包括和資料庫相關的概念及使用,比如常見存儲過程,plsql工具的使用及導入導出表、資料庫升級等操作,適合小白及有一定基礎的測試人員參考。世界萬物都可以被計算機理解為數據2.資料庫存放數據的場所叫做資料庫,資料庫對數據存放並管理,包括常見的增刪改查等 3.資料庫管理系統資料庫管理系統是一種操縱和管理資料庫的大型軟體
  • 有關Oracle資料庫中同義詞的簡單介紹
    第1頁有關Oracle資料庫中同義詞的簡單介紹  Oracle資料庫中有關同義詞的一些知識是我們本文主要要介紹的內容,首先我們先看一個語句,如下:  create synonym table_name for user.table_name;  其中第一個user_table和第二個user_table可以不一樣。
  • Oracle資料庫管理工具PLSQL安裝教程
    pl/sql developer是一個專門面向oracle的資料庫管理應用。本文介紹如何安裝plsql。用戶協議4、選擇安裝目錄建議更換默認的安裝目錄,因為低版本的oracle程序存在問題,不能識別路徑當中的括號,會導致程序無法正常運行。
  • 如何使用plsql工具創建oracle資料庫的定時器
    我們使用的資料庫大部分是oracle、mysql、db2、sql server等資料庫,在使用oracle最匹配的工具plsql,如何用plsql創建定時器呢?下面我簡單介紹使用工具創建定時器的方法。
  • 零基礎學Oracle之2:開始使用oracle
    零基礎學Oracle之2:開始使用oracle1、 資料庫管理工具而oracle則力推java,把java虛擬機內嵌到oracle中。[oracle@wl database]$ ./runInstaller 在資料庫軟體目錄下執行這個安裝,類似於windows的setup
  • SQL Server資料庫和Oracle行轉列的特殊方案描述
    文章主要描述的是SQL Server資料庫和Oracle資料庫行轉列的一種比較典型操作方法,對於有些業務來說,數據在表中的存儲與其最終的Grid表現恰好相當於把源表倒轉,那麼這個時候我們就碰到了如何把行轉化為列的問題。
  • 【分享】Oracle 常用運維命令匯總
    一、oracle建庫與刪庫命令(1)oracle11g建庫(一般習慣配置gdbname與sid名一樣,sys密碼與system密碼一樣,以方便記憶)[oracledb@ ~]$ dbca -silent -createDatabase -templateName /u01/oracle
  • PLSQL工具對oracle數據的備份還原
    日常開發過程中,經常會遇到需要備份和還原oracle資料庫的情況,plsql能夠幫助我們簡單地完成這項任務,本次以oracle11g32位版本為例。一、準備工作1、 安裝oracle32位服務端2、 安裝32位的plsql3、 配置tnsnames.ora文件,把連接本地的配置新增進去二、備份1、登陸需要備份的資料庫
  • Weblogic8配置Oracle資料庫連接池
    「事務處理」——安裝優化事務處理的預配置資料庫。事務處理類型支持大量並發用戶執行簡單的事務處理。可以提供較高的可用性和事務處理性,提供大量用戶並行訪問相同數據的能力並具有高度的恢復性能。事務處理的典型應用有銀行事務處理或Internet商務資料庫的事務處理。「數據倉庫」——安裝優化數據倉庫的預配置資料庫。
  • Oracle新聞
    醫院信息系統中的資料庫管理系統也不例外。 特別是資料庫高可用性以及安全性上…Oracle資料庫表數據誤刪還原的方法04-12這種方法簡單,容易掌握,功能和上面的一樣時間為你誤操作之前的時間,最好是離誤操作比較近的,因為oracle保存在回滾保持段裡的數據時間有一定的時間限制由undo_retention
  • 傳智播客:Android開發的資料庫相關簡介、配置以及結構的存儲
    今天隨便和大家聊聊Android的資料庫的簡介以及mysql的安裝和數據結構一些相關的知識點,適用於所有準備要學習的android小夥伴學習如何配置和思路結構等。資料庫的簡介我們用提問式的方式來學習今天的內容:資料庫的話,我們第一要知道的就是什麼時間使用資料庫?
  • 使用plsql創建oracle定時器
    工作中,我們使用的資料庫大部分是oracle、mysql、db2、sql server等資料庫,在使用oracle最匹配的工具plsql的時候,如果用plsql創建定時器呢?下面我簡單介紹使用工具創建定時器的方法。