ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle10g的一些基本知识

Oracle10g的一些基本知识

原创 Linux操作系统 作者:db_wjw 时间:2012-05-11 09:59:10 0 删除 编辑

alert日志
alert_.log存储在background_dump_dest初始化参数指定的目录中。
alert日志是一个按时间先后存储信息和错误的日志,包括以下信息:
1、在启动时用到的所有非默认的初始化参数。
2、所有的内部错误(ORA-600),块讹误错误(ORA-1578),和死锁错误(ORA-60).
3、管理的操作,比如create,alter,drop database和tablespace的SQL语句,Enterprise Manager或SQL*Plus的startup,shutdown,archive log和recover语句。
4、一些与共享服务器和调度器进程相关的信息和错误。
5、在自动刷新物化视图过程中遇到的错误。

alert_.log有时会变得太大,难以掌控,可以定期备份该文件并删除当前的日志文件,oracle会自动创建新的日志文件。

database_block_structure
oracle数据库块包括以下结构:
1、块(标)头:块表头包含了段的类型(比如说是表还是索引),数据块的地址,表的目录,行的目录,块的表头从块的顶部往下增长。
2、行数据:这里存储行的真实数据,在块的最底部,行数据的空间从块的底部往上增长。
3、空闲空间:块的中间是空闲数据,这使得块头和存储数据区都可以按需要增长,当插入新行时或者更新已经存在的行的值为更大的值时,行数据会占用空闲空间,最初,空闲空间是连续的,但删除或者更新可能导致块中的空闲空间出现碎片,当需要时oracle服务器会合并数据块中的空闲空间。


drop_database
命令行删除数据库的条件:

1、The database must be mounted and closed.
2、The database must be mounted exclusively—not in shared mode.
3、The database must be mounted as RESTRICTED.

An example of this statement is:
DROP DATABASE;

The DROP DATABASE statement has no effect on archived log files nor does it have any effect
on copies or backups of the database. It is best to use Recovery Manager (RMAN) to delete such
files. If the database is on raw disks, then the actual raw disk special files are not deleted.


dynamic_performance_views
利用动态性能试图能访问数据库改变状态和健康状况的信息

oracle维护一组关于数据库实例的操作和性能的数据,叫做动态性能试图,这些试图基于数据库服务器中内存结构中建立的虚拟表,就是说,这些表不是依存于数据库中约定俗成的表。这也是为什么有些视图可以在数据库挂载或打开之前就可以显示数据的原因。


动态性能试图包含以下信息:
1、会话
2、文件状态
3、jobs和tasks的进展
4、锁
5、备份状态
6、内存的使用和分配
7、系统和会话的参数
8、SQL的执行
9、统计信息和阀值
DICT和DICT_COLUMNS视图也包含了这些动态性能试图的名字。

动态性能试图:
1、这些试图被SYS用户所拥有。
2、不同阶段使用不同的试图:
   --实例启动后
   --挂载数据库后
   --打开数据库后
3、可以查询v$fixed_table来查看所有的视图名称。
4、这些视图也经常被称为“v-dollar views”。
5、因为数据时动态的,所以不能确保这些视图的读一致性。

一些动态性能试图包含的数据不一定适合所有的实例和数据库状态,例如:
可以在数据库挂载之前利用v$bgprocess来查看正在运行的后台进程的列表,但v$datafile视图还不能查询。


动态性能试图举例:
1、找出cpu耗费时间超过200000微秒的语句和该语句的执行次数:
    SELECT sql_text, executions FROM v$sql WHERE cpu_time > 200000;
2、那些会话在前一天从EDRSR9P1机器上登入数据库:
    SELECT * FROM v$session WHERE machine = 'EDRSR9P1' and logon_time > SYSDATE - 1;
3、找出当前持有锁阻止其它会话的会话ID和它们已经持有锁的时间:
    SELECT sid, ctime FROM v$lock WHERE block > 0;



local_managed_tablespace_storage
在本地管理的表空间中,区段的分配通过两种方式:
1、自动(automatic):
   也叫自动分配,指定表空间中区段的大小由系统管理,你不能指定区段的大小,你也不能为一个临时的表空间使用自动
2、统一(uniform):
   指定表空间的管理使用统一的区段大小,默认的大小为1兆,临时表空间的所有区段都统一且为默认大小,不能对撤销表空间指定统一



段空间的管理可以通过两种方式:
1、自动(automatic):
   oracle数据库使用位图来管理段内的空闲空间,位图反映了段空间内每个数据块的状态,当数据块中的空间变的可用时,位图将会反映最新的状态,使用位图,oracle数据库可以自动管理空闲空间,这种空间管理的方式成为ASSM(Automatic Segment Space Management),oracle推荐这种管理方式
2、手动(manual):
   可以使用空闲列表来管理段内的空闲空间,空闲列表是一个维护的具有空闲空间的数据块列表,这种段内的管理空间的方式被称为手动段空间管理,因为需要为表空间内创建的模式对象设置和调整PCTUSED,FREELISTS,FREELIST GROUPS等存储参数,这种方式只是为了保持向后兼容



本地管理的表空间的优点:
1、本地管理避免了递归的空间管理操作,而在字典管理的表空间中,一次区段内的耗费和释放空间会导致另一个撤销段内或者数据字典表中耗费和释放空间的操作
2、因为本地管理不把空闲空间记录到数据字典表中,减少了这些数据字典表的竞争
3、区段的本地管理自动跟踪临近的空闲空间,消除了合并空闲空间的需要
4、本地管理的区段的大小有系统自动决定
5、区段位图的更改不会产生撤销信息,因为不会更新数据字典中的表(特殊情况除外,比如表空间配额信息)


当需要把字典管理的表空间转换为本地管理的表空间时,可以使用DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL存储过程来完成这项工作。

表空间对象的改变都会记入重做日志,当日志记录关闭时,一个对象在创建的时候没有支持logging enabled,假如希望日后能够恢复该对象,必须手动备份这个对象。





OMF
OMF(oracle managed files)
指定了文件的操作是通过数据库对象,而不是文件的名称。


初始化参数及说明:
DB_CREATE_FILE_DEST:为数据文件和临时文件指定了默认的文件系统存储位置。
DB_CREATE_ONLINE_LOG_DEST_n:指定了联机重做日志文件和控制文件的位置。
DB_RECOVERY_FILE_DEST:定义了RMAN备份文件的位置

eg:
alter system set DB_CREATE_FILE_DEST='/u01/oradata';
create tablespace tbs_1;

OMF使得你免除直接管理组成oracle数据库的操作系统文件,你可以通过数据库对象而不是文件名称来进行操作,数据库内部使用标准文件系统接口为以下数据库结构根据需要来创建和删除文件:
1、表空间
2、重做日志文件
3、控制文件
4、归档日志
5、块改变跟踪文件
6、闪回日志
7、RMAN备份集

一个数据库既可以拥有oracle管理的文件,也可以拥有非oracle拥有的文件,被初始化参数所指定的文件系统目录必须存在,数据库不会创建它,而且该目录必须拥有权限使得数据库可以在其中创建文件。




parameters
当设置PGA_AGGREGATE_MEMORY初始化参数时:
从系统中可供给oracle instance的总内存中减去SGA的大小,剩下的内存就可以指定给PGA_AGGREGATE_MEMORY
格式:整数后面跟K,M,G,可指定的最小值为10M,最大值为400G,默认为没有指定,意即不支持自动调整工作区。




shutdown_oracle
关闭数据库有四种模式:
abort,immediate,transactional,normal


ABORT:在关闭数据库时执行最少的工作量,这种关机方式会导致启动时需要恢复,只有在其他关闭数据库方式不起作用时,或者当启动数据库实例时遇到问题时,或者在特殊情况时需要紧急关机时(例如在几秒钟内就会掉电),此种方式的关闭速度最快。
IMMEDIATE:是最常用的关闭数据库方式,没有提交的事务将会回滚。
TRANSACTIONAL:这种关闭数据库的方式会等待所有的事务都提交。
NORMAL:这种关闭数据库的方式会等待所有的会话都断开,此种方式的关闭速度最慢。

用normal,transactional,immediate三种方式关闭数据库后,数据库是干净的,且再次启动数据库时不需要实例恢复。

shutdown normal
normal是默认的数据库关闭方式,伴随以下情况:
1、不能建立新的连接。
2、oracle服务器等待所有的用户断开连接时才执行关闭。
3、数据库和重做缓冲都写到磁盘。
4、终结后台进程并释放内存中的SGA。
5、oracle服务器会在关闭实例前关闭并卸载数据库。
6、下次数据库启动时不需要实例恢复。


shutdown transactional
transactional关闭防止客户端丢失数据,包括当前会话的结果。伴随以下情况:
1、所有的客户端都不能建立新的事务到该实例。
2、当客户端结束了事务后就会被断开。
3、当所有的事务都结束后,关闭动作会立即执行。
4、下一次启动不需要执行实例恢复。

shutdown immediate
伴随以下情况:
1、当前正在被oracle数据库执行的SQL语句将不会完成。
2、oracle不会等待当前正在连接的用户主动断开。
3、oracle服务器回滚活动的事务并断开所有的用户连接。
4、oracle服务器在关闭实例前先关闭并卸载数据库。
5、下一次启动不需要执行实例恢复。


shutdown abort
当normal和immediate关闭方式不起作用时,可以abort当前的数据库实例,abort数据库时伴随以下情况:
1、立即结束当前正在被oracle服务器执行的SQL语句。
2、oracle不会等待当前正在连接的用户主动断开。
3、数据库和重做缓冲不会写到磁盘。
4、未提交的事务也不会被回滚。
5、实例关闭时不会关闭文件。
6、数据库不会被关闭和卸载。
7、下一次数据库启动时需要执行实例恢复,该实例恢复时自动的,不需要人工干预。


在shutdown abort,instance failure,startup force三种情况时:
1、被修改的缓冲区数据将不会写入数据文件。
2、没有提交的更改将会回滚。
3、联机重做日志文件被用来进行更改。
4、撤销段被用来回滚未提交的更改。
5、释放资源。



sqlplus_start_shutdown_database
当用sqlplus执行启动,关闭和改变数据库的状态时:必须以sysdba或者sysoper登入。
命令如下:
SHUTDOWN [NORMAL | TRANSACTIONAL | IMMEDIATE | ABORT ]
STARTUP [FORCE] [RESTRICT] [MOUNT | OPEN | NOMOUNT]




start_oracle
oracle启动过程包括shutdown到nomount到mount到open

shutdown到nomount(启动实例):
1、在oracle_home/database下寻找参数文件,该参数文件的顺序为spfile.ora,spfile.ora,init.ora
   当启动时在startup命令后跟pfile参数时会覆盖默认的行为。
2、分配SGA。
3、启动后台进程。
4、打开alert.log文件和跟踪文件。

一般来说,只有在创建数据库,重新创建控制文件,执行特定的备份和恢复时才会使用nomount模式。

nomount到mount(为实例打开控制文件):
1、关联数据库到先前启动的实例
2、定位初始化参数文件中指定的控制文件并打开控制文件。
3、读取控制文件来获取数据文件和联机重做日志文件的名称和状态(此处状态可能翻译有误),但是,在这时还不检查数据文件和联机重做日志文件是否真正存在。
在执行以下任务时经常需要挂在数据库,但不打开数据库:
1、重命名数据文件(脱机(offline)表空间的数据文件可以在数据库打开的时候重命名)。
2、当联机重做日志文件有归档模式转为非归档模式,或者由非归档模式转为归档模式时需要mount状态。
3、执行完整数据库的恢复时。

当发出打开数据库的命令时,数据库依然有可能留在mount状态,这是可能是因为数据库需要某种方式的恢复。


mount到open(控制文件描述的所有文件都被打开):
1、打开联机数据文件。
2、打开联机重做日志文件。

在数据库打开阶段,oracle服务器确保所有的数据文件和联机重做日志文件都可以找到,并且可以打开,当找不到数据文件或联机重做日志文件时,数据库服务器会返回错误。在这一阶段还要检查数据库的完整性,在需要时,system monitor(SMON)后台进程会执行实例恢复。

当数据库启动在restricted mode时,数据库只对具有管理权限的用户可用。





table_storage
当一个表被创建的同时,一个段同时被创建用来存储表中的数据。
表中的一行最终以行块(row piece)的形式存储在数据库块中。之所以叫行块是因为在一些情况下,一整行有可能不是存储在同一个地方,当插入一条太大的记录时,单独的数据块装不下时,或者是更新一条已经存在的记录时超过了可用的空间大小时,都会发生这种情况。





tablespace_datafile
oracle数据库把数据逻辑存储在表空间中,物理地存储在数据文件中。
tablespaces:
1、只能属于一个数据库
2、包含一个或者多个数据文件
3、被进一步划分为逻辑单元
data files:
1、只能属于一个表空间和一个数据库
2、是一个供模式对象存储的仓库



数据库,表空间和数据文件的区别:
1、一个数据库由一个或者多个称为表空间的逻辑存储单元,表空间共同存储数据库的所有数据。
2、数据库中的每个表空间有一个或者多个数据文件组成,数据文件就是运行oracle数据库的操作系统的物理结构,即文件。
3、数据库中的数据共同存储在组成数据库中表空间的数据文件中,例如:最简单的oracle数据库至少包含system表空间和sysaux表空间,这两个表空间都包含一个数据文件,每一个数据库可以最多拥有65534个数据文件。




tablespace_management
oracle通过区段来分配空间
创建数据库时可以使用两种方法来跟踪使用过的和未被使用的空间,分别为本地管理的表空间和字典管理的表空间:

本地管理的表空间:
1、表空间通过空闲区段来管理
2、使用位图来记录空闲区段
3、每一个位对应于一个块或者块组,oracle改变位图的值来显示块的最新状态
4、位的值代表了该块是空闲的还是使用过的
5、推荐使用本地管理的表空间

字典管理的表空间:
1、空闲区段使用数据字典来管理
2、当区段被分配或者撤销分配时,更新对应的数据字典表
3、oracle保留该特性只是为了向后兼容




tablespaces_of_preconfigured_database
oracle10g预先定义的表空间有SYSTEM,SYSAUX,TMMP,UNDOTBS1,USERS,EXAMPLE

SYSTEM:
oracle数据库使用SYSTEM表空间来管理数据库,SYSTEM表空间包含了数据字典以及数据库的一些管理信息,这些都包含在SYS模式中,只能由SYS用户或者其他具有合适权限的管理用户

SYSAUX:
这是个SYSTEM表空间的辅助表空间,以前版本中存储在SYSTEM表空间或者它们专有的表空间的组件和产品使用SYSAUX表空间,10g及以后版本中必须包含SYSAUX表空间

TEMP
当一个SQL语句的执行需要创建临时段时,需要使用TEMP表空间(例如:一个大的排序或者一个把索引的创建),最好的办法是为数据库指定一个默认的临时表空间,默认情况下,TEMP表空间被指定为默认的临时表空间,这就是说,在创建用户时如果没有指定临时表空间,oracle数据库就会把TEMP表空间作为用户的临时表空间

UNDOTBS1
该表空间被oracle数据库用来存储撤销信息,假如数据库使用自动撤销管理(automatic undo management),在任何给定的时间都必须有一个活动的撤销表空间,该表空间在数据库创建时创建

USERS
这个表空间用来存储数据库中永久的用户对象和数据,在预先配置的数据库中,USERS表空间是非系统用户创建的所有对象的默认表空间,对于SYS和SYSTEM用户来说,默认的永久表空间依然为SYSTEM表空间

EXAMPLE
该表空间包含示例模式,可以在创建数据库时创建,oracle文档和课件中的示例基于该表空间

为了简化管理,通常创建单独的表空间存储索引。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26194851/viewspace-723320/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-08-21

  • 博文量
    96
  • 访问量
    440179