2013年4月27日 星期六

10:26

物理操作系统文件的集合。主要包括:

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

二进制文件,控制文件由参数control_files指定,格式如下:control_files=("home/app/.../control01.ctl","home/app/.../control02.ctl") 。

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

a.shutdown  immediate;

b.cp old_controlfile.ctl   new_controlfile.ctl

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

d.startup

控制文件包括信息:

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

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

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

SYS @ prod > select name from v$controlfile;

NAME

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

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

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

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

SYS @ PROD >create pfile from spfile;

File created.

SYS @ PROD >shutdown immediate;

[oracle @ redhat  prod]$ cp control03.ctl      control04.ctl     更改为控制文件4

[oracle @ redhat  prod]$ mv control03.ctl   ../controlbak.ctl 备份

[oracle @ redhat  prod]$ vi  $ORRACLE_HOME/dbs/init$ORACLE_SID.ora      修改参数新增控制文件信息.

......

SYS @ PROD >startup       pfile='$ORACLE_HOME/dbs/init$ORACLE_SID.ora';   测试pfile 文件可用性.

SYS @ PROD >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

SYS @ PROD >create spfile from pfile;   重新生成 spfile  文件

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

备份当前控制文件

SYS @ PROD > alter database backup controlfile to trace;

Database altered.

SYS @ PROD >startup ;

启动失败

SYS @ PROD >startup nomount ;

SYS @ PROD >alter system set     control_files ='/u01/app/oracle/oradata/ora10/netcontrolfile01',   '/u01/app/oracle/oradata/ora10/netcontrolfile02' scope=spfile;

SYS @ PROD >    shutdown           immediate ;

重启生效

SYS @ PROD >startup nomount;

ORACLE instance started.

SYS @ PROD >select value from v$parameter where name= 'control_files';  查看新设定的控制文件

VALUE

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

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

(重建控制文件 可从跟踪文件中获得,前提alter database backup......)

SYS @ PROD >create controlfile database ora10  noresetlogs 

 logfile

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

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

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

   datafile

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

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

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

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

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

  characterset zhs 16gbk;

Controlfile  created.

SYS @ PROD >alter database open;

Database altered.

SYS @ PROD >alter tablespace temp tempfile   ‘/u01/app/oracle/oradata/ora10/temp.dbf’    size   24125440     Reuse autoextend off; (以避免排序报错,reuse指重用原临时文件)

Tablespace altered.

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

-rw-r-----1 oracle oinstall 6078464 Mar 31 14:50

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

-rw-r-----1 oracle oinstall 6078464 Mar 31 14:50

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

  1. 数据文件(数据文件的详细信息记在控制文件中)

·每个oracle数据库必须至少有一个数据文件,用于存放数据库数据。多个数据文件应分放在不同的disk上以提高存取速度

1.主要分类:

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

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

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

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

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

2.查看数据库数据文件

·查看数据文件及大小

SYS @ PROD >select file_name,tablespace_name,bytes/1024/1024,status from dba_data_files

FILE_NAME                                          TABLESPACE_NAME                BYTES/1024/1024 STATUS

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

/u01/app/oracle/oradata/cuug/users01.dbf           USERS                                        5 AVAILABLE

/u01/app/oracle/oradata/cuug/sysaux01.dbf          SYSAUX                                     240 AVAILABLE

/u01/app/oracle/oradata/cuug/undotbs01.dbf         UNDOTBS1                                    25 AVAILABLE

/u01/app/oracle/oradata/cuug/system01.dbf          SYSTEM                                     480 AVAILABLE

SYS @ PROD >hostls –l /u01/app/oracle/oradata/cuug/*.dbf

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

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

SYS @ PROD >shutdown immediate

[oracle@prod prod]$ mv users01.dbf  users02.dbf

SYS @ prod >alter database   rename file   '/u01/app/oracle/oradata/prod/users01.dbf'  to '/u01/app/oracle/oradata/prod/users02.dbf';

Database altered.

SYS @ PROD >alter database open;

Database altered.

SYS @ PROD >select name,status  from v$datafile;

NAME                                               STATUS

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

/u01/app/oracle/oradata/cuug/system01.dbf          SYSTEM

/u01/app/oracle/oradata/cuug/undotbs01.dbf         ONLINE

/u01/app/oracle/oradata/cuug/sysaux01.dbf          ONLINE

/u01/app/oracle/oradata/cuug/users01.dbf           ONLINE

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

SYS @ PROD >create tablespace test datafile'/u01/app/oracle/oradata/prod/test01.dbf' size  5M;            新建表空间及其所包含的数据文件

Tablespace created.

SYS @ prod >host ls -l  /u01/app/oracle/oradata/prod/test01.dbf

-rw-r----- 1 oracle oinstall 5251072 Jan 15 07:33 /u01/app/oracle/oradata/prod/test01.dbf

SYS @ prod >alter database datafile  '/u01/app/oracle/oradata/prod/test01.dbf' autoextend on;

Database altered.                      设置数据文件自动扩充

SYS @ prod >select autoextensible     from    dba_data_files       Where file_name='/u01/app/oracle/oradata/prod/test01.dbf';  

autoextensible

---

YES                                               查看文件自动扩展标志

SYS @ prod >alter database datafile '/u01/app/oracle/oradata/prod/test01.dbf'  resize 10M;

Database altered.                                     手工扩充数据文件大小

SYS @ prod >host ls -l  /u01/app/oracle/oradata/prod/test01.dbf

-rw-r----- 1 oracle oinstall 10493952 Jan 15 07:40 /u01/app/oracle/oradata/prod/test01.dbf

 手工缩减数据文件大小                                         

SYS @ prod >alter database datafile '/u01/app/oracle/oradata/prod/test01.dbf'  resize  7m;

Database altered.

SYS @ prod >host ls -l  /u01/app/oracle/oradata/prod/test01.dbf

-rw-r----- 1 oracle oinstall 7348224 Jan 15 07:41 /u01/app/oracle/oradata/prod/test01.dbf

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

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

SYS @ prod >alter tablespace test add datafile  '/u01/app/oracle/oradata/prod/test02.dbf' size 5m;

Tablespace altered.

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

SYS @ PROD >select file_name,tablespace_name from dba_data_files;

FILE_NAME                                          TABLESPACE_NAME

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

/u01/app/oracle/oradata/prod/system01.dbf          SYSTEM

/u01/app/oracle/oradata/prod/undotbs01.dbf         UNDOTBS1

/u01/app/oracle/oradata/prod/sysaux01.dbf          SYSAUX

/u01/app/oracle/oradata/prod/users01.dbf           USERS

/u01/app/oracle/oradata/prod/test01.dbf            TEST

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

SYS @ PROD >drop tablespace test including contents;直接删除表空间 及表空间下的对象

SYS @ PROD >host rm –rf /u01/app/oracle/oradata/prod/test*.dbf 删除数据文件

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

SYS @ prod >alter database datafile '/u01/app/oracle/oradata/prod/test02.dbf' offline drop;

Database altered.

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

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

SYS @ prod >select file_name,tablespace_name,online_status from dba_data_files;

FILE_NAME                                          TABLESPACE_NAME                ONLINE_

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

/u01/app/oracle/oradata/prod/system01.dbf          SYSTEM                         SYSTEM

/u01/app/oracle/oradata/prod/undotbs01.dbf         UNDOTBS1                       ONLINE

/u01/app/oracle/oradata/prod/sysaux01.dbf          SYSAUX                         ONLINE

/u01/app/oracle/oradata/prod/users01.dbf           USERS                          ONLINE

/u01/app/oracle/oradata/prod/test01.dbf            TEST                           ONLINE

/u01/app/oracle/oradata/prod/test02.dbf            TEST                           RECOVER

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

ora10.2可用drop参数删数据文件,但存在限制:

1.表空间中第一个数据文件不能删除;

2.被删除数据文件必须为空;

3.无法删除表空间中的第一个数据文件,除非删除表表空间时 指定 including contents and datafiles 本身。

测试:

SYS @ prod >select file_name,tablespace_name from dba_data_files;

FILE_NAME                                          TABLESPACE_NAME

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

/u01/app/oracle/oradata/prod/system01.dbf          SYSTEM

/u01/app/oracle/oradata/prod/undotbs01.dbf         UNDOTBS1

/u01/app/oracle/oradata/prod/sysaux01.dbf          SYSAUX

/u01/app/oracle/oradata/prod/users01.dbf           USERS

/u01/app/oracle/oradata/prod/test01.dbf            TEST

/u01/app/oracle/oradata/prod/test02.dbf            TEST

创建表空间并加数据文件

SYS @ prod >create tablespace test datafile '/u01/app/oracle/oradata/cuug/test01.dbf' size 5m;

Tablespace created.

SYS @ prod >alter tablespace test add datafile '/u01/app/oracle/oradata/cuug/test02.dbf' size 5m;

Tablespace altered.

SYS @ prod >alter tablespace test add datafile '/u01/app/oracle/oradata/prod/test03.dbf ' size 5M;

Tablespace altered.

SYS @ prod >alter tablespace test add datafile '/u01/app/oracle/oradata/prod/test04.dbf ' size 5M;

Tablespace altered.

SYS @ prod >alter tablespace test drop datafile '/u01/app/oracle/oradata/prod/test01.dbf ';

alter tablespace test drop datafile '/u01/app/oracle/oradata/prod/test01.dbf '

*

ERROR at line 1:

ORA-01565: error in identifying file '/u01/app/oracle/oradata/prod/test01.dbf '

ORA-03263:cannot drop the first file of tablespace TEST2    删除表空间中第一个数据文件报错,不能进行

必须使用offline drop 方式 删除该数据文件

SYS @ prod >alter  database datafile '/u01/app/oracle/oradata/prod/test01.dbf'  offline drop ;

Database altered.

SYS @ prod >create   table   mytest(  I  number)    tablespace   test;

Table created.

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

SYS @ prod >select      substr(owner,1,3),  substr(segment_name,1,13),   substr(file_id,1,10)

from dba_extents        where segment_name= 'MYTEST';

substr(owner,1,3)    SUBSTR(SEGMENT_NAME,1,13)  SUBSTR(FILE_ID,1,10)

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

SYS                                      MYTEST                                                       6

SYS @ prod >select substr(file_name,1,50),file_id from dba_data_files where file_id= '6';

SUBSTR(FILE_NAME,1,50)                                                                                  FILE_ID

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

/u01/app/oracle/oradata/prod/test02.dbf                                                                       6

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

SYS @ PROD >alter tablespace test2 drop datafile '/u01/ app/oracle/oradata/prod/test02.dbf';

Alter tablespace test2 drop datafile'/u01/ app/oracle/oradata/prod/test02.dbf'

ERROR at line 1:

ORA-03262:the file is non-empty

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

SYS @ PROD >alter tablespace test2 drop datafile '/u01/ app/oracle/oradata/prod/test03.dbf';

Tablespace altered.

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

扩展

新建数据文件,虽然此时删除数据文件,但是控制文件中还包含有 该数据文件的信息,所以此时 可以重建该数据文件

SYS @ PROD >alter database  create datafile '/u01/app/oracle/oradata/cuug/test01.dbf';

Database altered.

SYS @ PROD >select ext.file_id,tab.file_name,ext.owner,ext.bytes/1024/1024 from dba_extents ext,dba_data_files tab where ext.file_id=tab.file_id and ext.file_id=8;

FILE_ID FILE_NAME                    OWNER   EXT.BYTES/1024/1024

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

8 /u01/app/oracle/oradata/cuug/test04.dbf            SYS     .0625

新建表 test02  ,指定表空间 test

SYS @ cuug >create table test02(n1 date) tablespace test;

Table created.

再次查看该表存在哪个数据文件

SYS @ cuug >select ext.file_id,tab.file_name,ext.owner,ext.bytes/1024/1024 from dba_extents ext,dba_data_files tab where ext.file_id=tab.file_id and ext.segment_name='TEST02';

FILE_ID FILE_NAME                    OWNER   EXT.BYTES/1024/1024

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

6 /u01/app/oracle/oradata/cuug/test02.dbf            SYS     .0625

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

1.存放所有事务日志。

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

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

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

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

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

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

i.增加日志组

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

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

日志组的状态:

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

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

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

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

日志组成员的状态:

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

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

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

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

3.修改重做日志文件

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

SYS @ prod >alter database add logfile '/u01/app/oracle/oradata/cuug/redo05a.log' size 5m;

Database altered.   其实不指定group 也可以添加日志组。还是建议 明确指定 group

SYS @ prod >alter database  add logfile group 4 '/u01/app/oracle/oradata/prod/redo04..log' size 5m;

Database altered.                               新添加组状态为unused

SYS @ prod >select * from v$log;

GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM

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

1          1         58   52428800          1 YES INACTIVE               1202703 15-JAN-13

2          1         59   52428800          1 NO  CURRENT                1245850 15-JAN-13

3          1         57   52428800          1 YES INACTIVE               1181034 15-JAN-13

4          1          0    5242880            1 YES UNUSED                       0      0

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

SYS @ prod >alter database  add logfile member  '/u01/app/oracle/oradata/prod/redo04.log' to group 4;

Database altered.

SYS @ prod >select group#,status,type,substr(member,1,40) from v$logfile;

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

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

1 STALE   ONLINE  /u01/app/oracle/oradata/prod/redo01.log

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

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

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

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

4 INVALID ONLINE  /u01/app/oracle/oradata/prod/redo04b.log

SYS @ PROD >alter system switch logfile;

SYS @ prod > select group#,status,type,substr(member,1,40) from v$logfile;

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

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

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

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

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

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

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

4         ONLINE  /u01/app/oracle/oradata/prod/redo04b.log

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

SYS @ prod >alter database drop logfile group 4;

Database altered.

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

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

SYS @ prod >alter database drop logfile member '/u01/app/oracle/oradata/cuug/redo04b.log';

Database altered.

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

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

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

·

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

SYS @ PROD >shutdown immediate

SYS @ PROD >host mv /u01/app/oracle/oradtata/ora10/*.log     /u01/app

SYS @ PROD >startup mount

SYS @ PROD >alter database rename file

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

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

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

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

to

'/u01/app/redo01.log',

'/u01/app/redo02.log',

'/u01/app/redo03.log',

'/u01/app/redo04.log';

Database altered.

SYS @ PROD >alter database open;

Database altered.

SYS @ PROD > select group#,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

1归档日志文件

重做日志文件的截断备份

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

1. 启用/禁用归档模式

SYS @ PROD >archive log list; 查询归档模式

SYS @ PROD >shutdown immediate

SYS @ PROD >startup mount

SYS @ PROD >alter database archivelog;

SYS @ PROD >alter database open;

SYS @ PROD >archive log list;

Database log mode              Archive Mode

Automatic archival              Enabled

Archive destination             USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence       38

Next log sequence to archive    40

Current log sequence            40

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

SYS @ PROD >show parameter log_archive_start; 无需更改

NAME                                 TYPE        VALUE

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

log_archive_start                    boolean     FALSE

2.配置归档日志文件位置

SYS @ PROD >archive log list;

SYS @ PROD >show parameter db_recovery_file_dest;      查看归档文件位置

NAME                     TYPE       VALUE

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

db_recovery_file_dest       string      /u01/app/oracle/flash_recovery _area

db_recovery_file_dest_size  big integer  2G

SYS @ prod >alter system set log_archive_dest=' location=/u01/app/oracle/oradata/prod/arch'  scope=both;

alter system set log_archive_dest='/u01/app/oracle/oradata/prod/arch'  scope=both

*

ERROR at line 1:

ORA-02097: parameter cannot be modified because specified value is invalid

ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST

修改归档文件报错

SYS @ prod >alter system set log_archive_dest_1='location=/u01/app/oracle/oradata/prod/arch'  scope=both ;

System altered.           应先将该参数设为空

再次修改成功

SYS @ PROD >show parameter log_archive_dest;                     再查归档文件位置

SYS @ PROD >host ls –l /u01/app/oracle/oradata/prod /arch

SYS @ PROD >alter system switch logfile;                    手工切换日志查看归档情况

3. 配置归档文件格式

SYS @ PROD >show parameter log_archive_format;

NAME                    TYPE           VALUE

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

log_archive_format        string          %t_%s_%r.dbf

SYS @ PROD >alter system set log_archive_format='LF_%s_%t_%r.arc' scope=spfile;

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

SYS @ PROD >shutdown immediate

SYS @ PROD >startup

SYS @ PROD >alter system switch logfile;

SYS @ PROD >host ls –l     /u01/app/oracle/oradata/ora10/

Total 922440

-rw-r----- 1 oracle oinstall  489472 Mar 31 22:48 1_40_713700043.dbf

-rw-r----- 1 oracle oinstall  500224 Mar 31 23:04 LF_41_1_713700043.arc

归档文件格式参数:

%s:日志序列号

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

%t:重做线程编号

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

%r:ResetlogID

%a:活动ID号

%A:数据库ID号

5、口令文件:password file

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

1.本地连接

默认情况下,无论实例是否已启动,数据库服务器本地用户登录数据库需通过操作系统验证,即发起登录的操作系统用户是否属于oinstall组,是则允许登录,否则禁止,而与登录时使用的数据库用户及口令无关(错误的数据库用户及错误口令或空口令均允许登录)。注意, 操作系统验证仅对本地连接且以as sysdba身份登录才生效,若非as sysdba身份,则 进行数据库验证。

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

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

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

oinstall:x:501:

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

#su - oracle

$sqlplus /  as sysdba;                           无口令登录失败

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

测试结果:

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

实例关闭:只能以as sysdba登录可无口令或错误口令可登录,数据库没启动,数据库验证失效,普通用户无法登录。

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

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

禁用操作系统验证:

vi $ORACLE_HOME/network/admin/sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES (NONE)

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

禁用OS验证后,本地登录将根据数据库口令文件参数的设置(默认生效)改用口令文件验证,默认口令文件为$ORACLE_HOME/dbs/orapw$ORACLE_SID默认其中已包含sys用户。

SYS @ PROD >show parameter remote_login_passwordfile;

口令文件验证规则为:对于以sysdba身份登录的用户,使用口令文件进行验证,验证口令文件中是否包含该用户且口令文件中口令是否正确;对于以非sysdba身份登录的用户,则仍使用数据库验证,验证数据库中是否包含该用户且数据库中口令是否正确。

·口令文件启用

SYS @ PROD >show parameter remote_login_passwordfile;   查看口令文件参数。

NAME                                   TYPE         VALUE

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

remote_login_passwordfile         string    EXCLUSIVE

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

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

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

·口令文件生成

$cd   $ORACLE_HOME/dbs

$orapwd file=orapwora10 password=123456 entries=20 force=y

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

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

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

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

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

·查看修改口令文件

SYS @ PROD >select * from v$pwfile_users; 查看口令文件中所有用户

USERNAME                          SYSDBSYSOP

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

SYS                             TRUE TRUE

SYS @ PROD >create user user01 identified by 123456;添加用户

SYS @ PROD > grant sysdba to user01;      赋sysdba权限后自动加入口令文件

SYS @ PROD >select * from v$pwfile_users;

USERNAME                       SYSDBSYSOP

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

SYS                              TRUE TRUE

USER01                          TRUE FALSE

SYS @ PROD >revoke sysdba from user01; 从口令文件中删除用户

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

SYS @ PROD >alter system set remote_login_passwordfile=none scope=spfile;

SYS @ PROD >shutdown immediate;

rm $ORACLE_HOME/dbs/orapwora10

由上步测试可知,在禁用口令文件验证后,网络连接时将只有一种方式可以连入数据库,即在数据库启动情况下,仅允许普通用户以正确口令连入数据库,提高了网络连接的安全性,

但同时大大降低了网络验证的可管理性,因其中关键性的“数据库关闭状态下以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))

)

)

vi  $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配置文件中添加或修改实例和数据库名段。

6.警告文件:alert file

记录数据库文件运行中主要事件的命令与结果

Alertlog是一种特殊的跟踪文件,每个数据库都有一个跟踪文件,同步记载数据库的消息和错误。

[oracle@station31dbs]$ls -l

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

-rw-r----- 1 oracle  oinstall  595392 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:审计信息文件存放目录

SYS @ PROD >select name,value from v$parameter where value like '%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时加载),

初始化文件记录了很多重要参数,对数据库的性能影响很大,如果不是很了解,不要轻易乱改写,否则会引起数据库性能下降。

Oracle11g温习-第一章 2、ORACLE 物理结构的更多相关文章

  1. Oracle11g温习-第一章:Oracle 体系架构

    2013年4月27日 星期六 10:20 1.oracle 网络架构及应用环境 1. ORACLE 实例——包括内存结构与后台进程 2. ORACLE 数据库——物理操作系统文件的集合 3. 了解内存 ...

  2. Oracle11g温习-第一章 3、ORACLE逻辑结构

    2013年4月27日 星期六 10:27 Oracle逻辑结构的相关数据字典: 记录各个表空间的详细信息. SYS @ prod > select tablespace_name,status ...

  3. Oracle11g温习-第一章 1、ORACLE实例

    2013年4月27日 星期六 10:23 1.ORACLE 实例 System Global Area(SGA) 和 Background Process(后台进程) 称为数据库的实例. 2.ORAC ...

  4. Oracle入门《Oracle介绍》第一章1-4 Oracle 用户管理

    1.Oracle 默认用户 只有用合法的用户帐号才能访问Oracle数据库 Oracle 有几个默认的数据库用户 数据库中所有数据字典表和视图都存储在 SYS 模式中.SYS用户主要用来维护系统信息和 ...

  5. Oracle入门《Oracle介绍》第一章1-2 Oracle 实例

    Oracle实例:是后台进程和内存结构的集合 一.内存结构 1.Oracle 实例启动时分配系统全局区 a.数据库信息存储于SGA,由多个数据库进程共享 1.共享池是对SQL.PL/SQL程序进行语法 ...

  6. Oracle11g温习-第九章:表空间和数据文件管理

    2013年4月27日 星期六 10:37 1.tablespace 功能:从逻辑上简化数据库的管理 2.tablespace 概述 一个database 对应多个tablespace ,一个table ...

  7. Oracle入门《Oracle介绍》第一章1-3 Oracle 逻辑组件

    一.数据库的逻辑结构是从逻辑的角度分析数据库的组成.Oracle 的逻辑组件包括: 1.表空间 表空间是数据库中最大的逻辑单位,一个 Oracle 数据库至少包含一个表空间,就是名为SYSTEM的系统 ...

  8. Asp.Net MVC4 + Oracle + EasyUI 学习 第一章

    Asp.Net MVC4 + Oracle + EasyUI  第一章 --操作数据和验证 本文链接:http://www.cnblogs.com/likeli/p/4234238.html 文章集合 ...

  9. 第一章 oracle数据库基础

    第一章   oracle数据库基础 1.oracle简介-->数据库管理系统    1.1:数据库    1.2:全局数据库名    1.3:数据库实例    1.4:表空间    1.5:数据 ...

随机推荐

  1. docker简单操作

    下载镜像docker pull httpd(镜像名) 查看镜像:docker images 做容器 docker run -ti -v(映射)/www:发布目录的路径 -p 80:80 --name ...

  2. mysql的数据类型和字符集

    MySQL的数据类型 MySQL数据库支持的数据类型主要有以下几种: 整型 浮点型 字符 BLOB型 枚举和集合类型 JSON类型(MySQL5.7新增加的支持) 整型 整数类型是数据库中最基本的数据 ...

  3. centos下nginx安装与配置

    nginx依赖以下模块: l  gzip模块需要 zlib 库 l  rewrite模块需要 pcre 库 l  ssl 功能需要openssl库 tar xzvf nginx-1.9.15.tar. ...

  4. HTML 和 JavaScript 编写简单的 404 界面

    编写简单的 404 界面,也可以用来做 500 报错界面,还会飘东西,特别好,蛮漂亮的! <!DOCTYPE html> <html> <head> <met ...

  5. 20145305 《网络对抗》Web安全基础实践

    实践过程及结果截图 Phishing with XSS 在文本框里面写一个钓鱼网站代码就可以了 </form> <script> function hack(){ XSSIma ...

  6. Postgresql数据库实用命令

    Postgresql 命令 pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start 启动数据库 cr ...

  7. 在ubuntu bionic下对基于qemu的arm64进行linux内核5.0.1版本的编译和运行

    一.环境介绍 OS:ubuntu bionic 64bit 二.准备工作 2.1 安装必要的开发工具 sudo apt-get install git flex bison build-essenti ...

  8. LightOJ - 1247 Matrix Game (Nim博弈)题解

    题意: 给一个矩阵,每一次一个玩家可以从任意一行中选任意数量的格子并从中拿石头(但最后总数要大于等于1),问你谁赢 思路: 一开始以为只能一行拿一个... 将每一行石子数相加就转化为经典的Nim博弈 ...

  9. poj 8469 特殊密码锁

    a:特殊密码锁 总时间限制: 1000ms 内存限制: 1024kB 描述 有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态. 然而让人头 ...

  10. [luogu 1070]道路游戏(NOIP2009T4)

    题目链接 题解: 题目描述好长啊.... 大概就是设一下$f[i]$表示第i秒的最大价值 首先枚举时间,然后因为机器人这一秒无论在哪里都是有可能的,所以要枚举一下每个点,又因为最多走p秒所以再枚举一下 ...