当前位置:文档之家› ORACLE数据库基础知识1

ORACLE数据库基础知识1

ORACLE数据库基础知识1
ORACLE数据库基础知识1

第一部分 Oracle数据库概念与原理

一、Oracle数据库概念

1. 数据库

数据库是一套解决信息管理问题的工具,是数据文件及处理这些数据文件的程序的集合。一个数据库系统必须实现在多用户环境下可靠地管理大量的数据,使得很多用户在并发处理时获得相同的结果,而且必须具有处理数据的高效性、可靠性、安全性和容错性,同时提供简便易用的客户端用户操作过程和应用接入。

2. Oracle数据库

Oracle数据库是采用数据库进程和应用程序分进程处理的Client/Server结构的关系型数据库,采用大型数据库的磁盘空间管理形式,支持大量用户同时操作相同的数据,实现高度可靠性、高度的安全性、高效率和在线备份机制。Oracle数据库适合于各种不同的硬件环境和不同的操作系统,且具有接口方便和控制容易的特性,并支持多点实时复制。

二、Oracle数据库原理

1. Oracle数据库的基本任务

(1)录入数据;

(2)存储数据;

(3)查询、处理数据

2. Oracle数据库的组成结构

Oracle按照应用情况可以分为核心数据(DATA)、操作系统(Operation System)、数据库服务器部分(Oracle Server)、Oracle SQL Server程序、Oracle工具(包括SQL*PLUS和很多像Developer 2000、designer 2000等工具)以及Oracle的各种应用。

按照Oracle的对象组成结构来看,Oracle数据库由以下几部分组成:

⑴实例(Instance):Oracle实例是一组有自己的系统全局区和与其相关数据库文件的Oracle服务器进程,每个实例都有自己的SID(系统识别符)。

⑵对象(Object):由应用程序中的SQL语句引用的表空间、用户、表、视图、索引、权限、DBA(数据库管理员)等。

⑶程序:也是Oracle数据库的过程,主要包括客户过程(client processes),根据用户的要求向服务器过程提出需求信息的请求;服务器过程server processes),接收用户过程发出的请求,并根据请求与数据库通信,完成对数据库中数据的处理。

⑷文件:包括数据文件(Datafile),存放所有数据库有关的数据。

日志文件(Log File),也称重演日志文件(Redo Logs File)或事务记录文件(Trasaction Log File),记录针对数据库进行的修改操作或各种事务,节省数据库直接操作数据文件的时间和次数,提高处理效率。

控制文件(Control File),存放与Oracle数据库所有文件均相关的关键信息,Oracle数据库通过控制文件保持数据的一致性,以及恢复数据时使用哪些重演日志。

每个数据库至少应该有两个以上的控制文件和日志文件备份。

⑸内存结构

Oracle的内存结构SGA主要是一个通信器,它是一块存放系统信息的内存区域,使得通信过程尽量能够在内存中处理, 达到快速度、高效率。所有用户进程和服务器进程都能够访问这个内存结构。SGA区主要分为四块:

① Data Buffer Cache(数据高速缓冲区)中存放着Oracle最近使用过的数据库数据块,当用户一次访问数据时,用户进程从物理磁盘中读取数据后将其放在这个高速缓冲区,下一次或其他用户访问时从缓冲区读取,Oracle数据库根据数据被访问的频度和缓冲区的物理大小通过相应的HASH算法将经常访问的数据保留,而去除不经常访问的数据块。

② Dictionary Cache(Row Cache,字典高速缓冲区)用于保存数据字典中的行,数据字典中存放Oracle系统管理时需要的所有信息,这些信息包括:访问Oracle数据库的用户以及他们访问哪些数据库对象和这些对象所放的位置等。

③ Redo Log Cache(Transaction Log Cache,即重演日志缓冲区),任何需要事务在写入到重演日志之前首先放到缓冲区中,然后定期将其写入到重演日志。

④ Share SQL Pool(共享SQL池)相当于程序高速缓冲区,所有用户的经过语法分析的、准备执行的SQL语句都放在此共享池中。

3. Oracle数据库的数据处理流程

Oracle数据处理流程, 下面以简单的update操作为例加以说明。

先经过系统监视器(SMON)和过程监视器(PMON)检测数据库运行正常,Server进程和Clients进程运行在不同的机器上,彼此通过网络连接,

①一个Oracle实例运行在数据库Server主机上,用户进程通过SQL*Net连接到Server主机,Server根据User Process的请求启动一个Server Process。

②用户通过SQL语句向Server发出查询或者修改数据信息的请求,并且提交。

③数据库Server进程接到请求后检测SGA区中Share Pool中的共享SQL 池是否有相同的SQL语句。如果有,Server进程检验用户的合法性,然后执行共享池中的SQL语句;如果没有,Server进程在共享池中产生一个新的SQL语句,可以供以后任何进程使用,然后执行此SQL语句。

④ Server进程检测所有操作的表是否在共享池,如果在,则直接执行下一步;如果不在,从数据库文件中读取放到高速缓冲区中;此时如果需要擦除缓冲区中的脏数据块,则需要通过校验点CKPT进行校验,再执行下一步。

⑤将原来共享池中的数据写入到回滚段 (Redo Log Buffer),通过LGWR在重演日志中生成该事务的一个拷贝。

⑥通过DBWR修改数据文件(Data Files),将执行成功的信号返回到SGA 区。

⑦将完成的事务记录到重演日志中。

⑧清除回滚段的信息。

⑨完成本次操作。

说明:以上LCKn为lock(锁)情况,RECO 为RECOVER(恢复)过程,SNPn为snapshot Refresh Process(快照刷新进程),Qnnn为Parallel Query Processes(并行查询进程),ARCH为Archiver(物理热备份归档处理进程)

第二部分:Oracle数据库的安装与建立

一、Oracle数据库的安装

以ORACLE816在AIX操作系统上安装为例,下面介绍安装过程中的一些关键步骤和有关注意事项,详细安装请参考随机手册。

1. 需要运行oracle数据库的机器在安装系统时必须使swap区为为系统内存的2-3倍,

建议为3倍。(如果物理内存超过1GB,则两倍就足够)

2. 建立Oracle软件的安装点:建议将安装点统一放在oracle用户缺省主目录:

/home/oracle下,不需要手工创建安装点目录

3. 用SMIT建立:GROUP(oracle)和USER(oracle),并将oracle用户加入到这个组中,如果上面步骤已经建立了安装点,将ORACLE用户主目录设置成安装点目录,如果没有建立了安装点,则可以用缺省主目录:/home/oracle ,然后在用户主目录下建立orahome属主为orcle:oracle,将该目录作为ORACLE系统主目录,注意,ORACLE系统主目录应该与环境变量:ORACLE_HOME保持一致。

4. 在AIX操作系统上安装ORACLE数据库不需要调整内核参数。

5. 以oracle用户在X-WINDOWS界面登录(如果在PC上远程安装,需要用Reflection 软件,记住,不管是在本机还是在客户端安装,均要用采用英文环境安装,否则,安装可能出问题!)然后修改两个文件:.profile和.dtprofile ,将.profile文件修改成:umask 022

export TERM=vt100

export DISPLAY=localhost:0.0

export ORACLE_BASE=/home/oracle

export ORACLE_HOME=$ORACLE_BASE/orahome

export ORACLE_SID=zxin

export PATH=$PATH:$ORACLE_HOME/bin:.

export

CLASPATH=JRE_Location:$ORACLE_HOME/jlib:$ORACLE_HOME/product/jlib export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib export LIBPATH=$LIBPATH:$ORACLE_HOME/lib

export LANG=Zh_CN

export LOCPATH=/usr/lib/nls/loc

export NLSPATH=/usr/lib/nls/msg/%L/%N:/usr/lib/nls/msg/%L/%N.cat

set -o vi

PATH=$PATH:/usr/vac/bin

export PATH

PS1='$PWD$ '; export PS1

然后将.dtprofile文件中最后一行:# DTSOURCEPROFILE=true前面的#号去掉

7. 在图形界面中开启终端窗口:然后用su命令以超级用户登录,运行以下命令:mount /cdrom (由于已经制作/cdrom文件系统,所以可以直接mount,不需要CDROM设备号)

8. 退出图形界面,右键选择‘log out’,以oracle用户重新登录使环境变量生效

9. cd /cdrom 然后在当前目录下运行./runInstaller开始oracle的安装

10. 安装选择注意事项:

选择需要安装的ORACLE产品:Oracle8i Enterprice Edition 8.1.6.0.0

选择安装类型:custom

产品语言中(product language)增加:Simplified Chinese

安装过程提示是否要建缺省数据库,选择NO

安装最后阶段根据提示运行root.sh完成用超级用户权限的有关配置。

系统安装完毕后,生成缺省系统管理员用户:system和sys,默认密码分别为manager 和change_on_install。

10. 安装过程结束后,安装程序会利用Net8进行网络配置:在图形界面下按照要求添

入本机IP地址,端口号和服务名,系统自动生成 $ORACLE_HOME/network/admin目录下的两个文件:listener.ora 和 tnsnames.ora

11. 以超级用户,修改侦听端口文件:#vi /etc/services,在文件的最后添加:

listener1 1521/tcp #oracle listener port1

listener2 1521/tcp #oracle listener port2

二、Oracle数据库启动和关闭

1. 启动数据库:

(1)可以利用写好的脚本文件自动启动%dbstart或者依照以下步骤启动:

首先以oracle用户身份启动Server Manager,以数据库系统管理员用户连接到数据库,连接到internal.

$ svrmgrl(命令格式进入数据库管理状态)

SVRMGR>connect internal (以sysdba身份登录)

(2)启动Oracle实例(Instance)、Mount数据库(database)、打开数据库

SVRMGR>startup(默认方式为启动实例,

mount数据库和打开数据库步骤打开数据库,即:

Startup nomount

alter database mount

alter database open)

如果不以默认方式启动数据库,可以有以下几种方式:

●启动实例,mount数据库,但不打开数据库

●启动实例,mount数据库,打开数据库

●带参数文件的方式启动数据库

SVRMGR>startup pfile=/path/pfilename.

●打开数据库后,可以执行下述指令来限制只有拥有”Restricted Sesstion”系

统特权的用户才可以登录到数据库

SVRMGR>alter system enable restricted session

用下述语句解除该限制:

SVRMGR>alter system dusable restricted session

⑶授权SQLNET可以远程访问该数据库,启动Listener进程:

$1snrctl start

启动ORCLE侦听后台进程,如果已经启动,可以先用: lsnrctl stop 关闭后再启动,然后用:tnsping [servicename] 检测Listener后台进程是否启动

2. 关闭数据库

⑴先关闭Oracle的Listener Server,以Oracle 用户执行$1snrctl stop。

⑵再关闭Oracle 数据库,进入数据库管理状态:SVRMGR> connect internal:

SVRMGR> shutdown:(缺省为normal方式,停止接受新的数据库联机请求,等待当前所有联机请求处理完正执行的联机程序,等待数据所有的Commit和

rollback 执行完成以后关闭数据库。)

SVRWGR> shtudown immediate;(停止接受新的数据库联机请求,立即中断目前

所有联机用户正执行的SQL指令,回滚所有用户尚未承诺的交易后立即关闭

数据库)

SVRMGR> shutdown abort(立即终止一切对数据库的所有会话,关闭数据库实例。此种方式立即关闭数据库以后,当下一次启动数据库时,Oracle需要做很多

修复数据库工作,所以启动会花较长时间。)

三、建立数据库

1、创建数据库

安装完数据库以后,需要根据应用程序的需求建立一个相应能满足要求的数据库。

创建数据库的主要步骤如下:

(1) 通过应用情况设计和决定数据库的内容。

(2) 设计数据库的结构使得数据库内容紧凑和减少碎片(初步创建时可以使用默认

设置)。

(3)安装时事先定好ORACLE用户的环境变量,主要有:ORACLE_SID 、

ORACLE_HOME和相关的路径设置。

(4) 从标准例子的init.ora文件中拷贝和编辑参数文件。必须配置的参数有db_name

(数据库名称)、 control_files (控制文件名称和位置,可以有多个)和重做日志

文件个数等等,其它各项可以在安装数据库时设置成默认参数。具体有以下参数值得重视:

Db_block_size :该参数设置ORACLE数据库Database Block的大小,它代

表ORACLE数据库数据存取的最小单位,最好是操作系统块大小的整数倍

为宜,较大的设置值可以减少大量存取数据的时间,但会浪费磁盘空间,

该参数在创库时一旦设置,便不能更改,除非重新创建数据库,一般设置

大小:4096或8192

Db_block_buffers :该参数设置ORACLE数据库内存缓冲区块的个数,该

参数和Db_block_size的乘积即为整个数据高速缓冲区Database Buffer

Cache的大小,该值要根据系统物理内存情况设置成一个比较大的数

Log_checkpoint_timeout :该参数设置距上次触发checkpoint事件过多少秒

后触发下一次checkpoint事件,该值设大可以减少磁盘I/O的频繁程度,推

荐设置(缺省设置):1800[秒]

Log_buffer :该参数设置Redo Log Buffer的大小,设大该值,可以减少

Redo日志文件磁盘I/O。

nls_language :该参数设置国家语言有关的各种NLS数据显示格式参数,推

荐设置:“SIMPLIFIED CHINESE”。

nls_territory :该参数设置国家惯例有关的各种NLS数据显示格式参数,推

荐设置:“CHINA”

shared_pool_size :该参数主要包含共享SQL池、字典高速缓冲区,设大该

值可以增加运行SQL语句和数据字典在内存中的占有率,以此增加数据库

SQL语句的执行效率,推荐设置较大的值

(5) 连接到数据库的Server端启动svrmgrl,连接成internal状态。以nomount方式

启动数据库

SVRMGR>startup nomount

(6)使用create database的sql命令创建数据库

主要格式:

sql> create database databasename

[controlfile1 [ controlfile2 ]]

2>[logfile [group n] filespec] [datafile

filespec] [maxdatafiles n]

3>[archivelog (noarchivelog)]

注意:filespec包括文件的位置、名称、大小。

举例:

① SVRMGR>create database test

2>datafile '/data1/oracle/dbfile/test.dbf' size 100M reuse autoextend on

3> next 5M maxsize 200M

4>logfile group 1 '/data1/oracle/dbfile/redo01.log' size 30M,

5>group 2 '/data1/oracle/dbfile/redo02.log' size 30M

6>character set ZHS16GBK;

(7) 为保证数据库的安全性创建多个redo log文件和 control files文件。

①增加control file文件:

SVRMGR>shutdown

$cp controlfile1 controlfile2

$编辑initdbname.ora修改有关

control_file = ( path/controlfile1, path/controlfile2 )的内容

重新启动数据库即可完成。

②增加redo log的个数,需要修改数据库完成,

举例:

SVRMGR>alter database test add logfile member

2> '/data1/oracle/dbfile/redo03.log' to group1;

(8)创建表空间

命令和步骤:

进入svrmgrl状态,即 SVRMGR>connect internal,命令为create tablespace

有关参数说明:

名称,数据文件,位置,大小

举例:

(1)创建新的表空间

SVRMGR>create tablespace testspace datafile '/data1/oracle/

dbfile/test.dbf'

2>size 100M reuse autoextend on next 5M maxsize 200M;

(2)增加表空间到已存在的表空间

SVRMGR>alter tablespace testspace add datafile '/data1/oracle/

dbfile/test1.dbf'

2>size 20M reuse autoextend on next 5M maxsize 100M;

(9)创建用户(user)、授权(grant) 、创建角色(role)

Oracle数据库安装完成以后就有两个系统用户system和sys,如果需要创建其他用户,首先以system用户连接,默认密码为manager

sqlplus system/manager

(1)创建用户:

基本命令:

sql>create user username identified {by passwrd |externaly}

2>[default tablespace tbname1] [temporary tablespace

tbname2]

3>[quota 10M on tbspacename1] [quota 2 M on system]

4>profile default;

举例:

①创建用户:sql>create user joke identified by abcd1234;

创建用户:

sql>create user joke1 idetified by 1234abc default

2>tablespace testspace temporay tablespace temp_ts

3>quota 100M on testspace quota

30M on system

4>profile default;

②修改密码:sql>alter user joke identified

by 1234cdef;

修改用户:sql>alter user joke identified by

1234cdef default

2>tablespace data_ts temporary

tablespace temp_ts

3>quota 120M on data_ts

profile default;

③删除用户: sql>drop user joke[cascade]; (cascade选项代表连同用户所有的

对象一起删除)

(2) 授权(grant):包括授予系统权限和授予用户权限

①系统权限:

命令格式:

sql>grant {system privilege|role } [,{system

privilege |role},...]

2>to {user |role} [,{user |role }]...[with

admin option] 授予权限

sql>revoke {system privilege |role } [,{system

privilege |role}...]

2>from {user |role } [,{user|role}]...收回权限

举例:sql>grant system privilege to joke;

sql>revoke system privilege from

joke;

②对象权限:

命令格式:

sql>grant object privilege [(column[,column])]

on object to {user|role}

2>[with grant option]

用户可授予的权限包括:all, alter, delete, execute, index, insert, references,

select, update

用户授权的对象包括:表、视图、序列、过程、函数、包、快照或者这些对

象的同义词。

举例:

sql>grant select on COMFORT to joke

(目前的连接用户授予joke对表COMFORT的select访问权限。)

sql>grant all on SOMEFORT to joke with grant option

(目前的连接用户授予joke对视图SOMEFORT

的所有权限,包括joke可以将其转授予其他用户或角色)

sql>grant all on SOMEFORT to role_joke

with grant option

(将权限授予角色role_joke)

(3)创建角色(role)

角色的含义是具有同种权限的用户集,类似于UNIX系统的组的概念,即可以将相关的权限授予角色,然后将相关的角色授予相关的用户,则此类

用户就会拥有与角色相同的权限,不用一个一个地授予。一共有三种标准的

角色:①连接角色(Connect Role),临时用户,尤其是那些不需要建表的用

户,一般给予他们connect role,其他权限必须另外授予。②资源角色

(Resource Role),对经常性访问数据库或者更成熟的用户可以授予

resource role,这些用户可以创建自己的表、序列、过程等对象。③数据库

管理员角色(DBA Role),拥有所有的系统权限。

命令格式:

sql>create role name [{not identified|identified}]

2>[{by password|externally}]

举例:

sql>create role manager identified

externally;

sql>create role clerk identified by

aaabbb1;

修改密码:

sql>alter role clerk identified by

bbbccc1;

授予角色权限命令和授予用户一样,角色的权限还可以授予用户,关系图

所示。

3. 建表、建视图、建索引

表由表名、列、和数据类型三部分组成,对有create table,create index 权限

的用户都可建表,建索引权限。

(1)简单命令和语法:

sql>create table table_name (column_name

datatype [ {null |not null}|

{constraint constraint-name unique|primary key}] ;

sql>create view view_name as select

{*|column} from table_name where

condition;

sql>create [unique|bitmap] index

index_name on

table_name (column_name

[,column_name] ....);

(2) 举例

●建表(create table)

①直接创建表:

sql>create table acctinfo (

2> acctdate char(10) not null,

3> acctuser varchar(10) not null,

4> acctstart varchar(20) not null,

5> acctend varchar(20) not null,

6> acctuse int not null,

7> accthalf int null,

8> acctip varchar(20) not null,

9> primary key (acctuser,acctip) )

10>TABLESPACE TEST_SP;

②根据已经存在的表创建新表

sql>create table acctnew as select acctdate,

acctuser, acctuse

2>where acctip='202.96.30.34';

●建视图(create view)

sql>create view acct_view as select

acctuser,acctip,acctuse from acctinfo

2>where acctuse>500 and

(acctip='202.96.30.34' or

acctip='202.96.30.35');

●建索引create index举例

sql>create index acctindex1 on acctinfo

(acctip);

sql>create index acctindex2 on acctinfo

(acctuse,acctuser);

sql>create index acctindex3 on acctinfo

(acctdate,acctuser,acctuse,acctip);

●修改表:

sql>alter table acctinfo modify(

2>acctbak varchar2(300) null);

●删除表:

sql>drop table acctinfo;

●删除表内容而保留其结构

sql>truncate table acctinfo;

备注:以上建表和建索引部分可以通过写成脚本文件执行来完成

第三部分.ORACLE数据库的应用

数据库的应用处理部分主要包括对数据库表的查询、修改、插入、删除、建立临时表、修改表的基本操作,通过数据库应用部分才能达到管理数据信息,处理各种数据,完成相应的数据处理和信息管理工作。

一、查询

1. 查询,select

2. 主要命令和语法:

sql>select /*+ index(index_name) */ [all |distinct|unique] select_list

2>[from table_name ]

3>[where search_conditions]

4>[group by [al] aggregate_free_expression [,aggregate_free_ expression]....]

5>[having search_conditions]

6>[order by table_name.column_name]

7>[union another_select_query list];

关键字和选项

all 缺省值,指示结果含所有的行;

distinct|unique 结果中含有非重复行;

select_list 包含一项或多项以下内容:

*,表示按照create table的顺序排列的所有列,

Column_name1,column_name2,...

可以使用常量,算术表达式等。

From 决定select 命令使用那些表和视图,一般必须有这一项;

Where 需要查询的条件

Order by 按照不同的列排序

Group by 按照不同的列归类

Having 与Group by结合用,按指定条件过滤已经分类的查询

UNION 表示联合多步查询

3. 举例:

(1) 基本查询

①查询所有表BCOL_REG_ACCT中的所有数据:

sql> select * from bcol_reg_acct;

②查询BCOL_REG_ACCT中的两列,登录日期LOGIN_DATE和起始时间START_TIME:

sql>select LOGIN_DATE,START_TIME

from BCOL_REG_ACCT;

③查询所有LOGIN_DATE='JUN-20-1998'的两列LOGIN_DATE和用户用户名LOGIN_NAME:

sql>select LOGIN_DATE,LOGIN_NAME

from BCOL_REG_ACCT

2>where LOGIN_DATE='JUN-20-1998';

④查询出所有用户名LOGIN_NAME为abcde,登录日期大于'JUN-20-1998'的所有三列

LOGIN_DATE,LOGIN_NAME,START_TIME,并且按照登录日期的顺序排列:

sql>select LOGIN_DATE,LOGIN_NAME,

START_TIME from BCOL_REG_ACCT

2>where LOGIN_NAME='abcde' and

LOGIN_DATE>'JUN- 20-1998'

3>order by LOGIN_DATE;

⑤非等值条件查询,查询出所有用户名以abc开头,登录时间界于JUN-10-1998和JUN-20-1998之间,连接时长不等于

5000的所有列,并以LOGIN_NAME反向排序:

sql>select * from BCOL_REG_ACCT

2>where LOGIN_NAME like 'abc%'

3>and LOGIN_DATE between 'JUN-10-

1998' and 'JUN-20-1998'

4>and CONNECT_DUR!=5000

5>order by LOGIN_NAME desc;

⑥使用空值(NULL)查询:

查询出LOGIN_NAME,LOGIN_DATE,如果为空值则以JUA-01-1998代替,START_TIME符合LOGIN_NAME不为空,且

START_TIME为空的列。

sql>select LOGIN_NAME,nvl(LOGIN_

DATE,JUA-01-1998),START_TIME

2>from BCOL_REG_ACCT

3>where LOGIN_NAME is not NULL

4>and START_TIME is NULL;

⑦基于值集的查询,查询出用户名LOGIN_ NAME在

abcde,abcdf,abcdg,abcdh中,且日期LOGIN_DATE大于

'JUN-20-1998' 和小于'MAY-20-1998'的所有列并且按照LOGIN_DATE的顺序排列,并按照LOGIN_DATE归类,即每天为一

类数据。

Sql>select * from BCOL_REG_ACCT

2>where LOGIN_NAME in ('abcde','abcdf',

'abcdg','abcdh')

3>and (acctdate>='06/20/1998' or acctdate

<'05/20/1998')

4>order by acctdate,group by acctdate;

(2) 使用表达式

查询出符合留入字节树大于1000的所有连接时长(CONNECT_DUR)和留入字节数与加上1000再除以100的数值:

sql>select CONNECT_DUR,(BYTES_IN+

1000)/100 from BCOL_REG_ACCT

2>where BYTES_IN>1000;

查询出BYTES_IN大于100*10即1000且节点号等于10的LOGIN_NAME 空格加上NODE_ID加上两个空格再加上

(BYTES_IN+1000)/100的值:

sql>select LOGIN_NAME||' '||NODE_ID||'

'||(BYTES_IN+1000)/100

2>from BCOL_REG_ACCT where

BYTES_IN>100*10 and node_id=10;

(3) 使用特殊的伪列

查询1周以后的日期从一个特殊的系统表dual。伪列主要有如下几种:

sequence.CURRVAL:上一次有序列产生器产生的序列名值。只有当前实例会话中从该序列中选择过一次值,这个伪列才

会有效。

LEVEL:查询的深度,适用于特殊的树查询。

Sequence.NEXTVAL:使得每次的检索都返回下一个值

ROWID:表示数据行确切的存储位置。其格式是一个三个16进制的结构AAAAAAAA.BBBB .CCCC,AAAAAAA为该行的块

号,BBBB是数据块内部的行号,而CCCC则是数据库中的文件ID

ROWNUM:被检索数据行的序列号

SYSDATE:当前日期和时间

UID:当前用户的标识ID

USER:用户登录数据库的用户名

sql>select sysdate + 7 from dual;

sql>select USER.sequence.currval from dual;

(4) 使用列和表的别名、查询中的多表连接以及使用子查询和distinct去掉重复记录查询查询出BCOL_REG_ACCT表中的LOGIN_NAME,LOGIN_DATE,CONNECT_ DUR列和ANODE_NODEINFO中的NODE_ID列,符合两个表中的

NODE_ID列相等并且LOGIN_NAME在表AUSR_ACCOUNTINFO的列LOGIN_NAME中且名字以abc开头且没有重名的条件,按照ANODE_NODEINFO表中的NODE_ID排序: sql>select b.LOGIN_NAME,b.LOGIN_DATE

,c.NODE_ID,b.CONNECT_DUR

2>from BCOL_REG_ACCT b,ANODE_

NODEINFO c

3>where b.NODE_ID=c.NODE_ID

4>and b.LOGIN_NAME in

5>(select distinct LOGIN_NAME from

AUSR_ACCOUNTINFO

6>where LOGIN_NAME like 'abc%')

7>order by c.NODE_ID;

(5) Union、Intersect和Minus等操作符连接的多步查询

查询出两各表中满足各自条件的用户名,UNION即两个查询的并集:

sql>select LOGIN_NAME from BCOL_

REG_ACCT

2>where CONNECTION_DUR>5000

3>and LOGIN_NAME like 'abc%'

4>UNION

5>select LOGIN_NAME from AUSR_

ACCOUNTINFO

6>where LOGIN_NAME like '%abc%'

7>and NODE_ID=8;

类似地,INTERSECT返回出现在所有单个查询结果中都存在的数据行(即两个查询结果的交集);MINUS返回只出现在

第一个查询结果中且不出现在第二个查询结果中的数据行(即两个查询的差集)。

(6) 复杂查询

①递归查询:

构造树的递归查询:

树查询是在标准的select语句中增加两个新子句完成。

. CONNECT BY子句定义表中的各个行是如何互相联系的,connect by子句中也可以加入更多的条件语句来删除没有必要的树的分枝。

. START WITH子句定义数据行查询的初始起点。可以定义不同的起点来实现向上或者向下浏览。

以下例子connect by 指定半价时间必须等于前面已经选择过的连接时长。

Start with子句指定从用户名为abc的用户开始。

Sql>select LOGIN_NAME,CONNECT_DUR,

DISCOUNT_DUR

2>from BCOL_REG_ACCT

3>connect by DISCOUNT_DUR=prior

CONNECT_DUR

4>start with LOGIN_NAME='abc';

②外连接查询:

外连接即是在被连接的表中数据中加入一个空行来匹配没有与其匹配的数据,以下例子中第三行的(+)即是外连接查询,将没有匹配的行加入一行空行。

sql>select b.LOGIN_NAME,a.NODE_ID

2>from BCOL_REG_ACCT b, ANODE_

NODEINFO a

3>where b.NODE_ID(+)=a.NODE_ID

4>order by b.LOGIN_NAME,a.NODE_ID;

③相关子查询:

相关子查询就是在其where条件中引用了主查询中表的子查询:

a. 单行条件的相关子查询,以下例子来实现单行子查询的功能:

sql>select a.NODE_ID,b.LOGIN_NAME,

2>nvl(to_char(b.LOGIN_DATE,'DD-MON-

YY'),'UNKNOWN')

3>from AUSR_ACCOUNTINFO a,

BCOL_REG_ACCT b

4>where b.NODE_ID(+)=a.NODE_ID

5>and (b.LOGIN_DATE is NULL or

6>b.LOGIN_DATE = (select max (c.LOGIN_

DATE) from BCOL_REG_ACCT c

7>where c.NODE_ID=a.NODE_ID))

8>and a.NODE_ID=

9>(select NODE_ID from ANODE_

NODEINFO where ANODE_NAME=aaa');

b. EXISTS和NOT EXISTS条件判断的相关子查询:

以下例子为以EXISTS判断的相关子查询:

sql>select a.NODE_ID from ANODE_

NODEINFO a

2>where exists (select 'x' from BCOL_

REG_ACCT b

3> where a.NODE_ID=

b.NODE_ID

4> and b.CONNECT_

DUR=500)

5>order by a.NODE_ID;

以下例子是以NOT EXISTS判断的相关子查询,在涉及到子查询的条件时,最好用NOT EXISTS判断代替not in判断:

sql>select a.NODE_ID from ANODE_

NODEINFO a

2>where not exists (select 'x' from

BCOL_REG_ACCT b

3> where a.NODE_ID=

b.NODE_ID

4> and b.CONNECT_

DUR!=500)

5>order by a.NODE_ID;

insert、update、delete语法参考关系数据库SQL语言

第四部分 Oracle数据库备份与恢复

数据库备份

1. 数据备份形式分为以下两种:

1) 实体数据备份:直接备份操作系统数据库文件,通过将数据库文件备份到其它设

备如磁带机或磁盘,获得安全保障,需要备份的文件一般包括:

数据文件、联机重做日志文件、数据库控制文件、脱机交易日志文件

2) 逻辑数据备份:指备份数据库系统的逻辑对象,包括对象的定义与其所存储的数

据内容,ORACLE提供两个命令:exp和imp实现数据逻辑备份

可以用 exp help=y

imp help=y

来查看其用法

2. 数据库分为归档日志执行模式和非归档日志执行模式:

在归档日志执行模式下:数据库后台进程ARCH在每次?Log Switch?事件发生时,将刚填满的联机重做日志文件备份到disk或tape中成为脱机交易记录文件,当需要恢复数据时,只需要将最近一次的数据库文件的全备份再加上这些脱机重做日志文件即可恢复到问题发生的时间点

在非归档日志执行模式下:数据库系统循环使用一组联机重做日志文件(online redo log files),所以只能保存近期的交易记录,这样的话,要进行数据恢复时,只能恢复近期所做的交易,这样就要求数据经常关闭做数据库全备份,否则数据库恢复就无法进行。

通过以下命令查看数据库当前模式:

SVRMGR>archive log list

在Database log mode一栏显示:[No] Archive Mode

从非归档日志执行模式到归档日志模式的切换方式:

1)修改启动参数文件,设置如下项:

log_archive_start=true (启动ARCH后台进程)

log_archive_dest=/vol4/arch/arch (设置存放脱机交易记录文件的位置及文件名

开头)

log_archive_format=-%s.log (设置脱机交易记录文件的后段文件名,%s代表记录文件的?log sequence number?)

2)按以下步骤重启数据库并修改数据库设置:

SVRMGR>connect internal

SVRMGR>shutdown

SVRMGR>startup mount

SVRMGR>alter database archivelog;

SVRMGR>alter database open;

用:SVRMGR>archive log list 再次查看当前归档日志的设置模式

3. 数据库备份方法

数据库备份方法可以分为脱机执行数据库备份和联机执行数据库备份

1)脱机执行数据库整体备份

当数据库shutdown normal或shutdown immediate指令正常关闭数据库系统时,系统触发一次检查点:checkpoint事件,并实现数据文件与联机重做日志文件的写入,并将该时间点同时记录在所有数据文件、联机重做日志文件和控制文件

中,所以如果等数据库停止后保留所有文件的一个拷贝,就可以利用这份拷贝将整个数据库恢复到该时间点。

备份方法:

先用以下语句查看所有需要备份的文件:

SVRMGR> select * from v$datafile; (所有数据文件)

SVRMGR> select * from v$controlfile; (所有控制文件)

SVRMGR> select * from v$logfile; (所有联机重做日志文件)

记录下所有的这些文件的路径和文件名,同时连同参数文件和密码文件一起备份到disk或tape

2)联机执行数据库备份

在数据库不能经常shutdown的情况下,数据库处于Archivelog Mode 执行模式下才能够联机数据备份,对数据文件进行联机备份时,数据库系统必须暂停对数据文件的写入,但为保证交易可以正常进行,内存使用必然加重,所以为减少数据库系统的负担,在执行联机数据库备份时,Oracle只允许以Tablespace 为单位一个个逐步进行。

备份方法:

1)在线备份数据文件,首先先了解要备份的表空间包含的数据文件有那些,通

过以下命令确定:

SVRMGR>select tablespace_name,file_name from dba_data_files;

备份一个表空间时,需要将该表空间的所有数据文件全部备份出来,否则

毫无意义。

步骤:

SVRMGR>alter tablespace tablespace_name begin backup;

(先将要备份的表空间设置成Backup Mode)

在操作系统环境下,将此tablespace 所属的所有数据文件通过拷贝命令复制到备份介质上。

SVRMGR>alter tablespace tablespace_name end backup;

(备份完数据文件后,结束表空间的Backup Mode状态)

重复上述过程完成所有的表空间备份。千万注意备份的时间要尽量短,实

际应用中可以写shell脚本将备份执行过程一气呵成。

2)在线备份控制文件

控制文件中包含了存储整个数据库所需的各个文件信息以及整个数据库结构等重要信息,数据库依据控制文件信息来操作整个数据库,所以需要进行控制文件的备份,除了同时设置多个控制文件以满足安全保证外,在每次修改完数据库结构以后,数据库管理员最好立刻执行一次控制文件的在线备份:

1)自行指定目录文件名,备份一个完全相同的控制文件:

SVRMGR>alter database backup controlfile

>to …/vol4/dow0/control.bak;

2)产生一个可重新生成控制文件的SQL程序文件,并置于存放Trace-file的相

同目录下,使用系统的内定文件名:

SVRMGR>alter database backup controlfile to trace;

所产生的SQL程序文件其文件名称如“zxin_ora_916.trc”,其中zxin为数据

库名称,916为执行此Backup操作的服务进程ID号。

数据库恢复

启动数据库系统时,如果控制文件的Current Log Sequence Number与任一数据库的数据文件的Log Sequence Number不同的话,比那时该数据文件处于不同步状态,此时,数据库管理员必须使用以前备份的数据文件和重做日志文件,对数据库进行恢复,使数据库恢复到同步状态。

1. 数据恢复过程:

整个数据库的数据恢复过程可以分为3个阶段进行:

1)使用备份数据文件恢复损坏的数据文件

2)自备份文件的时间点开始重做交易

3)回滚未被提交的交易

数据库恢复可以分为完全恢复和不完全恢复,完全恢复可以利用数据备份文件、脱机重做日志文件和联机重做日志文件将数据恢复到数据库出问题的时间点,不完全恢复是由于脱机重做日志文件或联机重做日志文件中的某个关键文件被毁坏从而只能恢复到以前的某个时间点。

2. 数据恢复方式:

1)无归档日志的数据库恢复方式

无归档日志的数据库恢复方式是用于从数据库关闭做完全备份到数据库重新打

开而在某个时间点数据库出现问题的这个时间段的的数据损失是可以接受的,

或可以通过其他方式重做,而采用的数据恢复方式,其恢复方法也相对简单,

恢复的时间也比较快,只要将最近一次执行全备份的所有文件拷贝回来即可。

执行步骤:

SVRMGR>shutdown abort (将数据库实例先关闭)

将上一次全备份的所有数据库文件(控制文件、重做日志文件、数据文件)全

部恢复到原有目录,如果参数文件和密码文件未被破坏,则可不必恢复

SVRMGR>connect internal

SVRMGR>startup

数据库重起以后即恢复正常使用。

如果无法将数据文件恢复到原来目录位置,可将其放置于其他目录下,只要在开

放数据库系统使用前,通过以下方式修改控制文件中的设置即可:

SVRMGR>startup mount

SVGMGR>alter database rename file

2>?/vol2/ncm.dat? to …/vol4/ncm.dat?;

SVRMGR>alter database open;

2)有归档日志的数据库完全恢复方式

完全恢复可将数据库完全恢复到目前的问题发生时间点,完全恢复可以针对整个

数据库或单独的表空间、数据文件,一般来说,应该优先考虑使用最简单而且

不容易出问题的Full Database Recovery。只有在不能Shutdown数据库的情况

下,才需要考虑执行Tablespace Recovery 与 Datafile Recovery

Full Database Recovery可以解决所有表空间和数据文件的问题,操作简单且不

容易出错,但只能在mount启动模式下进行,因此得先Shutdown整个数据

库。执行步骤如下:

SVRMGR>shutdown

SVRMGR>connect internal

SVRMGR>startup mount

SVRMGR>set autorecovery on #设置以默认选项回答

SVRMGR>recover database; #开始执行恢复

SVRMGR>alter database open; #启动数据库到打开状态

由于Full Database Recovery需要关闭数据库,为减少关闭数据库所带来的冲击,数据库管理员可以同时启动多个进程来进行恢复,可以在参数文件中设置:

parallel_max_servers=20 #Server最多启动20个process

recovery_parallelism=5 #Recovery Process默认5个

或者通过执行:

SVRMGR>recover database parallel (degree 5);

当数据库必须维持联机状态无法shutdown的话,无法选择执行过程较为简单的Full Database Recovery,于是可以对单独的表空间或数据文件进行恢复,恢复步骤如下:

SVRMGR>alter tablespace tablespace_name offline immediate; #将需要恢复的表空间脱机,并在指令中加上immediate避免checkpoint操作

用备份文件替代损坏的数据文件

将恢复过程所需的Archive Log File保存回原来设置的目录位置

执行整个表空间恢复:

SVRMGR>recover tablespace tablespace_name;

也可以恢复表空间的一个或多个数据文件:

SVRMGR>recover datafile …/vol2/datafile.dbf?;

使恢复完成的表空间联机:

SVRMGR>alter tablespace tablespace_name online;

3)有归档日志的数据库不完全恢复方式

如果在完全恢复过程中发生问题的话,数据库管理员只能将数据库恢复到过去的某一个时间点,成为不完全恢复。

执行不完全恢复的注意事项

●由于不完全恢复操作过程较为复杂,为保险起见,数据管理员应先在关闭数

据库的状态下做一次完全脱机备份后再开始

●如果恢复到的时间点时刻的数据库结构和当前的不一样,则需要使用当时的

控制文件来做恢复

●执行完不完全备份以后,为使现有的控制文件中的Log Sequence Number与

所有的Datafiles一致,必须执行alter database open resetlogs指令来打开数据库,将所有相关文件的Log Sequence Number重设为1

● Log Sequence Number 重设为1后,以前所有的Archive Log File都将失效,

所以应立即shutdown整个数据库再做一次完全数据库脱机备份。

执行不完全恢复的原因:

●用户错误删除数据或Drop掉某个表,为救回数据,只要将数据恢复到错误

发生以前

●执行完全恢复的过程中因某个重做日志文件坏掉而无法完成,数据库管理员

只要讲数据库恢复到前一个正常的重做日志文件的起点

●联机使用的所有控制文件都不可用时

●一个含有活动回滚段的数据文件毁坏时

●必须使用备份的控制文件来进行恢复时

执行不完全恢复的方法:

● Cancel-Based Recovery:恢复过程中当进行到过去的某个重做日志文件的交

易完成之后,在交互问答中敲入‘CANCEL’命令结束恢复:

SVRMGR>connect internal

SVRMGR>startup mount

SVRMGR>recover database until cancle; 或者指定一个控制文件:

SVRMGR>recover database until cancel

2>uning backup file …/vol1/control01?;

在接下去的交互式问答过程中,依次执行重做日志文件的交易,直到用户打入‘CALCEL’时结束不完全恢复

恢复完以后用以下指令同步控制文件后数据文件的:Log Sequence Number SVRMGR>alter database open resetlogs;\

● Time-Based Recovery:使恢复进行到过去的某个指定的时间点:

SVRMGR>connect internal

SVRMGR>startup mount

SVRMGR>set autorecovery on;

SVRMGR>recover database until time …2001-08-27:18:27:08?

2>uning backup file …/vol1/control01?;

恢复完以后用以下指令同步控制文件后数据文件的:Log Sequence Number SVRMGR>alter database open resetlogs;\

● Change-Based Recovery:使恢复进行到过去某个特别指定System Change

Number时间点便结束恢复,由于极少用到,所以不再详细介绍。

第五部分 Oracle数据库SQL*Net

SQL*Net是基于Oracle特有的Transparent Network Substrate(简称TNS)技术发展出来的网络存取中介软件,使用不同的网络通讯协议(如TCP/IP,SPX/IPX与DECNet等),SQL*Net也可以处理不同的数据格式和国家语言字码间的转换。

客户/服务器结构系统配置

在客户/服务器结构下,通信的两端不论是客户端或服务器端都需配置SQL*Net中介软件,服务器端在数据库主机上还需启动一个侦听程序(listener),以便能够不断侦听所有来自网络各地的客户端联机请求,侦听程序处理客户端联机请求的做法可以有以下类型:

●专用服务器

当侦听程序受到一个客户端联机请求时,侦听程序新启动一个专用服务器

程序负责服务用户程序的各项要求,并将执行结果传回给用户程序。整个

通信过程,专用服务器程序与用户程序通过SQL*Net来对话。

●多线程服务器

当侦听程序受到一个客户端联机请求时,侦听程序将用户程序连接到一个

已预先启动的共享调度程序(Shared Dispatcher)上,此共享调度程序负责接受用户程序的各项要求,并将之放入要求队列,共享服务器从队列中取

出数据加以执行,然后将执行结果放至响应队列中,同享调度程序再自响

应队列中取得数据后传回给客户端,整个通信过程,专用服务器程序与用

户程序通过SQL*Net来对话。

侦听程序配置:

侦听程序相关文件包括:

●启动侦听程序: $lsnrctl start

●侦听程序状态: $lsnrctl status

●终止侦听程序: $lsnrctl stop

设置listener.ora组态文件

同一台主机所启动的各个listener共享同一个listener.ora组态文件,该组态文件的设置包括以下几个部分:

1) listener名称

2) listener的侦听对象地址:这里需要列出与listener进行通讯的所有对象,包括使

用进程间调用(IPC)的本地客户端应用程序与ORACLE数据库的共享调度程序(Shared Dispatcher)、使用TCP/IP、SPX/IPX或DECNet的远程客户端应用程序等

3) 使用这个listener的数据库:必须列出这台主机上所有共享此listener的数据库

SID

listener.ora组态文件设置范例:

LISTENER1=

(ADDRESS_LIST=

(ADDRESS=(PROTOCOL=IPC)(KEY=ZXIN_IPC)) #ZXIN_IPC为本地用户所

用的Service Name (ADDRESS=(PROTOCOL=IPC)(KEY=ZXIN)) #ZXIN为数据库SID,给

Dispatcher用(ADDRESS=(PROTOCOL=TCP)(HOST=H80_1)(PORT=1521)

#供远程的TCP/IP网络用户

联机使用

数据库及Oracle基础知识培训自学教材试题_V1 0

Oracle初级试题 一、选择题(20% 不定项每题2分) 1.对于Oracle用户方案下,根据模式/映像,请选出不属于模式的对象(D) A.表B.索引C.视图D.约束 2.在客户端配置哪个文件,可以使客户端访问oracle server?(A) A.tnsnames.ora B.sqlnet.ora C.listener.ora D.init.ora 3.搜索列中的数据,但只记得部分字符串,通常可以用以下哪种运算?(C) A.in B.between C.like D.exists 4.如从表中删除了一条记录,以下哪个语句可以保存数据库中的改变?(B) A.savepoint B.commit C.rollback D.update 5.下面关于视图的说法,请选出正确的(ABCD) A.一个视图可以创建为只读 B.一个视图可以用来连接两张或更多的表而被创建 C.在视图中不能含有order by子句 D.在视图中不能含有group by子句 6.在select语句中包含了where子句,请问group by子句可以放在哪里?(D) A.where子句前面 B.from子句前面 C.order by子句后面 D.where子句后面 7.关于having子句,以下说法正确的是:(C) A.having与where相同 B.having用于单行条件查询 C.having用于已分组的条件查询 D.having子句必须紧跟在where子句后面使用 8.能够在外部表上进行的操作有:(A) A.select B.update C.insert D.delete 9.在更改索引的操作(alter index)中,以下哪些子句可以定期优化索引?(AC) A.rename B.coalesce C.rebuild D.deallocate unused 10.请选出能够产生锁的操作:(AB) A.select … for update B.commit C.rollback D.lock table 二、填充题(20% 每空4分) 1.数据库最常用的DML操作有SELECT、UPDATE 、DELETE 和INSERT 等(要求写出操作命令)。 2.假设有两个数据N1和N2,请用函数实现如下算法:当N1>N2时,返回“大于”; 当N1=N2时,返回“等于”;当N1N2 then Return ‘大于’;

Oracle数据库基础

Oracle 数据库基础 数据库是我们安装完产品后建立的,可以在同一台主机上存在8i,9i,10g,11g等多个数据库产品,一套产品可以建立多个数据库,每个数据库是独立的。每个数据库都有自己的全套相关文件,有各自的控制文件、数据文件、重做日志文件、参数文件、归档文件、口令文件等等。 其中控制文件、数据文件、重做日志文件、跟踪文件及警告日志(trace files,alert files)属于数据库文件; 参数文件(parameter file)口令文件(password file)是非数据库文件 我们的表存储在数据库中 数据库不能直接读取 我们通过实例(instance)来访问数据库 数据库实例 实例由内存和后台进程组成 实例是访问数据库的方法 初始化参数控制实例的行为 一个实例只能连接一个数据库

启动实例不需要数据库 产品安装好 有初始化参数文件 就可以启动实例 与是否存在数据库无关 实例内存分为SGA 和PGA SGA:是用于存储数据库信息的内存区,该信息为数据库进程所共享。它包含Oracle 服务器的数据和控制信息,它是在Oracle 服务器所驻留的计算机的实际内存中得以分配,如果实际内存不够再往虚拟内存中写。 PGA:包含单个服务器进程或单个后台进程的数据和控制信息,与几个进程共享的SGA正相反,PGA 是只被一个进程使用的区域,PGA 在创建进程时分配,在终止进程时回收. 后台进程是实例和数据库的联系纽带 分为核心进程和非核心进程 当前后台进程的查看 SQL> select name,description from v$bgprocess where paddr<>'00'; NAME DESCRIPTION

oracle数据库基本命令

oracle数据库基本命令 oracle安装后 sys:超级管理员(dba),默认密码为:change_on_install system:系统管理员(dbaoper),默认密码为:manager; sys与system的不同在于sys能够create datebase而system则不能。scott:普通用户,默认密码:tiger 1.切换用户:conn 用户名/密码; SQL> conn system/manager; Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as system SQL> conn sys/change_on_install as sysdba; Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as SYS 注意:sys与其他用户在命令窗口切换时的不同。 2.修改密码:passw username;(普通用户可以修改自己密码,管理员可以修改其他人的密码) 3.显示当前用户。show user; 4.断开数据库同时推出:exit; 文件操作 5.运行sql脚本,start d:\a.sql; 6.编辑指定的sql脚本。Edit d:\a.sql; 7.将屏幕上指定的内容输出到指定文本中去。spool e:\b.sql;执行语句;spool off;

8.显示设置环境变量; 可以用来控制输出的各种格式,如果希望永久保存可以修改glogin.sql脚本。 Linesize(行宽): show linesize;显示行宽 set linesize 90;设置行宽为90个字符。 Pagesize(页面大小): Show pagesize;显示页面大小 Set pagesize 180;设置页面的小。 (做报表时可以用。一页设定几行。)

ORACLE数据库学习心得

ORACLE数据库结课论文 一个好的程序,必然联系着一个庞大的数据库网路... 今年我们学习了oracle数据库这门课程,起初的我,对这个字眼是要多陌生有多陌生,后来上课的时候听一会老师讲课,偶尔再跟上上机课,渐渐的学会了不少东西,但我感觉,我学到的仍是一些皮毛而已,怀着疑惑和求知的心态,我在网上搜索了关于oracle数据库的一些知识。 1.ORACLE的特点: 可移植性ORACLE采用C语言开发而成,故产品与硬件和操作系统具有很强的独立性。从大型机到微机上都可运行ORACLE的产品。可在UNIX、DOS、Windows等操作系统上运行。可兼容性由于采用了国际标准的数据查询语言SQL,与IBM的SQL/DS、DB2等均兼容。并提供读取其它数据库文件的间接方法。 可联结性对于不同通信协议,不同机型及不同操作系统组成的网络也可以运行ORAˉCLE数据库产品。 2.ORACLE的总体结构 (1)ORACLE的文件结构一个ORACLE数据库系统包括以下5类文件:ORACLE RDBMS的代码文件。 数据文件一个数据库可有一个或多个数据文件,每个数据文件可以存有一个或多个表、视图、索引等信息。 日志文件须有两个或两个以上,用来记录所有数据库的变化,

用于数据库的恢复。控制文件可以有备份,采用多个备份控制文件是为了防止控制文件的损坏。参数文件含有数据库例程起时所需的配置参数。 (2)ORACLE的内存结构一个ORACLE例程拥有一个系统全程区(SGA)和一组程序全程区(PGA)。 SGA(System Global Area)包括数据库缓冲区、日志缓冲区及共享区域。 PGA(Program Global Area)是每一个Server进程有一个。一个Server进程起动时,就为其分配一个PGA区,以存放数据及控制信息。 (3)ORACLE的进程结构ORACLE包括三类进程: ①用户进程用来执行用户应用程序的。 ②服务进程处理与之相连的一组用户进程的请求。 ③后台进程ORACLE为每一个数据库例程创建一组后台进程,它为所有的用户进程服务,其中包括: DBWR(Database Writer)进程,负责把已修改的数据块从数据库缓冲区写到数据库中。LGWR(Log Writer)进程,负责把日志从SGA中的缓冲区中写到日志文件中。 SMON(System Moniter)进程,该进程有规律地扫描SAG进程信息,注销失败的数据库例程,回收不再使用的内存空间。PMON (Process Moniter)进程,当一用户进程异常结束时,该进程负责恢复未完成的事务,注销失败的用户进程,释放用户进程占用的资源。

数据库基本知识(自己整理,初学者可以看一下,基于某MySql)

数据库

1常见数据库 1.1MySql : 甲骨文 1.2Oracle: 甲骨文 1.3SQL Server: 微软 1.4Sybase: 赛尔斯 1.5DB2: IBM 2MySql基础知识 2.1关系结构数据模型数据库 2.2SQL(Structured Query Language)结构化查询语言2.2.1DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等 操作数据库 CREATE DATABASE [IF NOT EXISTS]mydb1 USE mydb1 DROP DATABASE [IF NOT EXISTS] mydb1

ALTER DATABASE mydb1 CHARACTER SET utf8 操作表 插入表 CREATE TABLE stu( sid CHAR(6), sname VARCHAR(20), age INT, gender VARCHAR(10) ); 更改表 ALTER TABLE t_user ADD (student varcher(20)) ALTER TABLE t_user MODIFY gender CHAR(20) ALTER TABLE t_user CHANGE gender VARCHER(20) ALTER TABLE t_user REMANE genderTO genders ALTER TABLE t_user DROP gender 删除表 DROP TABLE t_user 2.2.2DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据) 插入数据 INSERT INTO t_user VALUES() INSERT INTO 表名 VALUES(值1,值2,…)

oracle数据库基础教程期末考试简答与实践小抄范文

(1)第十章模式对象重点 数据是描述事物的符号,是数据库中存储的基本对象。在计算机中,用记录的形式来描述数据。数据与数据的解释即数据的语义是紧密结合的。数据库是指按一定的数据模型组织、描述和存储的数据的集合。数据库管理系统是位于操作系统与用户之间的一层数据管理软件。数据库系统是指数据库、数据库管理系统与计算机系统的结合。通常,在不引起混淆的情况下将数据库系统简称为数据库。 (2)数据库管理系统的主要功能包括:数据定义、数据操纵、数据库运行与控制、数据库建立与维护、数据字典定义以及数据通信等。数据库管理系统的内部分多个层次,由应用层、语言定义及其翻译处理层、数据存取层、数据存储层、操作系统以及数据库组成。 (3)数据库系统由数据库、操作系统、数据库管理系统、开发工具、应用系统、数据库管理员以及数据库用户组成。 (4)概念模型是用简单、清晰、用户易于理解的概念来描述现实世界具体事物及事物之间的关系。它是现实世界到信息世界的抽象,是数据库设计人员进行数据库设计的工具,与具体的数据库管理系统无关。组织数据模型是从数据组织方式的角度来描述信息,它决定了数据在数据库中的组织结构。 (5)关系数据库的完整性约束包括三类:实体完整性、参照完整性和用户定义完整性。实体完整性:是指关系中必须定义主键,以惟一的确定一个元组。主键由一个或多个属性构成,其取值惟一且不能为空(NULL)。参照完整性:在关系模型中,通过外键来表示表之间的联系。参照完整性是指一个表中的外键的取值必须是参照表中主键存在的值或为空(NULL)。例如,学生信息表中“班号”属性为外键,其取值必须是班级信息表中“班号”属性的某一个值或为空。用户定义完整性:是指用户根据特定应用情况,设定一些约束,反映某一具体应用所涉及的数据必须满足的语义要求。例如,“性别”属性的域为“男、女”。 (6) (7) Oracle数据库体系结构由物理存储结构、逻辑存储结构和实例组成。其中物理存储结构描述了操作系统层次数据的存储与管理,包括数据文件、日志文件、重做日志文件等组成。逻辑结构描述了数据库内部数据的组织与管理,由表空间、段、区、块组成。实例是数据库运行的软件结构,由内存结构和后台进程组成。数据库运行过程中,用户的操作在内存区中进行,最终通过后台进行转化为对数据库的操作。

oracle数据库操作手册

操作手册 目录 一.表空间 (4) 1.创建表空间 (4) 2.增加表空间 (4) 3.删除表空间 (5) 4.查询表空间状态 (5) 5.查询数据文件路径 (5) 6.移动表空间中数据文件的路径 (5) 7.移动表和索引到其他表空间 (6) 8.查看表空间的使用率 (7) 二.用户和权限 (9) 1.创建用户 (9) 2.修改用户的密码 (9) 3.给用户授权 (9) 4. 查询数据库系统上有多少用户,文件名和创建时间 (10) 三.归档和非归档模式 (10) 1.查看数据库的归档模式 (10) 2.修改数据库的归档模式 (10) 四.日志文件 (11) 1.查询日志文件信息 (11) 2.增加日志文件配置信息 (12) 3.增加日志成员 (12) 4.删除一组日志 (12) 五.密码文件 (13) 1.创建密码文件 (13) 六.参数文件(SPFILE PFILE) (13) 1.查看数据库使用参数文件(SPFILE 还是PFILE) (13) 2.创建SPFILE (13) 3.通过PFILE 启动数据库 (13) 七.STATSPACK (14) 1.安装STATSPACK (14) 2.数据采集 (14) 3.设置自动快照 (14) 4.设置数据采集的时间 (14) 八.ORACLE信息查询 (15) 1.查询ORACLE数据库的名字,创建日期 (15) 2. 查询ORACLE所在操作系统的主机名,实例名,版本 (15) 3.查询ORACLE数据库系统版本详细信息 (15) 九.控制文件 (16) 1.查询控制文件 (16) 2.备份控制文件 (16)

十.索引 (16) 1.创建普通索引 (16) 2.创建位图索引 (16) 3.查询索引所在的表,表空间,索引类型 (16) 4.查询索引所在的列 (17) 十一.主键 (17) 1.定义主键 (17) 2.查询主键索引 (18) 3.查询约束信息 (18) 4.禁止约束 (18) 5.开启主键 (19) 十二.手工建库脚本 (19) 十三..PROFILE文件内容 (19) 十四.做定时JOB (20) 1.创建存储过程,为此存储过程作定时JOB (20) 2.定时JOB 的参数说明 (21) 十五.查询出SQL语句 (22) 1.通过SID 找出HASH VALUE 值 (22) 2.通过HASH VALUE 值查询出SQL 语句 (22) 3.根据HASH VALUE 值查询出对应的 SESSLIN SID (22) 4.根据HASH VALUE 找出对应的机器名称 (22) 5.通过HASH VALUE 查询出该语句的执行计划 (23) 6.查询存储过程 (23) 7.查询对象属于哪个用户 (23) 8.查询表的分析时间 (23) 9.查询对象(表)的类型 (23) 十六.查询脚本 (24) 1.查询等待事件 (24) 2.查询大表已经索引超过2G 的对象 (24) 3.查看锁 (25) 十七.基本的SQL语句 (25) 1.对表的操作 (25) 2.常用的函数 (26) 十八.安装手册 (27) 十九.错误总结 (27) 1. ORA-00257: 归档程序错误 (27) 二十.故障处理 (29) 1.日志挖掘 (29) 2.行链接行迁移 (30) 3.逻辑备份(exp/imp) (35) 4.关闭和启动数据库的步骤 (36) 二十一.METALINK操作 (37) 1.开二级别SR (37) 2.OPATCH 下载地址 (37)

Oracle数据库基本知识点

1、数据库基本语句 (1)表结构处理 创建一个表:cteate table 表名(列1 类型,列2 类型); 修改表的名字 alter table 旧表名 rename to 新表名 查看表结构 desc 表名(cmd) 添加一个字段 alter table 表名 add(列类型); 修改字段类型 alter table 表名 modify(列类型); 删除一个字段 alter table 表名 drop column列名; 删除表 drop table 表名 修改列名 alter table 表名 rename column 旧列名 to 新列名; (2)表数据处理 增加数据:insert into 表名 values(所有列的值); insert into 表名(列)values(对应的值); 更新语句:update 表 set 列=新的值,…[where 条件] 删除数据:delete from 表名 where 条件 删除所有数据,不会影响表结构,不会记录日志, 数据不能恢复--》删除很快: truncate table 表名 删除所有数据,包括表结构一并删除: drop table 表名 去除重复的显示:select distinct 列 from 表名 日期类型:to_date(字符串1,字符串2)字符串1是日期的字 符串,字符串2是格式 to_date('1990-1-1','yyyy-mm-dd')-->返回日期的 类型是1990-1-1 (3)查询语句 1)内连接 select a.*,b.* from a inner join b on a.id=b.parent_id

Oracle数据库管理与应用实例教程(刘志成)课后习题及答案

【填空题】 1.默认情况OEM的URL地址是https://sd04:1158/em(其中sd04为机器名) 2.Oracle9i发布于2001,i代表Internet,11G发布于2007,g代表grid(网格) 3.在oracle内存结构中,保存正在执行或可能执行的代码的区是代码区 4.在oracle进程结构中,用于实现进程监控功能的进程是PMON 1.Oracle数据库系统的物理存储结构主要由3类文件组成,分别为数据文件、重做日志文件、控制文件。 2.一个表空间物理上对应一个或多数据文件 3.在oracle的逻辑存储结构中,根据存储数据的类型,可以将段分成为数据段、索引段、回滚段、LOB段和临时段。 1.在设计表时,对于邮政编码最适合的数据类型是CHAR 2.在alter table语句中,如果要删除列,可以通过指定DROP COLUMN关键字来实现。 3.如果需要在表中插入一批已经存在的数据,可以在insert语句中使用SELECT语句。 4创建一个update语句来修改goods表中的数据,并且把每一行的t-id值都改成15,应该使用的SQL语句是UPDATE SCOTT.Goods SET t_ID=’15’ 5.使用DESC命令可以显示表的结构信息 6.两个表的主关键字和外关键字的数据应该对应一致,这是属于引用完整性,通常可以通过主键和外键来实现。 7.UNIQUE约束通过确保在列中不输入重复值保证一列或多列的实体完整性。 1.在select语句中选择满足条件的记录使用where关键字,分组之后进行选择使用having 关键字 2.用来返回特定字段中所有值得总和的聚合函数是SUM 3.编写查询语句时,使用%通配符可以匹配多个字符。 18.集合运算符UNION实现集合的并运算,操作符INTERSECT实现了对集合的交运算,而MINUS则实现了减运算 19.如果要定义只读的视图,可以在创建视图时使用READ ONLY关键字 20.删除视图的PL\SQL语句是DROP VIEW [用户方案.]视图名 21.在使用CREATE INDEX创建索引时,使用BITMAP关键字可以创建位图索引 22.聚集(Cluster)是存储表数据的可选择的方法。一个聚集是一组表,将具有同一公共列值的行存储在一起,并且它们经常一起使用,表中相关的列称为聚集键 23.在为表中某个列定义PRIMARY KEY约束PK_ID后,则系统默认创建的索引名为PK_ID 24.如果表中某列的基数比较低,则应该在该列上创建反向索引 25.如果要获知索引的使用情况,可以通过查询DBA_INDEXES视图,而要获知索引的当前状态,可以查询INDEX_STATS视图。 26. 在Oracle的PL/SQL程序中,除了可以使用Oracle规定的数据类型外,还可以使用%TYPE 类型的变量,由系统根据检索的数据表列的数据类型决定该变量的类型,也可以使用%ROWTYPE 类型的变量用来一次存储从数据表中检索的一行数据。 27. SYSDATE函数可以获得当前系统的日期,SUBSTR(s,start,len)函数可以实现从指定的字符串中取指定长度的字符串。 28. 用来变异存储过程的PL/SQL语句是ALTER PROCEDURE,CREATE FUNCTION语句可以用来创建函数。

Oracle数据库基础题库【含答案】

1、判断题,正确请写写"T",错误请写写"F", 1、oracle数据库系统中,启动数据库的第一步是启动一个数据库实例。( T ) 2、Oracle服务器端的监听程序是驻留在服务器上的单独进程,专门负责响应客户机的连接请求。( F) 3、oracle数据库中实例和数据库是一一对应的(非ORACLE并行服务,非集群)。( T) 4、系统全局区SGA 是针对某一服务器进程而保留的内存区域,它是不可以共享的。( F ) 5、数据库字典视图ALL_***视图只包含当前用户拥有的数据库对象信息。( F ) 8、数据字典中的内容都被保存在SYSTEM表空间中。( T ) 9、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等, WHERE 后面的条件中也可以有聚集函数。( F ) 10、"上海西北京" 可以通过like ‘%上海_’查出来。( F ) 11、表空间是oracle 最大的逻辑组成部分。Oracle数据库由一个或多个表空间组成。一个表空间由一个或多个数据文件组成,但一个数据文件只能属于一个表空间。( T ) 12、表空间分为永久表空间和临时表空间两种类型。( T ) 13、truncate是DDL操作,不能 rollback。( T ) 14、如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用WHERE语句。( F ) 15、Oracle数据库中字符串和日期必须使用双引号标识。( F ) 16、Oracle数据库中字符串数据是区分大小写的。( T ) 17、Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特殊操作时候保证操作能正常进行。( F ) 18、为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字段列表的末尾。( T ) 20、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接是全外连接。( T ) 21、自然连接是根据两个表中同名的列而进行连接的,当列不同名时,自然连接将失去意义。( T ) 23、PL/SQL代码块声明区可有可无。( T ) 24、隐式游标与显式游标的不同在于显式游标仅仅访问一行,隐式的可以访问多行。( F )

Oracle基础知识大全,

课程目标: 1. 了解数据库系统在项目开发中的地位 2. 了解目前主流数据库系统 3. 熟练掌握查询命令 4. 熟练掌握数据操作方式 5. 熟练使用数据库内置函数 6. 掌握pl/sql程序设计语法结构 7. 掌握视图 8. 掌握存储过程 9. 掌握用户自定义函数 10. 掌握触发器 了解: 1.数据库组件: 1.1 实施应用集群 1.2 Oracle OLAP 1.3 数据挖掘 1.4 应用程序接口 1.5 网络组件 1.6 SQL Plus 1.7 企业管理器OEM

2. 几个版本间的差异: 2.1 增加了服务器参数文件SPFILE 2.2 使用了OMF免去了手工管理数据库文件的繁琐 2.3 支持多种数据库块大小 2.4 会话可以自动调整PGA的大小 2.5 引入了列表分区 课程内容: 1. 操作数据之前的准备工作: 1.1. 要保证有一个数据库: 1.2. 要保证创建一个表空间 create tablespace hbjr datafile 'E:\dbs\hbjr.dbf' size 100M; 1.3. 要创建一个用户,用户默认的表空间就是你创建的表空间 create user hbjr identified by orcl default tablespace hbjr; //授权限: grant dba to hbjr; 1.4. 用户/密码登录:

2. 表名/列字段名起名规范: 2.1 使用常规字母和数字 2.2 长度不要超过30 2.3 表名/列名不能重复 2.4 不能使用oracle的保留字 3. 数据类型 3.1 char:定长,存储单位--字节(bite) 3.2 varchar2:变长,存储单位--字节 3.3 nchar:定长,存储单位--字符 3.4 nvarchar2:变长,存储单位--字符 3.5 date:日期类型,7个字节,存储着--世纪,年,月,日,时,分,秒 3.6 timestamp:日期类型,11个字节,存储着--世纪,年,月,日,时,分,秒,毫秒 3.7 number:数据类型(数值类型) 3.8 clob:大字段类型,适合存储纯文本信息(例如:*.txt 文件)

Oracle数据库技术课程学习大纲详细

《现代数据库技术》教学大纲 课程名称:《现代数据库技术》 课程编号:学时数:56 学分数:3.5 适应专业:计算机与信息学院所有专业 一、本课程的地位、任务和作用 现代数据库技术是计算机在数据处理应用领域中的主要内容和坚实基础;也是今后若干年内研究和应用的最活跃的分支之一。因此,信息管理、软件开发、计算机等专业的学生,特别是以应用为目标的学生都必须学习和具备数据库原理与应用的知识。本课程通过介绍Oracle数据库基本操作、体系结构与数据库基本管理使学生初步掌握大型数据库的基本原理,了解大型数据库的管理方法。了解大型数据库的管理方法,使学生熟练掌握Oracle数据库系统下的SQL语言运用及PL/SQL程序设计。 本课程是一门理论和实践相结合的课程,要求学生在完成本课程的学习以后,能够结合自己所熟悉的某一门高级语言和Oracle,开发出一个小型的数据库应用系统。 二、本课程的相关课程 本课程的先修课程为《计算机组成原理》,《离散数学》,《数据结构》,《计算机网络》及《数据库原理》等课程。 三、本课程的基本内容及要求 教学内容: 第一章数据库概述(2学时) 1、教学内容: 1.1数据库基础知识 1.2关系数据库系统 1.3 Oracle基础知识 (1)Oracle的发展历史 (2)Oracle的特点 第二章O racle体系结构(6学时) 1、教学内容: 2.1 Oracle 体系结构概述 2.2Oracle的存储结构 (1)物理存储结构 (2)逻辑存储结构 2.3Oracle的实例 (1)Oracle内存结构

(2)Oracle进程 2.4数据字典 2、教学重点:Oracle的物理结构、oracle实例、Oracle的逻辑结构 3、教学难点:数据库实例与进程 第三章O racle11g的安装(2学时) 1、教学内容: 3.1 Oracle 11g环境介绍 3.2Oracle 11g for Windows的安装 (1)安装Oracle 11g服务器 (2)Oracle 11g与Windows (3)安装Oracle 11g客户端 3.3 Oracle 11g 的卸载 2、教学重点:学会Oracle的安装 第四章O RACLE数据库管理工具及网络配置(2学时) 1、教学内容: 4.1 SQL*Plus命令 (1)设置SQL*Plus 运行环境 (2)常用SQL*Plus命令 (3)格式化查询结果 4.2 Oracle企业管理器 4.3 数据库配置助手 4.4 启动与关闭oracle实例 2、教学重点:学会使用SQL*Plus 第五章S QL语言基础(5学时) 1、教学内容: 5.1SQL简介 5.2SQL的基本语法 5.3数据查询语言 5.4数据操纵语言 5.5数据定义语言 5.6数据控制语言 5.7常用函数 5.8 事务处理 2、教学重点:数据查询语言、数据操纵语言、数据定义语言、数据控 制语言 3、教学难点:SQL的基本语法 第六章P L/SQL编程(8学时)(课本第6,7章) 1、教学内容: 6.1PL/SQL基础 (1)变量及声明 (2)数据类型 (3)表达式 (4)PL/SQL程序块结构 6.2PL/SQL控制结构

数据库基础知识试题

数据库基础知识试题 部门____________ 姓名__________ 日期_________ 得分__________ 一、不定项选择题(每题分,共30分) 1.DELETE语句用来删除表中的数据,一次可以删除( )。D A .一行 B.多行 C.一行和多行 D.多行 2.数据库文件中主数据文件扩展名和次数据库文件扩展名分别为( )。C A. .mdf .ldf B. .ldf .mdf C. .mdf .ndf D. .ndf .mdf 3.视图是从一个或多个表中或视图中导出的()。A A 表 B 查询 C 报表 D 数据 4.下列运算符中表示任意字符的是( )。B A. * B. % C. LIKE 5.()是SQL Server中最重要的管理工具。A A.企业管理器 B.查询分析器 C.服务管理器 D.事件探察器 6.()不是用来查询、添加、修改和删除数据库中数据的语句。D A、SELECT B、INSERT C、UPDATE D、DROP 7.在oracle中下列哪个表名是不允许的()。D A、abc$ B、abc C、abc_ D、_abc 8.使用SQL命令将教师表teacher中工资salary字段的值增加500,应该使用的命 令是()。D A、Replace salary with salary+500 B、Update teacher salary with salary+500 C、Update set salary with salary+500 D、Update teacher set salary=salary+500 9.表的两种相关约束是()。C

Oracle11g数据库基础教程-参考答案资料

第1章Oracle 11g数据库安装与配置 1.简答题 (1) 企业版数据库服务器包含所有的数据库组件,主要针对高端的应用环境,适用于安全性和性能要求较高的联机事务处理(OLTP)、查询密集型的数据仓库和要求较高的Internet应用程序:标准版数据库服务器提供大部分核心的数据库功能和特性,适合于工作组或部门级的应用程序:个人版数据库服务器只提供基本数据库管理功能和特性,适合单用户的开发环境,为用户提供开发测试平台。 (2) 常用数据库类型包括事务处理类、数据仓库类以通用类型。其中事务处理类型主要针对 具有大量并发用户连接,并且用户主要执行简单事务处理的应用环境。事务处理数据库的典型应用有银行系统数据库、Internet电子商务数据库、证券交易系统数据库等。对于需要较 高的可用性和事务处理性能、存在大量用户并行访问相同数据以及需要较高恢复性能的数据 库环境,事务处理类型的配置可以提供最佳性能;数据仓库类型的数据库主要针对有大量的 对某个主题进行复杂查询的应用环境。数据仓库的典型应用有客户订单研究、支持呼叫、销售预测、采购模式以及其他战略性业务问题的历史数据研究。对于需要对大量数据进行快速 访问,以及复杂查询的数据库环境,数据仓库类型配置是最佳选择;通用类型配置的数据库是事务处理数据库与数据仓库配置的折衷方案。既可以支持大量并发用户的事务处理,又可以快速对大量历史数据进行复杂的数据扫描和处理。 (3) 数据库名可以由字母、数字、下划线(_)、#和美元符号($)组成,且必须以字母开头,长度不超过30个字符。在单机环境中,可以不设置域名,域名长度不能超过128个字符。Oracle服务标识符(SID)是一个Oracle实例的唯一名称标识,长度不能超过12个字符。(4) OracleServiceORCL:数据库服务(数据库实例),是Oracle核心服务,是数据库启 动的基础,只有该服务启动,Oracle数据库才能正常启动。(必须启动) OracleOraDb11g_home1TNSListener:监听器服务,该服务只有在远程访问数据库时 才需要(无论远程计算机还是本地计算机,凡是通过Oracle Net网络协议连接数据 库都属于远程访问)。(必须启动) OracleOraDb11g_home1ConfigurationManager:配置Oracle启动时的参数的服务。(非必须启动) OracleOraDb11g_home1ClrAgent:提供对.NET支持的Oracle数据库扩展服务。(非必须启动) OracleJobSchedulerORCL:数据库作业调度服务。(非必须启动) OracleDBConsoleorcl:Oracle控制台服务,即企业管理器服务。只有该服务启动了, 才可以使用Web方式的企业管理器管理数据库。(非必须启动) OracleVssWriterORCL:是Oracle对VSS提供支持的服务。(非必须启动) OracleMTSRecoveryService:是允许数据库充当一个微软事务服务器、COM/COM+对象和分布式环境下的事务资源管理器的服务。

ORACLE数据库基础知识1

第一部分 Oracle数据库概念与原理 一、Oracle数据库概念 1. 数据库 数据库是一套解决信息管理问题的工具,是数据文件及处理这些数据文件的程序的集合。一个数据库系统必须实现在多用户环境下可靠地管理大量的数据,使得很多用户在并发处理时获得相同的结果,而且必须具有处理数据的高效性、可靠性、安全性和容错性,同时提供简便易用的客户端用户操作过程和应用接入。 2. Oracle数据库 Oracle数据库是采用数据库进程和应用程序分进程处理的Client/Server结构的关系型数据库,采用大型数据库的磁盘空间管理形式,支持大量用户同时操作相同的数据,实现高度可靠性、高度的安全性、高效率和在线备份机制。Oracle数据库适合于各种不同的硬件环境和不同的操作系统,且具有接口方便和控制容易的特性,并支持多点实时复制。 二、Oracle数据库原理 1. Oracle数据库的基本任务 (1)录入数据; (2)存储数据; (3)查询、处理数据

2. Oracle数据库的组成结构 Oracle按照应用情况可以分为核心数据(DATA)、操作系统(Operation System)、数据库服务器部分(Oracle Server)、Oracle SQL Server程序、Oracle工具(包括SQL*PLUS和很多像Developer 2000、designer 2000等工具)以及Oracle的各种应用。 按照Oracle的对象组成结构来看,Oracle数据库由以下几部分组成: ⑴实例(Instance):Oracle实例是一组有自己的系统全局区和与其相关数据库文件的Oracle服务器进程,每个实例都有自己的SID(系统识别符)。 ⑵对象(Object):由应用程序中的SQL语句引用的表空间、用户、表、视图、索引、权限、DBA(数据库管理员)等。 ⑶程序:也是Oracle数据库的过程,主要包括客户过程(client processes),根据用户的要求向服务器过程提出需求信息的请求;服务器过程server processes),接收用户过程发出的请求,并根据请求与数据库通信,完成对数据库中数据的处理。 ⑷文件:包括数据文件(Datafile),存放所有数据库有关的数据。 日志文件(Log File),也称重演日志文件(Redo Logs File)或事务记录文件(Trasaction Log File),记录针对数据库进行的修改操作或各种事务,节省数据库直接操作数据文件的时间和次数,提高处理效率。 控制文件(Control File),存放与Oracle数据库所有文件均相关的关键信息,Oracle数据库通过控制文件保持数据的一致性,以及恢复数据时使用哪些重演日志。 每个数据库至少应该有两个以上的控制文件和日志文件备份。 ⑸内存结构 Oracle的内存结构SGA主要是一个通信器,它是一块存放系统信息的内存区域,使得通信过程尽量能够在内存中处理, 达到快速度、高效率。所有用户进程和服务器进程都能够访问这个内存结构。SGA区主要分为四块: ① Data Buffer Cache(数据高速缓冲区)中存放着Oracle最近使用过的数据库数据块,当用户一次访问数据时,用户进程从物理磁盘中读取数据后将其放在这个高速缓冲区,下一次或其他用户访问时从缓冲区读取,Oracle数据库根据数据被访问的频度和缓冲区的物理大小通过相应的HASH算法将经常访问的数据保留,而去除不经常访问的数据块。 ② Dictionary Cache(Row Cache,字典高速缓冲区)用于保存数据字典中的行,数据字典中存放Oracle系统管理时需要的所有信息,这些信息包括:访问Oracle数据库的用户以及他们访问哪些数据库对象和这些对象所放的位置等。 ③ Redo Log Cache(Transaction Log Cache,即重演日志缓冲区),任何需要事务在写入到重演日志之前首先放到缓冲区中,然后定期将其写入到重演日志。 ④ Share SQL Pool(共享SQL池)相当于程序高速缓冲区,所有用户的经过语法分析的、准备执行的SQL语句都放在此共享池中。 3. Oracle数据库的数据处理流程

登录oracle数据库时常用的操作命令整理

oracle系统默认的用户和密码是 创建数据库是创建的用户 scott 密码是 tiger sys 密码是 change_on_install system 密码是 manager sysman 密码是 oem_temp 也可以 sqlplus / as sysdba 不用密码登录!! 登录oracle数据库时常用的操作命令整理 1、su – oracle 不是必需,适合于没有DBA密码时使用,可以不用密码来进入sqlplus界面。 2、sqlplus /nolog 或sqlplus system/manager 或./sqlplus system/manager@ora9i; 3、SQL>connect / as sysdba ;(as sysoper)或 connect internal/oracle AS SYSDBA ;(scott/tiger) conn sys/change_on_install as sysdba; 4、SQL>startup; 启动数据库实例 5、查看当前的所有数据库: select * from v$database; select name from v$database; desc v$databases; 查看数据库结构字段 7、怎样查看哪些用户拥有SYSDBA、SYSOPER权限: SQL>select * from V_$PWFILE_USERS; Show user;查看当前数据库连接用户 8、进入test数据库:database test; 9、查看所有的数据库实例:select * from v$instance; 如:ora9i 10、查看当前库的所有数据表: SQL> select TABLE_NAME from all_tables;

Oracle数据库基本数据类型

oracle基本数据类型

oracle 数据库中讨论char ,varchar ,varchar2 数据类型! 这3种字符串数据类型是我们使用最多的,我们在数据库设计时到底该怎么使用了? 首先我们先来分析3个数据类型的说明: 1。char CHAR的长度是固定的,最长2000个字符。 2。varchar 和 varchar2 可以肯定的是oracle中目前是可以使用varchar数据类型的,但他们的区别我查了不少资料也没有找到一个准确的答案最常见的说话是说oracle中的varchar只是varchar2的别名也就是同义词。 其次也有人认为varchar是最大长度为2000的可变字符串(和sql server中的varchar一致),而varchar2最大长度为4000。 知道了他们的特点我们就来讨论下使用区别 1.char和varchar、varchar2 由于varchar和varchar2用途类似,我们先来讨论char和他们的使用区别: varchar和varchar2比char节省空间,在效率上比char会稍微差一些,即要想获得效率,就必须牺牲一定的空间,这也就是我们在数据库设计上常说的

‘以空间换效率’。 varchar和varchar2虽然比char节省空间,但是如果一个varchar和varchar2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用char代替varchar和varchar2会更好一些。 当然还有一种情况就是象身份证这种长度几乎不变的字段可以考虑使用char,以获得更高的效率。 2。varchar和varchar2 这里就进入重点了,前面的区别我们在sql server中我们已经基本了解了,大家可能都知道,最多也就是复习下,但oracle增加了一个varchar2类型,是大家以前所没有用到过的。 因为oracle保证在任何版本中该数据类型向上和向下兼容,但不保证varchar,还有其他数据中一般都有varchar这个数据类型。 所以我得出了以下结论: 如果想在oracle新版本的数据库兼容就不要用varchar,如果想和oracle 之外其他数据库兼容就不要用varchar2。 ORACLE中的数据类型分类 ORACLE中的数据类型不可谓不多,下面把我这两天来的学习体会写一下吧! 1、字符数据类型:包括我CHAR,VARCHAR2,LONG。 CHAR型可以存储字母数字值,这种数据类型的 列长度可以是1到2000个字节。如果未指明,则默认其占用一个字节,如果用户输入的值小于指定的长度,数据库则用空格填充至固定长度。 VARCHAR2型其实就是VARCHAR,只不过后面多了一个数字2,VARCHAR2就是VARCHAR的同义词,也称别名。数据类型大小在1至4000个字节,但是和CHAR不同的一点是:当你定义了VARCHAR2长度为30,但是你只输入了10个字符,这时VARCHAR2不会像CHAR一样填充,在数据库中只有10具字节。

相关主题
文本预览
相关文档 最新文档