Oracle-OCP学习笔记:参数文件及数据库的启动和关闭

参数文件:

spfile<SID>.ora    动态参数文件,是二进制文件,9i以后引入并建议使用

init<SID>.ora      静态参数文件,是文本文件

动态参数,部分参数可以动态修改。建议9i以后就使用spfile。

静态参数文件:在oracle启动时应用到oracle数据库中,数据库启动后就不再使用,会关闭这个文件,如果要修改静态参数文件,只能重启数据库。

动态参数文件:oracle启动时读一下,将参数应用到数据库中,但不关闭这个文件,这个文件可以动态修改。只是部分参数可以动态修改。(可以动态修改,但修改完成后不会马上生效,需要重启),所以数据库一般使用动态参数文件。

[oracle@oracle dbs]$ pwd

/u01/app/oracle/product/11.2.2/db_1/dbs

[oracle@oracle dbs]$ ls

hc_DBUA0.dat  init.ora  orapwORCL     peshm_ORCL_0   spfileORCL.ora

hc_ORCL.dat  lkORCL    peshm_DBUA0_0  snapcf_ORCL.f

 

 

Oracle启动过程中参数文件寻找顺序

通过$ORACLE_SID找到实例名称,通过实例名称在目录(/u01/app/oracle/product/11.2.2/db_1/dbs)下找到spfile$ORACLE_SID.ora的文件.找到这个文件后通过里面的参数来启动数据库实例,如果文件找不到,会查找init$ORACLE_SID.ora静态文件。

 

动态,静态参数文件的生成

create pfile from spfile; #通过动态参数文件生成静态参数文件

[oracle@oracledbs]$ pwd

/u01/app/oracle/product/11.2.2/db_1/dbs

[oracle@oracledbs]$ ls

hc_DBUA0.dat  init.ora     lkORCL     peshm_DBUA0_0  snapcf_ORCL.f

hc_ORCL.dat   initORCL.ora  orapwORCL peshm_ORCL_0   spfileORCL.ora

[oracle@oracledbs]$ ll initORCL.ora

-rw-rw-r--. 1 oracleoracle 1196 Oct 14 16:06 initORCL.ora

[oracle@oracledbs]$ date

Sun Oct 1416:06:58 CST 2018

通过spfileORCL.ora生成initORCL.ora文件

 

create spfile from pfile; #通过静态参数文件生成动态参数文件

    用于修改错误配置的spfile

 

参数的修改:

   ALTER SYSTEM SETparameter_name=parameter_value [comment=’注释’] scope=[memory|spfile|both] [sid=’sid’|’*’]

    参数:内存中有参数,参数文件里也有。

    Scope=memory:表示只修改内存中的参数,并马上生效,不修改参数文件里面的参数.

    Scope=spfile:表示修改参数文件,不会在内存中马上生效,重启数据库后生效

    Scope=both :表示以上两者的合集

eg:alter system set sga_max_size=2285000000 scope=both;

 

通过查看v$parameter知道修改的参数是立即生效还是重启后生效:

SYS AS SYSDBA@ORCL>select name,value,ISSYS_MODIFIABLEfrom v$parameter;

 

 

一个常见错误的解决流程

    错误了的修改了spfile里面的参数,数据库启动失败,因为没有办法直接修改spfile,怎么办?

 

数据库启动三个阶段:

Startup   nomount(找到spfile参数文件并打开,根据参数文件配置参数启动实例,启动内存空间和后台进程)

SYS ASSYSDBA@ORCL>startup nomount

ORACLE instance started.

Total System Global Area 422670336 bytes

Fixed Size        1336960 bytes

Variable Size       356518272 bytes

Database Buffers     58720256 bytes

Redo Buffers          6094848 bytes

#ps –ef | grepORCL

oracle    2045     1  015:52 ?        00:00:00 ora_psp0_ORCL

oracle    2047     1  015:52 ?        00:00:00 ora_dia0_ORCL

oracle    2049     1  015:52 ?        00:00:00 ora_mman_ORCL

oracle    2051     1  015:52 ?        00:00:00 ora_dbw0_ORCL

oracle    2053     1  015:52 ?        00:00:00 ora_dbw1_ORCL

oracle    2055     1  015:52 ?        00:00:00 ora_lgwr_ORCL

oracle    2057     1  015:52 ?        00:00:00 ora_ckpt_ORCL

oracle    2059     1  015:52 ?        00:00:00 ora_smon_ORCL

oracle    2061     1  015:52 ?        00:00:00 ora_reco_ORCL

oracle    2063     1  015:52 ?        00:00:00 ora_mmon_ORCL

 

 

[oracle@oracle ~]$ipcs -a

------ Shared Memory Segments --------

key       shmid      owner      perms     bytes      nattch     status     

0x1a3ad540 98304     oracle     660        4096       0                      

------ Semaphore Arrays --------

key       semid      owner      perms     nsems    

0x64f5b758 327682    oracle     660        154      

------ Message Queues --------

key       msqid      owner      perms     used-bytes   messages

 

SYS AS SYSDBA@ORCL>showparameter control

NAME                  TYPE       VALUE

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

control_file_record_keep_time        integer        7

control_files             string         /u01/app/oracle/oradata/ORCL/c

                           ontrol01.ctl, /u01/app/oracle/

                           flash_recovery_area/ORCL/contr

                           ol02.ctl

control_management_pack_access       string        DIAGNOSTIC+TUNING

 

 

alter   database  mount(根据参数文件中记录的控制文件位置打开控制文件)

SYS AS SYSDBA@ORCL>alter database mount;

Database altered.

 

alter  database  open(根据控制文件信息打开数据文件,redolog日志文件,open数据库)

SYS AS SYSDBA@ORCL>alter database open;

Database altered.

 

注:nomount之前就可以根据pfile创建spfile,根据spfile创建pfile.

   

数据库关闭四种方式:

默认是normal:

1. abort(模拟自然断电,内存被清空,内存中的数据没有写入数据数据文件,事务被立即中断,没有提交,没有回滚。再次启动库时需要实例恢复,万不得已才用这种方式关闭数据库)

 

2.immediate(强制中断当前正在运行的所有事务,回滚这些事务,回滚完毕,强制中断所有的连接,将实例中的所有数据写入数据文件,所有未提交事物全部回滚,强制断开用户连接,最常使用)

 

3.transactional(等待正在运行的事务,一直到他们提交或者回滚,所有事务主动结束以后(提交或回滚),强制中断连接,将实例里面的数据写入数据文件,清空缓存,如果有事务一直没有提交或回滚,实例无法关闭,等待事物自动提交或回滚,强制断开用户连接,很少使用)

 

4.normal(等待事务的主动提交或者回滚,等待用户主动断开连接,如果有一个用户没有断开连接,那么数据库无法关闭,默认shutdown的参数,很少使用)

 


YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS