1. 程式人生 > >oracle 10g 11g中的SGA_MAX_SIZE與SGA_TARGET引數

oracle 10g 11g中的SGA_MAX_SIZE與SGA_TARGET引數

oracle 10g中的SGA_MAX_SIZE與SGA_TARGET引數

sga_target是自動管理記憶體時使用的,這樣你就不用設定DB_CACHE_SIZE,SHARED_POOL_SIZE等引數,他們會根據需要自動的進行調整的。

SGA_MAX_SIZE是從oracle9i以來一直存在﹐是不可動態修改的。

SGA_TARGET是oracle10g中用於實現自動SGA記憶體管理而新增加的。

SGA_MAX_SIZE指的是可動態分配的最大值﹐而SGA_TARGET是當前已分配的最大sga。

SGA_MAX_SIZE是不可以動態修改的,而SGA_TARGET是可動態修改﹐直到SGA_MAX_SIZE的值(當然這是在例項啟動前已設定SGA_MAX_SIZE>SGA_TARGET的情況)

如果在例項啟動時﹐ SGA_MAX_SIZE < SGA_TARGET 或SGA_MAX_SIZE沒設定﹐則啟動後SGA_MAX_SIZE的值會等於SGA_TARGET的值。


可以用如下命令檢視SGA_MAX_SIZE與SGA_TARGET的值

SQL> show parameter sga

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
lock_sga boolean FALSE
pre_page_sga boolean FALSE
sga_max_size big integer 152M
sga_target big integer 152M

可以用如下命令修改SGA_MAX_SIZE與SGA_TARGET的值
SQL> alter system set sga_max_size=160M  scope=spfile;
SQL> alter system set sga_target=160M  scope=spfile;

Oracle 11g新特性:Memory_target與自動記憶體管理

這個新特性算不上驚人,但是卻是Oracle在記憶體管理上的又一重要增強。

如果這個引數設定過高,在例項啟動時可能會出現如下錯誤提示:

SQL*Plus: Release 11.1.0.5.0 - Beta on Sun Jul 29 08:35:28 2007
Copyright (c) 1982, 2007, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system


這一提示不是指特性不支援,而是你需要去調整記憶體設定。

在設定了這個引數後,自動記憶體調整啟用:

SQL> show parameter memory

NAME                               TYPE             VALUE
------------------------------------      -----------        ------------------------------
hi_shared_memory_address integer         0
memory_max_target            big integer    416M
memory_target                    big integer    416M
shared_memory_address     integer          0

類似SGA_MAX_SIZE與SGA_TARGET一樣,MEMORY_MAX_TARGET與MEMORY_TARGET成對出現,這一特性的出現使得PGA+SGA作為整體記憶體使用被一致的納入自動管理範疇。

而同樣與Oracle10g類似,設定了自動記憶體管理之後,PGA_AGGREGATE_TARGET引數不再需要設定,代之發揮作用的引數是帶有2個下劃線的__PGA_AGGREGATE_TARGET引數,我們可以來看一下這幾個引數的解釋:

SQL> select ksppinm,ksppdesc from x$ksppi
  2  where ksppinm like '%pga%';

KSPPINM                       KSPPDESC
-----------------------               --------------------------------------------------
_pga_large_extent_size   PGA large extent size
_use_ism_for_pga           Use ISM for allocating large extents
_kdli_sio_pga                 use PGA allocations for direct IO
_kdli_sio_pga_top           PGA allocations come from toplevel PGA heap
pga_aggregate_target      Target size for the aggregate PGA memory consumed by the instance
__pga_aggregate_target  Current target size for the aggregate PGA memory consumed
_pga_max_size              Maximum size of the PGA memory for one process

Oracle 11g sga_target 引數設定

今天在一臺linux測試機上裝了Oracle 11g,安裝好以後按照慣例調整sga_target 1G,pga_aggregate_target 200M
(這2個引數在11g裡面預設是0),然後重啟資料庫

結果報錯

ORA-00844: Parameter not taking MEMORY_TARGET into account, see alert log for more information

MEMORY_TARGET?新引數?雖然在安裝過程中瞟過一眼,但是也沒太多注意,後來理解MEMORY_TARGET就是原來10g的
sga_target + pga_aggregate_target的總和,越來越智慧了。

再看導致錯誤原因:
由於設定了Oracle的MEMORY_TARGET引數的值小於了SGA_TARGET和PGA_TARGET的總和,因此報錯。


但是此時資料庫已經啟不來了,在資料庫不能更改spfile的情況下,我們可以更改pfile,再用pfile啟動

SQL> create pfile ='/home/oracle/initora11g.ora' from spfile;
SQL> !echo '*.memory_target=1024m' >>'/home/oracle/initora11g.ora';

將pfile裡面的memory_target設定成1G

報錯,再次驗證memory_target>= sga_target + pga_aggregate_target
ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 1224M
ORA-01078: failure in processing system parameters

再改
SQL> !echo '*.memory_target=1224m' >>'/home/oracle/initora11g.ora';
SQL> !echo '*.sga_target=0' >>'/home/oracle/initora11g.ora';

報新錯誤了又
ORA-00845: MEMORY_TARGET not supported on this system

最終啟動成功

啟動後再改回從spfile啟動
SQL>create spfile from pfile = '/home/oracle/initora11g.ora';

然後再啟動一次

SQL> startup
ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size                  2151248 bytes
Variable Size             511708336 bytes
Database Buffers          549453824 bytes
Redo Buffers                5623808 bytes
Database mounted.
Database opened.

最後
SQL> show parameter target;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target                   integer     0
db_flashback_retention_target        integer     1440
fast_start_io_target                 integer     0
fast_start_mttr_target               integer     0
memory_max_target                    big integer 1300M
memory_target                        big integer 1224M
pga_aggregate_target                 big integer 0
sga_target                           big integer 0

Oracle 11g的Linux版本在修改了MEMORY_TARGET或者SGA_TARGET後啟動可能會報錯:

SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system


這個問題是由於設定SGA的大小超過了作業系統/dev/shm的大小:

[[email protected] ~]# df -k /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 4089416 0 4089416 0% /dev/shm

Oracle在metalink的文件:Doc ID: Note:460506.1中進行了說明。解決這個問題只有兩個方法,一種是修改初始化引數,使得初始化引數中SGA的設定小於/dev/shm的大小,另一種方法就是調整/dev/shm的大小。

修改/dev/shm的大小可以通過修改/etc/fstab來實現:

[[email protected] ~]# vi /etc/fstab

LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
LABEL=/data /data ext3 defaults 1 2
devpts /dev/pts devpts gid=5,mode=620 0 0
#tmpfs /dev/shm tmpfs defaults 0 0
tmpfs /dev/shm tmpfs defaults,size=10240M 0 0
LABEL=/home /home ext3 defaults 1 2
LABEL=/opt /opt ext3 defaults 1 2
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=/usr /usr ext3 defaults 1 2
LABEL=/var /var ext3 defaults 1 2
LABEL=SWAP-sda8 swap swap defaults 0 0
~
~
"/etc/fstab" 13L, 965C written
[[email protected] ~]# umount /dev/shm
[[email protected] ~]# mount /dev/shm
[[email protected] ~]# df -k /dev/shm
Filesystem 1K-blocks Used Available Use% Mounted on
tmpfs 10485760 0 10485760 0% /dev/shm
[[email protected] ~]# su - oracle
[[email protected] ~]$ sqlplus "/ as sysdba"

SQL*Plus: Release 11.1.0.6.0 - Production on Tue Oct 23 15:42:42 2007

Copyright (c) 1982, 2007, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 4743446528 bytes
Fixed Size 2143824 bytes
Variable Size 3892316592 bytes
Database Buffers 805306368 bytes
Redo Buffers 43679744 bytes
Database mounted.
Database opened.

修改/etc/fstab,重新mount /dev/shm,然後就可以啟動資料庫

相關推薦

oracle 10g 11gSGA_MAX_SIZESGA_TARGET引數

oracle 10g中的SGA_MAX_SIZE與SGA_TARGET引數 sga_target是自動管理記憶體時使用的,這樣你就不用設定DB_CACHE_SIZE,SHARED_POOL_SIZE等引數,他們會根據需要自動的進行調整的。 SGA_MAX_SIZE是從or

在linux oracle 10g/11g x64bit環境,goldengate隨os啟動而自己主動啟動的腳本

內容 rtm 自己 root optimize and cal 背景 ram 在linux。oracle 10g/11g x64bit環境中,goldengate隨os啟動而自己主動啟動的腳本 背景描寫敘述: goldengate安裝於/u01/ggs文件夾下

oracle 10g,11g RACvip作用

Why do we have a Virtual IP (VIP) in Oracle RAC 10g or 11g? The goal is application availability. RAC 中VIP的目的是實現app應用的高可用 W

Python requests.post方法datajson引數區別

在通過requests.post()進行POST請求時,傳入報文的引數有兩個,一個是data,一個是json。 data與json既可以是str型別,也可以是dict型別。 區別: 1、不管json是str還是dict,如果不指定headers中的content-type,預設為application/

Oracle 10g RAC的DRM問題及關閉

在RAC環境中,Oracle使用GRD(Global Resource Service)來記錄各個RAC節點的資源資訊,具體通過GCS(Global Cache Service)和GES(Global Enqueue Service)這兩個服務進行管理。        由

關於C#refout引數的理解

/*ref與out引數的使用*/using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace conapp_6_out與ref的使用{    //定義類

Oracle 10g RAC public IP private IP 詳解

公有網路:對外提供服務,用於客戶端、應用系統和資料庫之間的連線。一般除了維護資料庫外,使用者很少直接連線資料庫, 常見做法是使用者通過中介軟體(application server)連線到資料庫 優點:資料庫連線可以快取和重用。中介軟體可以在啟動時一次建立多個數據庫連線,

QtSignalSlot引數問題

Referenced by: 應注意的問題 訊號與槽機制是比較靈活的,但有些侷限性我們必須瞭解,這樣在實際的使用過程中做到有的放矢,避免產生一些錯誤。下面就介紹一下這方面的情況。 1 .訊號與槽的效率是非常高的,但是同真正的回撥函式比較起來,由於增加了靈活性,

oracle 11g oracle 10g) crsctl 的 替換命令

替換 delet pla tran 11g deb cells clas nat  oracle 11g 中 (oracle 10g) crsctl 的 替換命令 Deprecated Comman

Oracle數據庫11g Data Guard物理備用數據庫搭建配置

Oracle Data Guard Oracle主備 Oracle Data Guard是由Oracle公司提供的一套高可用性數據庫解決方案。Data Guard可以確保企業數據的高可用性,並實現數據保護和災難恢復。Data Guard提供了一套綜合創建、維護、管理和監視一個或多個備用數據庫的

oracle 10goracle 11g的不同

一.merge into  在網上查資料得到 該命令使用一條語句從一個或者多個數據源中完成對錶的更新和插入資料. ORACLE 9i 中,使用此命令必須同時指定UPDATE 和INSERT 關鍵詞,ORACLE 10g 做了如下改動。 1.insert 和update

oracle 10g 11g的幾點常用區別

1、11g出現了 新的聚會函式,10g不支援,如下:listagg(b.person_name) within group(order by a.id) applyPerson, 2、oracle10g不支援 continue解決方法,且不支援列轉行函式,11g支援:

Oracle刪除表資料的時候應該注意的問題 OracleMySql他們一些表之間的區別

1. 刪除表的注意事項 在刪除一個表中的全部資料時,須使用TRUNCATE TABLE 表名;因為用DROP TABLE,DELETE * FROM 表名時,TABLESPACE表空間該表的佔用空間並未釋放,反覆幾次DROP,DELETE操作後,該TABLESPACE上百兆的空間就被耗光了。

ORACLE 10g11g批量重新整理使用者密碼

一、ORACLE 10g批量重新整理使用者密碼 select ' alter user ' || username ||' identified by values '''||password ||''';' from dba_users where ACCOUNT_STATUS<>'LOCK'

oracle有關初始化引數檔案的幾個檢視對比

涉及oracle中有關初始化引數檔案的幾個檢視主要有:v$paraemter,v$parameter2,v$system_parameter,v$system_parameter2,v$spparameter 主要區別如下: 一、涉及內容比較 v$paraemter,v$parameter2檢視主要是查

[Python筆記]函式關鍵字引數,收集引數分配引數的使用例項

Stock類 class Stock: def __init__(self): self.itemList = [] def addItem(self, name, price): # 建立商品 return {'name': name

Javaeclipse命令列向main函式傳遞引數

  我們知道main函式是java程式的入口,main函式的引數型別是String[]。 1.Eclipse中向main方法傳遞引數 例如: public class Mytest { public static void main(String[] args) {

Oracle 補丁全集 Oracle 9i 10g 11g Path

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

淺談Oracleexistsin的執行效率問題

淺談Oracle中exists與in的執行效率問題 原創 Oracle 作者:迷倪小魏 時間:2017-11-29 13:43:30  5149  1 in 是把外表和內表作hash join,而exist

Oracle資料庫使用者模式的區別聯絡

使用者與模式 使用者(user):Oracle使用者是用連線資料庫和訪問資料庫物件的。(使用者是用來連線資料庫訪問資料庫)。 模式(schema):模式是資料庫物件的集合。模式物件是資料庫資料的邏輯結構。(把資料庫物件用模式分開成不同的邏輯結構)。 使用者(user)與模式(schema)的