Chinaunix首页 | 论坛 | 博客
  • 博客访问: 878666
  • 博文数量: 206
  • 博客积分: 10276
  • 博客等级: 上将
  • 技术积分: 2358
  • 用 户 组: 普通用户
  • 注册时间: 2006-04-01 02:41
文章分类

全部博文(206)

文章存档

2014年(1)

2013年(1)

2012年(2)

2011年(10)

2010年(14)

2009年(15)

2008年(33)

2007年(90)

2006年(40)

我的朋友

分类: Oracle

2008-06-23 22:48:40

介绍
构件
oracle Database 10g
oracle Application Server 10g;
oracle Developer Suite;
oracle Applications 11i;
oracle Collaboration Suite;
oracle Services;

应该用标准语法.使用JOIN,CROSS JOIN,NATURAL JOIN等关键字的ANSI SQL:1999语法,
一个Segment被定义为任何一个消耗数据库内物理存储空间的实体.常见的段类型:
表,索引,回退,分区.每个Segment由数据库内连续存储空间块(盘区)构成.
操作系统块-->数据库块-->盘区-->段
PL/SQL:Oracle Procedural Language for SQL对象:匿名代码块,过程,函数,程序包,触发器
除了SQL,Web工具,PL/SQL和JAVA之外,Oracle公司还提供了把SQL命令及数据库连通性集成到传统编程语言中的能力.这种集成是通过使用Oracle预编译器和Oracle Call Interface(OCI)来实现的.

要想成为一名成功的Oracle数据库管理员(DBA),首先需要彻底了解Oracle的基础体系架构及其机制.了解Oracle的内存结构,后台进程和I/O活动之间的关系是至关重要的,然后才能学习怎样管理这些方面.

第二章 安装软件

OFA is designed to:
? Organize large amounts of complicated software and data on disk, to avoid device
bottlenecks and poor performance
? Facilitate routine administrative tasks such as software and data backup, which are often
vulnerable to data corruption
? Facilitate switching between multiple Oracle databases
? Adequately manage and administer database growth
? Help eliminate fragmentation of free space in the data dictionary, isolate other
fragmentation, and minimize resource contention。
要用到两个初始化参数:
安装中提示orainstRoot.sh
create the oracle inventory pointer file(/etc/oraInst.loc)

检查技术文档->检查系统需求->制定安装计划(OFA)->使用OUI   详细看书已经文档
安装要求:
硬件上:
512内存,1GBswap(或者是2倍的内存)
/tmp空间要达到400M
1.5GB的硬盘空间安装软件
1.5GB的硬盘空间安装数据库

第三章 安装数据库和体系架构

Oracle体系结构
按以下三个类别来描述
用户相关进程
总称为Oracle Instance 的逻辑逻辑内存结构
总称为Database的物理文件结构

用户进程
User Process:要么在用户自己的PC上,要么在中间层应用服务器上.然后这个User Process启动一个与实例的连接.Oracle把启动和管理User Precess与实例间通信的这个进程称作一个Connection.一旦这个Connection建立了起来,用户就在实例中建立了一个Session.当建立一个会话之后,每个用户就在主机服务器自身上启动了一个Server Process(共享服务器多个User Process共享Server Process).然后,由这个Server Process负责执行实际允许用户与数据库进行交互的各项任务.
PGA(Process Global Area):程序全局区,数据库给每个用户创建了一个PGA的辅助内存结构.PGA存储与用户具体相关的会话信息,比如Bind variable和Session variable.

Oracle实例
一个Oracle实例由Oracle的主内存结构和几个Oracle后台进程所组成;主内存结构又叫做SGA(System Global Area).当用户访问数据库中的数据时,Server Process就是和SGA进行通信.
SGA构件
Oracle把SGA内存划分成叫做Granule(区组)的组快来实现动态的空间分配.4MB,8MB OR 16MB
共享存储池:高速缓存由数据库用户已经发布的最常用的SQL语句(LRU)
数据库缓冲器告诉缓存:高速缓存由数据库用户最近访问过的数据(LRU)
重做日志缓冲器:存储事务信息以用于恢复目的
Java存储池:可选,在Oracle的JVM选件得到使用时,高速缓存最近使用的Java对象和应用软件代码
大存储池:为诸如RMAN备份与恢复之类的大型操作和Shared Server 构件高速缓存数据
流存储池:当Oracle的Advanced Queuing选件得到使用时,高速缓存跟排队的信息请求相关联的数据

参数:基本参数和高级参数
如:SGA_TARGET
SQL>select * from V$SGA
Fixed Size:用来存储由实例的后台进程所使用的信息的辅助空间
Variable Size:Shared Pool,Large Pool,Java Pool
Database Buffers Cache:
Redo Log Buffer
SQL>select component,current_size from v$sga_dynamic_components;
或用EM DatabaseControl来查看每个SGA构件的大小.

Oracle的后台进程
必需:SMON(System Monitor),PMON(Process Monitor),DBWn(Database Writer),CKPT(Checkpoint)
任选:ARCn(Archive),RECO(Recover),CJQn(Job Queue Monitor),Jnnn(Job Queue),Qnnn(Parallel Queue Slave),Dnnn(Dispatcher),Snnn(Shared Server),MMAN(Memory Manager),MMON(Memory Monitor),MMNL(Memory Monitor Light),RVWR(Recover Writer),CTWR(Change Tracking Writer)
Unix下查看后台进程 $ps -ef | grep PROD
在windows环境中,还有一个叫做OracleServiceInstanceName的Windows服务与每个实例相关联.必须启动这个服务,才能启动实例.

Oracle数据库
一个实例就是一个临时的内存结构,但是Oracle数据库是由驻留在主机服务器的磁盘驱动器上的一组物理文件所构成的.这些物理文件称做Control File,Data File,Redo File.跟Oracle数据库有关,但从技术上看不属于Oracle数据库的附加物理文件有Password File,PFILE,SPFILE,以及Archived redo log file.
Control File:
Data File:
Redo File:
了解Database Writer,Log Writer进程何时工作的.


DB control只要做:
? Performance monitoring
? Managing proactive alerts
? Controlling maintenance wizards and advisors
? User and database object administration
? Database backup and recovery
? Storage management
and much more.

在DBCA中可以修改shared server 还是独占server。

GRID Control 下面是management server和management repository


DBCA:
创建数据库
数据库配置(在选择了change database configured)
删除数据库
管理模板 :下面有三个选项

from an existing template
from an existing database(structure only)
from an existing database(structure as well as data)  

第四章 database interface
要点:
1.利用SQL*PLUS和iSQL*PLUS进入数据库。
2.表的结构
3.利用SQL查询,管理和定义数据
4.认清一些常见的数据库界面
iSQL*PLUS必须启动进程才能使用
isqlplusctl start
网址是:
port一般是5560


SQL分为几下几类:
? Data definition language (DDL) statements:create,replace,alter.drop
? Data manipulation language (DML) statements,insert,update,delete
? Transaction control statements
? Session control statements
? System control statements
? Embedded SQL statements


Oracle Reports is generally used for standard, fixed
reports. Oracle Discoverer is a data mining tool that allows users to browse data without
knowing the underlying structure and relationship of that data.

order by 默认是升序, 要是降序要加上desc


A transaction ends when any of the following occurs:
? A user issues a COMMIT or ROLLBACK statement without a SAVEPOINT clause.
? A user runs a DDL statement such as CREATE, DROP, RENAME, or GRANT. If the current transaction contains any DML statements, Oracle first commits the transaction, and then runs and commits the DDL statement as a new, single statement transaction.
? A user disconnects from Oracle. The current transaction is committed.
? A user process terminates abnormally. The current transaction is rolled back.

第五章 控制数据库
启动iSQLPLUS
$isqlplusctl start
停止iSQLPLUS
$isqlplusctl stop


启动database control
emctl start dbcontrol
停止database control
emctl stop dbcontrol
查看database control 状态
emctl status dbcontrol


nomount:
1)读取初始化参数文件:
   先是spfileSID.ora 然后是spfile.ora 最后是initSID.ora
2)指定SGA
3)开启后台进程
4)打开alert文件和trace文件


Mount 下可以:
1)rename datafile(当表空间是offline时,可以在数据库打开时候修改)
2)修归档模式
3)执行全数据库恢复


OPEN:
open the online data files
open the online redo log files

第六章 存储管理
要点:
1.认清表空间和数据文件的用途
2.建立表空间
3.管理表空间
4.获得表空间的信息


表空间的空间管理方式
本地管理:
1.free extent 在表空间管理
2.bitmap来记录空间的extent
3.每个bit correspods来一个块或者一组块
4.bit指示空间是used
extents在表空间内通过bitmap管理,每个在bitmap中的bit对应一个块和或者一组块。当extent指定或者回收时候,bitmap的值相应的改变。

字典管理
1.空闲extent在数据字典中管理
2.数据字典中的表当extent 指定或者回收时候更新
extent在数据字典中管理。当extent指定或者回收时候,在数据字典中的表更新。


本地管理的优点:本地治理表空间与字典治理表空间相比大大提高了治理效率和数据库性能,其优点如下:

1.减少了递归空间治理
本地治理表空间是自己治理分配,而不是象字典治理表空间需要系统来治理空间分配,本地表空间是通过在表空间的每个数据文件中维持一个位图来跟踪在此文件中块的剩余空间及使用情况。并及时做更新。这种更新只对表空间的额度情况做修改而不对其他数据字典表做任何update操作,所以不会产生任何回退信息,从而大大减少了空间治理,提高了治理效率。同时由于本地治理表空间可以采用统一大小分配方式(UNIFORM),因此也大大减小了空间治理,提高了数据库性能。

2.系统自动治理extents大小或采用统一extents大小
本地治理表空间有自动分配(AUTOALLOCATE)和统一大小分配(UNIFORM)两种空间分配方式,自动分配方式(AUTOALLOCATE)是由系统来自动决定extents大小,而统一大小分配(UNIFORM)则是由用户指定extents大小。这两种分配方式都提高了空间治理效率。

3.减少了数据字典之间的竞争
因为本地治理表空间通过维持每个数据文件的一个位图来跟踪在此文件中块的空间情况并做更新,这种更新只修改表空间的额度情况,而不涉及到其他数据字典表,从而大大减少了数据字典表之间的竞争,提高了数据库性能。

4.不产生回退信息
因为本地治理表空间的空间治理除对表空间的额度情况做更新之外不修改其它任何数据字典表,因此不产生回退信息,从而大大提高了数据库的运行速度。

5.不需合并相邻的剩余空间
因为本地治理表空间的extents空间治理会自动跟踪相邻的剩余空间并由系统自动治理,因而不需要去合并相邻的剩余空间。同时,本地治理表空间的所有extents还可以具有相同的大小,从而也减少了空间碎片。

6.减少了空间碎片

7.对临时表空间提供了更好的治理
select dbms_metadata.get_ddl('TABLE','fuck','YANWEI') from dual;

不能指定临时表空间为automatic extent allocate
不能指定UNDO表空间为uniform extent allocate

在本地管理的表空间:
antomatic
manual(必须指定PCTUSED,FREELISTS AND FREELIST GROUPS)

logging:就是表空间的变化记录在redo stream,然后写到redo log里。
可以在表空间上设置REDO LOG的写方式LOGGING、NOLOGGING和FORCE LOGGING。其中设置FORCE LOGGING则会覆盖对象级的设置,使建立在该表空间上的对象都具有LOGGING的属性。

如果你想把一个字典管理的表空间转换成本地管理的表空间,利用DBMS_SPACE_ADMIN.TABLESPACE_MIGRATE_TO_LOCAL包
利用TOAD或者select dbms_metadata.get_ddl('TABLESPACE','TABLESPACENAME','') FROM DUAL查询建立表空间的语句。(必须大写)
select dbms_metadata.get_ddl('TABLESPACE','USES','SYS') FROM DUAL;
数据库需要要有的是SYSTEM,UNDO。
不能read only是system sysaux。
将表空间设为read only的限制条件:

1)           表空间必须online

2)           在线备份该表空间时不能设为read only

3)           系统会等待当前事务完成

4)           不能包含活动回滚段
临时表空间:排序,存放临时段(临时表)。不能offline。
Temp表空间的限制:不能在没有新的临时表空间的情况下删除当前的临时表空间,不能被offline或改为永久表空间。
UNDO只能用本地管理。


移动数据文件:

1)将对应的表空间offline(系统会等待当前事务结束)

2)alter tablespace user rename datafile '*01.dbf' to '*02.dbf';

3)对应的表空间online

重命名系统表空间

1)    sql>shutdown immediate;

2)    sql>startup mount;

3)    sql>alter database rename file  '*1.dbf' to  '*2.dbf';



Obtaining tablespace and data file information can also be obtained by querying the following:
? Tablespace information:
- DBA_TABLESPACES
- V$TABLESPACE
? Data file information:
- DBA_DATA_FILES
- V$DATAFILE
? Temp file information:
- DBA_TEMP_FILES
- V$TEMPFILE


建立表空间

CREATE TABLESPACE data01
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M
UNIFORM SIZE 128k;             #指定区尺寸为128k,如不指定,区尺寸默认为64k

删除表空间

DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;


一、建立表空间

CREATE TABLESPACE data01
DATAFILE '/oracle/oradata/db/DATA01.dbf' SIZE 500M
UNIFORM SIZE 128k;             #指定区尺寸为128k,如不指定,区尺寸默认为64k

二、建立UNDO表空间

CREATE UNDO TABLESPACE UNDOTBS02
DATAFILE '/oracle/oradata/db/UNDOTBS02.dbf' SIZE 50M

#注意:在OPEN状态下某些时刻只能用一个UNDO表空间,如果要用新建的表空间,必须切换到该表空间:

ALTER SYSTEM SET undo_tablespace=UNDOTBS02;

三、建立临时表空间

CREATE TEMPORARY TABLESPACE temp_data
TEMPFILE '/oracle/oradata/db/TEMP_DATA.dbf' SIZE 50M

四、改变表空间状态

1.使表空间脱机

ALTER TABLESPACE game OFFLINE;

如果是意外删除了数据文件,则必须带有RECOVER选项

ALTER TABLESPACE game OFFLINE FOR RECOVER;

2.使表空间联机

ALTER TABLESPACE game ONLINE;


3.使数据文件脱机

ALTER DATABASE DATAFILE 3 OFFLINE;

4.使数据文件联机

ALTER DATABASE DATAFILE 3 ONLINE;

5.使表空间只读

ALTER TABLESPACE game READ ONLY;

6.使表空间可读写

ALTER TABLESPACE game READ WRITE;

五、删除表空间

DROP TABLESPACE data01 INCLUDING CONTENTS AND DATAFILES;

六、扩展表空间

首先查看表空间的名字和所属文件

select tablespace_name, file_id, file_name,
round(bytes/(1024*1024),0) total_space
from dba_data_files
order by tablespace_name;

1.增加数据文件
ALTER TABLESPACE game
ADD DATAFILE '/oracle/oradata/db/GAME02.dbf' SIZE 1000M;

2.手动增加数据文件尺寸
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf'
RESIZE 4000M;

3.设定数据文件自动扩展
ALTER DATABASE DATAFILE '/oracle/oradata/db/GAME.dbf
AUTOEXTEND ON NEXT 100M
MAXSIZE 10000M;

设定后查看表空间信息

SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,
(B.BYTES*100)/A.BYTES "% USED",(C.BYTES*100)/A.BYTES "% FREE"
FROM SYS.SM$TS_AVAIL A,SYS.SM$TS_USED B,SYS.SM$TS_FREE C
WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE_NAME;

1 oracle数据库如何增加表空间大小:

两种方法,一种是为表空间增加数据文件
alter tablespace users add datafile 'c:oracleora81oradatasiduser002.dbf' size 100M;
alter tablespace users add DATAFILE '/dev/rr_ttbbxxA_4g' size 3960M;

另一种方法是增加表空间原有数据文件尺寸(裸设备如果最大了就无法扩展,不同于windows文件,需要采用
第一种方法,再次增加一个裸设备):
alter database datafile 'c:oracleora81oradatasidusers.dbf' resize 1000M;
alter database DATAFILE '/dev/rr_ttbbxxA_4g' resize 3960M;

修改某些参数得命令:alter database
alter database DATAFILE '/dev/rttbbxxA_4g' AUTOEXTEND ON NEXT 256K MAXSIZE UNLIMITED;


2 在 Oracle Database 10g 中,您可以类似地为用户指定一个默认表空间。
在数据库创建期间,CREATE DATABASE 命令可以包含子句 DEFAULT TABLESPACE 。
在创建之后,您可以通过发出以下命令来使一个表空间变成默认表空间。
ALTER DATABASE DEFAULT TABLESPACE ;

3 删除表空间
DROP TABLESPACE TableSpaceName [INCLUDING CONTENTS [AND DATAFILES]]

阅读(2119) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~