日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

day06:02oracle体系结构_存储结构

發布時間:2025/4/16 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 day06:02oracle体系结构_存储结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?存儲結構

一? 邏輯結構


?段、區、塊
?Segments/Extents/DataBlocks
? 從存儲的角度只有段
? ?記錄到數據字典
? ?創建段

1、表空間 tablespace
? 表空間是數據庫的最大邏輯存儲結構,和物理數據文件相對應,一個表空間可以由多個數據文件組成,一個數據文件只能屬于一個表空間
? 主要的幾個表空間:

SYSTEM: 系統表空間,用于存放內部表和數據字段的數據,如表名、列名、用戶名。#查看數據字典的信息SQL> COL TABLE_NAME FOR A30SQL> COL COMMENTS FOR A30SQL> SELECT * FROM DICT;#查看數據庫內部表的信息SQL> COL VIEW_NAME FOR A30SQL> COL VIEW_DEFINITION FOR A30SQL> SELECT * FROM V$FIXED_VIEW_DEFINITION;SYSAUX: 系統輔助表空間,由ORACLE自行維護

SYSAUX: 系統輔助表空間,由ORACLE自行維護
UNDO: 存放撤銷信息的表空間
USERS; 建議用戶使用的表空間,scott用戶的表就在這個表空間上


建議:不同應用系統存放在不同的表空間上,不同的表空間的文件放在不同的磁盤上,減少并發,提高性能。
??
?段 一個獨立的邏輯存儲結構,用于存儲表、索引或簇等占用空間的對象,一個段只能屬于一個數據庫對象
? 有以下幾種段:
? ?數據段
? ? 數據段存放的是數據表中的數據,數據段的增大時向數據段增加區,創建表時,系統自動創建一個同名的段
? ?索引段
? ? 包含了用于提高系統性能的索引,一旦建立索引,系統自動創建一個同名的索引段
? ?回滾段
? ? 也叫撤銷段,該段保存了回滾的條目,oracle將修改前的舊數據存放在回滾段中,利用這個,可以撤銷未提交的操作
? ?臨時段
? ? 當執行創建索引、查詢等操作時,系統會使用一些臨時空間用來保存解析過的查詢語句以及在排序過程中產生的臨時數據
?區: 段空間分配時最小的單位,由連續的數據塊組成
?塊 :組成區的最小單位,通常是操作系統數據塊的整數倍,ORACLE支持同時使用多種大小


SQL> col name for a30; SQL> col value for a30; SQL> select name,value from v$parameter where name='db_block_size'; NAME VALUE ------------------------------ ------------------------------ db_block_size 8192

塊組成部分:
? ?塊頭 存放數據塊的基本信息,如塊的物理地址,塊所屬段的類型
? ?表目錄 如果是數據表,存放數據表的相關信息
? ?行目錄 如果有行數據,那么存儲行信息
? ?空余空間 新行插入和存在行的更新
? ?行數據 存放表數據和索引數據

表空間: 大于數據文件的邏輯概念

分類:
?基本表空間: 一般為用戶使用的永久性表空間,存儲用戶永久性數據
?臨時表空間: 臨時表空間是一個磁盤空間,存儲用戶在執行ORDER BY等語句進行排序或匯總時產生的臨時數據,默認情況下所有用戶都使用temp作為默認的臨時表空間,也允許使用其他臨時表空間作為默認臨時表空間,需要在創建用戶時指定
?大文件表空間: 存儲大型數據
?非標準數據塊表空間:在一個實例中創建數據庫大小不同的表空間
?撤銷表空間:存儲事務的撤銷數據,在數據恢復時使用,一個數據庫中可以有多個撤銷表空間,但是數據庫一次只能使用一個,默認使用自動創建的undotbs撤銷表空間。

默認:
?SYSTEM: 數據字典
?SYSAUX: 輔助系統表空間
?UNDOTBS1: UNDO回滾段,存儲修改前的數據
?TEMP: 臨時表空間,會話使用
?USERS:?

狀態屬性:
?ONLINE: ?在線,允許訪問該表空間中的數據
?OFFLINE: 離線,不允許訪問該表空間的數據
?READ ONLY: 只讀,只允許讀
? 必須處于ONLINE狀態
? 不能包含任何事務的回滾段
? 不能處于在線備份期間
?READ WRITE: 讀寫,可以讀寫
? 必須處于ONLINE狀態

#查看表空間 SQL> select tablespace_name, contents from dba_tablespaces;#查看表空間對應的數據文件 SQL> col file_name for a50; SQL> set linesize 800; SQL> select distinct file_name,tablespace_name from dba_data_files;查看USERS表空間 SQL> SELECT SEGMENT_TYPE,SEGMENT_NAME,OWNER FROM DBA_SEGMENTS WHERE TABLESPACE_NAME='USERS';##創建一個表 SQL> create table hehe (c1 varchar2(10)) segment creation immediate;##查詢該表的段的表空間,區id等信息 SQL> select tablespace_name,extent_id,bytes,file_id,block_id from dba_extents where segment_name='HEHE';##根據文件編號查找對應的數據文件 SQL> select name from v$datafile where file#=&file_id;##根據塊id和和塊大小來計算塊的起始位置 SQL> select block_size * &block_id from dba_tablespaces where tablespace_name='&tablespace_name'; ##創建表空間 newtab SQL> create tablespace newtab datafile '/u01/app/oracle/oradata/orcl/newtab01.dbf' 2 size 10m extent management local autoallocate segment space management auto;#創建表newtable 到表空間newtab SQL> create table newtable(c1 date) tablespace newtab;#查看該表相關段信息,確定第一個分區大小 SQL> select extent_id,segment_name,segment_type,tablespace_name,bytes from dba_extents where segment_name='NEWTABLE';#手動增加區,重復執行,然后再次查看相關區的信息 SQL> alter table newtable allocate extent;#讓該表空間脫機 SQL> alter tablespace newtab offline;#插入數據到表newtable; SQL> insert into newtable values(sysdate);#如果報錯,說明正常,現在將表空間上線 SQL> alter tablespace newtab online;#再次插入數據正常 SQL> insert into newtable values(sysdate);#將表空間設置為 只讀 SQL> alter tablespace newtab read only;#插入數據到表newtable ,提示錯誤 SQL> insert into newtable values(sysdate); insert into newtable values(sysdate) * 第 1 行出現錯誤: ORA-00372: 此時無法修改文件#將表空間修改為讀寫,插入數據觀察 SQL> alter tablespace newtab read write;#插入數據到表newtable,正常 SQL> insert into newtable values(sysdate);?將表空間脫機或者只讀后,可以刪除表嗎?#查看表空間狀態 SQL> select tablespace_name,status from dba_tablespaces;#向表空間newtab中增加數據文件 SQL> alter tablespace newtab add datafile '/u01/app/oracle/oradata/orcl/newtab02.dbf' size 50m;#查看新增的數據文件 SQL> select distinct file_name, tablespace_name,autoextensible from dba_data_files;#修改數據文件 SQL> alter database datafile '/u01/app/oracle/oradata/orcl/newtab02.dbf' autoextend on next 50m maxsize 2g;#修改數據文件大小 SQL> alter database datafile '/u01/app/oracle/oradata/orcl/newtab02.dbf' resize 50m;#刪除表空間newtab SQL> drop tablespace newtab including contents and datafiles;

2、段管理
?使用自動段管理,使用位圖進行管理

#查看表空間的段管理方式 SQL> select tablespace_name, segment_space_management from dba_tablespaces;#***手動轉換自動請新創建表空間。

3、區管理
?區管理方法為每個表空間設置,應用于表空間中的所有段,可使用字典管理或者本地管理,但是請不要使用字典管理。
?字典管理:
? 使用兩張表對區進行管理
?本地管理:
? 使用位圖來管理區

使用uniform size指定每次分配的區大小

#創建一個區大小為150m的表空間dabiao SQL> create tablespace dabiao datafile '/u01/app/oracle/oradata/orcl/dabiao_01.dbf' size 1g extent management local uniform size 150m;#查看創建好的表空間中數據文件的大小 SQL> select name,bytes/1024/1024 from v$datafile;#查看表空間的信息 SQL> select tablespace_name, next_extent,min_extlen from dba_tablespaces;#創建一個區大小為150k的表空間xiaobiao SQL> create tablespace xiaobiao datafile '/u01/app/oracle/oradata/orcl/xiaobiao_01.dbf' size 2g extent management local uniform size 150k;#查看創建好的表空間中數據文件的大小 SQL> select name,bytes/1024/1024 from v$datafile;#查看表空間信息 SQL> select tablespace_name,next_extent,min_extlen from dba_tablespaces;#OEACLE公司建議使用autoallcate關鍵字 SQL> create tablespace xiaobiao1 datafile '/u01/app/oracle/oradata/orcl/all_01.dbf' size 2g extent management local autoallocate;

?

二 物理結構

數據文件
?操作系統塊 os blocks

數據庫的幾類文件
?CONTROL FILE ?控制文件 ?在線
?DATA FILE ? 數據文件 ?在線
?REDO LOG FILE ?重做日志文件 在線
?PARAMETER FILE ?參數文件 ?在線
?
?ARCHIVE LOG FILE 歸檔日志文件 離線
?PASSWORD FILE ?密碼文件 ?離線
?alert file ? 告警文件
?trace file ? ?追蹤文件
?
?在線文件 文件實時改變,不能進行操作
?離線文件 文件生成后不會改變
?安全:
? 復用:一個不行就兩個
? 分散:一個地方不保險就整兩個地方

1、控制文件 (control file)

==========================
?? ?每個數據庫都有一個唯一的控制文件,其中包含關于數據庫本身的數據,可以維護多個副本以防止完全丟失,還可以包含與備份相關的元數據,控制文件對數據庫至關重要,沒有控制文件,數據庫無法打開

作用:
?用于記錄數據庫的物理結構,屬于重要角色,沒有控制文件,實例立即崩潰,數據庫的啟動和正常運行都離不開控制文件。
包含的內容:
?數據庫物理結構信息
?數據庫歸檔歷史信息
?各個數據文件的SCN號和系統檢查點信息
?RMAN元數據
?
性質:
?控制文件是一個二進制文件,不可以通過文本編輯器編輯,該文件由oracle自行維護,oracle建議至少有兩份冗余,并且放在不同的磁盤上。

查看:SQL> show parameters control_files;SQL> col name for a50;SQL> select * from v$controlfile;默認塊大小為16K

2、數據文件

=====================================================
?? ?包含數據庫的用戶或應用程序數據,以及元數據和數據字典

作用:
?用來存儲實際數據,數據文件是存儲數據的物理概念。

數據文件的狀態
?ONLINE: ?聯機狀態
?OFFLINE: 脫機狀態
?OFFLINE DROP: 刪除數據文件
?
?將數據文件OFFLINE時,不影響表空間的狀態,但是表空間的狀態會影響到數據文件的狀態。

SQL> col name for a50; SQL> select file#,name,status from v$datafile;SQL> select * from dba_data_files;SQL> col file_name for a50; SQL> col tablespace_name for a20; SQL> select distinct file_name,tablespace_name from dba_data_files; SQL> select distinct file_name,tablespace_name from dba_temp_files;FILE_NAME TABLESPACE_NAME -------------------------------------------------- -------------------- /u01/app/oracle/oradata/orcl/temp01.dbf TEMP

3、 日志文件 (redo??log)
============================================================
?? ?允許數據庫實例恢復,如果數據庫服務器崩潰并且沒有丟失任何數據文件,實例可以用這些文件中的信息恢復數據庫

作用:記錄數據文件的每一個變化過程,保證數據庫一致性

包含:
?三組redo log
?每組中有多個成員
?成員和成員之間是完全相同的關系
?無需備份,無法備份
?使用復用來保護
?
狀態:
?unused ?剛啟用的時候,還沒有循環過來
?inactive 沒有啟用
?active ?啟用
?current ?當前

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的day06:02oracle体系结构_存储结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。