初步理解oracle10gR2

来源:互联网 发布:淘宝商品二维码生成 编辑:程序博客网 时间:2024/06/06 06:55

初步理解oracle 10gR2

hopen 2012-12

 

1.      基本架构:

1.1. oracle数据库管理员工做内容

每个oracle数据库应该至少有一个数据库管理员(dba),对于一个小的数据库,一个dba就够了,但是对于一个大的数据库可能需要多个dba分担不同的管理职责。那么一个数据库管理员的主要工作是什么呢:

1)     安装和升级oracle 数据库建库;

2)     建表空间,表,视图,索引;

3)     制定并实施备份和恢复计划;

4)     权限管理,调优,故障排除;

5)     对于高级dba,要求能参与项目开发,会编写sql 语句、存储过程、触发器、规则、约束、包

1.2. 数据库的主要用户及其拥有的权限

权限\用户

sysdba

sysoper

区别

startup

startup

shutdown

shutdown

alter database open/mount/backup

alter database open/mount/backup

改变字符集

none

create database

none

drop database

none

create spfile

创建参数文件

alter database archivelog

归档日志

alter database recovery

只能完全恢复,不能执行不完全恢复

restricted session

拥有会话限制权限

可以让用户作为sys用户连接

可以进行一些基本操作,但不能查看用户数据

登入之后用户是sys

登入之后用户是public

注:

1)     这两个用户最大的区别是sysdba可以创建和删除数据库,sysoper不能;

2)     还有一个用户dba,该用户只有在启动了数据库后才能执行各种管理,故没有startup和shutdown权限

3)     sys/system:以上三种用户都从属于sys/system中的角色,但是sys/system这两种类型的用户却有本质区别:所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle 的运行是至关重要的,由数据库自己维护,任何用户都不能手动更改;system,用于存放次一级的内部数据,如oracle的一些特性或工具的管理信息。

4)     区别是以sys/system用户登入:sys用户必须以as sysdba或as sysoper形式登录。不能以normal方式登录数据库;system如果正常登录,它其实就是一个普通的dba用户,但是如果以as sysdba登录,其结果实际上它是作为sys用户登录的。

 

 

1.3. oracle10g目录结构:

oracle_home 目录:定义oracle的安装路径,我的默认为:

/app/oracle/product/10.2/它包含oracle软件运行有关的子目录和网络文件以及选定的组件等,该文件夹下的主要子目录有:

1)     \bin——主要包含用于数据库管理的各种命令等。

2)     \css——与oracle cluster synchronization服务有关的文件。

3)     \dbs——存放数据库服务器端的参数文件spfile。

4)     \demo——存放数据库实例模式的脚本等。

5)     \install——用于存储oracle安装后的端口号,isql*plus以及enterprise manager database control启动并登录的方式等。

6)     \network\admin——有关监听器listener.ora和sqlnet.ora以及tnsnames.ora

7)     \sysman\config——用于与oracle enterprise management有关的端口管理

admin 目录结构:

   数据库管理文件均存储在\oracle\admin\ sid\ 目录下。各个子目录的主要含义如下:

1)     \bdump——后台进程跟踪文件。

2)     \cdump——信息转储文件(core dump)。

3)     \create——数据库创建文件。

4)     \exp——数据库导出文件。

5)     \pfile——初始化参数文件。

6)     \udump——用户sql追踪文件。

oradata目录:

/oracle/oradata/sid/目录下,该目录主要存储数据库的控制文件、数据文件、重做日志文件。其中*.dbf文件对应数据库中每个表空间;.ctl文件为控制文件;.log文件对应重做日志文件组及其成员。

flash_recovery_area目录:

flash_recovery_area目录存储并管理与备份和恢复有关的文件。它包含系统中每个数据库的子目录。该目录可用于存储与恢复有关的文件,如控制文件、联机重做日志副本、归档日志、闪回日志以及oracle数据库恢复管理器(rman)备份等。

1.4. oracle的启动和关闭过程

启动oracle这里介绍两种方法:

sqlplus:

1)         首先我们用sql*plus来连接到oracle

2)         sqlplus /nolog 是以不连接数据库的方式启动sql*plus

3)         connect /as sysdba 是以dba身份连接到oracle

启动:分为 启动实例、实例+挂载数据库、实例+挂载数据库+打开数据库,分别为:

1)         startup nomount (nomount模式)启动实例不加载数据库。

2)         startup mount (mount模式)启动实例加载数据库但不打开数据库

3)         startup (open 模式)启动实例加载并打开数据库,就是我们上面所用的命令

注:不管在那中模式可以使用命令打开或挂载数据库;

1)         alter database mount

2)         alter database open

 

nomount模式中,oracle仅为实例创建各种内存结构和服务进程,不会打开任何数据库文件,因此:

1)     创建新数据库;

2)     重建控制文件;

必须在这个模式下进行。

mount模式中,oracle只装载数据库但不打开数据库,因此:

1) 重命名数据文件

2) 添加、删除和重命名重做日子文件

3) 执行数据库完全恢复操作

4) 改变数据库的归档模式

这些操作都必须在这个模式下进行。

open模式中,可以将数据库设置为非受限状态和受限状态在受限状态下,只有dba才能访问数据库,因此:

1) 执行数据导入导出

2) 使用sql*loader提取外部数据

3) 需要暂时拒绝普通用户访问数据库:alter system enable restricted session(alter system disable restricted session)

4) 进行数据库移植或者升级操作

这4种操作都必须在这个状态下进行

关闭数据库:

1)正常关闭 shutdown

2) 立即关闭 shutdown immediate

3) 关闭事务 shutdown transactional

4) 强行关闭 shutdown abort (被迫时使用)

oem(oracle enterprise management)控制台

开启oem console

emctl start dbconsole

[oracle@ora10g ~]$ emctl start dbconsole

tz set to prc

oracle enterprise manager 10g database control release 10.2.0.1.0 

copyright (c) 1996, 2005 oracle corporation.  all rights reserved.

http://ora10g.localdomain:1158/em/console/aboutapplication

 - an instance of oracle enterprise manager 10g database control is already running.

    在浏览器上登入http://ora10g.localdomain:1158/em/console/aboutapplication

 

1.5. oracle用户管理

创建用户:create user hopen identified by admin  用户名:hopen密码:admin

grant是授予权限:grant create session to hopen  授予hopen连接数据的限

系统权限:

修改用户密码:alter user system identified by admin 修改用户system密码:admin

1.6. 物理结构,数据文件、日志文件、参数文件、控制文件

数据文件:数据文件是存储数据库的数据文件,如表、索引数据等,数据文件是oracle三大文件中占磁盘空间最大的一类文件。

读取过程:系统首先从数据文

件中读取数据,并存储在内存的数据缓存区中,当用户修改数据表的某些数据时,如果请求的数据不在内存缓冲区,则从相应的数据文件中读取并存储在内存中,以便下一次读取,从而减少磁盘的i/o总数,提高性能。数据先存储在内存中然后由后台进程dbwr决定如何写入到相应的数据文件中。

数据文件信息:

dba_data_files:描述数据文件的名称、文件标示、大小、对应的表空间信息、数据文件自动扩展性等;

sql> desc dba_data_files;

 name                                      null?    type

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

 file_name数据文件存放路径                        varchar2(513)

 file_id                                            number

 tablespace_name表空间名称                     varchar2(30)

 bytes数据文件大小                                   number

 blocks占的数据据块数                                number

 status                                             varchar2(9)

 relative_fno                                       number

 autoextensible 数据文件自动扩展性                varchar2(3)

 maxbytes该数据文件最大可扩展的字节数                number

 maxblocks该数据文件最大可扩展的块数               number

 increment_by                                       number

 user_bytes                                         number

 user_blocks                                        number

 online_status                                      varchar2(7)

 

v$datafile:描述数据文件的同步信息;

sql> desc v$datafile

 name                                      null?    type

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

 file#                                              number

 creation_change#                                   number

 creation_time                                      date

 ts#                                                number

 rfile#                                             number

 status                                             varchar2(7)

 enabled                                            varchar2(10)

 checkpoint_change#数据文件同步号                  number

 checkpoint_time                                    date

 unrecoverable_change#                              number

 unrecoverable_time                                 date

 last_change#                                       number

 last_time                                          date

 offline_change#                                    number

 online_change#                                     number

 online_time                                        date

 bytes                                              number

 blocks                                             number

 create_bytes                                       number

 block_size                                         number

 name                                               varchar2(513)

 plugged_in                                         number

 block1_offset                                      number

 aux_name                                           varchar2(513)

 first_nonlogged_scn                                number

 first_nonlogged_time                               date

 

数据文件特点:

1)   一个数据文件只能与一个数据库相联系,只适合用于一个表空间,数据文件一旦脱离数据库,则成为无用的垃圾文件。所以数据文件不得在不同的数据库之间移动。

2)   数据文件的大小可以动态改变

3)   存储数据之前数据文件必须有足够的空间,查询数据字典:dba_free_space了解

 sql> desc dba_free_space

 name                                      null?    type

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

 tablespace_name                               varchar2(30)

 file_id                                            number

 block_id                                           number

 bytes                                              number

 blocks                                             number

 relative_fno                                       number

4)   修改数据文件的大小,实质上是修改数据库表空间的磁盘空间

格式:alter database datafile ‘数据文件路径’ resize 800m

5)   数据文件的自动扩展性在oracle 8i以上的版本才适用。

重做日志文件:用于记录对数据库的所有修改信息,包括用户对数据库的修改、以及数据库管理员对数据库结构的修改,所以数据库日志信息要比数据信息多。重做日志是数据库中最复杂的文件,同时也是保证数据库安全与数据库备份恢复直接关系的文件。

归档日志文件:使用归档日志可以完成数据库的恢复,系统发生日志切换后,前一组产生的日志信息会被归档进程arch写入到磁盘或磁带的归档文件中,成为归档日志。归档日志的数据字典v$archieved_log

redo log group:在oracle中日志文件是成组使用的,叫做日志文件组,每个oracle数据库至少要有两个组(oracle 10g数据库默认配置是有三个组,每个组一个成员),每个组可以有多个成员(即每个组有一个或多个日志文件),同一组中的成员是互为镜像关系。

日志工作原理:日志先产生在日志缓冲区,然后由日志写入进程lgwr写入日志文件组中,在日志切换时由日志归档进程arch写入到磁盘中成为归档日志。

志文件的大小(即日志组成员物理文件大小),决定了归档日志的大小,和日志切换频率及数据库运行速度;当一个日志文件组中的所有成员写满数据时,系统自动转换到下一个日志文件组;日志系列号,用来标识产生的归档日志,编号从1开始最大为65534用参数maxloghistory限制。

日志数据字典:v$log

 

sql> desc v$log

 name                                      null?    type

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

 group#日志文件组号                            number

 thread#日志文件线程号单机1、双机容错2              number

 sequence#日志系列号,日志切换后加1               number

 bytes日志文件大小,默认100m                            number

 members 日志组成员个数,默认1                      number

 archived是否采用归档                            varchar2(3)

 status状态                             varchar2(16)

 first_change#检验点号                              number

 first_time  系统改变的时间                           date

 

强制进行日志切换:alter system switch logfile

检验点:用checkpoint_change标示,同时存储在日志文件、数据文件、控制文件中,在日志切换或其他原因引起系统改变时,检验点的号也同时改变,是这三个文件同步的依据。检验点用来保证修改过的数据库缓冲区都被写入数据库文件(日志、控制、数据文件)

注:引起系统同步的原因主要有:日志切换、时间、日志量等(待补充)

增加删除日志文件组:(待)

增加删除日志文件组成员:(待)

 

参数文件:在每一个数据库中都有一个文件parameter file 简称pfile,该文件决定了数据库的总体结构,用于设置数据库的254个系统参数,包括内存中系统全局区的大小、数据库大量的默认值、数据库的限制、数据库的各种物理属性、指定控制文件路径名称、调整服务器内存、进行数据库性能优化与调整等。参数文件是一个文本文件允许重新编辑和修改。

只有在创建数据库或启动数据库时,才会从参数文件中读入参数,如果参数文件被修改,必须关闭和重新启动数据库,新参数才能生效。

直接启动实例后直接show parameter

也可以直接查看参数文件:

[oracle@ora10g dbs]$ cat spfilerman.ora


w9�/rman.__db_cache_size=192937984

rman.__java_pool_size=4194304

rman.__large_pool_size=4194304

rman.__shared_pool_size=79691776

rman.__streams_pool_size=0

*.audit_file_dest='/oracle/admin/rman/adump'

*.background_dump_dest='/oracle/admin/rman/bdump'

*.compatible='10.2.0.1.0'

*.control_files='/oracle/oradata/rman/controlfile/o1_mf_8cjym6t0_.ctl'

*.core_dump_dest='/oracle/admin/rman/cdump'

*.db_block_size=8192

*.db_create_file_dest='/oracle/oradata'

*.db_domain=''

*.db_file_multiblock_read_count=16

*.db_name='rman'

*.dispatchers='(protocol=tcp) (service=rmanxdb)'

*.job_queue_processes=10

*.log_archive_dest_1='location=/oracle/archive'

*.log_archive_format='%t_%s_%r.dbf'

*.nls_language='simplified chinese'

*.nls_territory='china'

*.open_cursors=300

*.pga_aggregate_target=94371840

*.processes=150

*.remote_login_passwordfile='exclusive'

*.sga_target=285212672

*.undo_management='auto'

*.undo_tablespace='undotbs1'

*.user_dump_dest='/oracle/admin/rman/udump'

 

控制文件:是一个二进制文件用来描述数据物理结构,一个数据库只需要一个控制文件。数据库的物理结构如:数据库名db_name\dbid、数据库创建时间、数据文件和日志文件标识(全部数据文件的路径、全部日志文件路径)、数据库恢复所需要的同步信息,等都以二进制方式写入数据库控制文件中。

控制文件数据字典:v$controlfile

控制文件镜像:实际数据库中,控制文件必须进行镜像。可以在创建之前进行镜像,即将存储控制文件的物理路径和文件名写入到参数文件control_files中,这样创建数据库后控制文件镜像也就完成了,如果数据库已经创建好并且没有镜像的,可以用手工对控制文件进行镜像。

手工进行控制文件镜像:先关闭oracle实例(在实例运行时,数据库的三类文件是不能进行复制的);复制控制文件,在数据库关闭后,用操作系统的拷贝命令将控制文件从一个磁盘拷贝到另一个磁盘;修改参数文件中control_files的路径信息;从启数据库。

 

1.7. 逻辑结构

oracle对数据库逻辑结构的描述是通过数据字典存储完成的,如果要了解数据库的逻辑结构必须查询数据字典。

数据库的逻辑结构包括表空间(tablespace)、段(segment)、区(extend)、数据块(data block)

在新增应用时,数据库管理员只需要创建新的表空间,不必创建一个新的数据库。一个数据库中最多可以创建65536个不同类型的表空间。

表空间:数据库可以划分为一个或多个逻辑单位,该单位称为表空间,每一个表空间由一个或多个数据文件组成,一个数据文件只能与一个表空间相联系,这是逻辑与物理的统一。

查询:

表空间对应的数据文件的相关信息dba_data_file

表空间的空闲空间大小、碎片信息等从数据字典dba_free_space

修改数据文件大小,从而增加相对于表空间的大小

表空间的特点:控制数据库数据的磁盘分配;限制用户使用的磁盘空间大小(在创建用户时quota参数指定);有离线offline、在线online、只读read only、读写read write等属性,通过查询表空间数据字典:v$dba_tablespace查看;完成部分数据库备份与恢复,数据库备份时,可以只备份一个独立的表空间,表空间备份可以是在线热备份,也可以是离线冷备份;通过多个磁盘存储数据,以优化系统性能。

段:数据库中的段可以分为四类:数据段、索引段、回退段、临时段;

数据段:用于存储数据的段,每一个表都有一个数据段,表的数据存储在数据段中,用户创建表时则在用户默认的表空间中创建一个数据段,而用户默认的表空间可以用用户数据字典dba_users查询到。

sql> select username,default_tablespace from dba_users ;

 

username                       default_tablespace

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

mgmt_view                      system

sys                            system

system                         system

dbsnmp                         sysaux

sysman                         sysaux

hopen                          users

outln                          system

mdsys                          sysaux

ordsys                         sysaux

ctxsys                         sysaux

anonymous                      sysaux

 

username                       default_tablespace

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

exfsys                         sysaux

dmsys                          sysaux

wmsys                          sysaux

xdb                            sysaux

ordplugins                     sysaux

si_informtn_schema             sysaux

olapsys                        sysaux

mddata                         users

dip                            users

scott                          users

tsmsys                         users

 

22 rows selected.

 

 

在一个表空间中创建多个表,该表空间就有多少个数据段,且数据段的数量是没有限制的,但是表空间的数量是有限制的,增加表中的数据会导致数据段变大,所以数据段随着用户的数据增大而逐渐变大,段的增大是通过增加区的个数而实现的,没增加一个区,每个区的大小是数据块的整数倍。

查询数据段存储在哪个表空间上,该段的数据大小信息等可以查询

数据段数据字典:user_extends

segment_name、tablespace_name、bytes、blocks

索引段:用于存储索引数据,索引信息查询数据字典:user_indexes /all_indexes ;

回退段:oracle数据库中最复杂、最难管理的段,用来存储用户数据修改前的值,因而在某些特定条件下可以回退数据。这些信息用来数据库恢复时回退未提交的事务。一个事务只能用一个回退段来存放回退信息,而一个回退段可以存放多个事务的回退信息。在oracle10g以后的版本取消了回退段的概念,而是专门用一个undo表空间来自动管理所需的undo空间,不是需要管理员来计算、调整、回退段的数量及大小。

参数文件中 undo_management 参数指定了数据库是使用回退段还是使用undo表空间来管理。show parameter undo_management

sql> show parameter undo_management

 

name                                 type        value

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

undo_management                      string      auto

sql>

 

 

临时段:用户在使用oreder by 语句进行排序、汇总时,在用户的临时表空间中会自动创建一个临时段,用户排序结束时会自动消除。oracle10g中系统默认的temp表空间用来供用户作临时表空间使用。

数据字典:dba_users 描述了用户所用的临时表空间名

sql> select username,temporary_tablespace from dba_users ;

 

username                       temporary_tablespace

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

mgmt_view                      temp

sys                            temp

system                         temp

dbsnmp                         temp

sysman                         temp

hopen                          temp

outln                          temp

mdsys                          temp

ordsys                         temp

ctxsys                         temp

anonymous                      temp

 

username                       temporary_tablespace

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

exfsys                         temp

dmsys                          temp

wmsys                          temp

xdb                            temp

ordplugins                     temp

si_informtn_schema             temp

olapsys                        temp

mddata                         temp

dip                            temp

scott                          temp

tsmsys                         temp

 

22 rows selected.

 

区:区是磁盘分配的最小单位。区存储在段中,是数据库存储空间的逻辑单位,由连续的数据块组成。段的曾大是通过增加区的个数实现的。

数据块:数据库是数据文件磁盘存储的空间单位,也是数据库i/o的最小单位,数据块大小由参数db_block_size确定。数据库的大小一般在创建数据库之前确定,数据库创建和安装后不能修改。

 

 

 

 

 

原创粉丝点击