欢迎投稿

今日深度:

Oracle442个应用实例----------概要文件

Oracle442个应用实例----------概要文件



--------------------------概要文件讲解:---------------------------------
Oracle系统为了合理分配和使用系统的资源提出了概要文件的概念。所谓概要文件,就是一份描述如何使用系统的资源(主要是CPU资源)的配置文件。将概要文件赋予某个数据库用户,在用户连接并访问数据库服务器时,系统就按照概要文件给他分配资源。在有的书中将其翻译为配置文件,其作用包括:
1、管理数据库系统资源。
利用Profile来分配资源限额,必须把初始化参数resource_limit设置为true
ALTER SYSTEM SET resource_limit=TRUE SCOPE=BOTH;
2、管理数据库口令及验证方式。
默认给用户分配的是DEFAULT概要文件,将该文件赋予了每个创建的用户。但该文件对资源没有任何限制,因此管理员常常需要根据自己数据库系统的环境自行建立概要文件

一、PROFILE的管理内容:
1、CPU的时间
2、I/O的使用
3、IDLE TIME(空闲时间)
4、CONNECT TIME(连接时间)
5、并发会话数量
6、口令机制:

二、DEFAULT PROFILE:
1、所有的用户创建时都会被指定这个PROFILE
2、DEFAULT PROFILE的内容为空,无限制
------------------------------------------------------------------------------------

应用场景58:在Enterprise Manager中查看概要文件信息

应用场景59:使用DBA_PROFILES视图查看概要文件信息
SELECT * FROM DBA_PROFILES WHERE PROFILES='DEFAULT';

应用场景60:使用概要文件生效
查看RESOURCE_LIMIT的参数值:
SHOW PARAMETER RESOURCE_LIMIT
将RESOURCE_LIMIT的参数设置成true;
ALTER SYSTEM SET RESOURCE_LIMIT=TRUE;

应用场景61:在Enterprise Manager中创建概要文件

应用场景62:使用CREATE PROFILE 语句创建概要文件

CREATE PROFILE<profile name>LIMIT<配置项目><取值>
ED:
CREATE PROFILE ADMINPROFILE LIMIT
SESSION_PER_USER 2
CPU_PER_SESSION 10000
CPU_PER_CALL DEFAULT
CONNNET_TIME 500
IDLE_TIME 90
PASSWORD_LIFE_TIME 90
PASSWROD_REUSE_TIME 90
PASSWORD_REUSER_MAX 100
FILED_LOGIN_ATTEMPTS 5;

应用场景63:将概要文件授予用户

CREATE USER <username> PROFILE <概要文件>
eg:CREATE USER NEWUSER PROFILE ADMINPROFILE IDENTIFIED BY PWD;

查看用户NEWUSER的概要文件
SELECT USERNAME,PROFILE FROM DBA_USERS WHERE USERNAME='NEWUSER';

使用ALTER USER语句修改用户的概要文件
ALTER USER<USERNAME> PROFILE<PROFILENAME>
EG:ALTER USER NEWUSER PROFILE DEFAULT;
SELECT USERNAME, PROFILE FROM DBA_USERS WHERE USERNAME='NEWUSER';

应用场景64:查询用户的资源限制和口令设置信息
SELECT p.PROFILE,p.RESOURCE_NAME,p.LIMIT FROM DBA_USERS DBA_PROFILES P WHERE u.PROFILE=p.PROFILE AND u.USERNAME='NEWUSER';


----------------------数据字典---------------------

  数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的。

  比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等。

  数据库数据字典是一组表和视图结构。它们存放在SYSTEM表空间中

  当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息。

  用户可以用SQL语句访问数据库数据字典。

  数据字典内容包括:

  1,数据库中所有模式对象的信息,如表、视图、簇、及索引等。

  2,分配多少空间,当前使用了多少空间等。

  3,列的缺省值。

  4,约束信息的完整性。

  5,Oracle用户的名字。

  6,用户及角色被授予的权限。

  7,用户访问或使用的审计信息。

  8,其它产生的数据库信息。

  Oracle中的数据字典有静态和动态之分。

  1,静态数据字典-->主要是在用户访问数据字典时不会发生改变的,

  --例如某用户创建的表

  2,动态数据字典-->是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的。

  --当前锁住的对象

  静态数据字典:这类数据字典主要是由表和视图组成

  数据字典中的表是不能直接被访问的,但是可以访问数据字典中的视图。

  静态数据字典中的视图分为三类,它们分别由三个前缀够成:user_*、 all_*、 dba_*。

  user_*

  该视图存储了关于当前用户所拥有的对象的信息。(即所有在该用户模式下的对象)

  all_*

  该试图存储了当前用户能够访问的对象的信息。(与user_*相比,all_* 并不需要拥有该对象,只需要具有访问该对象的权限即可)

  dba_*

  该视图存储了数据库中所有对象的信息。(前提是当前用户具有访问这些数据库的权限,一般来说必须具有管理员权限)
-------------------------------------------------------------------------------------
应用场景65:在Enterprise Manager中修改概要文件

应用场景66:使用ALTER PROFILE 语句修改概要文件
ALTER PROFILE<PROFILENAME>LIMT<PAREMETERNAME><PAREMETERVALUES>......
eg:
ALTER PROFILE ADMINPROFILE LIMIT PASSWORD_LIFE_TIME 60;

应用场景67:删除概要文件
DROP PROFILE<概要文件名>[CASCADE];
EG:DROP PROFILE ADMINPROFILE CASCADE;


--------------Schema-----------------
定义:
A schema is a collection of database objects (used by a user.).
Schema objects are the logical structures that directly refer to the database’s data.
A user is a name defined in the database that can connect to and access objects.
Schemas and users help database administrators manage database security.

从定义中我们可以看出schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。

一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schem并作为该用户的缺省shcema。即schema的个数同user的个数相同,而且schema名字同user名字一一 对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些。

一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema。如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名。比如我们在访问数据库时,访问scott用户下的emp表,通过select * from emp; 其实,这sql语句的完整写法为select * from scott.emp。在数据库中一个对象的完整名称为schema.object,而不属user.object。类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema。这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间。

----------------表空间------------------------

表空间属性:

一个数据库可以包含多个表空间,一个表空间只能属于一个数据库

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

表这空间可以划分成更细的逻辑存储单元

采用从小到大,逐步拓展的方式介绍四个结构,并且与Schema、数据文件的区别进行对比。

数据块(Block)

数据块Block是Oracle存储数据信息的最小单位。注意,这里说的是Oracle环境下的最小单位。Oracle也就是通过数据块来屏蔽不同操作系统存储结构的差异。无论是Windows环境,还是Unix/Linux环境,他们的操作系统存储结构和方式、甚至字符排列的方式都是不同的。Oracle利用数据块将这些差异加以屏蔽,全部数据操作采用对Oracle块的操作,相当于是一个层次的抽象。

Oracle所有对数据的操作和空间分配,实际上都是针对数据块Block的操作。我们从数据表中搜索出一行,实际中Oracle就会从内存缓冲区(或者硬盘)中读取到该行所在的数据块,再返回这数据块上的指定数据行。Oracle无论是在缓冲区,还是在硬盘,进行数据操作的虽小单位也就是数据块。

数据块是有大小的,在一个数据库建立的时候,通过参数进行设置。注意,在Oracle数据库参数中,只有数据块大小的参数是建库之后不能进行修改的。数据块的大小,在一个数据库中可以支持多个,但是一般没有太大的意义,会给管理和调试带来一定的负担。

数据块的大小是通过kb字节个数来指定的,默认为8KB。相关参数为db_block_size,下面是查看block大小的语句。

SQL> show parameter db_block_size;

NAME TYPE VALUE

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

db_block_size integer 8192 //1024×8


设置数据块的大小是依据不同类型的系统的。如果数据块设置比较大,那么一次读取的数据行较多,相应对SGA内存消耗比较大,特定查询引发的换入换出可能较多。如果设置的过小,频繁的IO逻辑物理读也会引起性能问题。

与数据块有关系的另一个参数就是db_file_multiblock_read_count,表示一次从物理存储中读取的数据块数量。对一些数据挖掘系统,可以考虑调节此参数略大一些。

区exten

区extent是比数据块大一级的存储结构,表示的是一连串连续的数据块集合。我们知道,物理存储通常是随机的读写过程。即使在同一个文件里,我们也不能保证相同的一个信息是存储在绝对连续的物理存储空间的。Oracle数据存储同样如此。

在进行存储数据信息的时候,Oracle将分配数据块进行存储,但是不能保证所有分配的数据块都是连续的结构。所以,出现分区extent的概念,表示一系列连续的数据块集合。

视图dba_extents(或者all_extents、user_extents)是我们研究分区结构和存储构成的重要手段。

从视图中,我们可以清晰看出分区的几个特点。

首先分区是带有段特定性的。数据段segment是分区的上层组织单位,一个数据库对象对应一个segement,数据库对象是归属在不同的schema(owner)上的。所以,通过不同的数据段名称、不同的owner,乃至不同的tablespace表空间信息,就可以定位到数据区extent的信息描述。

另一部分信息是关于该区extent的分配信息,如所在文件编号,起始数据块block编号和数据块数量等内容。


数据段segment

数据段是与数据库对象相对应,一般一个数据库对象对应一个数据段。多个extent是对应一个数据段,每个数据段实际上就是数据库一个对象的代表。从dba_segments视图中,可以比较清楚看清数据段的结构。


从segment_type列的comment信息中,可以看出数据段的类型是多样的。任何种类的数据库对象,本质上都是一种数据段。数据表、索引、回滚、聚集这些都是数据段的一种表现形式。同时,数据段是在数据对象创建的时候就已经创建出来,随着对象体积的增大,而不断分配多个extents进行管理。

另一部分信息可以从dba_segments中读出的,就是该数据对象分配的空间大小和数据块、分区个数。使用这个视图,可以方便的获取到指定schema的所有对象大小。

SQL> select owner,sum(bytes)/1024/1024 as vol, sum(blocks) as totalblocks,sum(extents) as totalextents from dba_segments group by owner having wner='SYS';

OWNER VOL TOTALBLOCKS TOTALEXTENTS

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

SYS 585.5 74944 3248


上面查询,说明SYS的schema,所占用空间585.5MB,包括74944个数据块和3248个分区。

一个对象创建出来之后,在segment层次上是分配一个分区extent和八个数据块block。

有一个问题需要注意,通常我们的数据段是与数据对象相关。一个数据对象对应一个segment。但是,分区表的时候,一个分区要对应一个segment对象。还有就是,segment对象是可以指定存储在那个表空间里,实现存储划分的基础也就在于此。不同类型的segment划分建立在不同的表空间里,才有可能存放在不同的文件中,最后分布在不同的物理存储。

分区实际上就是存在分开存储的可能。一般一个对象是不会跨物理存储进行存放的,分区表是对应的多个segment。所以,分区表分开存储空间是可能的。

表空间tablespace

TableSpace是存储结构中的最高层结构。建立一个表空间的时候,是需要指定存储的文件。一个表空间可以指定多个数据文件,多个文件可以在不同的物理存储上。也就是说,表空间是可以跨物理存储的。但是有一点就是,表空间下一级对象数据段的存储,是不能指定存储在那个文件里的。所以,要想让数据对象访问IO负载均衡,需要指定不同的数据对象在不同的表空间里。这也就是为什么将数据表和索引建立在不同的表空间的原因。

表空间通过v$tablespace进行访问。

SQL> desc v$tablespace;

相对于前面的结构视图,表空间视图的结构要简单的多,只是一些描述信息。其中两个参数需要注意一下。

一个是bigfile,是一个标志位,标志表空间是不是所谓的大文件表空间。大文件表空间是在10g中推出的一个新特性,处于性能考虑,可以设置表空间为大文件表空间,存储超过百T的数据,但是要求数据文件只能有一个。另一个是flashback_on,表示表空间的闪回特性是否开启。

要注意,数据表段区块的概念集合,很容易与schema的结构相混淆。schema是一个组织概念,是来自于经典数据库理论范畴。在oracle中,Schema就是一个组织概念,一个user对应的就是一个schema。schema是逻辑对象的集合组织,同表空间等概念不是一个层面的。

在一个schema里,是可以将对象建立在任何数据表空间内的,只有一个默认表空间的概念default tablespace。指定默认表空间是在创建用户的时候指定的。


分清几个核心概念和各自的区别关系,就能更好的理解Oracle运行的各种机制。
----------------------------------------------------------------------------------

应用场景68:在Enterprise Manager中查看表空间信息

应用场景69:使用V$TABLESPACE视图查看表空间信息

SELECT * FROM V$TABLESPACE;

应用场景70:查看表空间属性信息

SELECT * FROM DBA_TABLESPACES;

应用场景71:查看表空间及其所属表空间的信息

SELECT * FROM DBA_TABLESPACE_GROUPS;

应用场景72:查看表空间中所包含的段信息

SELECT SEGMENT_NAME,SEGMENT_TYPE,TABLESPACE_NAME FROM DBA_SEGMENTS;

应用场景73:查看表空间中空闲区间的信息

SELECT TABLESPACE_NAME,BYTES,BLOCKS FROM DBA_FREE_SPACE;

应用场景74:在Enterprise Manager中创建表空间

应用场景75:使用CREATE TABLESPACE语句创建表空间

创建本地管理表空间
CREATE TABLESPACE OrclTBS01
DATAFILE 'D:\app\Administrator\oradata\orcl\OrclTBS01.dbf' SIZE 50M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

大文件表空间:
CREATE TABLESPACE OrclTBS02
DATAFILE 'D:\app\Administrator\oradata\orcl\OrclTBS02.dbf' SIZE 30M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128K;

CREATE BIGFILE TABLESPACE bigtbs
DATAFILE 'D:\app\Administrator\oradata\orcl\bigtbs.dbf' SIZE 10G;

临时表空间:
CREATE TEMPORARY TABLESPACE tmptbs
TEMPFILE 'D:\app\Administrator\oradata\orcl\tmptbs.dbf'
SIZE 20M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;

应用场景76:表空间中的段管理

创建自动段管理方式的表空间;
CREATE TABLESPACE OrclTBS01
DATAFILE 'F:\app\Administrator\oradata\orcl\OrclTBS01.dbf' SIZE 30M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT AUTO;

创建手段管理的表空间:
CREATE TABLESPACE OrclTBS02
DATAFILE 'F:\app\Administrator\oradata\orcl\OrclTBS02.dbf' SIZE 30M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
SEGMENT SPACE MANAGEMENT MANUAL;

应用场景77:表空间的数据块管理:

创建表空间时,指定表空间使用的数据块大小8KB

CREATE TABLESPACE OrclTBS01
DATAFILE 'D:\app\Administrator\oradata\orcl\OrclTBS01.dbf' SIZE 30M
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K;

应用场景78:创建撤销表空间
功能:
当执行ROOLBACK命令是,完成回归操作。
恢复数据库
使用闪回查询分析以前时间点的数据。
使用闪回技术从逻辑破坏中恢复数据。

CREATE UNDO TABLESPACE undotbs01
DATAFILE 'D:\app\Administrator\oradata\orcl\undotbs02.dbf' SIZE 2M REUSE;

应用场景79:在Enterprise Manager中修改表空间属性。

应用场景80:使用ALTER TABLESPACE语句重命名表空间

ALTER TABLESPACE OrclTBS02 RENAME TO OrclTBS03;

SELECT * FROM V$TABLESPACE;

应用场景81:向本地管理表空间中增加数据文件

ALTER TABLESPACE OrclTBS01
ADD DATAFILE 'D:\app\Administrator\oradata\orcl\OrclTBS11.dbf' SIZE 10M;

应用场景82:向临时表空间添加临时文件:
ALTER TABLESPACE tmptbs
ADD TEMPFILE 'F:\app\Administrator\oradata\orcl\tmptbs01.dbf' SIZE 20M;

应用场景83:修改大文件表空间的属性:

ALTER TABLESPACE bigtbs RESIZE 4G;

应用场景84:设置表空间的状态:

ALTER TABLESPACE OrclTBS01 OFFLINE;

SELECT TABLESPACE_NAME,CONTENTS,STATUS FROM DBA_TABLESPACES;

ALTER TABLESPACE OrclTBS01 ONLINE;

应用场景85:设置只读表空间

ALTER TABLESPACE OrclTBS01 OFFLINE;

SELECT TABLESPACE_NAME,CONTENTS,STATUS FROM DBA_TABLESPACES;

ALTER TABLESPACE OrclTBS01 ONLINE;

应用场景86:删除表空间

DROP TABLESPACE OrclTBS03;

DROP TABLESPACE OrclTBS01 INCLUDING CONTENTS;

DROP TABLESPACE OrclTBS01 INCLUDING CONTENTS AND DATAFILES;

应用场景87:统计表空间的使用情况

SELECT c.tablespace_name "表空间",
ROUND(a.bytes/1024/1024,2) "表空间大小",
ROUND((a.bytes-b.bytes)/1048576,2) "已使用空间",
ROUND(b.bytes/1048576,2) "剩余空间",
ROUND(b.bytes/a.bytes * 100,2)||'%' "剩余百分比"
FROM
(SELECT tablespace_name,SUM(bytes) bytes FROM DBA_DATA_FILES
GROUP BY tablespace_name) a,
(SELECT a.tablespace_name, NVL(SUM(b.bytes),0) bytes FROM DBA_DATA_FILES a, DBA_FREE_SPACE b
WHERE a.tablespace_name = b.tablespace_name (+) AND a.file_id = b.file_id (+)
GROUP BY a.tablespace_name) b,
DBA_TABLESPACES c
WHERE a.tablespace_name = b.tablespace_name(+) AND a.tablespace_name = c.tablespace_name
ORDER BY ROUND(b.bytes/1024/1024,2);

应用场景88:在CREATE TABLESPACE 语句中创建临时表空间组

CREATE TEMPORARY TABLESPACE temp_spc
TEMPFILE 'D:\app\Administrator\oradata\orcl\temp03.dbf'
SIZE 20M
TABLESPACE GROUP temp_grp;

应用场景89:使用ALTER TABLESPACE 语句创建临时表空间组

ALTER TABLESPACE temp_spc TABLESPACE GROUP new_temp_group

应用场景90:在Enterprise Manager中查看和添加临时表空间组

应用场景91:使用视图DBA_TABLESPACE_GROUPS查看临时表空间信息

SELECT * FROM DBA_TABLESPACE_GROUPS;

应用场景92:将表空间从临时表空间组中移出

ALTER TABLESPACE temp_spc TABLESPACE GROUP '';

应用场景93:表空间组分配给指定用户

CREATE USER LEE IDENTIFIED BY leepass
DEFAULT TABLESPACE Users
TEMPORARY TABLESPACE NEW_TEMP_GROUP;


ALTER USER LEE TEMPORARY TABLESPACE NEW_TEMP_GROUP;

SELECT USERNAME, DEFAULT_TABLESPACE, TEMPORARY_TABLESPACE
FROM DBA_USERS WHERE USERNAME='LEE';

ALTER DATABASE ORCL DEFAULT TEMPORARY TABLESPACE NEW_TEMP_GROUP;

应用场景94:查看回滚段信息:

SELECT SEGMENT_NAME, TABLESPACE_NAME, BYTES, NEXT_EXTENT
FROM DBA_SEGMENTS WHERE SEGMENT_TYPE='ROLLBACK';

COL NAME FOR A12
SELECT s.USN, n.NAME, s.EXTENTS, s.OPTSIZE, s.HWMSIZE, s.STATUS
FROM V$ROLLSTAT s, V$ROLLNAME n
WHERE s.USN=n.USN;

应用场景95:设置回滚段的管理模式

SHOW PARAMETER UNDO_MANAGEMENT

ALTER SYSTEM SET UNDO_MANAGEMENT=MANUAL
SCOPE=SPFILE;

应用场景96:合理规划和创建回滚段

CREATE ROLLBACK SEGMENT OrclRs01
TABLESPACE UndoTBS1
STORAGE (INITIAL 5M
NEXT 2M
MAXEXTENTS UNLIMITED);

应用场景97:修改回滚段的属性:

ALTER ROLLBACK SEGMENT OrclRs01 ONLINE;

SELECT NAME, STATUS FROM V$ROLLNAME, V$ROLLSTAT
WHERE V$ROLLSTAT.USN=V$ROLLNAME.USN;

ALTER ROLLBACK SEGMENT OrclRs01 SHRINK TO 1M;

应用场景98:删除回滚段

ALTER ROLLBACK SEGMENT OrclRs01 OFFLINE;
DROP ROLLBACK SEGMENT OrclRs01;

www.htsjk.Com true http://www.htsjk.com/oracle/23494.html NewsArticle Oracle442个应用实例----------概要文件 --------------------------概要文件讲解:--------------------------------- Oracle系统为了合理分配和使用系统的资源提出了概要文件的概念。所谓概要文件,就是...
评论暂时关闭