• Oracle 体系结构之ORACLE物理结构


    即一系列物理文件的集合:

    @控制文件:存储实例、数据文件及日志文件等信息的二进制文件。alter system set control_files=‘路径’。V$CONTROLFILE。

    @数据文件:存储数据,以.dbf做后缀。一句话:一个表空间对多个数据文件,一个数据文件只对一个表空间。dba_data_files/v$datafile。

    @日志文件:即Redo Log Files和Archivelog Files。记录数据库修改信息。ALTER SYSTEM SWITCH LOGFILE; 。V$LOG。

    @参数文件:记录基本参数。spfile和pfile。

    @警告文件:show parameter background_dump_dest---使用共享服务器连接

    @跟踪文件:show parameter user_dump_dest---使用专用服务器连接

    (Ps:专用服务器适用于开发阶段,简单,连接少。反之,共享服务器适用于实际应用环境,多应用,高并发。这两种其他更详细的区别就劳驾谷歌度娘了。)

    1、控制文件(参数文件init.ora记录了控制文件的位置)

    二进制文件,控制文件由参数control_files指定,格式如下:

    control_files=("home/app/.../control01.ctl","home/app/.../control02.ctl") 。

    要对控制文件进行镜象,手工镜像步骤如下:

    a.shutdown

    b.cp***.ctl

    c.修改参数文件,新增控制文件位置

    d.startup

    控制文件包括信息:

    数据库的名字,检查点信息,数据库创建的时间戳,所有的数据文件,联机日志文件,归档日志文件信息,备份信息等。

    鉴于控制文件的重要性,一般采用多个镜相复制来保护控制文件,或采用RAID来保护控制文件。控制文件信息可以从V$Controlfile中查询获得。

    【新增/移动一个数据库控制文件】

    SQL>select name from v$controlfile;

    NAME

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

    /u01/app/oracle/oradata/ora10/control01.ctl

    /u01/app/oracle/oradata/ora10/control02.ctl

    /u01/app/oracle/oradata/ora10/control03.ctl

    SQL>create pfile from spfile;

    SQL>shutdown immediate;

    $mvcontrol03.ctl../controlbak.ctl 备份

    $cpcontrol03.ctlcontrol04.ctl 更改为4

    $vi$ORRACLE_HOME/dbs/init$ORACLE_SID.ora 改参数

    SQL>startuppfile '$ORACLE_HOME/dbs/init$ORACLE_SID.ora';

    SQL>select name from v$controlfile;

    NAME

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

    /u01/app/oracle/oradata/ora10/control01.ctl

    /u01/app/oracle/oradata/ora10/control02.ctl

    /u01/app/oracle/oradata/ora10/control04.ctl

    SQL>createspfilefrompfile;

    【所有控制文件被破坏的恢复】

    --每增加一个文件,必须输此命令,文件才完整,所有文件记录将保存在跟踪文件中

    SQL>alter database backup controlfile to trace;

    Vi/u01/app/oracle/admin/ora10/udump/ora10_ora_11956.trc

    LOGFILE

    GROUP1'/u01/app/oracle/oradata/ora10/redo01.log' SIZE50M,

    GROUP2'/u01/app/oracle/oradata/ora10/redo02.log' SIZE50M,

    GROUP3'/u01/app/oracle/oradata/ora10/redo03.log' SIZE50M

    --STANDBYLOGFILE

    DATAFILE

    '/u01/app/oracle/oradata/ora10/system01.dbf',

    '/u01/app/oracle/oradata/ora10/undotbs01.dbf',

    '/u01/app/oracle/oradata/ora10/sysaux01.dbf',

    '/u01/app/oracle/oradata/ora10/users01.dbf',

    '/u01/app/oracle/oradata/ora10/example01.dbf'

    CHARACTERSETZHS16GBK

    SQL>startup

    --启动失败

    SQL>start up nomount

    SQL>alter system set control_files '/u01/app/oracle/oradata/ora10/netcontrolfile01','/u01/app/oracle/oradata/ora10/netcontrolfile02' scope spfile;

    SQL> shutdown immediate

    --重启生效

    ORA-01507:databasenotmounted

    ORACLEinstanceshutdown.

    SQL>startupnomount;

    ORACLEinstancestarted.

    --查看新设定

    SQL>select value from v$parameter where name= 'control_files';

    VALUE

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

    /u01/app/oracle/oradata/ora10/netcontrolfile01,/u01/app/oracle/oradata/ora10/netcontrolfile02

    SQL>createcontrolfiledatabaseora10noresetlogs;(可从跟踪文件中获得,前提alter databasebackup......)

    2 logfile

    3 group1'/u01/app/oracle/oradata/ora10/redo01.log',

    4 group2'/u01/app/oracle/oradata/ora10/redo02.log',

    5 group3'/u01/app/oracle/oradata/ora10/redo03.log'

    6 datafile

    7 '/u01/app/oracle/oradata/ora10/sysaux01.dbf',

    8 '/u01/app/oracle/oradata/ora10/system01.dbf',

    9 '/u01/app/oracle/oradata/ora10/undotbs01.dbf',

    10 '/u01/app/oracle/oradata/ora10/users01.dbf',

    11 '/u01/app/oracle/oradata/ora10/example01.dbf'

    12 charactersetzhs16gbk;

    Controlfilecreated.

    SQL>alter database open;

    Databasealtered.

    SQL>alter table space temp tempfile

    ‘/u01/app/oracle/oradata/ora10/temp.dbf’size24125440

    Reuseautoextendoff;(以避免排序报错reuse指重用原OS文件)

    Tablespacealtered.

    SQL>hostls–l/u01/app/oracle/oradata/ora10/ne* (控制文件已生成)

    -rw-r-----1 oracleoinstall6078464Mar 31 14:50

    /u01/app/oracle/oradata/ora10/netcontrolfile02

    -rw-r-----1oracleoinstall6078464Mar3114:50

    /u01/app/oracle/oradata/ora10/netcontrolfile01

    2、数据文件(数据文件的详细信息记载在控制文件中)

    ·每个oracle数据库必须至少有一个数据文件,用于存放数据库数据

    ·多个数据文件应分放在不同的disk上以提高存取速度

    1.主要分类:

    system01.dbf:记录系统运行信息,包含所有数据库字典,PL/SQL程序代码及其他系统信息

    undotbs01.dbf:存放回退信息,即DML操作后的旧数据信息

    sysaux01.dbf:system文件的辅助文件,存放支持oracle系统活动的多种工具如

    logminer

    users01.dbf:新建用户未指定存储空间是,默认数据存放在该文件中

    example01.dbf:存放示例数据信息。

    2.查看数据库数据文件

    ·查看数据文件及大小

    SQL>selectname,bytesfromv$datafile;

    SQL>select*fromdba_data_files;

    SQL>hostls–l/u01/app/oracle/oradata/ora10/*.dbf

    3.修改数据库的数据文件

    【移动/更名一个数据文件】

    SQL>shutdownimmediate

    $mv/u01/app/oracle/oradata/ora10/{example01.dbf,../example.dbf}

    SQL>alterdatabaseora10renamefile

    2 '/u01/app/oracle/oradata/ora10/example01.dbf'to

    3 '/u01/app/oracle/oradata/example.dbf';

    Databasealtered.

    SQL>alterdatabaseopen;

    Databasealtered.

    SQL>select*fromv$datafile;

    【数据文件的扩大和缩小】

    SQL>createtablespacetestdatafile'/u01/app/oracle/oradata/test1.dbf'size5M;

    新建表空间及其所包含的数据文件

    SQL>hostls–l/u01/app/oracle/oradata/test1.dbf

    -rw-r-----1oracleoinstall5251072Mar3116:26

    /u01/app/oracle/oradata/test1.dbf

    SQL>alterdatabasedatafile

    '/u01/app/oracle/oradata/test1.dbf'autoextendon;

    设置数据文件自动扩充

    SQL>selectautoextensiblefromdba_data_files 查看自动扩充标志

    Wherefile_name='/u01/app/oracle/oradata/test1.dbf';

    AUT

    ---

    YES

    SQL>alterdatabasedatafile'/u01/app/oracle/oradata/test1.dbf'resize10M;

    手工扩充数据文件大小

    SQL>hostls–l/u01/app/oracle/oradata/test1.dbf

    -rw-r-----1oracleoinstall10493952Mar3116:29

    /u01/app/oracle/oradata/test1.dbf手工缩减数据文件大小

    SQL>alterdatabasedatafile'/u01/app/oracle/oradata/test1.dbf'resize7M;

    SQL>hostls–l/u01/app/oracle/oradata/test1.dbf

    -rw-r-----1oracleoinstall7348224Mar3116:29

    /u01/app/oracle/oradata/test1.dbf

    4.数据文件的添加和删除

    A【添加数据文件到表空间】

    SQL>altertablespacetestadddatafile

    '/u01/app/oracle/oradata/test2.dbf'size5M

    B【删除表空间中的所有数据文件】

    SQL>selectfile_name,tablespace_namefromdba_data_files;

    查询欲删的数据文件对应的表空间,是否包含多个数据文件

    SQL>droptablespacetestincludingcontents;直接删除表空间

    SQL>hostrm–rf/u01/app/oracle/oradata/test*.dbf 删除数据文件

    c 【删除表空间中的部分数据文件】

    SQL>alterdatabaseora10datafile

    '/u01/app/oracle/oradata/test2.dbf'offlinedrop;

    若表空间中包含多个数据文件,且部分数据文件不能删掉,则欲删掉数据文件先进行脱机处理

    <特别警告!!!>

    此处drop不意味着该数据文件在数据库中已经删除,此时若在OS中直接删除该数据文件,则数据库将面临崩溃。

    SQL>selectfile_name,tablespace_name,online_statusfromdba_data_files;

    FILE_NAME

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

    TABLESPACE_NAME ONLINE_

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

    /u01/app/oracle/oradata/example.dbf

    EXAMPLE ONLINE

    /u01/app/oracle/oradata/ora10/users01.dbf

    USERS ONLINE

    /u01/app/oracle/oradata/ora10/undotbs01.dbf

    UNDOTBS1 ONLINE

    /u01/app/oracle/oradata/ora10/system01.dbf

    SYSTEM SYSTEM

    /u01/app/oracle/oradata/ora10/sysaux01.dbf

    SYSAUX ONLINE

    /u01/app/oracle/oradata/test1.dbf

    TEST ONLINE

    /u01/app/oracle/oradata/test2.dbf

    TEST RECOVER

    数据文件仍然存在(状态recover),故不能直接删除该数据文件,只能通过删除表空间的方法删除表空间中的所有数据文件。

    ora10.2可用drop参数删数据文件,但存在限制:1.表空间中自个数据文件不能删除;2.被删除数据文件必须为空;3.无法删除表空间中的最后一个数据文件,除非表空间本身。

    测试:

    SQL>selectfile_name,tablespace_namefromdba_data_files;

    SQL>altertablespacetest2adddatafile'/u01/test02.dbf'size5M;

    SQL>altertablespacetest2adddatafile'/u01/test03.dbf'size5M;

    创建表空间就并加数据文件

    SQL>altertablespacetest2dropdatafile'/u01/test01.dbf';

    Altertablespacetest2dropdatafile'/u01/test01.dbf'

    ERRORatline1:删除表空间中第一个数据文件报错,不能进行

    ORA-03263:cannotdropthefirstfileoftablespaceTEST2

    SQL>alterdatabaseora10datafile '/u01/test01.dbf'offlinedrop;

    SQL>createtablemytest(inumber)tablespacetest2;

    将第一个数据文件离线,再在表空间中建立测试表,则表将被保存在余下的两个数据文件中

    SQL>select

    substr(owner,1,3),substr(segment_name,1,13),substr(file_id,1,10)

    fromdba_extents

    wheresegment_name= 'MYTEST';

    SUBSTRSUBSTR(SEGMENT_NAME,1,13) SUBSTR(FILE_ID,1,10)

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

    SYS MYTEST 7

    SQL>selectsubstr(file_name,1,15),file_idfromdba_data_fileswherefile_id= '7';

    SUBSTR(FILE_NAME,1,15) FILE_ID

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

    /u01/test02.dbf 7

    查看测试表保存在哪个数据文件中,查到该数据文件号再根据文件号查数据文件名

    SQL>altertablespacetest2dropdatafile'/u01/test02.dbf';

    Altertablespacetest2dropdatafile'/u01/test02.dbf'

    ERRORatline1:

    ORA-03262:thefileisnon-empty

    删除表空间中已分配了空间的数据文件(非空)报错,不能进行。

    SQL>altertablespacetest2dropdatafile'/u01/test03.dbf';

    Tablespacealtered.

    删除表空间中未分配了空间的数据文件(为空),允许进行。;

    3、重做日志文件(联机重做日志)

    1.存放所有事物日志。

    重做日志的两个概念,重做日志组和重做日志组成员。

    一个数据库中至少要有两个日志组文件,一组写完后再写另一组,即轮流写。每个日志组中至少有一个日志成员,一个日志组中的多个日志成员是镜相关系,有利于日志文件的保护。

    2.联机日志组的交换过程叫做切换。特别注意:日志切换在一个优化效果不好的数据库中会引起临时的“挂起”。挂起大致有两种情况:

    在归档情况下,需要归档的日志来不及归档,而联机日志又需要被重新利用

    检查点事件还没有完成(日志切换引起检查点),而联机日志需要被重新利用

    解决这种问题的常用手段是:

    i.增加日志组

    ii.增大日志文件成员大小

    通过v$log可以查看日志组,v$logfile可以查看具体的成员文件。

    日志组的状态:

    current:使用状态,该日志组正在使用中。

    active:激活状态,实例恢复时将需要该日志组。

    inactive:非激活状态,实例恢复时不再需要该日志组。

    unused:未使用状态,该日志组尚未记录过日志信息(新添加组)。

    日志组成员的状态:

    空: 该文件是可用/活动的(但不一定是正在使用的,参考v$log)

    Stale: 表示该文件内容不完全(系统特殊状态)

    invalid:表明该文件暂不可访问(新添加镜像)

    deleted:表明该文件已不再使用(已删除)

    3.修改重做日志文件

    ·【添加日志组(添加重做日志文件个数)】

    SQL>alterdatabaseora10addlogfilegroup4

    ('/u01/app/oracle/oradata/ora10/redo04.log')

    size5M; 新添加组状态为unused

    SQL>select*fromv$log;

    GROUP# THREAD# SEQUENCE# BYTES MEMBERSARCSTATUS

    FIRST_CHANGE#FIRST_TIME

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

    1 1 26 52428800 1NO CURRENT

    94803831-MAR-10

    2 1 24 52428800 1NO INACTIVE

    92684431-MAR-10

    3 125 524288001NO INACTIVE

    94763831-MAR-10

    4 1 0 5242880 1YESUNUSED

    0

    ·【添加日志组成员(添加镜像文件)】

    SQL>alterdatabaseora10addlogfilemember

    2 '/u01/app/oracle/oradata/redo01.log'togroup1,

    3 '/u01/app/oracle/oradata/redo02.log'togroup2,

    4 '/u01/app/oracle/oradata/redo03.log'togroup3,

    5 '/u01/app/oracle/oradata/redo04.log'togroup4;

    Databasealtered.

    SQL>selectgroup#,status,type,substr(member,1,40)fromv$logfile;

    GROUP#STATUS TYPE SUBSTR(MEMBER,1,40)

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

    3STALE ONLINE /u01/app/oracle/oradata/ora10/redo03.log

    2STALE ONLINE /u01/app/oracle/oradata/ora10/redo02.log

    1 ONLINE /u01/app/oracle/oradata/ora10/redo01.log

    4 ONLINE /u01/app/oracle/oradata/ora10/redo04.log

    1INVALIDONLINE/u01/app/oracle/oradata/redo01.log

    2INVALIDONLINE/u01/app/oracle/oradata/redo02.log

    3INVALIDONLINE /u01/app/oracle/oradata/redo03.log

    4INVALIDONLINE /u01/app/oracle/oradata/redo04.log

    SQL>alterdatabaseora10addlogfilemember

    2 '/u01/app/oracle/oradata/redo01.log'togroup1,

    3 '/u01/app/oracle/oradata/redo02.log'togroup2,

    4 '/u01/app/oracle/oradata/redo03.log'togroup3,

    5 '/u01/app/oracle/oradata/redo04.log'togroup4;

    SQL>alter system switch logfile;

    SQL> selectgroup#,status,type,substr(member,1,40) from v$logfile;

    GROUP# STATUS TYPE SUBSTR(MEMBER,1,40)

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

    3STALE ONLINE /u01/app/oracle/oradata/ora10/redo03.log

    2STALE ONLINE /u01/app/oracle/oradata/ora10/redo02.log

    1 ONLINE /u01/app/oracle/oradata/ora10/redo01.log

    4 ONLINE /u01/app/oracle/oradata/ora10/redo04.log

    1INVALID ONLINE/u01/app/oracle/oradata/redo01.log

    2INVALID ONLINE /u01/app/oracle/oradata/redo02.log

    3 INVALID ONLINE /u01/app/oracle/oradata/redo03.log

    4 ONLINE /u01/app/oracle/oradata/redo04.log

    ·【删除日志组(消减重做日志文件个数)】

    SQL>alterdatabaseoracledroplogfilegroup4;

    SQL>select*fromv$logfile;

    SQL>select*fromv$log;

    inactive和unused状态的日志组才能删除,current和active状态的日志组不能删除,要删除current状态的日志组,应先用logswitch将current状态的日志组转换为active状态,而要删除active状态的日志组,则需用heckpoint将其转换为inactive状态,才能删除。

    SQL>alter system switch logfile;

    ·【删除日志组成员(删除镜像文件)】

    SQL>alter databaseora10 drop logfile

    member '/u01/app/oracle/oradata/redo01.log';

    日志组最后一个日志成员不能被删除;

    current日志组中任何成员都不能删除;

    其他情况下不能删组成员时,可用logswitch将日志组状态进行转换后才能删除。

    ·【移动或重命名日志文件】

    SQL>shutdownimmediate

    SQL>hostmv/u01/app/oracle/oradtata/ora10/*.log/u01/app

    SQL>startupmount

    SQL>alter databaserenamefile

    2 '/u01/app/oracle/oradata/ora10/redo01.log',

    3 '/u01/app/oracle/oradata/ora10/redo02.log',

    4 '/u01/app/oracle/oradata/ora10/redo03.log',

    5 '/u01/app/oracle/oradata/ora10/redo04.log'

    6 to

    7 '/u01/app/redo01.log',

    8 '/u01/app/redo02.log',

    9 '/u01/app/redo03.log',

    10 '/u01/app/redo04.log';

    Databasealtered.

    SQL>alter databaseopen;

    Databasealtered.

    SQL> selectgroup#,status,type,substr(member,1,40) from v$logfile;

    GROUP# STATUS TYPE SUBSTR(MEMBER,1,40)

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

    3 ONLINE /u01/app/redo03.log

    2 ONLINE /u01/app/redo02.log

    1 ONLINE /u01/app/redo01.log

    4 ONLINE /u01/app/redo04.log

    2 ONLINE /u01/app/oracle/oradata/redo02.log

    3 ONLINE /u01/app/oracle/oradata/redo03.log

    4 ONLINE /u01/app/oracle/oradata/redo04.log

    3、归档日志文件

    重做日志文件的截断备份

    Oracle运行的两种模式:归档模式和不归档模式。

    1. 启用/禁用归档模式

    SQL>archiveloglist; 查询归档模式

    SQL>shutdown immediate

    SQL>startup mount

    SQL>alter database archivelog;

    SQL>alterdatabaseopen;

    SQL>archiveloglist;

    Databaselogmode ArchiveMode

    Automaticarchival Enabled

    Archivedestination USE_DB_RECOVERY_FILE_DEST

    Oldestonlinelogsequence 38

    Nextlogsequencetoarchive 才 40

    Currentlogsequence 40

    ora10 前需该参数log_archive_start为true,并重启生效,已启动自动归档功能,ora10中该参数停用,启用归档模式后数据库自动处于自动归档状态。

    SQL>showparameterlog_archive_start; 无需更改

    2.配置归档文件位置

    SQL>archiveloglist;

    SQL>showparameterdb_recovery_file_dest; 查看归档文件位置

    NAME TYPE VALUE

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

    db_recovery_file_deststring /u01/app/oracle/flash_recovery _area

    db_recovery_file_dest_size biginteger2G

    SQL>altersystemset

    log_archive_dest='/u01/app/oracle/oradata/ora10/'scope=both;

    修改归档文件报错

    SQL>altersystemsetlog_archive_dest=''scope=both; 应先将该参数设为空

    SQL>altersystemset

    log_archive_dest='/u01/app/oracle/oradata/ora10/'scope=both;

    再次修改成功

    SQL>showparameterlog_archive_dest; 再查归档文件位置

    SQL>hostls–l/u01/app/oracle/oradata/ora10/

    SQL>altersystemswitchlogfile; 手工切换日志查看归档情况

    3. 配置归档文件格式

    SQL>showparameterlog_archive_format;

    NAME TYPE VALUE

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

    log_archive_format string %t_%s_%r.dbf

    SQL>altersystemsetlog_archive_format='LF_%s_%t_%r.arc'scope=spfile;

    修改文件名格式,静态参数(至少必须包含%s,%tt,%r3个参数,否则重启报错)

    SQL>shutdownimmediate

    SQL>startup

    SQL>altersystemswitchlogfile;

    SQL>hostls–l /u01/app/oracle/oradata/ora10/

    Total922440

    -rw-r-----1oracleoinstall 489472Mar3122:481_40_713700043.dbf

    -rw-r-----1oracleoinstall 500224Mar3123:04LF_41_1_713700043.arc

    归档文件格式参数:

    %s:日志序列号

    %S:日志序列号 (带有前导0)

    %t:重做线程编号

    %T:重做线程编号 (带有前导0)

    %r:ResetlogID

    %a:活动ID号

    %A:数据库ID号

    5、口令文件:password file

    对通过网络进行管理的用户进行认证。

    1.本地连接

    默认情况下,无论实例是否已启动,数据库服务器本地用户登录数据库需通过操作系统验证,即发起登录的操作系统用户是否属于oinstall组,是则允许登录,否则禁止,而与登录时使用的数据库用户及口令无关(错误的数据库用户及错误口令或空口令均允许登录)。

    注意,操作系统验证仅对本地连接且已assysdba身份登录才生效,若非assysdba身份,则进行数据库验证。

    [root@station31~]#cat/etc/passwd|greporacle

    oracle:x:500:501::/home/oracle:/bin/bash

    [root@station31~]#cat/etc/group|grep501

    oinstall:x:501:

    sed–i 's/oinstall:x:501/oinstall:x:505/'/etc/group 更改oracle用户所属组ID

    #su-oracle

    $sqlplus/ assysdba; 无口令登录失败

    Perl–p–e's/oinstall:x:505/oinstall:x:501/'/etc/group 撤消上述更改

    测试结果:

    操作系统验证本地实例启动:以assysdba登录无口令或错误口令可登录,以普通用户

    登录需正确口令;

    实例关闭:只能以assysdba登录可无口令或错误口令可登录,数据库没启动,数据库

    验证失效,普通用户无法登录。

    禁用操作系统验证本地实例启动:以assysdba登录需正确口令。

    实例关闭:只能以assysdba并以正确口令登录。

    禁用操作系统验证:

    vi$ORACLE_HOME/network/admin/sqlnet.ora

    SQLNET.AUTHENTICATION_SERVICES (NONE)

    添加上行,指定禁用操作系统验证,提高本地登录安全性。

    禁用OS验证后,本地登录将根据数据库口令文件参数的设置(默认生效)改用口令文

    件验证,默认口令文件为$ORACLE_HOME/dbs/orapw$ORACLE_SID默认其中已包含sys

    用户。

    SQL>showparameterremote_login_passwordfile;

    口令文件验证规则为:对于以sysdba身份登录的用户,使用口令文件进行验证,验证

    口令文件中是否包含该用户且口令文件中口令是否正确;对于以非sysdba身份登录的用户,

    则仍使用数据库验证,验证数据库中是否包含该用户且数据库中口令是否正确。

    2. 网络连接

    默认情况下,无论实例是否启动,远程客户端用户登录数据库都需进行口令文件或数据

    库的验证,使用口令文件及验证规则与本地验证相同。

    例:

    $vi$ORACLE_HOME/network/admin/listener.ora

    SID_LIST_LISTENER

    (SID_LIST

    (SID_DESC

    (SID_NAME PLSExtProc)

    (ORACLE_HOME /u01/app/oracle/product/10.2.0/db_1)

    (PROGRAM extproc)

    )

    (SID_DESC

    (GLOBAL_DBNAME ora10)

    (ORACLE_HOME /u01/app/oracle/product/10.2.0/db_1)

    (SID_NAME ora10)

    )

    )

    LISTENER

    (DESCRIPTION_LIST

    (DESCRIPTION

    (ADDRESS (PROTOCOL TCP)(HOST 10.2.26.31)(PORT 1521))

    )

    )

    vim $ORACLE_HOME/network/admin/tnsnames.ora

    ORA10

    (DESCRIPTION

    (ADDRESS (PROTOCOL TCP)(HOST 10.2.26.31)(PORT 1521))

    (CONNECT_DATA

    (SERVER DEDICATED)

    (SERVICE_NAME ora10)

    )

    )

    LISTENER_ORA10

    (ADDRESS (PROTOCOL TCP)(HOST 10.2.26.31)(PORT 1521))

    EXTPROC_CONNECTION_DATA

    (DESCRIPTION

    (ADDRESS_LIST

    (ADDRESS (PROTOCOL IPC)(KEY EXTPROC2))

    )

    (CONNECT_DATA

    (SID PLSExtProc)

    (PRESENTATION RO)

    )

    )

    在listener.ora和tnsnames.ora配置文件中添加或修改实例和数据库名段。

    ·口令文件启用

    SQL>showparameterremote_login_passwordfile; 查看口令文件参数。

    NAME TYPE VALUE

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

    remote_login_passwordfile string EXCLUSIVE

    none:禁用口令文件验证,不允许通过网络进行DB管理,即使口令文件存在。

    exchlusize:启用口令文件验证,允许一个数据库使用口令文件进行验证(默认)

    shared:共享口令文件验证,允许多个数据库使用口令文件进行验证

    ·口令文件生成

    $cd$ORACLE_HOME/dbs

    $orapwdfile=orapwora10password=123456 entries=20force=y

    orapwd参数含义(“”两边无空格):

    file:定义口令文件名称(路径为$ORACLE_HOME/dbs/) (必需)

    password:SYS用户的口令(必需)

    entries:允许在口令文件中添加到用户最大数量(可选)

    force:是否覆盖原有口令文件(可选)

    ·查看修改口令文件

    SQL>select*fromv$pwfile_users; 查看口令文件中所有用户

    USERNAME SYSDBSYSOP

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

    SYS TRUE TRUE

    SQL>createuseruser01identifiedby 123456;添加用户

    SQL> grantsysdbatouser01; 赋sysdba权限后自动加入口令文件

    SQL>select*fromv$pwfile_users;

    USERNAME SYSDBSYSOP

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

    SYS TRUE TRUE

    USER01 TRUE FALSE

    SQL>revokesysdbafromuser01; 从口令文件中删除用户

    ·删除口令文件(禁用口令文件验证)

    SQL>altersystemsetremote_login_passwordfile=nonescope=spfile;

    SQL>shutdownimmediate;

    rm$ORACLE_HOME/dbs/orapwora10

    由上步测试可知,在禁用口令文件验证后,网络连接时将只有一种方式可以连入数据库,即在数据库启动情况下,仅允许普通用户以正确口令连入数据库,提高了网络连接的安全性, 但同时大大降低了网络验证的可管理性,因其中关键性的“数据库关闭状态下以sysdba身份连入数据库”功能不能使用,从而使远程启动数据库功能不能实现,不利于从网络原创管理数据库,因此应该使用默认的启用口令文件验证模式。

    特别注意:

    若禁用了本地操作系统验证后,又禁用口令文件验证,则在数据库关闭后,将无法使用

    任何方法连入数据库再次重启实例,故不应将本地操作系统验证和口令文件验证同时禁用。

    6.警告文件:alert file

    记录数据库文件运行中主要事件的命令与结果Alertlog是一种特殊的跟踪文件,每个数据库都有一个跟踪文件,同步记载数据库的

    消息和错误。

    [oracle@station31dbs]$ls-l

    /u01/app/oracle/admin/ora10/bdump/alert_$ORACLE_SID.log

    -rw-r-----1 oracle oinstall595392 Apr 2 00:12

    /u01/app/oracle/admin/ora10/bdump/alert_ora10.log

    7.跟踪文件:tracefile

    记载后台进程遇到的重大事件信息

    记载相关进程所遇到的重大事件的信息

    $ls–al/u01/app/oracle/admin/ora10/bdump/*.trc

    $ls–al/u01/app/oracle/admin/ora10/cdump/core_nnnn/core

    $ls–al/u01/app/oracle/admin/ora10/udump/*.trc

    $ls–al/u01/app/oracle/admin/ora10/adump/*.aud

    bdump:警告信息文件,及后台进程的跟踪文件存放目录

    cdump:主要是oracle的内核跟踪文件存放目录

    udump:用户进程跟踪文件存放目录,用于收集客户应用的SQL语句统计信息

    adump:审计信息文件存放目录

    SQL>selectname,valuefromv$parameterwherevaluelike'%dump%';

    NAME VALUE

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

    background_dump_dest /u01/app/oracle/admin/ora10/bdump

    user_dump_dest /u01/app/oracle/admin/ora10/udump

    core_dump_dest /u01/app/oracle/admin/ora10/cdump

    audit_file_dest /u01/app/oracle/admin/ora10/adump

    8、初始化参数文件

    initSID.ora或init.ora文件,因为版本的不一样,其位置也可能会不一样。在8i中,

    通常位于$ORACLE_HOME/admin//Pfile下,初始化文件记载了许多数据库的启动参数,

    如内存,控制文件,进程数等,在数据库启动的时候加载(Nomount时加载),初始化文

    件记录了很多重要参数,对数据库的性能影响很大,如果不是很了解,不要轻易乱改写,否

    则会引起数据库性能下降。


    作者:czjie
    出处:http://www.cnblogs.com/czjie/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    软件体系结构基本概念汇总
    开发,从需求出发 &#183; 之三 春天在哪里
    chrome模拟手机功能
    Codeforces 2
    ViewPager 入门一
    软考之路--最后的最后,我们都是天使
    分享一段php获取随意时间的前一天代码
    [App Store Connect帮助]七、在 App Store 上发行(2.5)设定价格与销售范围:向企业或教育机构分发您的 App
    [App Store Connect帮助]七、在 App Store 上发行(2.3)设定价格与销售范围:为您的 App 选择地区
    [App Store Connect帮助]七、在 App Store 上发行(2.4)设定价格与销售范围:安排价格调整
  • 原文地址:https://www.cnblogs.com/czjie/p/2235099.html
Copyright © 2020-2023  润新知