当前位置: 365bet亚洲官方投注 > MySQL数据库 > 正文

Oracle调度SGA大小的历程

时间:2019-12-22 11:03来源:MySQL数据库
一、查询sga大小                      调整后用df –h查询 /dev/shm修改为2G。     pfile:文本文件的参数文件,可以使用vi,vim等编辑器修改,文件名通常为initsid.ora 好了,以上就是这篇

一、查询sga大小

                     调整后用df –h查询 /dev/shm修改为2G。

    pfile:文本文件的参数文件,可以使用vi,vim等编辑器修改,文件名通常为init<sid>.ora

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

c)      数据库重启到nomount状态。Startup nomount;
        报错: ORA-00845: MEMORY_TARGET not supported on this system。
        原因:MEMORY_MAX_TARGET的设置不能超过/dev/shm的大小,在oracle11g中新增的内存自动管理的参数MEMORY_TARGET,它能自动调整SGA和PGA,这个特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于MEMORY_TARGET,         如果/dev/shm比MEMORY_TARGET小就会报错。linux安装完后默认/dev/shm为物理内存的一半
        因为我们指定了sga_max_size的大小,所以需要修改/dev/shm的大小来解决问题。
       将dev/shm调整为2G:
       mount -o size=2G -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm

两类参数文件:

通过创建pfile文件方式来启动数据库,然后再以pfile文件为模板创建spfile,具体步骤是:

Step4:

    SQL> ho ls -al /u01/app/oracle/10g/dbs/

SQL> show parameter sgaNAME TYPE VALUE------------------------------------ ----------- ------------------------------lock_sga boolean FALSEpre_page_sga boolean FALSEsga_max_size big integer 1Gsga_target big integer 1G

e)      重启数据库至Open状态,成功。

 

6、查询修改后的sga大小

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-07/145854.htm

    Database Buffers          251658240 bytes

2、修改initudevasm.ora文件,找到sga_target字段,修改大于 668M

图片 1

    *.db_block_size=8192

最近在工作遇到一个问题,在Oracle 11G单机ASM中修改sga大小,修改完后,关闭instance并startup时,提示sga没有达到最小值,因些无法启动,而此时数据库实例已经关闭,已不能在之前的那种模式修改参数,下面来一起看看详细的介绍。

查询当前SGA容量:    show sga; 显示 800M

     pfile:$ORACLE_HOME/dbs/init.ora  /*默认*/

二、修改sga大小为500M

alter system set memory_target = 1500M scope=spfile;
alter system set sga_max_size = 1500M scope = spfile;

    -rw-r-----  1 oracle oinstall  8385 Sep 11  1998 init.ora

spfilesid.ora -> spfile.ora ->initsid.ora-> init.ora 从这条启动线来说,如果第一个spfilesid.ora文件找不到的话,它会找到二个spfile.ora文件,如果能找到就能正常启动,若找不到,再继续找下一个initsid.ora文件,一直找到最后一个init.ora文件,说明:如果找到其中一个则会正常启动instance

a)      数据库进入nomount状态

    *.db_create_online_log_dest_1='/u01/app/oracle/disk1'

3、以pfile文件启动instance

b)      cp init.ora.4262015171932 $ORACLE_HOME/dbs
         mv init.ora.4262015171932 initorcl.ora

 

解决方法:

调整SGA大小为1.5G。alter system set sga_max_size = 1500M scope = spfile;

     File created.

SQL> create spfile= '+DGDATA02/udevasm/spfileudevasm.ora' from pfile= '/oracle/initudevasm.ora' ;File created.

前提:在VM中调整虚拟机的内存的大小以提高Oracle的连接与响应速度。然后调整Oracle的SGA大小。

优先级别:

首先我们要理解一下oracle数据库在启动过程中调用 的参数,其顺序为:

  1. shut immediate ;
  2. startup:
    报错:ORA-00844: Parameter not taking MEMORY_TARGET into account
               ORA-00851: SGA_MAX_SIZE 1577058304 cannot be set to more than MEMORY_TARGET 838860800.
    原因:ORA-00844:没有考虑设置MEMORY_TARGET参数。
               ORA_00851:SGA_MAX_SIZE值不可大于MEMORY_TARGET值。
    解决:**根据上面的提示,应该是调整SGA值是没有同时调整MERMORY_TARGET引发的。根据提示,进行memory_target值的修改,设置值与sga_max_size相同。

    **

  3. 调整memory_target:  alter system set memory_target = 1500M scope=spfile
    报错:ERROR at line 1:
              ORA-01034: ORACLE not available
              Process ID: 0
              Session ID: 24 Serial number: 270
    解决:**目前数据库为关闭状态,不能进行参数的修改。需手动进行参数文件的修改。

    **

  4. 根据pfile生成spfile.文件,对spfile_SID.ora进行修改。
    create spfile from pfile;
    报错:ERROR at line 1:
    ORA-01078: failure in processing system parameters
    LRM-00109: could not open parameter file
    '/data/oracle/product/11.2.0/dbhome_1/dbs/initorcl.ora'
    原因:没有找到实例的参数文件,所以首先我们要生成需要的initorcl.ora文件

    *.db_name='orcl'

SQL> startup pfile= '/oracle/initudevasm.ora'ORACLE instance started.Total System Global Area 751595520 bytesFixed Size 2257032 bytesVariable Size 603983736 bytesDatabase Buffers 142606336 bytesRedo Buffers 2748416 bytesDatabase mounted.Database opened.

Step1:

    *.db_recovery_file_dest_size=2147483648

SQL> startupORA-01078: failure in processing system parametersORA-00821: Specified value of sga_target 500M is too small, needs to be at least 668M

至此,调整SGA大小成功。

    初始化参数,启动完毕后,可以创建spfile,则下一次启动就可以使用新的spfile.

SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startupORACLE instance started.Total System Global Area 751595520 bytesFixed Size 2257032 bytesVariable Size 603983736 bytesDatabase Buffers 142606336 bytesRedo Buffers 2748416 bytesDatabase mounted.Database opened.

b)      数据库关闭 shut immediate;

    Variable Size             150995864 bytes

通过上面查询则判断已经修改恢复成功

Step3:

    主要用来记录数据库的配置文件,在数据库启动时,Oracle读取参数文件,并根据参数文件中的参数设置来配置数据库。

问题描述:

d)      重启数据库到nomount下成功。

    *.undo_tablespace='UNDOTBS1'

5、关闭实例,并重新启动spfile,因为在在创建spfile时已经默认指定原来的路径,并把原来的spfile文件覆盖了,所以只要直接启动即可

Step2:

    *

具体的操作如下:

 5.修改数据库参数文件中的memory_target值:

    Redo Buffers                2973696 bytes

SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.

重启oracle,查看是否成功。

    create spfile from pfile

三、因为是指定参数为spfile,因此要重启instance才能使参数生效

管理者身份连接oracle。 Sqlplus / as sysdba;

    *.remote_login_passwordfile='EXCLUSIVE'

1、以spfile模板创建pfile文件,并指定路径为本地硬盘位置

更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

转换后的使用:

总结:

重新执行:create spfile from pfile; 成功

pfile --> spfile

4、以pfile文件为模板创建spfile文件

a)      使用命令找到参数文件所在路径:find /data -name pfile
         进入pfile文件夹,发现init.ora.xxx字样文件,将其复制到$ORACLE_HOME/dbs下

    SQL> show parameter service_name

create pfile='/oracle/initudevasm.ora' from spfile='+DGDATA02/udevasm/spfileudevasm.ora';

判断虚拟机内存是否调整成功。cat /proc/meminfo | grep MemTotal  显示3G,调整成功。

    *.remote_login_passwordfile='EXCLUSIVE'

SQL> show parameter sgaNAME TYPE VALUE------------------------------------ ----------- ------------------------------lock_sga boolean FALSEpre_page_sga boolean FALSEsga_max_size big integer 720Msga_target big integer 720M

    *.db_recovery_file_dest_size=2147483648

四、重启instance 时,提示sga最小值应该为668M

演示:*/

1、当数据库发生因为有关参数文件异常无法启动正常时,可以先把原理理解,然后通过创建pfile与spfile文件方式解决启动问题。2、要备份有关数据库参数文件以防止误操作导致数据库无法正常启动

    SQL> ho cat /u01/app/oracle/spfileorcl.ora;

vi /oracle/initudevasm.oraudevasm.__db_cache_size=826277888udevasm.__java_pool_size=4194304udevasm.__large_pool_size=8388608udevasm.__oracle_base='/oracle/app/oracle'#ORACLE_BASE set from environmentudevasm.__pga_aggregate_target=629145600udevasm.__sga_target=1073741824udevasm.__shared_io_pool_size=0udevasm.__shared_pool_size=222298112udevasm.__streams_pool_size=0*.audit_file_dest='/oracle/app/oracle/admin/udevasm/adump'*.audit_trail='db'*.compatible='11.2.0.4.0'*.control_files='+DGDATA02/udevasm/controlfile/current.256.945212019'*.db_block_size=8192*.db_create_file_dest='+DGDATA02'*.db_domain=''*.db_name='udevasm'*.db_recovery_file_dest_size=3221225472*.diagnostic_dest='/oracle/app/oracle'*.dispatchers=' 'udevasm.log_archive_dest_1='LOCATION=+DGRECOVERY/'*.nls_language='AMERICAN'*.nls_territory='AMERICA'*.open_cursors=300*.pga_aggregate_target=629145600*.processes=1000*.remote_login_passwordfile='EXCLUSIVE'*.sessions=170*.sga_target= 754288000 --大于668M*.undo_tablespace='UNDOTBS1'

 

SQL> alter system set sga_target=500M scope=spfile;System altered.

    Fixed Size                  1219688 bytes

解决细路:

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

    plsql_ccflags                        string

    plsql_code_type                      string      INTERPRETED

    plsql_compiler_flags                 string      INTERPRETED, NON_DEBUG

    plsql_debug                          boolean     FALSE

    plsql_native_library_dir             string

    plsql_native_library_subdir_count    integer     0

    plsql_optimize_level                 integer     2

    plsql_v2_compatibility               boolean     FALSE

    plsql_warnings                       string      DISABLE:ALL

    sql92_security                       boolean     FALSE

    sql_trace                            boolean     FALSE

 

    NAME                                 TYPE        VALUE

ORA-02095: specified initialization parameter cannot be modified

SQL> show parameter pga;
NAME                                 TYPE     VALUE


pga_aggregate_target                 big inte 798M
                                     ger
SQL> alter system set pga_aggregate_target = 500m scope=both;      -----该参数支持动态修改,所以就立即生效了
System altered.
SQL> show parameter pga;
NAME                                 TYPE     VALUE


pga_aggregate_target                 big inte 500M
                                     ger
SQL>

SQL> alter system set processes = 100 scope=spfile;                ----修改完后重启数据库能生效,不信你试试。
System altered.
SQL> alter system set pga_aggregate_target = 700m scope=spfile;    ----当然也可以选择数据库下次启动的时候生效。
System altered.

SQL> alter system set processes = 100 scope=memory;                ----因为该参数不支持动态修改,同样也就无法实现立即生效,下次启动失效。
alter system set processes = 100 scope=memory
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified

SQL>
SQL> alter system set pga_aggregate_target = 600m scope=memory;    ---因为该参数支持动态修改,当然也就可以实现立即生效,下次启动失效咯。
System altered.
SQL>

如果使用的是pfile则无法通过命令进行修改,会报ORA-02095或32001错误。
SQL> alter system set processes = 100;
alter system set processes = 100
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified

SQL> alter system set processes = 100 scope=spfile;
alter system set processes = 100 scope=spfile
*
ERROR at line 1:
ORA-32001: write to SPFILE requested but no SPFILE specified at startup

SQL> alter system set processes = 100 scope=both;
alter system set processes = 100 scope=both
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified

SQL> alter system set processes = 100 scope=memory;
alter system set processes = 100 scope=memory
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified

pfile文件路径/admin/pfile下面

通过create pfile='e:initeyglen.ora' from spfile;保存

startup pfile='e:initeyglen.ora'

create spfile from pfile='e:initeyglen.ora';   //新的spfile生效,spfile是二进制文件,看不到,在系统运行时有

 

ORA-00845 Oracle 启不来修改 MEMORY_TARGET

1.内存减小导致Oracle启动不了
 
Last login: Sun Nov  4 15:09:06 2012 from 192.168.5.222 
[oracle@h1 ~]$ sqlplus "/as SYSDBA"
 
SQL*Plus: Release 11.2.0.1.0 Production on Sun Nov 4 15:26:59 2012
 
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
 
Connected to an idle instance.
 
SQL> startup pfile=/app/oracle/admin/orcl/pfile/init.ora.103201271612 
ORA-00845: MEMORY_TARGET not supported on this system 
SQL> shutdown abort      
ORACLE instance shut down. 
SQL> startup pfile=/app/oracle/admin/orcl/pfile/init.ora.103201271612 force 
ORA-00845: MEMORY_TARGET not supported on this system 
SQL> exit 
Disconnected
 
#---------解决:扩展内存
 
#--------pfile位置:$ORACLE_BASE/admin/[$ORACLE_SID]/pfile/init.ora.*  

2.扩展内存后,按pfile启动,但sfile修改不了
 
SQL*Plus: Release 11.2.0.1.0 Production on Sun Nov 4 16:00:25 2012
 
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
 
Connected to an idle instance.
 
SQL> startup pfile=/app/oracle/admin/orcl/pfile/init.ora.103201271612 force 
ORACLE instance started.
 
#----------按ORACLE PFILE 启动
 
Total System Global Area 1219260416 bytes 
Fixed Size                  2212856 bytes 
Variable Size            738200584 bytes 
Database Buffers          469762048 bytes 
Redo Buffers                9084928 bytes 
Database mounted. 
Database opened. 
SQL> alter system set memory_max_target=1258200M scope=both; 
alter system set memory_max_target=1258200M scope=both 
                * 
ERROR at line 1: 
ORA-02095: specified initialization parameter cannot be modified  

SQL> alter system set memory_max_target=1258200M scope=spfile; 
alter system set memory_max_target=1258200M scope=spfile 

ERROR at line 1: 
ORA-32001: write to SPFILE requested but no SPFILE is in use//spfile文件可能不存在
 
#-------------/app/oracle/product/11.2.0/dbhome_2/dbs/----------------存放spfile

 

3.临时建立SPFILE
 
[Oracle@h1 dbs]$ ls 
hc_orcl.dat  init.ora  lkORCL  orapworcl
 
 
 
SQL> shutdown immediate; 
Database closed. 
Database dismounted. 
ORACLE instance shut down
 
SQL> startup nomount 
ORA-01078: failure in processing system parameters 
LRM-00109: could not open parameter file '/app/oracle/product/11.2.0/dbhome_2/dbs/initorcl.ora'
 
#------------------------------spfile不存在
 
#-----------------------------spfile位置:$ORACLE_HOME/dbs/init[ORACLE_SID].ora
 
#-----------------------------名字格式为:initORACLE_SID.ora
 
[oracle@h1 dbhome_2]$ cd /app/oracle/admin/orcl/pfile/ 
[oracle@h1 pfile]$ ls 
init.ora.103201271612
 
 
 
[oracle@h1 pfile]$echo $ORACLE_SID
 
orcl
 
#-------------------查看环境变量$ORACLE_SID
 
[oracle@h1 pfile]$ cp init.ora.103201271612 /app/oracle/product/11.2.0/dbhome_2/dbs
 
[oracle@h1 pfile]$ cd /app/oracle/product/11.2.0/dbhome_2/dbs
 
[oracle@h1 dbs]$ mv init.ora.103201271612  initorcl.ora
 
#------------------------------更改名字格式为:initORACLE_SID.ora
 
 
 
4.mount数据库
 
 
 
[oracle@h1 dbs]$ sqlplus "/as SYSDBA"
 
SQL*Plus: Release 11.2.0.1.0 Production on Sun Nov 4 16:59:09 2012
 
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
 
Connected to an idle instance.
 
SQL> startup mount 
ORACLE instance started.
 
Total System Global Area 1219260416 bytes 
Fixed Size                  2212856 bytes 
Variable Size            738200584 bytes 
Database Buffers          469762048 bytes 
Redo Buffers                9084928 bytes 
Database mounted. 
SQL>

 
 
SQL> show parameter memory_target;
 
NAME                                TYPE        VALUE 


------------------------------ 
memory_target                        big integer 1168M 
SQL> show parameter memory_max_target;
 
NAME                                TYPE        VALUE 


------------------------------ 
memory_max_target                    big integer 1168M 
SQL>        
SQL>  alter system set memory_max_target=1G scope=spfile; 
alter system set memory_max_target=1G scope=spfile 

ERROR at line 1: 
ORA-32001: write to SPFILE requested but no SPFILE is in use  

SQL> show parameter spfile;
 
NAME                                TYPE        VALUE 


------------------------------ 
spfile                              string
 
#------------------重建spfile 
SQL> create spfile from pfile;
 
File created.  

SQL> shutdown immediate; 
Database closed. 
Database dismounted. 
ORACLE instance shut down. 
SQL>  startup 
ORACLE instance started.
 
Total System Global Area 1219260416 bytes 
Fixed Size                  2212856 bytes 
Variable Size            738200584 bytes 
Database Buffers          469762048 bytes 
Redo Buffers                9084928 bytes 
Database mounted. 
Database opened. 
SQL> show parameter spfile;
 
NAME                                TYPE        VALUE 


------------------------------ 
spfile                              string      /app/oracle/product/11.2.0/dbh 
                                                ome_2/dbs/spfileorcl.ora
 
 
 
SQL> alter system set memory_max_target=1G scope=spfile;
 
System altered.
 
 
 
SQL> alter system set memory_target=1G scope=both;
 
System altered.
 
 
 
SQL> alter system set memory_max_target=1332M scope=both; 
alter system set memory_max_target=1332M scope=both 
                * 
ERROR at line 1: 
ORA-02095: specified initialization parameter cannot be modified
 
 
 
SQL> alter system set memory_max_target=1332M scope=spfile;
 
 
 
System altered.

-->Oracle 参数文件

     create spfile from pfile

    orcl.__shared_pool_size=142606336

    *.processes=150

    -rw-r-----  1 oracle oinstall  1536 Apr  7 15:50 orapworcl

    如内存池的分配,允许打开的进程数和会话数等。

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

    sga_max_size                         big integer 388M

    sga_target                           big integer 388M

   

    SQL> alter system set sga_max_size = 350m;  /*特殊的参数不能被修改*/

    alter system set sga_max_size = 350m

                   *

    ERROR at line 1:

    ORA-02095: specified initialization parameter cannot be modified

 

 

    SQL> a  scope = spfile

      1* alter system set sga_max_size = 350m scope = spfile

    SQL> /

 

    System altered.

 

    SQL> select instance_name from v$instance;

 

    INSTANCE_NAME

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

    orcl

 

    SQL> alter system set sga_max_size = 350m scope = spfile sid = 'orcl';

 

    System altered.

 

    --只改内存

    SQL> show parameter pga

 

    NAME                                 TYPE        VALUE

    *.processes=150

    则关闭数据库后指定以initorcl.ora参数来启动数据库*/

    SQL> create spfile from pfile; /*修改的内容将会更新到spfile*/

/* 

    *.audit_file_dest='/u01/app/oracle/admin/orcl/adump'

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

    sql_version                          string      NATIVE

    sqltune_category                     string      DEFAULT

    SQL> alter session set sql_trace = true;

 

    Session altered.

 

--  可以从v$parameter视图中来得到哪些可以使用alter system修改,哪些可以使用alter session来修改。

    SQL> col name for a40

    SQL> select NAME,ISSES_MODIFIABLE,ISSYS_MODIFIABLE from v$parameter

      2  where name like 'sql%';

 

    NAME                                     ISSES ISSYS_MOD

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

    sql_trace                                TRUE  IMMEDIATE

    sql92_security                           FALSE FALSE

    sql_version                              TRUE  FALSE

    sqltune_category                         TRUE  IMMEDIATE

 

--  TURE:可以该类型修改,FLASE:不支持该类型修改,IMMEDIATE:也是支持该类型修改

 

    SQL> alter system set sql_version = 8; /*不支持system类型修改*/

    alter system set sql_version = 8

                   *

    ERROR at line 1:

    ORA-02096: specified initialization parameter is not modifiable with thisoption

    SQL> alter session set sql_version = 8;

    ERROR:

    ORA-00096: invalid value 8 for parameter sql_version, must be from amongMAX,

    NATIVE, 8.1.6, 8.1.5

 

    SQL> alter session set sql_version = '8.1.6'; /*支持session类型修改*/

 

    Session altered.

 

    SQL> select distinct issys_modifiable from v$parameter;

 

    ISSYS_MOD

    ---------

    IMMEDIATE   /*动态参数,直接修改到内存的参数alter system set <> = <>,后面不需要跟scope*/

    FALSE       /*静态参数,不能直接修改到内存,alter system set <> = <> scope = spfile*/

    DEFERRED    /*会话级别参数,直接通过alter session set <> = <>*/

 

    SQL> select distinct isses_modifiable from v$parameter;

 

    ISSES

    -----

    TRUE

    FALSE

 

--系统中的常用参数:

    SQL> ho ls /u01/app/oracle/10g/dbs/

    hc_orcl.dat  initdw.ora    lkORCL     spfileorcl.ora

    init.ora     initorcl.ora  orapworcl

 

    SQL> ho cat /u01/app/oracle/10g/dbs/initorcl.ora

    /*下面的参数描述了实例相关池的分配情况*/

    orcl.__db_cache_size=251658240

    orcl.__java_pool_size=4194304

    orcl.__large_pool_size=4194304

    orcl.__shared_pool_size=142606336

    orcl.__streams_pool_size=0

 

    *.audit_file_dest='/u01/app/oracle/admin/orcl/adump' /*警告日志路径*/

    *.background_dump_dest='/u01/app/oracle/admin/orcl/bdump' /*后台进程日志路径*/

    *.compatible='10.2.0.1.0'  /*版本兼容号*/

    /*下面是控制文件的信息*/

   *.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl','/u01/app/oracle/oradata/orcl/control03.ctl'

    *.core_dump_dest='/u01/app/oracle/admin/orcl/cdump' /*服务器进程相关的日志路径*/

    *.db_block_size=8192   /*内存块的大小*/

    *.db_create_file_dest='/u01/app/oracle/oradata/orcl'  /*tablespace ,datafile路径*/

    *.db_create_online_log_dest_1='/u01/app/oracle/disk1'  /*联机日志文件路径*/

    *.db_create_online_log_dest_2='/u01/app/oracle/disk2'  /*联机日志文件路径*/

    *.db_domain=''  /域名/

    *.db_file_multiblock_read_count=16  /*一次可读取块的大小:*8k = 128kb*/

    *.db_name='orcl' /数据库标识符/

    *.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area' /*闪回路径*/

    *.db_recovery_file_dest_size=2147483648           /*闪回区可使用的大小GB*/

    *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'  /*共享服务器的配置参数*/

    *.job_queue_processes=10                          /*当前作业进程数*/

    *.open_cursors=600                                /*可打开的游标数*/

    *.pga_aggregate_target=135266304                  /*服务器进程大小*/

    *.processes=250                                   /*描述当前可以运行的进程数*/

    *.remote_login_passwordfile='EXCLUSIVE'           /*远程登陆是否要用密码文件*/

    *.sga_target=406847488                            /*定义了sga的大小*/

    *.undo_management='AUTO'                          /*Undo表空间的管理方式为自动管理*/

    *.undo_tablespace='UNDOTBS1'                      /*指定使用哪一个undo表空间*/

    *.user_dump_dest='/u01/app/oracle/admin/orcl/udump' /**/

 

--11g中的参数文件:

 

--  隐藏参数:

    SQL> desc x$ksppi /*Name列中为隐藏参数的名字*/

     Name                                      Null?    Type

     11g中的新指令,从memeory中生成

    orcl.__streams_pool_size=0

参数文件之间的转化

    *.db_block_size=8192

    ERROR at line 1:

    NAME                                 TYPE        VALUE

    drwxr-x--- 55 oracle oinstall  4096 Apr  7 09:48 ..

     pfile(9i):$ORALCE_HOME/dbs/init$ORALCE_SID.ora  /*10g以后一般不用init<sid>.ora*/

 

   *.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl',                  '/u01/app/oracle/oradata/orcl/control03.ctl'

 

    *.user_dump_dest='/u01/app/oracle/admin/orcl/udump'

     pfile(10g):$ORALCE_BASE/admin/$ORACLE_SID/pfile /*仅当数据库初始化时使用*/

     spfile 转化为pfile

    orcl.__java_pool_size=4194304

    *.job_queue_processes=10

 

 

    *.db_create_online_log_dest_1='/u01/app/oracle/disk1'

    *.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'

 spfile --> pfile

    -rw-r-----  1 oracle oinstall  3584 Apr  8 11:15 spfileorcl.ora

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

    pga_aggregate_target                 big integer 129M

 

    SQL> alter system set pga_aggregate_target = 130m scope = memory;

 

    System altered.

 

--  同时修改内存和参数文件,以下两条语句等效

    SQL> alter system set pga_aggregate_target = 130m scope = both; 

 

    System altered.

 

    SQL> alter system set pga_aggregate_target = 130m ;

 

    System altered.

 

    --alter session

    SQL> show parameter sql_

 

    NAME                                 TYPE        VALUE

    SQL> startup pfile = '/u01/app/oracle/10g/dbs/initorcl.ora';

    *.db_file_multiblock_read_count=16

 

    spfile:二进制的参数文件,不能直接修改,只能存放在Oracle服务器端,可以使用EM或指令来修改

    -rw-r-----  1 oracle oinstall    24 Apr  6 12:06 lkORCL

--========================

    *.db_create_online_log_dest_2='/u01/app/oracle/disk2'

 

    *.undo_management='AUTO'

    File created.

     create spfile from pfile = '<dir>'

     

    *.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'

    orcl.__large_pool_size=4194304

    orcl.__streams_pool_size=0

--查看参数文件的名字

    SQL> create spfile = '/u01/app/oracle/spfileorcl.ora' from pfile;

    *.open_cursors=300

 

 
SQL> shutdown immediate 
Database closed. 
Database dismounted. 
ORACLE instance shut down. 
SQL> startup 
ORACLE instance started.
 
Total System Global Area 1402982400 bytes 
Fixed Size                  2213296 bytes 
Variable Size            922749520 bytes 
Database Buffers          469762048 bytes 
Redo Buffers                8257536 bytes 
Database mounted. 
Database opened. 
SQL> show parameter memory_max_target;
 
NAME                                TYPE        VALUE 


------------------------------ 
memory_max_target                    big integer 1344M

 

SQL> show parameter memory_target;
 
NAME                                TYPE        VALUE 


------------------------------ 
memory_target                        big integer 1G 
SQL>

-----------------------finish

 

一、PFILE

Pfile(Parameter File,参数文件)是基于文本格式的参数文件,含有数据库的配置参数。

1、PFILE - initSID.ora(默认PFILE名称),位置在$ORACLE_HOME/dbs目录下面。 这是一个文本文件,可以用任何文本编辑工具打开。

2、创建PFILE

cp init.ora $ORACLE_HOME/dbs/initorcl.ora

编辑initorcl.ora文件,修改适合自己的参数。建议不要使用oracle提供的初始化参数,这个文档有点老。

需要修改的名字有:

db_name=wilson #添加db_block_size db_block_size=8192 control_files=('目录/control01.ctl','目录/control02.ctl', '目录/control03.ctl')

 

二、SPFILE: Oracle9i之后引入的概念

SPfile(Server Parameter File,服务器参数文件)是基于二进制格式的参数文件,含有数据库及例程的参数和数值,但不能用文本编辑工具打开。

动态修改参数 alter system set parameter=Value

scope={spfile|both|memory};

SCOPE参数有三个可选值:

MEMORY:只改变当前实例运行;

SPFILE:只改变SPFILE的设置(如果修改的是静态参数,则必须指定SCOPE=SPFILE,否则将会报ORA-02095错);

BOTH:改变实例及SPFILE(使用BOTH选项实际上等同于不带参数的ALTER SYSTEM语句)。

 

SPFILE->spfileSID.ora,位置在$ORACLE_HOME/dbs目录下面

根据PFILE创建SPFILE, 在启动Instance实例之前或之后都可以创建SPFILE。

CREATE SPFILE = ‘$ORACLE_HOME/dbs/spfileDBA01.ora’ FROM PFILE = ‘$ORACLE_HOME/dbs/initDBA01.ora;

 

也可以使用缺省的方式来创建SPFILE

create spfile from pfile;

 

查看SPFILE等二进制文件使用

strings spfilewilson.ora

 

修改SPFILE的内容:

alter system set parameter=value <comment='text'> <deferred> <scope=memory|spfile|both><sid='sid|*'>

其中deferred表示延迟生效,可以通过show parameter fast_start_查看fast_start_开头的所有参数是否已经生效。

 

删除或重置SPFILE参数回缺省值:

alter system set undo_suppress_errors=true; alter system reset undo_suppress_errors scope= both sid='*';

 

三、根据SPFILE创建PFILE

【注意】在进入sqlplus后就可以创建,不一定要启动数据库。还有lock_sga参数只能在AIX操作系统中有效,在linux和unix中是无效的,让SGA尽量驻留内存的办法就是修改SGA区的内存大小。

create pfile from spfile;

 

四、Oracle的启动顺序

用startup(默认)启动的顺序

1、直接在默认路径下查找spfileSID.ora --(spfile)

如果没有再查找2

2、直接在默认路径下查找spfile.ora      

如果没有再查找3

3、直接在默认路径下查找initSID.ora --(pfile) 

如果还没有 就会报错……

 

用startup pfile= 的方式启动。

1、指定的pfile:

startup pfile=$ORACLE_HOME/dbs/initSID.ora

2、使用spfile启动,需要变通一下如:vi一个pfile文件aaa.ora,包含以下内容:

spfile=$ORACLE_HOME/dbs/spfileSID.ora

再用startup pfile=$ORACLE_HOME/dbs/aaa.ora启动即可。

若使用这两种方式,级别会高于直接用startup启动的方式。

 

    File created.

    Total System Global Area  406847488 bytes

     create pfile from spfile ,执行完毕后,pfile 将保存为$ORACLE_HOME/dbs/init$ORACLE_SID.ora

    *.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'

    spfile<sid>.ora --> spfile.ora -->init<sid>.ora

    *.pga_aggregate_target=135266304

    (alter system|session set parameter_name = values <>),

 

 

    *.pga_aggregate_target=135266304

     从spfile来生成pfile

 

    *.undo_tablespace='UNDOTBS1'

    *.db_create_file_dest='/u01/app/oracle/oradata/orcl'

    *.db_recovery_file_dest='/u01/app/oracle/flash_recovery_area'

/*

    *.db_file_multiblock_read_count=16

    *.sga_target=406847488

    *.audit_file_dest='/u01/app/oracle/admin/orcl/adump'

     create spfile = '<dir>' from pfile

    a*orcl.__db_cache_size=251658240

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

    service_names                        string      orcl

 

--查看当前使用的哪个参数文件启动的

    SQL> select distinct isspecified from v$spparameter;

 

    ISSPEC

    ------

    FALSE

/*

    如果第一个值是FALSE还是TRUE,如果是FALSE,则是pfile,否则则是spfile.

 

    也可以尝试修改spfile ,如果报错则可以判断是从pfile启动,当然所修改的参数必须是可以修改的*/

    SQL> alter system set sga_target = 200m scope = spfile;

    alter system set sga_target = 200m scope = spfile

    *

    ERROR at line 1:

    ORA-32001: write to SPFILE requested but no SPFILE specified at startup

 

    --强制启动Oracle后再查看是使用的哪个参数启动的。

    SQL> startup force

    ORACLE instance started.

 

    Total System Global Area  406847488 bytes

    Fixed Size                  1219688 bytes

    Variable Size             150995864 bytes

    Database Buffers          251658240 bytes

    Redo Buffers                2973696 bytes

    Database mounted.

     

    Database opened.

    SQL> select distinct isspecified from v$spparameter;

 

    ISSPEC

    ------

    TRUE

    FALSE

/*   

    第一行为TRUE可知,是从spfile启动的,有两行,其中第二行为FALSE,表示有两个参数文件,一个是spfile,一个是pfile

    再次尝试看看能否修改spfile:  */

    SQL> alter system set sga_target = 380m scope = spfile; /*修改成功*/

 

    System altered.

/*

参数文件的修改:

    如果是pfile ,直接使用vi,vim来修改即可

    如果是spfile ,则使用 */

    alter system|session set parametername = values scope = memory | spfile|both sid = 'sid' | ‘*’;

    scope

       memory : 只对当前实例有效,下次启动则失效

       spfile : 只对spfile 修改,必须经过下一次启动才生效,当前的实例没有修改

       both :内存与参数文件都将修改,当不指定scope时,缺省为both.

    system | session

       system :

 

--  查询视图:v$parameter

             isses_modifiable  可以被alter session修改

             isssy_modifiable  可以被alter system修改       

--  sid:

       sid :只对某一个实例

       *   :对所有的实例修改

 

    SQL> show parameter sga_  /*查看与sga有关的参数*/

 

    NAME                                 TYPE        VALUE

    orcl.__java_pool_size=4194304

 

    假定修改了initorcl.ora中的参数,但Oracle启动是先读取spfile ,故可以在启动的时候指定用initorcl.ora来

   *.control_files='/u01/app/oracle/oradata/orcl/control01.ctl','/u01/app/oracle/oradata/orcl/control02.ctl','/u01/app/oracle/oradata/orcl/control03.ctl'

 

    open_cursors=600

/*

    *.user_dump_dest='/u01/app/oracle/admin/orcl/udump'

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

    pga_aggregate_target                 big integer 76M

/*

更多   */

 

Oracle 数据库实例启动关闭过程

 

Oracle 10g SGA 的自动化管理

 

使用OEM,SQL*Plus,iSQL*Plus 管理Oracle实例

 

Oracle实例和Oracle数据库(Oracle体系结构)

 

SQL 基础-->常用函数

 

SQL基础-->过滤和排序

 

SQL 基础-->SELECT 查询

 

 

 

 

 

pfile(Parameter File)从oracle8i开始使用,在oracle9i中也可以用。它以文本文件的形式存在,可以用vi等编辑器对 其中数据库参数进行修改。文件格式为initSID.ora。Oracle 9i在安装时为每个数据库建立了一个Pfile,默认的名称为“init+例 程名.ora”。

   Oracle8i使用pfile存储初始化参数配置,这些参数在实例启动时被读取,任何修改需要重起实例才能生效。

   spfile专用于oracle9i及以后版本,以二进制文件形式存在,含有数据库及例程的参数和数值,能够使用RMAN进行备份,但不能用文本编辑工具打开,不能用vi编辑器对其中数据库参数进行修改。文件格式为spfileSID.ora。

        Oracle9i及以后版本,使用spfile存储初始化参数配置,支持使用ALTER SYSTEM或ALTER SESSION来动 态修改那些可动态修改的参数,任何更改能够立即生效,您能够选择使更改只应用于当前实例还是同时应用到spfile。这就使得任何对spfile的修改都 能够在命令行完成,我们能够完全告别手工修改初始化参数文档,这就大大减少了人为错误的发生。

   除了第一次启动数据库需要pfile(然后根据pfile创建spfile),我们能够不再需要pfile,ORACLE强烈推荐使用spfile,应用其新特性来存储和维护初始化参数配置。

   spfile改正了pfile管理混乱的问题,在多结点的环境里,pfile会有多个image,启动时候需要跟踪最新的image。这是个烦琐的 过程。 用spfile以后,所有参数改变都写到spfile里面(只要定义scope=spfile或both),参数配置有个权威的来源。

pfile和pfile的区别
   
    就Oracle的spfile和pfile的区别主要是spfile的修改是可以在线的,而pfile的修改必须关闭数据库,到参数文件所在路径下通过 vi或记事本等文本编辑工具修改。(因为参数文件里面的内容太多,编辑起来容易导致错误的编辑到其它的参数,从而导致数据库无法起来,所以在9i以前一般 都是要备份pfile后再来做参数的修改,而且修改任何参数都需要停库,非常的不方便;在9i以后的spfile就可以同通过命令修改指定的参数了,而且 有很多参数都不用重启数据库,能够在线生效,这个在线生效的参数会随着数据库的版本增高而增加。如果参数修改有问题数据库起不来了可以在nomount状 态下创建成pfile再修改回来即可。)
修改spfile参数的三种模式:
scope=both       立即并永久改变,(默认模式)
scope=spfile     下次启动执行新的改变。
scope=memory     立即临时改变下次启动新参数失效

spfile 修改的方法:
SQL> alter system set processes = 100 scope=both;                  ----该参数不支持动态修改,必须修改完后重启数据库
alter system set processes = 100 scope=both
                 *
ERROR at line 1:

     spfle:$ORACLE_HOME/dbs/spfile$ORACLE_SID.ora

     pfile 转换为spfile

 

     也可以指定pfile 的路径:create pfile = '<dir>' from spfile;

    *.db_name='orcl'

    Database opened.

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

    pga_aggregate_target                 big integer 130M

 

    SQL> alter system reset pga_aggregate_target scope = spfile sid = '*';

 

    System altered.

   

--  修改会默认值后重新启动可以看到该参数的值由M变为M

    SQL> show parameter pga;

 

    NAME                                 TYPE        VALUE

    orcl.__db_cache_size=251658240

    SQL> ho cat /u01/app/oracle/10g/dbs/initorcl.ora

    *.background_dump_dest='/u01/app/oracle/admin/orcl/bdump'

     create spfile = '<dir>' from memeory */

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

     ADDR                                               RAW(4)

     INDX                                               NUMBER

     INST_ID                                            NUMBER

     KSPPSTVL                                           VARCHAR2(512)

     KSPPSTDVL                                          VARCHAR2(512)

     KSPPSTDF                                           VARCHAR2(9)

     KSPPSTVF                                           NUMBER

     KSPPSTCMNT                                         VARCHAR2(255)

     

 --使用下面的命令来查看系统中的隐藏参数;

 

     SQL> select ksppinm,ksppstvl from x$ksppi a,x$ksppcv b where a.indx =b.indx;

     

     SQL> a      and ksppinm like'%_allow%';                                    

      1* select ksppinm,ksppstvl from x$ksppi a,x$ksppcv b where a.indx =b.indx     and ksppinm like '%_allow%'

    SQL> /

 

    KSPPINM                                                           KSPPSTVL

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

    _allow_level_without_connect_by                                    FALSE

    _asm_allow_only_raw_disks                                          TRUE

    _asm_allow_resilver_corruption                                     FALSE

/*

参数的删除:

    对于pfile直接编辑删除即可

    对于spfile 例如使用alter system set pga_aggregate_target reset将恢复到默认值*/

    SQL> show parameter pga

 

    NAME                                 TYPE        VALUE

    drwxr-x---  2 oracle oinstall  4096 Apr  8 13:49 .

/*

    *.db_create_online_log_dest_2='/u01/app/oracle/disk2'

    *.db_domain=''

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

     ADDR                                               RAW(4)

     INDX                                               NUMBER

     INST_ID                                            NUMBER

     KSPPINM                                            VARCHAR2(80)

     KSPPITY                                            NUMBER

     KSPPDESC                                           VARCHAR2(255)

     KSPPIFLG                                           NUMBER

     KSPPILRMFLG                                        NUMBER

     KSPPIHASH                                          NUMBER

 

 --下面视图中为隐藏参数的值

     SQL> desc x$ksppcv

     Name                                      Null?    Type

    文件名通常为spfile<sid>.ora,支持RMAN备份。

    *.compatible='10.2.0.1.0'

    -rw-r-----  1 oracle oinstall  1544 Apr  6 12:06 hc_orcl.dat

    *.open_cursors=300

参数文件的路径:*/

    -rw-------  1 oracle oinstall  1155 Apr  8 13:49 initorcl.ora

    processes=250

    orcl.__shared_pool_size=142606336

    -rw-r-----  1 oracle oinstall 12920 May  3  2001 initdw.ora

    SQL> create spfile from pfile;  /*使用该命令的时候不能转换,如下报错,因为当前的spfile正在使用*/

     SQL> create pfile from spfile;

    *.undo_management='AUTO'

    Oracle 启动读取参数文件的顺序,如果个文件都不存在,则Oracle会报错

    假定我们对initorcl.ora作如下修改:*/

    total 56

    *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

 

 

    *.db_create_file_dest='/u01/app/oracle/oradata/orcl'

    *.core_dump_dest='/u01/app/oracle/admin/orcl/cdump'

    *.sga_target=406847488

    /*

    ORA-32002: cannot create SPFILE already being used by the instance

    Database mounted.

    ORACLE instance started.

    *.compatible='10.2.0.1.0'

     由pfile 生成spfile

参数文件(10g中的参数文件)

 

    *.db_domain=''

--========================

    orcl.__large_pool_size=4194304

    *.job_queue_processes=10

    *.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'

 

编辑:MySQL数据库 本文来源:Oracle调度SGA大小的历程

关键词:

  • 上一篇:没有了
  • 下一篇:没有了