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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Oracle物理存储结构--文件

發布時間:2025/5/22 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle物理存储结构--文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:【基礎】Oracle物理存儲結構--文件作者:詩意方式

1 數據文件  

?

3.查詢數據文件參數

要將數據文件置為脫機狀態,可以通過下列語句實現,如將SCOTT對象的數據文件置為脫機狀態:

  • SQL> ALTERDATABASE DATAFILE 'F:ORACLEORADATA
  • JSSBOOKSCOTT01.DBF' OFFLINE;?
  • Database altered.
  • 將數據文件置于聯機狀態的語句與上類似,只需要將OFFLINE關鍵字換為ONLINE即可,例如:

  • SQL> ALTERDATABASE DATAFILE 'F:ORACLEORADATA
  • JSSBOOKSCOTT01.DBF' ONLINE;?
  • Database altered.
  • 查詢數據庫中數據文件,以及文件的狀態可以通過查詢DBA_DATA_FILES和V$DATAFILE兩個視圖實現:

  • SQL> SELECTNAME,STATUS FROM V$DATAFILE;
  • NAME STATUS
  • ---------------------------------------- -------
  • F:ORACLEORADATAJSSBOOKSYSTEM01.DBF SYSTEM
  • F:ORACLEORADATAJSSBOOKUNDOTBS01.DBF ONLINE
  • F:ORACLEORADATAJSSBOOKSYSAUX01.DBF ONLINE
  • F:ORACLEORADATAJSSBOOKUSERS01.DBF ONLINE
  • F:ORACLEORADATAJSSBOOKSCOTT01.DBF ONLINE
  • ?

    2 重做日志文件

    Oracle里聯機日志文件(Online redo logfile)是oracle運行的核心,聯機日志文件關系到整個oracle數據庫的運行,很好的設置聯機日志文件,將有助于oracle的健康運行,相反聯機日志文件的損壞,oracle也就面臨著崩潰的危險.

    本文總結一下關于redo logfile的一些內容。

    一、redo logfile的簡單介紹

    它一般由大小相同的一組文件構成。我們可以查看數據庫視圖v$logfile知道它的個數和存儲位置。

    ?

     SQL> select * from v$logfile;

    查看數據庫視圖v$log知道它當前的狀態。

    ?

     SQL> select * from v$log;

    一個時間只有一組logfile group是工作狀態(current), redo logfile滿了后會自動切換到下一個logfile group, 如果數據庫是歸檔方式同時寫到歸檔日志文件。這些文件不能用常規的文本編輯器查看, 它以特定的格式存放, 只有數據庫或者專門的軟件可以看懂它。

    redo logfile的最大數目是在創建數據庫時指明的。如果你想知道當前數據庫redo logfile的最大數值是多少,重新生成控制文件, 就可以知道。

    ?

    SQL>alter database backup controlfile to trace;

    這條語句會在$ORACLE_BASE/admin/dbname/udump/路徑下生成當前時間的一個*.trc文件, 也就是數據庫的控制文件, 用文本編輯器, 即可看到數據庫創建時用的一些參數, 包括redo logfile的最大數(maxlogfiles)。

    二、 redo logfile的大小和位置對數據庫性能的影響

    如果用ORACLE的安裝向導創建的典型數據庫, 它的redo logfile大小為500K, 這基本上是不能滿足典型的OLTP應用的, 在數據庫日志文件(alert_orasid.log)里會記錄著頻繁的log switch。ORACLE推薦log switch時間最好在15--30分鐘之間, 所以redo logfile的大小由數據庫DML操作數據的大小決定其最佳大小。

      redo logfile最好有多個存儲位置, 多組成員, 使數據庫恢復時有更多的選擇。

    典型的OLTP應用,redo logfile大小可以為16M。當然繁忙的數據庫, 例如當今的門戶網站, 這個值可以達到100M以上.

    如果你發現當前數據庫日志文件里log switch的時間偏大或者偏小,不要緊。ORACLE提供了在數據庫聯機狀態來改變redo logfile大小的方法。

    三、在聯機狀態改變redo logfile大小的方法

    假如原來有3個小的redo log file, 下面是Linux環境下的一個例子:

    第一步: 往數據庫添加三個大的redo logfile

    ?

    SQL> alter database add logfile group 4 ('/u01/app/oracle/oradata/HS2008/redo04.log', '/u02/app/oracle/oradata/HS2008/redo04.log') size 100M reuse;

    SQL> alter database add logfile group 5 ('/u01/app/oracle/oradata/HS2008/redo05.log', '/u02/app/oracle/oradata/HS2008/redo05.log') size 100M reuse;

    SQL> alter database add logfile group 6 ('/u01/app/oracle/oradata/HS2008/redo06.log', '/u02/app/oracle/oradata/HS2008/redo06.log') size 100M reuse;

    第二步: 手工地做log switch, 使新建的redo logfile起作用.

    ?

    SQL> alter system switch logfile;

    此操作可以執行一到幾次, 使舊的redo logfile成invalid狀態.

    第三步: 刪除原來舊的redo logfile.

    ?

    SQL> alter database drop logfile group 1;

    SQL> alter database drop logfile group 2;

    SQL> alter database drop logfile group 3;

    到操作系統下刪除原日志組1、2、3中的文件

    四、跟redo logfile有關的其它數據庫參數

    1、log_buffer

    log_buffer是ORACLE SGA的一部分, 所有DML命令修改的數據塊先放在log_buffer里, 如果滿了或者到了check_point時候通過lgwr后臺進程寫到redo logfile里去。它不能設得太大,這樣在意外發生時會丟失很多改變過的數據。它最好不要大于512K或者128K*CPU個數。

    我們可以用下面的SQL語句檢測log_buffer使用情況:

    SQL> select rbar.name,rbar.value,re.name,re.value,(rbar.value*100)/re.value||'%' "radio" from v$sysstat rbar,v$sysstat re

    where rbar.name='redo buffer allocation retries'

    and re.name='redo entries';

    這個比率小于1%才好,否則增加log_buffer的大小

    2、log_checkpoint_interval

    Oracle8.1 版本后log_checkpoint_interval指的是兩次checkpoint之間操作系統數據塊的個數。

    checkpoint時Oracle把內存里修改過的數據塊用DBWR寫到物理文件,用LGWR寫到日志和控制文件。

    從性能優化來說 log_checkpoint_interval = redo logfile size bytes / 512 bytes

    3、log_checkpoint_timeout

    Oracle8.1 版本后log_checkpoint_timeout指的是兩次checkpoint之間時間秒數。

    Oracle建議不用這個參數來控制,因為事務(transaction)大小不是按時間等量分布的。

    log_checkpoint_timeout = 0

    log_checkpoint_timeout = 900

    ?

    3 控制文件

    ?

    2.查詢控制文件參數

    通過初始化參數CONTROL_FILES查詢:

  • SQL> SHOW PARAMETER CONTROL_FILES;
  • NAME TYPE VALUE
  • --------------------- ----------- ------------------------------
  • control_files string F:ORACLEORADATAJSSBOOKCONT
  • ROL01.CTL, F:ORACLEORADATAJ
  • SSBOOKCONTROL02.CTL, F:ORACL
  • EORADATAJSSBOOKCONTROL03.CTL
  • 通過動態性能視圖V$CONTROLFILE查詢:

  • SQL> SELECTNAMEFROM V$CONTROLFILE;
  • NAME
  • --------------------------------------------------
  • F:ORACLEORADATAJSSBOOKCONTROL01.CTL?
  • F:ORACLEORADATAJSSBOOKCONTROL02.CTL?
  • F:ORACLEORADATAJSSBOOKCONTROL03.CTL
  • 3.控制文件備份

    1、將控制文件備份為二進制文件

    SQL>alter database backup controlfile to 'i:oraclebackupcontrol.bkp';

    2、將控制文件備份為文本文件(備份到oraclebaseadminsidudump目錄下的跟蹤文件中,將在跟蹤文件中生成一個SQL腳本)

    SQL>alter database backup controlfile to trace;

    3、通過spfile生成pfile文件備份控制文件

    SQL>create pfile='/pfile_backup.ora' from spfile='/home/oracle/product/10.2.0/db_1/dbs/spfileSID.ora';

    ?

    4.恢復控制文件

    1.關閉數據庫實例;

    2.在操作系統中用好的控制文件通過復制覆蓋壞掉的控制文件‘

    3.重啟數據庫。

    ?

    5.重建控制文件(控制文件都損壞)

    1、關閉數據庫

    SQL>shutdown immediate;

    2、刪除所有控制文件,模擬控制文件的丟失

    3、啟動數據庫,出現錯誤,并不能啟動到mount下

    SQL>startup ORA-00205: error in identifying controlfile, check alert log for more info 查看報警日志文件,有如下信息 SQL>alter database mount Mon May 26 11:53:15 2003 ORA-00202: controlfile: 'D:Oracleoradatachencontrol01.ctl' ORA-27041: unable to open file OSD-04002: unable to open file O/S-Error: (OS 2) 系統找不到指定的文件。

    4、關閉數據庫 SQL>shutdown immediate;

    5、在internal或sys下運行如下創建控制文件的腳本,注意完整列出聯機日志或數據文件的路徑,或修改由alter database backup control file to trace備份控制文件時產生的腳本,去掉多余的注釋

    SQL>STARTUP NOMOUNT SQL>CREATE CONTROLFILE REUSE DATABASE "TEST" NORESETLOGS NOARCHIVELOG MAXLOGFILES 32 MAXLOGMEMBERS 2 MAXDATAFILES 254 MAXINSTANCES 1 MAXLOGHISTORY 226 LOGFILE GROUP 1 'D:ORACLEORADATATESTREDO01.LOG' SIZE 1M, GROUP 2 'D:ORACLEORADATATESTREDO02.LOG' SIZE 1M, GROUP 3 'D:ORACLEORADATATESTREDO03.LOG' SIZE 1M DATAFILE 'D:ORACLEORADATATESTSYSTEM01.DBF', 'D:ORACLEORADATATESTRBS01.DBF', 'D:ORACLEORADATATESTUSERS01.DBF', 'D:ORACLEORADATATESTTEMP01.DBF', 'D:ORACLEORADATATESTTOOLS01.DBF', 'D:ORACLEORADATATESTINDX01.DBF' CHARACTER SET ZHS16GBK;

    SQL>RECOVER DATABASE

    SQL>ALTER DATABASE OPEN; 6、如果沒有錯誤,數據庫將啟動到open狀態下。

    說明:

    1、重建控制文件用于恢復全部控制文件的損壞,需要注意其書寫的正確性,保證包含了所有的數據文件與聯機日志

    2、經常有這樣一種情況,因為一個磁盤損壞,我們不能再恢復(store)數據文件到這個磁盤,因此在store到另外一個盤的時候,我們就必須重新創建控制文件,用于識別這個新的數據文件,這里也可以用這種方法用于恢復。

    4 歸檔的日志文件

    1,改變日志操作模式:

    檢查當前日志操作模式:

    SELECT log_mode from v$database;

    關閉數據庫,然后裝載數據庫:

    SHUTDOWN IMMEDIATE

    STARTUP MOUNT

    改變日志操作模式,然后打開數據庫:

    ALTER DATABASE ARCHIVELOG;

    ALTER DATABASE OPEN;

    2、顯示歸檔日志信息 SELECT name,log_mode FROM v$database;

    顯示歸檔日志信息.

    Select name, sequence#, first_change# FROM v$archived_log; 顯示日志歷史信息 SELECT * FROM v$loghist; 顯示歸檔進程信息. SELECT * FROM v$archive_processes; 1,切換日志文件: 1.1,切換前: SQL> select group#,sequence#,bytes,members,status from v$log;

    GROUP# SEQUENCE# BYTES MEMBERS STATUS ---------- ---------- ---------- ---------- ---------------- 1 215 52428800 1 CURRENT 2 213 52428800 1 INACTIVE 3 214 52428800 1 INACTIVE

    1.2 切換日志文件 SQL> alter system switch logfile;

    1.3 切換后: SQL> select group#,sequence#,bytes,members,status from v$log;

    GROUP# SEQUENCE# BYTES MEMBERS STATUS ---------- ---------- ---------- ---------- ---------------- 1 215 52428800 1 ACTIVE 2 216 52428800 1 CURRENT 3 214 52428800 1 INACTIVE

    2,強制checkpoint: SQL> alter system checkpoint;

    3,切換到歸檔/非歸檔模式 SQL> startup mount SQL> alter database archivelog/noarchivelog SQL> alter database open;

    4,顯示當前歸檔日志組和成員: SQL> select GROUP#,member from v$logfile; 5,添加redo log組: 5.1 SQL> alter database add logfile group 4 ('/oracle/oradata/orcl/redo04.log') size 4m; 5.2 檢查新加入的log狀態 SQL> select group#,sequence#,bytes,members,status from v$log;

    GROUP# SEQUENCE# BYTES MEMBERS STATUS ---------- ---------- ---------- ---------- ---------------- 1 215 52428800 1 INACTIVE 2 216 52428800 1 CURRENT 3 214 52428800 1 INACTIVE 4 0 4194304 1 UNUSED (雖然這里是UNUSED的狀態,但是通過切換日志文件或者數據庫自動切換,該文件會被改為active狀態) 6,添加新的文件到group 1 SQL> alter database add logfile member '/oracle/oradata/orcl/redo05.log' to group 1; SQL> select group#,sequence#,bytes,members,status from v$log;

    GROUP# SEQUENCE# BYTES MEMBERS STATUS ---------- ---------- ---------- ---------- ---------------- 1 219 52428800 2 CURRENT 2 216 52428800 1 ACTIVE 3 218 52428800 1 ACTIVE 4 217 4194304 1 ACTIVE ( 這里的group組中的member就變為2;) SQL> select member from v$logfile where group#=1;

    MEMBER ----------------------------------------------------------------------------- /oracle/oradata/orcl/redo01.log /oracle/oradata/orcl/redo05.log

    7,給數據庫日志文件改名 SQL> alter database rename file '/oracle/oradata/orcl/redo05.log'

    to '/oracle/oradata/orcl/redo06.log';

    這里如果數據庫是當前被使用的,無法改名;如果redo06.log文件不存在,數據庫無法獲得其信息,無法改名,數據庫文件如果已經存在在數據庫中,無法改名(可以先創建號固定大小的數據庫文件改名)

    8, 刪除新增的group 4 SQL> alter database drop logfile group 4;

    9,刪除新增的group 1的logfile; SQL> alter database drop logfile member '/oracle/oradata/orcl/redo06.log';

    10,清空logfile: SQL> alter database clear logfile '/oracle/oradata/orcl/redo01.log'

    SQL> select group#,sequence#,bytes,members,status from v$log;

    GROUP# SEQUENCE# BYTES MEMBERS STATUS ---------- ---------- ---------- ---------- ---------------- 1 0 52428800 1 UNUSED 2 220 52428800 1 CURRENT 3 218 52428800 1 INACTIVE #########################################################################################

    查詢歸檔日志文件狀態:

    select group#,status,type,member,IS_RECOVERY_DEST_FILE from v$logfile;

    查詢歸檔日志文件所在目錄和文件名 ? select group#,status,type,member,IS_RECOVERY_DEST_FILE from v$logfile;

    如何查看歸檔日志路徑?

    SQL> show parameter RECOVERY; 顯示歸檔日志信息.

    Col name format a40

    Select name, sequence#, first_change# FROM v$archived_log;

    Name用于表示歸檔日志文件名,sequence#用于表示歸檔日志對應的日志序列號,firs_change#用于標識歸檔日志的起始SCN值.

    ?

    ?

    5 初始參數文件

    理解oracle10g的初始化參數文件 當oracle實例啟動時,它從一個初始化參數文件中讀取初始化參數。這個初始化參數文件可以是一個只讀的文本文件,或者是可以讀/寫的二進制文件。這個二進制文件被稱作服務器參數文件(sever parameter file),它總是存儲在服務器上。使用服務器參數文件,可以使得管理員用alter system命令對數據庫所作的改變保存起來,即使重新啟動數據庫,改變也不會丟失。因此Oracle建議用戶使用服務器參數文件。可以通過編輯過的文本初始化文件,或者使用DBCA來創建服務器參數文件。 在你創建服務器參數文件之前,你可以使用文本初始化參數文件啟動數據庫。在數據庫啟動時,ORACLE實例首先在默認位置查找服務器參數文件,如果沒找到,接著找文本初始化參數文件。你也可以使用 STARTUP 命令的相關參數指定一個文本文件來啟動數據庫,此時服務器參數文件并不起作用。
    默認的初始化參數文件名和默認路徑 平臺 ? ? ? ? ? ? 默認名稱 默認路徑 Windows init%ORACLE_SID%.ora ? ? ? ? ? ? %ORACLE_HOME%database
    初始化參數文件模板(unix平臺) control_files = (/u0d/lcg03/control.001.dbf, /u0d/lcg03/control.002.dbf, /u0d/lcg03/control.003.dbf) db_name = lcg03 db_domain = us.oracle.com log_archive_dest_1 = "LOCATION=/net/fstlcg03/private/yaliu/testlog/log.lcg03.fstlcg03/lcg03/arch" log_archive_dest_state_1 = enable db_block_size = 8192 pga_aggregate_target = 2500M processes = 1000 sessions = 1200 open_cursors = 1024 undo_management = AUTO shared_servers = 3 remote_listener = tnsfstlcg03 undo_tablespace = smu_nd1 compatible = 10.2.0 sga_target = 1500M nls_language = AMERICAN nls_territory = AMERICA db_recovery_file_dest = /net/fstlcg03/private/yaliu/testlog/log.lcg03.fstlcg03/lcg03/arch db_recovery_file_dest_size = 100G
    oracle數據庫提供了普遍使用的初始化參數模板,你可以通過此模版,或者通過dbca創建你自己的初始化參數文件。你可以根據你的數據庫的需要編輯模板參數文件,修改或添加你自己的參數值,對于沒有出現在該文件中的參數,oracle使用默認值。 如果你第一次創建oracle數據庫,oracle 建議對初始化參數不要改變太多。當你熟悉了數據庫和計算機環境后,可以使用alter system命令動態調整很多初始化參數。如果你使用文本初始化參數文件,你所作的改變只會影響當前的實例,重新啟動后會恢復為文本初始化參數文件中設置的值。要使改變永久有效,還要手動更新文本初始化參數文件中的相應值。如果你使用服務器參數文件,alter system 命令可以影響當前實例并同時更新服務器初始化文件,使得改變永久有效。 以下介紹一些基本的初始化參數: ? ? ? ? ? ? 確定全局數據庫名稱 ? ? ? ? ? ? 指定快速恢復區(Flash Recovery Area) ? ? ? ? ? ? 指定控制文件 ? ? ? ? ? ? 指定數據塊大小(Database block sizes) ? ? ? ? ? ? 管理系統全局區 ? ? ? ? ? ? 指定最大進程數 ? ? ? ? ? ? 指定回滾空間的管理方法 ? ? ? ? ? ? 兼容性初始化參數和不能取消的兼容功能 ? ? ? ? ? ? 設置許可(License)參數 確定全局數據庫名稱 ? ? ? 全局數據庫名稱包含用戶指定的本地數據庫名和數據庫所在的網絡地址。DB_NAME初始化參數決定了本地名稱,DB_DOMAIN指定了網絡地址。這兩個地址組成了數據庫在網絡上是唯一名稱。 ? ? 比如,我們要創建一個名為test.us.acme.com的數據庫,參數值如下 DB_NAME=test DB_DOMAIN=us.acme.com 你可以使用ALTER DATABASE RENAME GLOBAL_NAME 命令重新命名全局數據庫名。不過在第一次改變db_name和db_domain之后,你必須重新啟動數據庫并且重新建立控制文件。 DB_NAME初始化參數 DB_NAME必須為不大于八個字符的文本字符串。在創建數據庫的過程中,DB_NAME中存儲的數據庫值會被記錄在數據文件、重做日志文件,和控制文件中。如果再數據庫實例啟動時,參數文件中的DB_NAME值和控制文件中保存的值不一致會導致數據庫啟動失敗。 DB_DOMAIN初始化參數 DB_DOMAIN是表示數據庫所在的網絡地址的文本字符竄。通常是擁有數據庫的組織的域名。如果你將要建立的數據庫是分布式數據庫系統的一部分,一定要小心伺候這個參數。 指定快速恢復區 ? ? ? 快速恢復區是oracle可以存儲和管理數據恢復相關文件的區域,它和數據庫區域是不同的,數據庫區域是指oracle管理當前數據庫文件的目錄(包含數據文件,控制文件,在現重做日志) 你可以使用下面的初始化參數指定快速恢復區域 ? ? DB_RECOVERY_FILE_DEST :快速恢復區的位置。可以是目錄,文件系統,或者自動存儲管理硬盤組(ASM)。不能是原始文件系統(raw file system) ? ? 在RAC(Real Application Clusters)環境中,這個位置必須在cluster文件系統上,ASM硬盤組,或者通過NFS建立的共享目錄上。 ? ? DB_RECOVERY_FILE_DEST_SIZE :指定了快速恢復區可以使用的最大字節數,這個參數必須要在DB_RECOVERY_FILE_DEST參數得到應用前指定。 ? ? 在RAC環境中,這兩個參數值必須在所有的實例中設置相同的值。 如果你已經設置了LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST的值的話,上面提到的參數值不會起作用的。你必須禁用LOG_ARCHIVE_DEST 和 LOG_ARCHIVE_DUPLEX_DEST后才能設置快速恢復區。作為替代,你可以配置LOG_ARCHIVE_DEST_n 的值。如果你沒有為本地設置LOG_ARCHIVE_DEST_n 的值,那么設置快速恢復區將會把LOG_ARCHIVE_DEST_10設置為快速恢復區。 Oracle建議使用快速恢復區,它可以簡化恢復操作。
    指定控制文件 ? ? ? 參數CONTROL_FILES指定一個或多個控制文件,當你創建數據庫時,在該參數中指定的控制文件會被創建。 ? ? 如果沒有設置該參數,oracle會幫你創建一個控制文件,或者如果你啟用了oracle_managed files,將會創建oracle管理的控制文件。 ? ? ? 如果你想讓數據庫在創建控制文件的時候創建另外的文件作為備份,那么CONTROL_FILES參數中指定的文件列表中不能包含系統中已經存在的文件。如果你想讓數據庫重新使用已經存在的文件,或者覆蓋已有的文件,必須設置重新使用選項(警告,如果你選擇重新使用選項,則已存在的文件中的內容會被覆蓋) ? ? Oracle強烈建議每個數據庫使用至少兩個控制文件,存儲在不同的物理硬盤上 指定數據庫塊大小 DB_BLOCK_SIZE 初始化參數指定了標準的數據塊大小。這個塊大小被用于SYSTEM表空間,并且默認情況下也被用于其它的表空間。Oracle數據庫可以支持最多四個額外的非標準塊大小DB_BLOCK_SIZE 標準塊大小應該設為最普通的值,在很多情況下,你只需要設置這一個參數。比如4k或8k。如果你沒有設置這個參數,默認大小是根據操作系統決定的,通常這就足夠了。創建數據庫之后這個參數值就不能更改了,除非重新創建數據庫。如果數據庫塊大小不同于操作系統的塊大小,請確保數據庫塊大小是操作系統塊大小的倍數。比如,如果操作系統塊大小是2k(2048字節),那么以下的參數值是有效的 DB_BLOCK_SIZE=4096 ? ? 更大的塊大小可以提供更有效的I/O操作。因此,在下面條件成立的情況下最好指定大于操作系統塊大小的數據庫塊 1,數據庫在大型計算機系統上,擁有超大內存和超快硬盤。比如大型主機擁有巨大的硬件資源,通常設置4k或更大的塊。 2,操作系統的塊大小太小。比如1k,如果數據庫使用這么小的塊,數據庫會忙于進行大量的I/O操作。 非標準的塊大小 創建新的表空間時,可以指定非標準的塊大小(不同于system表空間的塊大小)。這些塊大小可以使用任何2的密次方的值,比如2k,4k,8k,16k,32k等。最小值根據操作系統的限制有所不同,所以以上的值在某些系統中不能使用。 要使用非標準的塊,必須在SGA中為不同的非標準塊配置緩存,配置方法稍后介紹。 在移動數據庫的時候這個非標準塊的功能會特別有用。比如,你可以從OLAP環境下轉移一個4k塊大小的表空間到使用8k作為標準塊大小的數據倉庫中。

    更多參考:http://blog.sina.com.cn/s/blog_6a7217e80100kb3j.html

    6 概要文件

    Oracle系統為了合理分配和使用系統的資源提出了概要文件的概念。所謂概要文件,就是一份描述如何使用系統的資源(主要是CPU資源)的配置文件。將概要文件賦予某個數據庫用戶,在用戶連接并訪問數據庫服務器時,系統就按照概要文件給他分配資源。

    通過數據字典查看缺省資源配置內容: select * from dba_profiles order by profile;

    在有的書中將其翻譯為配置文件,其作用包括。

    1、管理數據庫系統資源。利用Profile來分配資源限額,必須把初始化參數resource_limit設置為true。ALTER SYSTEM SET resource_limit=TRUE SCOPE=BOTH;

    2、管理數據庫口令及驗證方式。默認給用戶分配的是DEFAULT概要文件,將該文件賦予了每個創建的用戶。但該文件對資源沒有任何限制,因此管理員常常需要根據自己數據庫系統的環境自行建立概要文件。

    PROFILE的管理(資源文件)當需要設置資源限制時,必須設置數據庫系統啟動參數RESOURCE_LIMIT,此參數默認值為FALSE 可以使用如下命令來啟動當前資源限制: alter system set RESOURCE_LIMIT=true; 當需要以后啟動時也啟動限制,必須在init<SID>.ora中設置 RESOURCE_LIMIT=true 一、PROFILE的管理內容:(內核資源參數,口令資源參數) 1、CPU的時間 2、I/O的使用 3、IDLE TIME(空閑時間) 4、CONNECT TIME(連接時間) 5、并發會話數量 6、口令機制:
    二、DEFAULT PROFILE: 1、所有的用戶創建時都會被指定這個PROFILE 2、DEFAULT PROFILE的內容為空,無限制
    三、PROFILE的劃分: If a user attempts to perform an operation that exceeds the limit for other session resources, Oracle aborts the operation, rolls back the current statement, and immediately returns an error. The user can then commit or roll back the current transaction, and must then end the session. that exceeds the limit(超過限制) for other session resources(范圍之外的其他資源) 被理解為:連接控制資源范圍之外的其他資源。 當一個用戶試圖操作超過限制的資源時,Oracle終止當前操作,取消正在執行的處理,并且返回一個錯誤,用戶可以提交或回滾當前事物,之后必須斷開會話。 如果一個用戶試圖操作一個超出他限制的資源,Oracle將放棄這個操作,取消正在執行的處理,并立即返回一個錯誤。這個用戶然后提交或回滾當前的處理,之后必須終止這個會話。 如果是調用限制時,Oracle終止當前操作,取消正在執行的處理,并且返回一個錯誤,回滾整個事務。 1、CALL級LIMITE: 對象是:語句: 當該語句資源使用溢出時: A、該語句終止 B、事物回退 C、SESSION連接保持

    2、SESSION級LIMITE: 對象是:整個會話過程 溢出時:連接終止
    四、如何管理一個PROFILE 1、CREATE PROFILE 2、分配給一個用戶 3、象開關一樣打開限制。
    五、如何創建一個PROFILE: 1、命令: CREATE PROFILE 名稱 LIMIT SESSION_PER_USER 2 CPU_PER_SESSION 1000 IDLE_TIME 60 用戶在數據庫終止前,可以讓連接空閑多長時間(分鐘) CONNECT_TIME 480 六、限制參數: 0、UNLIMITED 取消資源限制 DEFAULT 缺剩資源限制,即使用default資源限制
    1、CONNECT_TIME :一個連接會話的最長連接時間(分鐘) 當用戶會話時間超過CONNECT_TIME指定的時間,Oracle將回滾當前事務,并且結束他的會話
    2、SESSIONS_PER_USER:一個用戶允許同時(并發)會話的總數,超過后系統禁止該用戶的后續會話,并返回錯誤:ORA-02391 exceeded simultaneous SESSIONS_PER_USER limit
    3、SESSIONLIMITECPU_PER_SESSION:定義了一個SESSION占用的CPU的時間(1/100 秒),當達到這個限制用戶不能在此會話中執行任何操作,此時必須先斷開連接,再連接才行。 CPU_PER_CALL :限制每次調用SQL語句期間(parse、execute、fetch)可用的CPU時間總量,單位是百分之一秒。達到限制時 語句以報錯結束。不同于CPU_PER_SESSION的是,沒達到CPU_PER_SESSION限制,還可以進行新的查詢。 4、LOGICAL_READS_PER_SESSION: 一個會話允許讀寫的邏輯塊的數量限制 5、CALLLIMITE CPU_PER_CALL:每個語句占用的CPU時間 LOGICAL_READS_PER_CALL:一次調用的SQL期間,允許讀數據庫塊數限制 6、PRIVATE_SGA:一個會話允許分配的最大SGA大小,使用K/M定義 COMPOSITE_LIMIT:一個會話的資源成本限制,CPU_PER_SESSION, CONNECT_TIME, LOGICAL_READS_PER_SESSION, and PRIVATE_SGA 七、分配給一個用戶: CREATE USER 用戶名 PROFILE 概要文件名 ALTER USER 用戶名 PROFILE 概要文件名
    八、打開資源限制: 1、RESOURCE_LIMT:資源文件中含有 2、ALTER SYSTEM SET RESOURCE_LIMIT=TRUE; 3、默認不打開
    九、修改PROFIE的內容: 1、ALTER PROFILE 名稱參數 新值 2、對于當前連接修改不生效。
    DROP一個PROFILE 1、DROP PROFILE 概要文件名 刪除一個新的尚未分配給用戶的PROFILE, 2、DROP PROFILE 概要文件名 CASCADE 3、注意事項 A、一旦PROFILE被刪除,用戶被自動加載DEFAULT PROFILE B、對于當前連接無影響 C、DEFAULT PROFILE不可以被刪除
    十、信息獲取: 1、DBA_USERS: 用戶名,PROFILE 2、DBA_PROFILES: PROFILE及各種限制參數的值 每個用戶的限制:PROFILE(關鍵字段)
    十一、PROFILE的口令機制限制 1、限制內容 A、限制連續多少次登錄失敗,用戶被加鎖 B、限制口令的生命周期 C、限制口令的使用間隔

    D、限制口令到期更改提示時間 2、限制生效的前提: A、RESOURCE_LIMIT:=TRUE B、ORACLERDBMSADMINUTLPWDMG.SQL 3、如何創建口令機制: CREATE PROFILE 名稱

    SESSIONS_PER_USER ..... password_life_time 30 failed_log_attempts 3 password_reuse_time 3 4、口令資源參數的含義: A、FAILED_LOGIN_ATTEMPTS :當連續登陸失敗次數達到該參數指定值時,用戶被加鎖; 經過DBA解鎖(或PASSWORD_LOCK_TIME天)后可繼續使用 B、PASSWORD_LIFE_TIME :口令的有效期(天),默認為UNLIMITED C、PASSWORD_LOCK_TIME :帳戶因FAILED_LOGIN_ATTEMPTS鎖定時,加鎖天數 D、PASSWORD_GRACE_TIME :口令修改的寬限期(天) E、PASSWORD_REUSE_TIME :口令被修改后原有口令隔多少天被重新使用,默認為UNLIMITED F、PASSWORD_REUSE_MAX :口令被修改后原有口令被修改多少次才允許被重新使用。 G、PASSWORD_VERIFY_FUNCTION:口令效驗函數

    7 密碼文件 在Oracle數據庫系統中,用戶如果要以特權用戶身份(INTERNAL/SYSDBA/SYSOPER)登錄Oracle數據庫可以有兩種身份驗證的方法:即使用與操作系統集成的身份驗證或使用Oracle數據庫的密碼文件進行身份驗證

    一、密碼文件的創建:

    在使用Oracle Instance Manager創建一數據庫實例的時侯,在ORACLE_HOME\DATABASE目錄下還自動創建了一個與之對應的密碼文件,文件名為PWDSID.ORA,其中SID代表相應的Oracle數據庫系統標識符。此密碼文件是進行初始數據庫管理工作的基矗在此之后,管理員也可以根據需要,使用工具ORAPWD.EXE手工創建密碼文件,命令格式如下:

    C:\ >ORAPWDFILE=< FILENAME >PASSWORD =< PASSWORD > ENTRIES=< MAX_USERS >

    各命令參數的含義為:

    FILENAME:密碼文件名;

    PASSWORD:設置INTERNAL/SYS帳號的口令;

    MAX_USERS:密碼文件中可以存放的最大用戶數,對應于允許以SYSDBA/SYSOPER權限登錄數據庫的最大用戶數。由于在以后的維護中,若用戶數超出了此限制,則需要重建密碼文件,所以此參數可以根據需要設置得大一些。

    有了密碼文件之后,需要設置初始化參數REMOTE_LOGIN_PASSWORDFILE來控制密碼文件的使用狀態。

    ?

    二、設置初始化參數 REMOTE_LOGIN_PASSWORDFILE :

    在Oracle數據庫實例的初始化參數文件中,此參數控制著密碼文件的使用及其狀態。它可以有以下幾個選項:

    NONE:指示Oracle系統不使用密碼文件,特權用戶的登錄通過操作系統進行身份驗證;

    EXCLUSIVE:指示只有一個數據庫實例可以使用此密碼文件。只有在此設置下的密碼文件可以包含有除INTERNAL/SYS以外的用戶信息,即允許將系統權限SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用戶。

    SHARED:指示可有多個數據庫實例可以使用此密碼文件。在此設置下只有INTERNAL

    /SYS帳號能被密碼文件識別,即使文件中存有其他用戶的信息,也不允許他們以SYSOPER/SYSDBA的權限登錄。此設置為缺省值。

    在REMOTE_LOGIN_PASSWORDFILE參數設置為EXCLUSIVE、SHARED情況下,Oracle系統搜索密碼文件的次序為:在系統注冊庫中查找 ORA_SID_PWFILE 參數值(它為密碼文件的全路徑名);若未找到,則查找 ORA_PWFILE 參數值;若仍未找到,則使用缺省值 ORACLE_HOME\DATABASE\PWDSID.ORA;其中的SID代表相應的Oracle數據庫系統標識符。

    ?

    三、向密碼文件中增加、刪除用戶:

    當初始化參數REMOTE_LOGIN_PASSWORDFILE設置為EXCLUSIVE時,系統允許除INTERNAL/SYS以外的其他用戶以管理員身份從遠端或本機登錄到Oracle數據庫系統,執行數據庫管理工作;這些用戶名必須存在于密碼文件中,系統才能識別他們。由于不管是在創建數據庫實例時自動創建的密碼文件,還是使用工具ORAPWD.EXE手工創建的密碼文件,都只包含INTERNAL/SYS用戶的信息;為此,在實際操作中,可能需要向密碼文件添加或刪除其他用戶帳號。

    由于僅被授予SYSOPER/SYSDBA系統權限的用戶才存在于密碼文件中,所以當向某一用戶授予或收回SYSOPER/SYSDBA系統權限時,他們的帳號也將相應地被加入到密碼文件或從密碼文件中刪除。由此,向密碼文件中增加或刪除某一用戶,實際上也就是對某一用戶授予或收回SYSOPER/SYSDBA系統權限。

    要進行此項授權操作,需使用SYSDBA權限(或INTERNAL帳號)連入數據庫,且初始化參數REMOTE_LOGIN_PASSWORDFILE的設置必須為EXCLUSIVE。具體操作步驟如下:

    1.創建相應的密碼文件;

    2.設置初始化參數REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;

    3.使用SYSDBA權限登錄:CONNECT SYS/internal_user_passsword? AS SYSDBA;

    4.啟動數據庫實例并打開數據庫;

    5.創建相應用戶帳號,對其授權(包括SYSOPER和SYSDBA):

    授予權限:GRANT SYSDBA TO user_name;

    6.收回權限:REVOKE SYSDBA FROM user_name;

    現在這些用戶可以以管理員身份登錄數據庫系統了;

    ?

    四、使用密碼文件登錄:

    有了密碼文件后,用戶就可以使用密碼文件以SYSOPER/SYSDBA權限登錄Oracle數據庫實例了,注意初始化參數REMOTE_LOGIN_PASSWORDFILE應設置為EXCLUSIVE或SHARED。任何用戶以SYSOPER/SYSDBA的權限登錄后,將位于SYS用戶的Schema之下,以下為兩個登錄的例子:

    1. 以管理員身份登錄:

    假設用戶scott已被授予SYSDBA權限,則他可以使用以下命令登錄:

    CONNECT scott/tiger AS SYSDBA

    2. 以INTERNAL身份登錄:

    CONNECT INTERNAL/INTERNAL_PASSWORD

    ?

    五、密碼文件的維護:

    1. 查看密碼文件中的成員:

    可以通過查詢視圖V$PWFILE_USERS來獲取擁有SYSOPER/SYSDBA系統權限的用戶的信息,表中SYSOPER/SYSDBA列的取值TRUE/FALSE表示此用戶是否擁有相應的權限。這些用戶也就是相應地存在于密碼文件中的成員。

    2. 擴展密碼文件的用戶數量:

    當向密碼文件添加的帳號數目超過創建密碼文件時所定的限制(即ORAPWD.EXE工具的MAX_USERS參數)時,為擴展密碼文件的用戶數限制,需重建密碼文件,具體步驟如下:

    a) 查詢視圖V$PWFILE_USERS,記錄下擁有SYSOPER/SYSDBA系統權限的用戶信息;

    b) 關閉數據庫;

    c) 刪除密碼文件;

    d) 用ORAPWD.EXE新建一密碼文件;

    e) 將步驟a中獲取的用戶添加到密碼文件中。

    3. 修改密碼文件的狀態:

    密碼文件的狀態信息存放于此文件中,當它被創建時,它的缺省狀態為SHARED。可以通過改變初始化參數REMOTE_LOGIN_PASSWORDFILE的設置改變密碼文件的狀態。當啟動數據庫事例時,Oracle系統從初始化參數文件中讀取REMOTE_LOGIN_PASSWORDFILE參數的設置;當加載數據庫時,系統將此參數與口令文件的狀態進行比較,如果不同,則更新密碼文件的狀態。若計劃允許從多臺客戶機上啟動數據庫實例,由于各客戶機上必須有初始化參數文件,所以應確保各客戶機上的初始化參數文件的一致性,以避免意外地改變了密碼文件的狀態,造成數據庫登陸的失敗。

    4. 修改密碼文件的存儲位置:

    密碼文件的存放位置可以根據需要進行移動,但作此修改后,應相應修改系統注冊庫有關指向密碼文件存放位置的參數或環境變量的設置。

    5. 刪除密碼文件:

    在刪除密碼文件前,應確保當前運行的各數據庫實例的初始化參數REMOTE_LOGIN_PASSWORDFILE皆設置為NONE。在刪除密碼文件后,若想要以管理員身份連入數據庫的話,則必須使用操作系統驗證的方法進行登錄。

    轉載于:https://www.cnblogs.com/weixun/archive/2013/06/01/3112524.html

    總結

    以上是生活随笔為你收集整理的Oracle物理存储结构--文件的全部內容,希望文章能夠幫你解決所遇到的問題。

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