首頁 資料庫 mysql教程 Oracle的空间数据库管理技巧

Oracle的空间数据库管理技巧

Jun 07, 2016 pm 03:30 PM
oracle 技巧 資料庫 空間 管理 進入

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 在Oracle数据库中,DBA可以通过观测一定的表或视图来了解当前空间的使用状况,进而作出可能的调整决定。 一。表空间的自由空间 通过对表空间的自由空间的观察,可用来判断分配给某个表空间的空间是

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

  在Oracle数据库中,DBA可以通过观测一定的表或视图来了解当前空间的使用状况,进而作出可能的调整决定。

  一。表空间的自由空间

  通过对表空间的自由空间的观察,可用来判断分配给某个表空间的空间是太多还是不够。请看下列的语句

  SQL > select a.file_id "FileNo",a.tablespace_name   "Tablespace_name",   2 a.bytes "Bytes",a.bytes-sum(nvl(b.bytes,0)) "Used",   3 sum(nvl(b.bytes,0)) "Free",   4 sum(nvl(b.bytes,0))/a.bytes*100 "%free"   5 from dba_data_files a, dba_free_space b   6 where a.file_id=b.file_id(+)   7 group by a.tablespace_name ,   8 a.file_id,a.bytes order by a.tablespace_name;   File Tablespace   No _nameBytes Used Free %free   ―― ―― ―― ―― ―― ――   11IDX_JF .146E+09 849305600 1.297E+09 60.431806   9 JFSJTS 2.146E+09 1.803E+09 343793664 16.016961   10JFSJTS 2.146E+09 1.359E+09 787431424 36.685546   2 RBS523239424 359800832 163438592 31.235909   12RBS1.610E+09 1.606E+09 3104768 .19289495   8 RBSJF 3.220E+09 2.716E+09 504356864 15.662396   7 SFGLTS 2.146E+09 1.228E+09 918159360 42.776014   6 SFSJTS 2.146E+09 1.526E+09 620093440 28.889457   1 SYSTEM 523239424 59924480 463314944 88.547407   3 TEMP 523239424294912 522944512 99.943637   4 TOOLS 15728640 12582912 314572820   5 USERS 7340032 81927331840 99.888393   12 rows selected.

  可以看出,在FileNo为12的表空间RBS中,只有0.19%的分配空间未被使用,这个比例太小了,而在SYSTEM及TEMP等表空间中,高达80%以上的空间未被利用,对于生产型数据库,这个表空间的设置有些偏高。

  关于自由空间的管理,有下面的一些建议:利用Export及Import命令卸出和装入表空间可以释放大量的空间,从而缓解增加另外的数据文件的要求。如果包含具有高插入(insert)和更新(update)活动的表的表空间中自由空间的比重下降到了15%以下,要为此表空间增加更多的空间。对于一个基本是静态表数据的表空间,如果有多于20%的自由空间,则可以考虑减少分配给它的文件空间量。减少SYSTEM表空间的空间量比较困难,因为那要重建数据库。

  二 表及索引的扩展

  A.为了防止表或索引被过分扩展,及时实现对数据库的调整,用户应当经常对有关对象进行观察。我们可以认为,扩展区域大于5个的表或索引为过分扩展(overextended)。请看下面的语句:

  SQL > select substr(segment_name,1,15)

  Segment_name,segment_type,

  2 substr(tablespace_name,1,10)

  Tablepace_name,extents,Max_extents

  3from dba_segments

  4where extents >5 and owner='JFCL'

  5order by segment_name;

  SEGMENT_NAMESEGMENT TABLEPACE_

  EXTENTS MAX_EXTENTS

  _TYPE

  -------------- --------- ----------

  CHHDFYB TABLE JFSJTS 11121

  CHHDFYB_DHHMINDEX JFSJTS9121

  DJHZFYB_BF TABLE JFSJTS 17500

  DJHZFYB_DJHMINDEX IDX_JF6500

  DJHZFYB_JZHMINDEX IDX_JF7500

  GSMFYB TABLE JFSJTS 11121

  JFDHTABLE JFSJTS 14500

  JFDH_DHHM INDEX IDX_JF 61500

  JFDH_JZHM INDEX IDX_JF 64500

  XYKFYB TABLE JFSJTS7121

  YHDATABLE JFSJTS6500

  YHDA_BAKTABLE JFSJTS6500

  YHHZFYB_12 TABLE JFSJTS 10500

  13 rows selected.

  通过观察, DBA可以及时发现问题并进行相应的处理。我们可以利用export卸出表,然后删除表,再利用import命令将表装入,这样,可以将不连续的区域合并成一个连续的空间。

  B.如果用户希望对表的空间设置进行优化,例如,需要改变表EMP的initial参数,可以采用下面的方法:

  1.在将EMP表卸出并删除后执行imp命令时使用indexfile参数:imp userid=scott/tiger file=emp.dmp indexfile=emp.sql Oracle把表和索引的创建信息写到指定的文件,而不是把数据写回。

  2.打开emp.sql文件:

  REM CREATE TABLE "SCOTT"."EMP" ("EMPNO" NUMBER(4, 0), "ENAME"

  REM VARCHAR2(10), "JOB" VARCHAR2(9),

  "MGR" NUMBER(4, 0), "HIREDATE" DATE,

  REM "SAL" NUMBER(7, 2), "COMM" NUMBER

  (7, 2), "DEPTNO" NUMBER(2, 0))

  REM PCTFREE 10 PCTUSED 40 INITRANS 1

  MAXTRANS 255 LOGGING STORAGE(INITIAL

  REM 10240 NEXT 10240 MINEXTENTS 1 MAXEXTENTS

  121 PCTINCREASE 50 FREELISTS

  REM 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)

  TABLESPACE "USER_DATA" ;

  REM …… 14 rows

  对它进行编辑,去除"REM"等信息,找到Initial参数,根据需要改变它。

  3.在SQL*plus中执行emp.sql.

  4.装入数据:

  imp userid=scott/tiger ignore=y file=emp.dmp

  需要注意的是,ignore参数必须设为Y.

  C.可以用下面的语句来观察表或索引距离达到最大扩展的状况,“UNUSE”为距离达到最大扩展的值,在User_extents表中,extent_id是从0开始记述数的。

  SQL >select a.table_name "TABLE_NAME",max

  (a.max_extents) "MAXEXTENTS" ,

  2 max(b.extent_id)+1 "IN USE", MAX

  (a.max_extents)-(max(b.extent_id)+1) "UNUSE"

  3 from user_tables a, user_extents b

  4where a.table_name=b.segment_name

  5 group by a.table_name ORDER BY 4;

  TABLE_NAME MAXEXTENTS IN USEUNUSE

  ---------- ----------- -------- ---------

  YZPHB 98 1 97

  SHJYB 121 1 120

  SHFYB 121 1 120

  RCHDB 121 1 120

  SJTXDZB121 1 120

  SJTXDAB121 1 120

  CHYHB 121 1 120

  JFDH 50014 486

  8 rows selected.

  如果“UNUSE"小到一定的程度,我们就应该加以关注,进行适当的调整处理。

  三 关于连续空间

  可以用下面的语句来查看数据库中的自由空间:

  SQL > select * from dba_free_space

  where tablespace_name='SFSJTS'

  2 order by block_id;

  TABLESPACE FILE_ID BLOCK_ID BYTESBLOCKS

  _NAME

  ----------- --------- --------------

  SFSJTS 6 133455 1064960 130

  SFSJTS 6 133719 1032192 126

  SFSJTS 6 133845 1064960 130

  SFSJTS 6 135275 1064960 130

  SFSJTS 6 135721 606208 74

  SFSJTS 6 139877 901120 110

  SFSJTS 6 143497 737280 90

  SFSJTS 6 220248 737280 90

  SFSJTS 6 246228 491520 60

  SFSJTS 6 261804 1064960 130

  10 rows selected.

  我们可以通过命令的结果来估计相邻自由空间的真正数量。对每一行,用起始快的id(BLOCK_ID)加上自由块(BLOCKS)的数量,如果其和与下一行的块id(BLOCK_ID)相等,则此两行是连续的。如上例第二行和第三行,133719+126=133845,而1338456+130!=135275,所以从block_id为133719开始,有126+130=256个block的连续空间。

  在Oracle数据库的后台,系统监视器(SMON)周期性地合并自由空间相邻的块,以得到更大的连续块。而DBA可以用SQL命令来完成这个工作:

  alter tablespace tablespace_name coalesce;

  Oracle空间管理对数据库的工作性能有重要影响,其管理方法值得我们认真摸索研

Oracle的空间数据库管理技巧

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1669
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
MySQL:世界上最受歡迎的數據庫的簡介 MySQL:世界上最受歡迎的數據庫的簡介 Apr 12, 2025 am 12:18 AM

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

為什麼要使用mysql?利益和優勢 為什麼要使用mysql?利益和優勢 Apr 12, 2025 am 12:17 AM

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

oracle怎麼循環創建游標 oracle怎麼循環創建游標 Apr 12, 2025 am 06:18 AM

Oracle 中,FOR LOOP 循環可動態創建游標, 步驟為:1. 定義游標類型;2. 創建循環;3. 動態創建游標;4. 執行游標;5. 關閉游標。示例:可循環創建游標,顯示前 10 名員工姓名和工資。

oracle視圖怎麼導出 oracle視圖怎麼導出 Apr 12, 2025 am 06:15 AM

可以通過 EXP 實用程序導出 Oracle 視圖:登錄 Oracle 數據庫。啟動 EXP 實用程序,指定視圖名稱和導出目錄。輸入導出參數,包括目標模式、文件格式和表空間。開始導出。使用 impdp 實用程序驗證導出。

oracle日誌寫滿怎麼辦 oracle日誌寫滿怎麼辦 Apr 12, 2025 am 06:09 AM

Oracle 日誌文件寫滿時,可採用以下解決方案:1)清理舊日誌文件;2)增加日誌文件大小;3)增加日誌文件組;4)設置自動日誌管理;5)重新初始化數據庫。在實施任何解決方案前,建議備份數據庫以防數據丟失。

MySQL與其他數據庫:比較選項 MySQL與其他數據庫:比較選項 Apr 15, 2025 am 12:08 AM

MySQL適合Web應用和內容管理系統,因其開源、高性能和易用性而受歡迎。 1)與PostgreSQL相比,MySQL在簡單查詢和高並發讀操作上表現更好。 2)相較Oracle,MySQL因開源和低成本更受中小企業青睞。 3)對比MicrosoftSQLServer,MySQL更適合跨平台應用。 4)與MongoDB不同,MySQL更適用於結構化數據和事務處理。

甲骨文在商業世界中的作用 甲骨文在商業世界中的作用 Apr 23, 2025 am 12:01 AM

Oracle不僅是數據庫公司,還是雲計算和ERP系統的領導者。 1.Oracle提供從數據庫到雲服務和ERP系統的全面解決方案。 2.OracleCloud挑戰AWS和Azure,提供IaaS、PaaS和SaaS服務。 3.Oracle的ERP系統如E-BusinessSuite和FusionApplications幫助企業優化運營。

HDFS配置CentOS需要哪些步驟 HDFS配置CentOS需要哪些步驟 Apr 14, 2025 pm 06:42 PM

在CentOS系統上搭建Hadoop分佈式文件系統(HDFS)需要多個步驟,本文提供一個簡要的配置指南。一、前期準備安裝JDK:在所有節點上安裝JavaDevelopmentKit(JDK),版本需與Hadoop兼容。可從Oracle官網下載安裝包。環境變量配置:編輯/etc/profile文件,設置Java和Hadoop的環境變量,使系統能夠找到JDK和Hadoop的安裝路徑。二、安全配置:SSH免密登錄生成SSH密鑰:在每個節點上使用ssh-keygen命令

See all articles