Oracle数据库体系结构、多实例管理、表空间、数据文件

Oracle 实例和 Oracle 数据库 (Oracle 体系结构 )

==========================================

对于初接触 Oracle 数据库的人来讲,很容易混淆的两个概念即是 Oracle 实例和 Oracle 数据库。这两

概念不同于 SQL sever 下的实例与数据库,当然也有些相似之处。只是在 SQL server 我们根本不需要花费太

多的精力去搞清 SQL 实例和数据库,因为它简单易于理解。下面简要说明一下 SQL 实例、数据库,更多的是讲

述 Oracle 下的实例及数据库。

一、 SQL server 中的实例与数据库

​ 1.SQL 中的实例指的是一个 SQL server 服务器上仅有一个缺省实例。缺省实例名即为机器名 ServerName

​ ( 或 IP) ,如果在同一台机器上再安装 SQL server ,我们可以对实例命名如 ServerName/InstanceName 。

​ 即一台 SQL server 服务器上可以存在多个不同的实例。一个实例下可以存在多个不同的数据库。

​ 对于不同实例下的数据库的访问,使用 ServerName/InstanceName : PortNo 即可实现访问,缺省实例

​ 为 ServerName : PortNo 。

​ 2. 对不同的实例配置 IP 地址,相关的访问协议,端口等等。

​ 3. 实例的可访问性需要启动该实例对应的相关服务。此处需要注意的是实例名和实例的服务名并不是相

​ 同的。缺省的实例的服务名为 MSSQLSERVER ,而命名实例的服务名为 MSSQL$INSTANCE_NAME 。

​ 4. 实例的相关功能性的设置可以通过外围应用配置来实现。

二、 Oracle 实例

​ 一个 Oracle Server 由一个 Oracle 实例和一个 Oracle 数据库组成。

​ 即: Oracle Server = Oracle Instance + Oracle Database

​ Oracle 实例

​ 包括了内存结构 (SGA) 和一系列后台进程 (Background Process), 两者合起来称为一个 Oracle 实例

​ 即: Oracle Instance = SGA + Background Process

​ Oracle 内存结构

​ 包含系统全局区 (SGA) 和程序全局区 (PGA)

​ 即 Oracle Memory Structures = SGA + PGA

​ SGA 由服务器和后台进程共享

​ PGA 包含单个服务器进程或单个后台进程的数据和控制信息 , 与几个进程共享的 SGA 正相反, PGA 是

​ 只被一个进程使用的区域, PGA 在创建进程时分配在终止进程时回收。即由服务器进程产生。

1.SGA

​ 系统全局区 SGA , SGA = 数据缓冲区 + 重做日志缓冲区 + 共享池 + 大池 + Java 池 + 流池

​ 系统全局区是动态的,由参数 SGA _ MAX _ SIZE 决定。

​ 查看当前系统的 SGA 大小: show parameter sga_max_size;

​ 要修改: alter system set sga_max_size=1200m scope=spfile;

​ 因为实例内存的分配是在数据库启动时进行的,所以要让修改生效,要重启数据库。

​ ORACLE 10G 引入了 ASMM (自动共享内存管理), DBA 只需设置 SGA _ TARGET , ORACLE 就会

​ 自动的对共享池、 JAVA 池、大池、数据缓冲区、流池进行自动调配。取消自动调配就是

​ sga_target 设为。

​ 数据缓冲区 (Database buffer cache): 存储从数据文件中获得的数据块的镜像

​ 大小由 db_cache_size 决定

​ 查看: show parameter db_cache_size;

​ 设置: alter system set db_cache_size=800M;

​ 重做日志缓冲区 (Redo log buffer): 对数据库的任何修改都按顺序被记录在该缓冲,然后由 LGWR 进程将

​ 它写入磁盘 , 大小由 LOG _ BUFFER 决定

​ 共享池 (Shared pool): 是 SGA 中最关键的内存片段 , 共享池主要由库缓存 ( 共享 SQL 区和 PL/SQL 区 ) 和数据

​ 字典缓存组成,它的作用是存放频繁使用的 sql ,在有限的容量下,数据库系统根据一定的算法决

​ 定何时释放共享池中的 sql 。

​ 库缓存大小由 shared_pool_size 决定

​ 查看: show parameter shared_pool_size

​ 修改: alter system set shared_pool_size=120m;

​ 数据字典缓存:

​ 存储数据库中数据文件、表、索引、列、用户和其它数据对象的定义和权限信息

​ 大小由 shared_pool_size 决定,不能单独指定

​ 大池 (Large pool): 是一个可选的区域,用于一些大型的进程如 Oracle 的备份恢复操作、 IO 服务器进程等

​ Java 池:该程序缓冲区就是为 Java 程序保留的。如果不用 Java 程序没有必要改变该缓冲区的默认大小

​ 流池 (Stream pool) :被 Oracle 流所使用

2.PGA

​ 是为每个用户进程连接 ORACLE 数据库保留的内存

​ 进程创建时分配,进程结束时释放,只能被一个进程使用

​ PGA 包括了以下几个结构:

​ ()排序区

​ ()游标状态区

​ ()会话信息区

​ ()堆栈区

​ 由参数: pga_aggregate_target 决定

  1. 几类进程:用户进程,服务器进程,后台进程,其它可选进程

三、 Oracle 数据库

​ 一系列物理文件的集合

​ 包括控制文件、数据文件、联机日志文件、参数文件、密码文件等

​ 即: Oracle Database = Controlfile + datafile + logfiel + spfile +..

  1. 控制文件 (controlfile)

​ 数据库的名字,检查点信息,数据库创建的时间戳

​ 所有的数据文件,联机日志文件,归档日志文件信息

​ 备份信息等

  1. 数据文件 (datafile)

​ 包含了用户和应用程序的所有数据

​ -- 查看数据文件信息

  1. 联机日志文件

​ 记录了用户对数据库的所有操作,一个数据库中至少要有两个日志组文件,每个日志组中至少有一个日志成员

​ 日志组中的多个日志成员是互为镜相关系

  1. 归档日志文件

​ Oracle 可以运行在两种模式之中,归档模式和非归档模式。在归档模式中,为了保存用户的所有修改,

​ 在联机日志文件切换后和被覆盖之间系统将他们另外保存成一组连续的文件系列,该文件系列就是归档日志文件。

​ 用户恢复意外情况出现的数据丢失、异常等。

  1. 参数文件 (pfile 和 spfile)

​ initSID.ora 或 init.ora 文件 , 通常位于: $ORACLE_BASE/admin//pfile

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

  1. 其他文件

​ 密码文件:用于 Oracle 的具有 sysdba 权限用户的认证 .

​ 告警日志文件:报警日志文件 (alert.log 或 alrt.ora ),记录数据库启动,关闭和一些重要的出错信息

​ 查看路径: select value from v$PARAMETER where name =‘background_dump_dest’;

  1. 数据库逻辑组织结构

​ 表空间、段、区、块

​ 一个数据库由一个或多个表空间组成,一个表空间只能属于一个数据库

​ 一个表空间由一个或多个多个数据文件组成,一个数据文件只能属于一个表空间

​ 一个数据文件由一个或多个操作系统块组成,每一个操作系统块只能数以一个数据文件

​ 一个表空间可以包含一个或多个段,一个段只能属于一个表空间

​ 一个段由一个或多个区组成,每一个区只能属于一个段

​ 一个区由一个或多个 Oracle 块组成,每一个 Oracle 块只能属于一个区

​ 一个区只能属于一个数据文件,数据文件的空间可以分配到一个或多个区

​ 一个 Oracle 块由一个或多个操作系统块组成,一个操作系统块是一个 Oracle 块的一部分

四、 Oracle 实例和 Oracle 数据库的关系

  1. 一个实例能够装载及打开仅仅一个数据库

  2. 一个数据库能够被多个实例装载并打开

  3. 实例与数据库的对应关系是一对一或多对一的关系


Oracle 表空间与数据文件

==============================

*一、概念*

表空间:是一个或多个数据文件的逻辑集合

表空间逻辑存储对象:永久段-->如表与索引

​ 临时段-->如临时表数据与排序段

​ 回滚段-->用于事物回滚或闪回内存的撤销数据

表空间分类:系统表空间(systemsysaux),非系统表空间

一个表空间至少包含一个数据文件,一个数据文件只能属于一个表空间。

不可或缺的几个表空间:

SYSTEM --->字典表空间,不能被损坏

UNDO --->dml,dql把数据快照到此,数据提交即消失(用于恢复)

SYSAUX --->10g 高并发系统繁忙时,会造成system争用,将工具放到SYSAUX,减轻system的压力,SYSAUX不影响系统(影响性能)

TEMP --->临时数据相关的内容

USERS --->10g 用户数据从system拨离出来

*二、********Oracle********的存储结构*

1.Schema: 用户--->创建相关对象、表、视图、序列、函数、存储过程、包等

2.逻辑结构:database数据库--->tablespace表空间---> segment--->extent区间----> block

​ 逻辑结构是Oracle内部管理数据库中对象的方式

3.物理结构:OS block --->datafile 物理结构通常是一系列数据文件

4.举例描述scott用户创建对象的组织方式 **/*

--查看scott用户的默认表空间及数据文件

SQL> select USERNAME,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE

2 from dba_users

3 where username = 'SCOTT';

USERNAME DEFAULT_TABLESPACE TEMPORARY_TABLESPACE

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

SCOTT USERS TEMP

SQL> col name format a50

SQL> select t1.name,t2.name --查看表空间及数据文件

2 from vtablespace t1,vdatafile t2

3 where t1.ts# = t2.ts#;

NAME NAME

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

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

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

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

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

EXAMPLE /u01/app/oracle/oradata/orcl/example01.dbf

*/**

scott-->emp(table)-->数据定义(位于)-->system表空间

​ 数据(位于) -->user表空间(逻辑存储)-->表段-->区间-->内存块

-->索引段等-->区间-->内存块

user表空间(物理存储)-->user01.dbf

-->采用本地管理,包含头部信息,可用、已用等位图信息

databuffer缓冲区满则调用dbwr进程将数据写入到物理文件当中 **/*

*/**

*三、创建表空间*

--*******简要语法:*

CREATE [BIGFILE | SMALLFILE] [TEMPORARY] TABLESPACE tablespace name

DATAFILE datafile spec | TEMPFILE tempfile spec

[MINIMUM EXTENT minimum extent size]

[BLOCKSIZE blocksize]

[[COMPRESS|NOCOMPRESS] DEFAULT STORAGE (default storage clause)]

[LOGGING|NOLOGGING]

[FORCE LOGGING]

[ONLINE|OFFLINE]

[EXTENT MANAGEMENT DICTIONARY |

LOCAL [AUTOALLOCATE|UNIFORM SIZE size]]

[SEGMENT SPACE MANAGEMENT MANUAL|AUTO]

[FLASHBACK ON|OFF]

--*******创建表空间的条件*

1.具有create tablespace的权限,DBA角色具有该权限,sysdba,sysoper

2.创建的是bigfiel ,还是smallifle 超过T 级别应考虑bigfile

3.新建的表空间的I/O,是否会导致磁盘I/O不够用

4.datafile后跟的路径应该具备写的权限 **/*

--查看缺省是BIGFILE 还是SMALLFILE,当缺省为SMALLFILE,创建表空间不指定表空间类型则为SMALLFILE

SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where PROPERTY_NAME like '%TBS%';

PROPERTY_NAME PROPERTY_VALUE

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

DEFAULT_TBS_TYPE SMALLFILE

--修改创建表空间为大或小表空间的默认值

SQL> alter database set default bigfile tablespace;

Database altered.

SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties where PROPERTY_NAME like '%TBS%';

PROPERTY_NAME PROPERTY_VALUE

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

DEFAULT_TBS_TYPE BIGFILE

--改回为缺省值

SQL> alter database set default smallfile tablespace;

Database altered.

--建议创建表空间时最好带上[BIGFILE | SMALLFILE]参数,以免参数设置导致创建了不合理的表空间

*/**

注意:

大表文件(bigfile)最大可以存放个T的容量。头文件的大小达到了G-->block,普通的头文件大小为M---->block

create bigfile tablespace <> datafile <>........;

​ 好处:减少了数据文件的个数,管理方便,大的对象的存放得到了优化。减少了control文件的信息,控制文件定义了datafile的个数。

bigfile只能存在一个数据文件,所以要保证分配的的磁盘具有足够的空间。 **/*

--演示创建表空间

SQL> create tablespace TBS1 datafile '/u01/app/oracle/oradata/orcl/tbs1.dbf' size 100m;

Tablespace created.

SQL> col name format a50

SQL> select t1.name,t2.name

2 from vtablespace t1,vdatafile t2

3 where t1.ts# = t2.ts#;

NAME NAME

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

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

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

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

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

EXAMPLE /u01/app/oracle/oradata/orcl/example01.dbf

TBS1 /u01/app/oracle/oradata/orcl/tbs1.dbf

*/**

*创建临时表空间:*

创建临时表空间,不能使用非标准数据块,另临时表空间不能存放永久对象。**/*

CREATE TMEPORARY TABLESPACE tablespace_name

TEMPFILE '...' SIZE n

CREATE TEMPORARY TABLESPACE T2 TEMPFILE '/opt/oracle/oradata/orcl/t2.dbf'

size 100m;

*/**

临时表空间具有以下特征:

​ 临时数据文件不能置为只读

​ 临时数据文件不能重命名

​ 监时数据文件的日志方式总是NOLOGGING

临时表空间扩容:**/*

--(1)重置临时文件大小

alter database tempfile '/opt/oracle/oradata/orcl/t2.dbf' resize 150m;

--(2)让临时文件能自动扩展

alter database tempfile '/opt/oracle/oradata/orcl/t2.dbf'

autoextend on next 10m maxsize 50m;

--(3)增加临时文件

alter tablespace t2 add tempfile '/disk8/oracle/t2b.dbf' size 50m;

--查看临时文件

select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 "SIZE(MB)"

from dba_temp_files;

--默认临时表空间:

select * from database_properties;

--修改默认临时表空间:

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE T2;

​ */**

​ 默认临时表空间最好要指定一下,如果没有指定默认的临时表空间,那么将使用system表空间作为排

​ 序区

​ 默认临时表空间有一定的限制:

​ 默认临时表空间不能删除

​ 默认临时表空间不能脱机

获得创建表空间的语句:**/*

SELECT dbms_metadata.get_ddl('TABLESPACE','SYSTEM') FROM dual;

*/**

*临时表空间组:*

10G引入的,是一组临时表空间,只能由临时表空间组成。组名不能与临时表空间同名

​ 临时表空间不能显示的创建和删除,当把第一个临时表空间分配给某个临时表空间组的时候,自动创建

​ 临时表空间组,将最后一个临时表空间,删除时,组也将自动删除。

创建临时表空间组:

1、创建临时表空间的时候 **/*

CREATE TEMPORARY TABLESPACE tablespace_name TEMPFILE '...' SIZE n

TABLESPACE GROUP group_name;

ALTER TABLESPACE tablespace_name TABLESPACE GROUP group_name;

ALTER TABLESPACE T3 TABLESPACE GROUP TEMP_GRP;

--查看临时表空间组的信息:

dba_tablespace_groups

SELECT * FROM DBA_TABLESPACE_GROUPS;

--将临时表空间组成员移除:

ALTER TABLESPACE tablespace_name TABLESPACE GROUP '';

--可将系统默认的临时表空间设为临时表空间组:

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name;

--删除临时表空间:

--将所有成员全移出去,便自动删除

*****--*********创建********UNDO********表空间(还原表空间):****

*/**

创建语法:**/*

CREATE UNDO TABLESPACE tablespace_name DATAFILE '...' SIZE n

SQL> CREATE UNDO TABLESPACE undo2

DATAFILE '/opt/oracle/oradata/orcl/undo2_01.dbf' SIZE 200M,

'/opt/oracle/oradata/orcl/undo2_02.dbf' size 100m;

--修改当前系统的UNDO表空间:

ALTER SYSTEM SET UNDO_TABLESPACE=tablespace_name

*/**

UNDO表空间扩容:

​ ()重置DATAFILE大小

​ ()让DATAFILEAUTOEXTEND

​ ()添加数据文件

删除UNDO表空间 **/*

DROP TABLESPACE tablespace_name

​ */**

​ 注:当前的UNDO表空间不能删除

​ 系统只能使用一个UNDO表空间 **/*

--创建表空间的详细语法(官网):http://download.oracle.com/docs/cd/B28359_01/server.111/b28286/statements_7003.htm#SQLRF01403

*/**

*四、表空间的管理方式:*

字典管理:oracle 8i(不包括i),只存在一种表空间的管理模式,即字典管理表空间(DMT

DMT是指oracle的空间分配或回收是通过数据库中的数据字典表来记录和管理的

​ 用于管理的两个数据字典表分别是:UET$used extents)FET$(freeextents)

​ 其工作方式是:当建立一个新的段或者段在表空间时,oracle通过一系列的SQL语句来完成这个工作

​ 且和前面的两个字典表有关,在繁忙的系统中会造成竞争和等待(另一个DMT会带来的问题是空间碎片)

本地管理(LMT): 在iR2版本后成了默认的选项

LMT在表空间的数据文件头部加入了一个位图区域,在其中记录每个extent的使用状况

​ 当extent被使用或者被释放,oracle会更新头部的记录来反映这个变化,不产生回滚信息

​ 因为仅仅操作数据文件头部的几个数据块,不用操作数据字典,LMTDMT要快,尤其是在繁忙的时候更明显

--查看表空间使用的管理方式: **/*

SQL> select TABLESPACE_NAME,EXTENT_MANAGEMENT,BLOCK_SIZE,STATUS,CONTENTS,FORCE_LOGGING,BIGFILE

2 from dba_tablespaces;

TABLESPACE_NAME EXTENT_MAN BLOCK_SIZE STATUS CONTENTS FOR BIG

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

SYSTEM LOCAL 8192 ONLINE PERMANENT NO NO

UNDOTBS1 LOCAL 8192 ONLINE UNDO NO NO

SYSAUX LOCAL 8192 ONLINE PERMANENT NO NO

TEMP LOCAL 8192 ONLINE TEMPORARY NO NO

USERS LOCAL 8192 ONLINE PERMANENT NO NO

EXAMPLE LOCAL 8192 ONLINE PERMANENT NO NO

TBS1 LOCAL 8192 ONLINE PERMANENT NO NO

--DMTLMT 的相互转换

--将字典管理的表空间转换为本地管理

exec dbms_space_admin.tablespace_migrate_to_local('表空间名*'**)* *--*表空间名用大写

--将本地管理的表空间转换为字典管理

exec dbms_space_admin.tablespace_migrate_from_local('表空间名*'**)*

*****--*********表空间改名:****

--必须在open状态下,system , sysaux 不能改名

ALTER TABLESPACE XXX RENAME TO YYY

*****--*********表空间的扩容:****

*/**

表空间的大小由组成它的所有数据文件的大小之和来决定

扩容的方法:**/*

--(1)重置数据文件大小

ALTER DATABASE DATAFILE '...' | FileNo RESIZE XX

--(2)设置数据文件能自动增长

ALTER DATABASE DATAFILE '... '| FileNo AUTOEXTEND ON | OFF NEXT 20M MAXSIZE 300M;

--查看哪些表空间为自动增长

SELECT FILE_NAME,TABLESPACE_NAME,AUTOEXTENSIBLE FROM dba_data_files;

/* (3)添加数据文件

​ 增加到表空间中的数据文件不能直接从表空间中删除,除非删掉整个表空间

​ 增加数据文件将有助于均衡I/O

​ 一个表空间文件最多为个,文件越多,执行一次检查点的代价越高 **/*

ALTER TABLESPACE tablespace_name ADD DATAFILE '...' SIZE XX;

ALTER TABLESPACE tbs2 ADD DATAFILE '/u01/app/oracle/oradata/orcl/tbs2.dbf' size 200m autoextend on ;

*****--*********表空间的四种状态:****

online

offline

read only

read write

​ */**

offline

​ 一个表空间的正常状态是联机(ONLINE),有时需要将某一个表空间进行脱机,以进行数据库维护

​ 如:

​ 在数据库打开的状态下移动数据文件

​ 在数据库打开的情况下恢复一个表空间或数据文件

​ 执行表空间的脱机备份(虽然可以进行进行联机备份)

​ 使数据库某一部分不可访问,让其它部分能正常访问。

​ 表空间脱机的时候,将产生检查点事件,该表空间上的数据是不能访问的

​ 命令:**/*

ALTER TABLESPACE tablespace_name OFFLINE;

--联机命令:

ALTER TABLESPACE tablespace_name ONLINE;

--在脱机后,有可能无法再联机,这时要做数据的介质恢复

ALTER DATABASE RECOVER TABLESPACE tablespace_name

ALTER TABLESPACE tablespace_name ONLINE;

​ */**

read only:

​ 不能执行DML语句,可以使用的为DDLDQL语句 **/*

ALTER TABLESPACE tablespace_name READ ONLY;

read write

ALTER TABLESPACE tablespace_name READ WRITE;

--一些表空间的特殊状态

tablespacename onlie read only

system 必须online 必须read write

sysaux 可以offline 不能read only

undo 不能offline 不能read only

--查看表空间的状态

SQL> select tablespace_name,file#,v.status,v.enabled from dba_data_files d,

2 v$datafile v

3 where d.file_id = v.file#;

TABLESPACE_NAME FILE# STATUS ENABLED

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

SYSTEM 1 SYSTEM READ WRITE

UNDOTBS1 2 ONLINE READ WRITE

SYSAUX 3 ONLINE READ WRITE

USERS 4 ONLINE READ WRITE

EXAMPLE 5 ONLINE READ WRITE

TBS1 6 ONLINE READ WRITE

--几种状态的相互转换的演示

--将表空间置为只读

SQL> alter tablespace users read only;

Tablespace altered.

SQL> update scott.emp set sal = sal + 50 where ename = 'SCOTT'; --置为只读后不可更新

update scott.emp set sal = sal + 50 where ename = 'SCOTT'

​ ***

ERROR at line 1:

ORA-00372: file 4 cannot be modified at this time

ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'

SQL> select tablespace_name,file#,v.status,v.enabled from dba_data_files d,

2 v$datafile v

3 where d.file_id = v.file# and tablespace_name = 'USERS';

TABLESPACE_NAME FILE# STATUS ENABLED

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

USERS 4 ONLINE READ ONLY

--将表空间置为脱机

SQL> alter tablespace users offline;

Tablespace altered.

SQL> update scott.emp set sal = sal + 100 where ename = 'SCOTT';/置为脱机后不可更新/

update scott.emp set sal = sal + 100 where ename = 'SCOTT'

​ ***

ERROR at line 1:

ORA-00376: file 4 cannot be read at this time

ORA-01110: data file 4: '/u01/app/oracle/oradata/orcl/users01.dbf'

--将表空间置为联机

SQL> alter tablespace users online;

Tablespace altered.

SQL> select tablespace_name,file#,v.status,v.enabled from dba_data_files d,

2 v$datafile v

3 where d.file_id = v.file# and tablespace_name = 'USERS';

TABLESPACE_NAME FILE# STATUS ENABLED

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

USERS 4 ONLINE READ ONLY

--注意,readonly 状态下的表空间可以删除数据,仅仅是不能插入或更新数据,如下

SQL> delete from scott.emp where ename = 'SCOTT';

SQL> rollback;

Rollback complete.

--将表空间置为读写状态

SQL> alter tablespace users read write;

Tablespace altered

*****--*********表空间数据文件的重命名或重定位****

--方法一,在open状态下且处于archive模式:

--1、查出数据文件位置和所属的表空间

select TABLESPACE_NAME,FILE_NAME,BYTES/1024/1024 "SIZE(MB)"

from dba_data_files;

--2、将数据文件所在的表空间离线

alter tablespace uu offline;

--3、在操作系统下将文件移动到另外一个位置,或重命名(建议使用cp)

host mv /opt/oracle/oradata/orcl/tt.dbf /disk9/uu1.dbf

--4、修改控制文件,将数据文件的指针重新指向到另一个位置(执行rename)

alter tablespace uu rename datafile '/opt/oracle/oradata/orcl/tt.dbf'

to '/disk9/uu1.dbf';

--5、表空间在线

alter tablespace uu online

--方法二,不能脱机的表空间

--1、关闭数据库,再启动到mount状态

startup mount

--2、在操作系统下,移动或重命名文件

host mv /opt/oracle/oradata/orcl/tt.dbf /disk9/uu1.dbf

--3、修改控制文件

alter database rename file '/disk8/uu.dbf' to '/disk8/uu2.dbf';

--4、打开数据库

alter database open;

*/**

*删除表空间:*

​ 意味着表空间和数据文件的信息从数据库中删除,同时也应该将相应的操作系统文件删除

​ 不能删除的表空间

​ 系统表空间

​ 有活动回滚段的表空间

​ 默认临时/永久表空间

​ 命令: **/*

DROP TABLESPACE tablespace_name [INCLUDING CONTENTS [AND DATAFILES]]

INCLUDING CONTENTS -- 删除表空间及所有段

INCLUDING CONTENTS [AND DATAFILES] --删除表空间、所有段、数据文件、同时删除系统中的物理文件

*****--*********限制某个用户对表空间的使用:****

ALTER USER user_name QUOTA n ON tablespace_name;

ALTER USER scott QUOTA 10m on UU;

*****--*********取消限制****

ALTER USER user_name QUOTA UNLIMITED ON tablespace_name;

GRANT UNLIMITED TABLESPACE TO user_name;

*****--*********单个数据文件离线:****

--1、查看有哪些数据文件

SELECT name FROM v$datafile;

--2、离线

ALTER DATABASE DATAFILE '...' OFFLINE;

--3、在线

ALTER DATABASE DATAFILE '... ' ONLINE

-- 有可能提示要进行介质恢复:

RECOVER DATAFILE '...'

ALTER DATABASE RECOVER TABLESPACE tablespace_name;

-- 之后再将文件再线

--重命名数据文件(同前面移动数据文件一样)

*****--*********获取表空间和数据文件信息****

--表空间信息

dba_tablespaces

v$tablespace

--数据文件信息

dba_data_files

v$datafile

--临时数据文件信息

dba_temp_files

v$tempfile

*****--*********查看系统默认的表空间及临时表空间:****

SQL> select PROPERTY_NAME,PROPERTY_VALUE from database_properties

2 where PROPERTY_NAME like 'DEFAULT%';

--修改改系统的默认表空间:

SQL>ALTER DATABASE DEFAULT TABLESPACE tablespace_name

--修改系统的默认临时表空间:

SQL>ALTER DATABASE DEFAULT TEMPORARY TABLESPACE tablespace_name

--查看用户默认表空间:

SQL>select USERNAME,USER_ID,DEFAULT_TABLESPACE,TEMPORARY_TABLESPACE from dba_users;

--修改用户默认表空间:

SQL>ALTER USER user_name DEFAULT TABLESPACE tablespace_name

--查看表空间的使用情况:

dba_data_files;

dba_free_space;

--例:查每个表空间的剩余空间

SQL> select tablespace_name,sum(bytes/1024/1024)

2 from dba_free_space group by tablespace_name;

*/**

*五、数据文件*

数据文件是数据库中最重要的一个要求,是所有的数据库内容存放的地方

datafile是按照表空间为组织单位,表空间的构成是按照段区块为层次---数据文件的逻辑结构

datafile就是表空间的物理文件。

datafile中的内容是通过dbwrdata buffer cache中的dirty buffer data 写入的

dbwr触发:

ckpt触发,dirty buffer 到一定量的时候,data buffer caceh 的内存空间快用完了

​ 查询空闲内存空间超时,表空间offline/read only,表的drop, truncate 开始执备份表空间的时候 **/*

--查看数据文件

SQL> select file# ,name,status,enabled,bytes/1024/1024 M from v$datafile;

FILE# NAME STATUS ENABLED M

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

1 /u01/app/oracle/oradata/orcl/system01.dbf SYSTEM READ WRITE 490

2 /u01/app/oracle/oradata/orcl/undotbs01.dbf ONLINE READ WRITE 30

3 /u01/app/oracle/oradata/orcl/sysaux01.dbf ONLINE READ WRITE 250

4 /u01/app/oracle/oradata/orcl/users01.dbf ONLINE READ WRITE 5

5 /u01/app/oracle/oradata/orcl/example01.dbf ONLINE READ WRITE 100

6 /u01/app/oracle/oradata/orcl/tbs1_1.dbf ONLINE READ WRITE 100

7 /u01/app/oracle/oradata/orcl/tbs1_2.dbf ONLINE READ WRITE 60

SQL> select tablespace_name,file_name,user_bytes/1024/1024 M from dba_data_files;

TABLESPACE_NAME FILE_NAME M

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

USERS01 /u01/app/oracle/oradata/orcl/users01.dbf 4.9375

SYSAUX /u01/app/oracle/oradata/orcl/sysaux01.dbf 249.9375

UNDOTBS1 /u01/app/oracle/oradata/orcl/undotbs01.dbf 29.9375

SYSTEM /u01/app/oracle/oradata/orcl/system01.dbf 489.9375

EXAMPLE /u01/app/oracle/oradata/orcl/example01.dbf 99.9375

TBS1 /u01/app/oracle/oradata/orcl/tbs1_1.dbf 99.9375

TBS1 /u01/app/oracle/oradata/orcl/tbs1_2.dbf 59.9375

*****--*********数据文件的增加与删除****

--TBS1增加一个数据文件

SQL> alter tablespace tbs1 add datafile '/u01/app/oracle/oradata/orcl/tbs1_3.dbf' size 10m autoextend on;

--还有一种创建表空间时不指定大小,而是重用一个存在的dbf要用resue参数,reuse 是把原有的结构拿来用,里面的数据是用不了的,因为早都没有了。

--删表空间中的数据文件,g以后的版本才用以下功能,在之前版本的就只能把表空间给干掉。

SQL> alter tablespace tbs1 drop datafile '/u01/app/oracle/oradata/orcl/tbs1_3.dbf';

--有数据的数据文件不能删。第一个不能删,如果要删就把表空间干掉,数据文件中有数据写入的文件也不能删除,如下

SQL> alter tablespace tbs1 drop datafile 7; --7v$datafile中的file#.

alter tablespace tbs1 drop datafile 7


ERROR at line 1:

ORA-03262: the file is non-empty

*/**

*数据文件的日志记录*

​ 只有temp表空间是nologing 别的都是logging

​ 日志记录的几种模式

nologin 并不是不记录日志而是记录的很少

logging 正常记录日志信息

force logging 记录的日志比logging还详细 记录信息非常多 用于DG data guard 容灾的情况 **/*

SQL> select tablespace_name ,logging,force_logging from dba_tablespaces;

TABLESPACE_NAME LOGGING FOR

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

SYSTEM LOGGING NO

UNDOTBS1 LOGGING NO

SYSAUX LOGGING NO

TEMP NOLOGGING NO

USERS01 LOGGING NO

EXAMPLE NOLOGGING NO

TBS1 LOGGING NO

*****--*********修改表空间中日志文件记录的方式****

SQL> alter tablespace tablespace_name nologging | logging | force logging;

SQL> alter tablespace example logging;

Tablespace altered.

SQL> alter tablespace tbs1 force logging;

Tablespace altered.

SQL> select tablespace_name ,logging,force_logging from dba_tablespaces;

TABLESPACE_NAME LOGGING FOR

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

SYSTEM LOGGING NO

UNDOTBS1 LOGGING NO

SYSAUX LOGGING NO

TEMP NOLOGGING NO

USERS01 LOGGING NO

EXAMPLE LOGGING NO

TBS1 LOGGING YES


使用OEM,SQLPlus,iSQLPlus 管理Oracle实例

==========================================

一、管理组件

Oracle 10g数据库管理包含三个组件,本文主要介绍Database Control,SQL*Plus及iSQL*Plus

   Database instance(数据库实例)  -->系统使用的后台进程

   Listener (监听器)              -->监听客户端连接到数据库

   Management interfance

       Database Control           -->OEM

      Management agent (when using Grid Control)  --网格管理

二、使用OEM管理Oracle

1.关于OEM:Oracle 从i开始就随软件提供企业管理器(OEM)

    在g中,oracle在dbca建库过程中会出现四个用户:sys,system,dbsnap,sysman

   (--dbsnap 用户用于OEM智能代理管理工作,sysman用户则是OEM的管理员帐号)

   如果在dbca建库过程中没有选择安装OEM,则没有dbsnap和sysman用户,如果在dbca建库时选择启用database control管理数据库,

   则需要在数据库中建立一个sysman的schema,用于保存OEM的一些数据,这个就是OEM的资料档案库(repository),在G版本中,

   这个库存储在sysaux表空间中



2.OEM的启动和关闭

启动:emctl start dbconsole   启动后用浏览器http://IP:1158/em   来登陆OEM,进行图形化操作数据库

   关闭:emctl stop dbconsole

   状态:emctl status dbconsole                     */

   --下面演示EM启动到停止的过程

   [oracle@robinson scripts]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://robinson.com:1158/em/console/aboutApplication

    Starting Oracle Enterprise Manager 10g Database Control ...................... started.

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

    Logs are generated in directory /u01/app/oracle/10g/robinson.com_orcl/sysman/log

    [oracle@robinson scripts] emctl status 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://robinson.com:1158/em/console/aboutApplication

    Oracle Enterprise Manager 10g is running.

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

    Logs are generated in directory /u01/app/oracle/10g/robinson.com_orcl/sysman/log

    [oracle@robinson scripts]$ emctl stop 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://robinson.com:1158/em/console/aboutApplication

    Stopping Oracle Enterprise Manager 10g Database Control ...

    ...  Stopped.

    /*



3.重建OEM

    由于EM需要J2EE环境支持,正常创建后,在ORACLE_HOME目录下将会建立一个

    类似ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole__的目录,如果此目录不存在,则EM将无法启动。

    另外,如果服务器修改过主机名等信息,导致OEM可能无法启动,此时需要重新配置EM。

    使用emca命令来重建EM档案库,关于emca的用户,使用emca -h 来查看详细说明 */



   [oracle@robinson scripts]emca -config dbcontrol db -repos recreate



   STARTED EMCA at Apr 21, 2010 3:09:04 PM

   EM Configuration Assistant, Version 10.2.0.1.0 Production

   Copyright (c) 2003, 2005, Oracle.  All rights reserved.



   Enter the following information:

   Database SID: orcl

   Database Control is already configured for the database orcl

   You have chosen to configure Database Control for managing the database orcl

   This will remove the existing configuration and the default settings and perform a fresh configuration

   Do you wish to continue? [yes(Y)/no(N)]: y

   Listener port number: 1521

   Password for SYS user: 

   Password for DBSNMP user: 

   Password for SYSMAN user: 

   Email address for notifications (optional):

   Outgoing Mail (SMTP) server for notifications (optional):

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



   You have specified the following settings



   Database ORACLE_HOME ................ /u01/app/oracle/10g



   Database hostname ................ robinson.com

   Listener port number ................ 1521

   Database SID ................ orcl

   Email address for notifications ...............

   Outgoing Mail (SMTP) server for notifications ...............



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

   Do you wish to continue? [yes(Y)/no(N)]: y

   Apr 21, 2010 3:09:24 PM oracle.sysman.emcp.EMConfig perform

   INFO: This operation is being logged at /u01/app/oracle/10g/cfgtoollogs/emca/orcl/emca_2010-04-21_03-09-04-PM.log.

   Apr 21, 2010 3:09:25 PM oracle.sysman.emcp.util.DBControlUtil stopOMS

   INFO: Stopping Database Control (this may take a while) ...

   Apr 21, 2010 3:09:32 PM oracle.sysman.emcp.EMReposConfig dropRepository

   INFO: Dropping the EM repository (this may take a while) ...

   Apr 21, 2010 3:11:41 PM oracle.sysman.emcp.EMReposConfig invoke

   INFO: Repository successfully dropped

   Apr 21, 2010 3:11:41 PM oracle.sysman.emcp.EMReposConfig createRepository

   INFO: Creating the EM repository (this may take a while) ...

   Apr 21, 2010 3:16:01 PM oracle.sysman.emcp.EMReposConfig invoke

   INFO: Repository successfully created

   Apr 21, 2010 3:16:08 PM oracle.sysman.emcp.util.DBControlUtil startOMS

   INFO: Starting Database Control (this may take a while) ...

   Apr 21, 2010 3:17:55 PM oracle.sysman.emcp.EMDBPostConfig performConfiguration

   INFO: Database Control started successfully

   Apr 21, 2010 3:17:55 PM oracle.sysman.emcp.EMDBPostConfig performConfiguration

   INFO: >>>>>>>>>>> The Database Control URL is http://robinson.com:1158/em <<<<<<<<<<<

   Enterprise Manager configuration completed successfully

   FINISHED EMCA at Apr 21, 2010 3:17:55 PM

   [oracle@robinson scripts] emctl status 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://robinson.com:1158/em/console/aboutApplication

   Oracle Enterprise Manager 10g is running.

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

   Logs are generated in directory /u01/app/oracle/10g/robinson.com_orcl/sysman/log

   /*

   注意:如果启动EM有问题,确保监听器已经启动

   打开浏览器,使用sysman用户登陆,也可以使用sys用户登陆,当使用sys用户登陆时,注意几点:

   a.口令文件存在并配置正常

   b.监听启动

   c.remote_login_passwordfile设置不能为NONE

   重建EM成功后,ORACLE主要创建的相关目录有个,分别是:

    a.ORACLE_HOME/oc4j/j2ee/OC4J_DBConsole_<hostname>_<sid>

    b.ORACLE_HOME/<hostname>_<sid>



4.查看默认的端口号      */

   [oracle@robinson scripts]catORACLE_HOME/install/portlist.ini

    iSQL*Plus HTTP port number =5560

    Enterprise Manager Console HTTP Port (orcl) = 1158

    Enterprise Manager Agent Port (orcl) = 3938

  /*   



5.建议

    OEM管理和维护直观简单,但并不建议使用OEM来进行管理,因为JAVA的界面通常消耗的资源较多,

   加上网络连接的因素,OEM界面很容易失去响应,从而可能导致很多意外,通过命令行操作可以让

   我们更加熟悉ORACLE的本质,又可以减少低级的意外错误。

三、使用SQLPlus及iSQLPlus管理Oracle

SQL*Plus及iSQL*Plus同样可以完成Oracle的管理工作,能够通过命令的方式来执行查询,更新,删除等操作



1.SQL*Plus 使用相关账户登陆到到实例,启动数据库,完成相关的管理任务  */

  [oracle@robinson scripts]sqlplus / as sysdba



  SQL*Plus: Release 10.2.0.1.0 - Production on Wed Apr 21 15:38:54 2010



  Copyright (c) 1982, 2005, Oracle.  All rights reserved.



 Connected to:

 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

 With the Partitioning, OLAP and Data Mining options



 SQL>  

 /*



2.iSQL*Plus(从i开始出现的基于web的sqlplus工具)

  10g下iSQL*Plus的启动与关闭

  启动:isqlplusctl start

  关闭:isqlplusctl stop                    */

  [oracle@robinson scripts] isqlplusctl start

  perl: warning: Setting locale failed.

  perl: warning: Please check that your locale settings:

      LANGUAGE = (unset),

      LC_ALL = (unset),

      LANG = "en"

  are supported and installed on your system.

  perl: warning: Falling back to the standard locale ("C").

  iSQL*Plus 10.2.0.1.0

  Copyright (c) 2003, 2005, Oracle.  All rights reserved.

  Starting iSQL*Plus ...

  iSQL*Plus started.



  [oracle@robinson scripts]isqlplusctl stop

  perl: warning: Setting locale failed.

  perl: warning: Please check that your locale settings:

      LANGUAGE = (unset),

      LC_ALL = (unset),

      LANG = "en"

  are supported and installed on your system.

 perl: warning: Falling back to the standard locale ("C").

 iSQL*Plus 10.2.0.1.0

 Copyright (c) 2003, 2005, Oracle.  All rights reserved.

 Stopping iSQL*Plus ...

 iSQL*Plus stopped.



  /*

  修改iSQL*Plus默认端口号

  [oracle@robinson scripts] cat $ORACLE_HOME/oc4j/j2ee/isqlplus/config/http-web-site.xml |grep 5560

  <web-site port="5560" display-name="OC4J Java HTTP Web Site">  --将改为其他端口号即可



  启动isqlplus,然后通过浏览器登陆http://IP:5560/isqlplus

  注意:默认情况下,sysdba用户无法通过isqlplus登陆 
Copyright © 2009 - Now . XPBag.com . All rights Reserved.
夜心的小站 » Oracle数据库体系结构、多实例管理、表空间、数据文件

提供最优质的资源集合

立即查看 了解详情