??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲男人天堂av网,h片在线观看视频免费,91se在线http://www.aygfsteel.com/geyinglong/category/6629.htmlJava&Oraclezh-cnFri, 02 Mar 2007 06:26:02 GMTFri, 02 Mar 2007 06:26:02 GMT60个h常用的一些SQL语句QDBAQ?Oraclehttp://www.aygfsteel.com/geyinglong/articles/46690.htmlJava FlyJava FlyWed, 17 May 2006 13:45:00 GMThttp://www.aygfsteel.com/geyinglong/articles/46690.htmlhttp://www.aygfsteel.com/geyinglong/comments/46690.htmlhttp://www.aygfsteel.com/geyinglong/articles/46690.html#Feedback0http://www.aygfsteel.com/geyinglong/comments/commentRss/46690.htmlhttp://www.aygfsteel.com/geyinglong/services/trackbacks/46690.html个h常用的一些SQL语句QDBAQ?/font>

针对此版一些ITPUB|友们提出的问题Q结合我自己常用的一些语句(关于DBA斚w的)QȝZ一

些语句如下:(以ؓ我也曄ȝq一些常用的SQL语句Q也是针Ҏ(gu)版中的),大家有兴的也可以找

?希望对大家有所帮助?br />1、查看当前数据库版本信息
select * from product_component_version;
select * from v$version;
2、授权与取消
grant 权限(如sysdba) to 用户?
revoke 权限(如sysdba) from 用户?
3、查看数据库中哪些用戯授予了sysdba?或sysoper权限
select * from v$pwfile_users;
4、更改用户密?br />alter user 用户?identified by 新密?
5、启动实例,装蝲q打开数据?br />startup
6、启动实例,不装载数据库
startup nomount
7、启动ƈ装蝲数据?br />startup mount
8、迫使实例启?br />startup force
9、打开一个关闭的数据?br />alter database open
10、以只读模式打开数据?br />alter database open read only
11、用d模式打开数据?br />alter database open read write
12、查看所有表
select * from user_all_tables;
13、查看实例名
select instance_name from v$instance;
14、查看数据库全名
select * from global_name;
15、查看表I间
select * from user_tablespaces;
16、查看某表创建的旉
select object_name,created from user_objects;
17、查看同义词
select * from user_synonyms;
18、查看当前数据库状?br />select open_mode from v$database;
19、更改ؓ只读
alter database open read only;
20、查看所有用户信?br />select username,profile,account_status from dba_users;
21、查看当前用L角色
select * from user_role_privs;
22、查看当前用Lpȝ权限
select * from user_sys_privs;
23、查看当前用L表权?br />select * from user_tab_privs;
24、设为禁?br />alter system quiesce restricted




Java Fly 2006-05-17 21:45 发表评论
]]>
用存储过E重|序?/title><link>http://www.aygfsteel.com/geyinglong/articles/42645.html</link><dc:creator>Java Fly</dc:creator><author>Java Fly</author><pubDate>Sun, 23 Apr 2006 05:21:00 GMT</pubDate><guid>http://www.aygfsteel.com/geyinglong/articles/42645.html</guid><wfw:comment>http://www.aygfsteel.com/geyinglong/comments/42645.html</wfw:comment><comments>http://www.aygfsteel.com/geyinglong/articles/42645.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/geyinglong/comments/commentRss/42645.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/geyinglong/services/trackbacks/42645.html</trackback:ping><description><![CDATA[ <font face="Verdana">用存储过E重|序?br />SQL> create sequence seq_1 increment by 1 start with 1 maxvalue 999999999;<br />序列已创建?br />SQL> create or replace procedure seq_reset(v_seqname varchar2) as<br />2 n number(10);<br />3 tsql varchar2(100);<br />4 begin<br />5 execute immediate 'select '||v_seqname||'.nextval from dual' into n;<br />6 n:=-(n-1);<br />7 tsql:='alter sequence '||v_seqname||' increment by '|| n;--让序列一ơ递增-NQ实现归0<br />8 execute immediate tsql;<br />9 execute immediate 'select '||v_seqname||'.nextval from dual' into n;<br />10 tsql:='alter sequence '||v_seqname||' increment by 1';<br />11 execute immediate tsql;<br />12 end seq_reset;<br />13 /<br />q程已创建?br />SQL> select seq_1.nextval from dual;<br />NEXTVAL<br />---------<br />2<br />SQL> /<br />NEXTVAL<br />---------<br />3<br />SQL> /<br />NEXTVAL<br />---------<br />4<br />SQL> /<br />NEXTVAL<br />---------<br />5<br />SQL> exec seq_reset('seq_1');<br />PL/SQL q程已成功完成?br />SQL> select seq_1.currval from dual;<br />CURRVAL<br />---------<br />1<br />SQL> <br />q样可以通过随时调用此过E,来达到序列重|的目的?/font> <img src ="http://www.aygfsteel.com/geyinglong/aggbug/42645.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/geyinglong/" target="_blank">Java Fly</a> 2006-04-23 13:21 <a href="http://www.aygfsteel.com/geyinglong/articles/42645.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle常用脚本 Scripthttp://www.aygfsteel.com/geyinglong/articles/42143.htmlJava FlyJava FlyThu, 20 Apr 2006 05:24:00 GMThttp://www.aygfsteel.com/geyinglong/articles/42143.htmlhttp://www.aygfsteel.com/geyinglong/comments/42143.htmlhttp://www.aygfsteel.com/geyinglong/articles/42143.html#Feedback0http://www.aygfsteel.com/geyinglong/comments/commentRss/42143.htmlhttp://www.aygfsteel.com/geyinglong/services/trackbacks/42143.html 

1、查看当前所有对?

SQL> select * from tab;

2、徏一个和a表结构一LI

SQL> create table b as select * from a where 1=2;

SQL> create table b(b1,b2,b3) as select a1,a2,a3 from a where 1=2;

3、察看数据库的大,和空间用情?

SQL> col tablespace format a20

SQL> select b.file_id文gID,

b.tablespace_name  表空?

b.file_name 物理文g?

b.bytes d节数,

(b.bytes-sum(nvl(a.bytes,0))) 已?

sum(nvl(a.bytes,0)) 剩余,

sum(nvl(a.bytes,0))/(b.bytes)*100 剩余癑ֈ?

from dba_free_space a,dba_data_files b

where a.file_id=b.file_id

group by b.tablespace_name,b.file_name,b.file_id,b.bytes

order by b.tablespace_name

/

dba_free_space --表空间剩余空间状?

dba_data_files --数据文gI间占用情况

4、查看现有回滚段及其状?

SQL> col segment format a30

SQL> SELECT SEGMENT_NAME,OWNER,TABLESPACE_NAME,SEGMENT_ID,FILE_ID,STATUS FROM DBA_ROLLBACK_SEGS;

5、查看数据文件放|的路径

SQL> col file_name format a50

SQL> select tablespace_name,file_id,bytes/1024/1024,file_name from dba_data_files order by file_id;

6、显C当前连接用?

SQL> show user

7、把SQL*Plus当计器

SQL> select 100*20 from dual;

8、连接字W串

SQL> select ?||? from ?;

SQL> select concat(?,?) from ?;

9、查询当前日?

SQL> select to_char(sysdate,'yyyy-mm-dd,hh24:mi:ss') from dual;

10、用户间复制数据

SQL> copy from user1 to user2 create table2 using select * from table1;

11、视图中不能使用order byQ但可用group by代替来达到排序目?

SQL> create view a as select b1,b2 from b group by b1,b2;

12、通过授权的方式来创徏用户

SQL> grant connect,resource to test identified by test;

SQL> conn test/test



Java Fly 2006-04-20 13:24 发表评论
]]>
ORACLEpȝ概述http://www.aygfsteel.com/geyinglong/articles/32046.htmlJava FlyJava FlyThu, 23 Feb 2006 00:01:00 GMThttp://www.aygfsteel.com/geyinglong/articles/32046.htmlhttp://www.aygfsteel.com/geyinglong/comments/32046.htmlhttp://www.aygfsteel.com/geyinglong/articles/32046.html#Feedback0http://www.aygfsteel.com/geyinglong/comments/commentRss/32046.htmlhttp://www.aygfsteel.com/geyinglong/services/trackbacks/32046.html  一?ORACLEpȝ
  1Q?ORACLE产品l构及组?
  ORACLEpȝ是由以RDBMS为核心的一批Y件品构成,其品结构轮廓下图所C:
   
  2Q?ORACLEpȝ特点
  ORACLE公司?979q_首先推出ZSQL标准的关pL据库产品Q可?00多种gq_上运行(所括微机、工作站、小型机、中型机和大型机Q,支持很多U操作系l。用LORACLE应用可方便地从一U计机配置U至另一U计机配置上。ORACLE的分布式l构可将数据和应用驻留在多台计算ZQ而相互间的通信是透明的?992q?月ORACLE公司推出的ORACLE7协同服务器数据库Q关系数据库技术迈上了新台阶。根据IDGQ国际数据集团)1992q全球UNIX数据库市场报告,ORACLE占市场销售量50%。它之所以倍受用户喜爱是因为它有以下突出的特点Q?BR>  l 支持大数据库、多用户的高性能的事务处理。ORACLE支持最大数据库Q其大小可到几百千兆Q可充分利用g讑֤。支持大量用户同时在同一数据上执行各U数据应用,q数据争用最,保证数据一致性。系l维护具有高的性能QORACLE每天可连l?4时工作Q正常的pȝ操作Q后备或个别计算机系l故障)不会中断数据库的使用。可控制数据库数据的可用性,可在数据库或在子数据库U上控制?BR>  l ORACLE遵守数据存取语言、操作系l、用h口和|络通信协议的工业标准。所以它是一个开攄l,保护了用L投资。美国标准化和技术研I所QNISTQ对ORACLE7 SERVERq行验,100%CANSI/ISO SQL89标准的二U相兼容?BR>  l 实施安全性控制和完整性控制。ORACLE为限制各监控数据存取提供pȝ可靠的安全性。ORACLE实施数据完整性,为可接受的数据指定标准?BR>  l 支持分布式数据库和分布处理。ORACLEZ充分利用计算机系l和|络Q允许将处理分ؓ数据库服务器和客户应用程序,所有共享的数据理由数据库理pȝ的计机处理Q而运行数据库应用的工作站集中于解释和昄数据。通过|络q接的计机环境QORACLE存攑֜多台计算Z的数据组合成一个逻辑数据库,可被全部|络用户存取。分布式pȝ像集中式数据库一样具有透明性和数据一致性?BR>  l h可移植性、可兼容性和可连接性。由于ORACLE软g可在许多不同的操作系l上q行Q以致ORACLE上所开发的应用可移植到M操作pȝQ只需很少修改或不需修改。ORACLE软g同工业标准相兼容Q包括许多工业标准的操作pȝQ所开发应用系l可在Q何操作系l上q行。可q接性是指ORALCE允许不同cd的计机和操作系l通过|络可共享信息?BR>  
  二?ORACLE数据库系l的体系l构
  
  ORACLE数据库系lؓh理ORACLE数据库功能的计算机系l。每一个运行的ORACLE数据库与一个ORACLE实例QINSTANCEQ相联系。一个ORACLE实例为存取和控制一数据库的软g机制。每一ơ在数据库服务器上启动一数据库时Q称为系l全局区(SYSTEM GLOBAL AREAQ的一内存区(USGAQ被分配Q有一个或多个ORACLEq程被启动。该SGA ?ORACLEq程的结合称Z个ORACLE数据库实例。一个实例的SGA和进Eؓ理数据库数据、ؓ该数据库一个或多个用户服务而工作?BR>  在ORACLEpȝ中,首先是实例启动,然后由实例装配(MOUNTQ一数据库。在松耦合pȝ中,在具有ORACLE PARALLEL SERVER 选项Ӟ单个数据库可被多个实例装配,卛_个实例共享同一物理数据库?BR>  
  1Q?ORACLE实例的进E结构和内存l构
  1Q?q程l构
  q程是操作系l中的一U机Ӟ它可执行一pd的操作步。在有些操作pȝ中用作?JOB)或Q?TASK)的术语。一个进E通常有它自己的专用存储区。ORACLEq程的体pȝ构设计性能最大?BR>  ORACLE实例有两U类型:单进E实例和多进E实例?BR>  单进EORACLEQ又U单用户ORACLEQ是一U数据库pȝQ一个进E执行全部ORACLE代码。由于ORACLE部分和客户应用程序不能分别以q程执行Q所以ORACLE的代码和用户的数据库应用是单个进E执行?BR>  在单q程环境下的ORACLE 实例Q仅允许一个用户可存取。例如在MS-DOS上运行ORACLE ?BR>  多进EORACLE实例Q又U多用户ORACLEQ用多个进E来执行ORACLE的不同部分,对于每一个连接的用户都有一个进E?BR>  在多q程pȝ中,q程分ؓ两类Q用戯E和ORACLEq程。当一用户q行一应用E序Q如PRO*CE序或一个ORACLE工具Q如SQL*PLUSQ,为用戯行的应用建立一个用戯E。ORACLEq程又分Zc:服务器进E和后台q程。服务器q程用于处理q接到该实例的用戯E的h。当应用和ORACELE是在同一台机器上q行Q而不再通过|络Q一般将用户q程和它相应的服务器q程l合成单个的q程Q可降低pȝ开销。然而,当应用和ORACLEq行在不同的机器上时Q用戯E经q一个分L务器q程与ORACLE通信。它可执行下列Q务:
  l 对应用所发出的SQL语句q行语法分析和执行?BR>  l 从磁盘(数据文gQ中d必要的数据块到SGA的共享数据库~冲区(该块不在~冲区时Q?BR>  l 结果返回给应用E序处理?BR>  pȝZ使性能最好和协调多个用户Q在多进E系l中使用一些附加进E,UCؓ后台q程。在许多操作pȝ中,后台q程是在实例启动时自动地建立。一个ORACLE实例可以有许多后台进E,但它们不是一直存在。后台进E的名字为:
  DBWR 数据库写入程?BR>  LGWR 日志写入E序
  CKPT 查点
  SMON pȝ监控
  PMON q程监控
  ARCH 归档
  RECO 恢复
  LCKn 锁
  Dnnn 调度q程
  Snnn 服务?BR>  每个后台q程与ORACLE数据库的不同部分交互?BR>  下面对后台进E的功能作简单介l:
  DBWRq程Q该q程执行缓冲区写入数据文gQ是负责~冲存储区管理的一个ORACLE后台q程。当~冲Z的一~冲修改Q它被标志ؓ“弄脏”,DBWR的主要Q务是“弄脏”的~冲区写入磁盘,使缓冲区保持“干净”。由于缓冲存储区的缓冲区填入数据库或被用戯E弄脏,未用的缓冲区的数目减。当未用的缓冲区下降到很,以致用户q程要从盘d块到内存存储区时无法扑ֈ未用的缓冲区ӞDBWR管理缓冲存储区Q用户q程d得到未用的缓冲区?BR>  ORACLE采用LRUQLEAST RECENTLY USEDQ算法(最q最用算法)保持内存中的数据块是最q用的QI/O最。在下列情况预示DBWR 要将弄脏的缓冲区写入盘Q?BR>  l 当一个服务器q程一~冲区移入“弄脏”表Q该弄脏表达C界长度时Q该服务q程通知DBWRq行写。该临界长度是ؓ参数DB-BLOCK-WRITE-BATCH的值的一半?BR>  l 当一个服务器q程在LRU表中查找DB-BLOCK-MAX-SCAN-CNT~冲区时Q没有查到未用的~冲区,它停止查扑ƈ通知DBWRq行写?BR>  l 出现时Q每?U)QDBWR 通知本n?BR>  l 当出现检查点ӞLGWR通知DBWR
  在前两种情况下,DBWR弄脏表中的块写入磁盘,每次可写的块数由初始化参数DB-BLOCK-WRITE-BATCH所指定。如果弄脏表中没有该参数指定块数的缓冲区QDBWR从LUR表中查找另外一个弄脏缓冲区?BR>  如果DBWR在三U内未活动,则出现超时。在q种情况下DBWR对LRU表查找指定数目的~冲区,所扑ֈM弄脏~冲区写入磁盘。每当出现超ӞDBWR查找一个新的缓冲区l。每ơ由DBWR查找的缓冲区的数目是为寝化参数DB-BLOCK-WRITE-BATCH的值的二倍。如果数据库I转,DBWR最l将全部~冲区存储区写入盘?BR>  在出现检查点ӞLGWR指定一修改~冲必须写入到磁盘。DBWR指定的~冲区写入磁盘?BR>  在有些^CQ一个实例可有多个DBWR。在q样的实例中Q一些块可写入一盘Q另一些块可写入其它磁盘。参数DB-WRITERS控制DBWRq程个数?BR>  LGWRq程Q该q程日志缓冲区写入盘上的一个日志文Ӟ它是负责理日志~冲区的一个ORACLE后台q程。LGWRq程自上次写入盘以来的全部日志项输出QLGWR输出Q?BR>  l 当用戯E提交一事务时写入一个提交记录?BR>  l 每三U将日志~冲出?BR>  l 当日志缓冲区?/3已满时将日志~冲出?BR>  l 当DBWR修改缓冲区写入盘时则日志缓冲区输出?BR>  LGWRq程同步地写入到zd的镜象在U日志文件组。如果组中一个文件被删除或不可用QLGWR 可l地写入该组的其它文件?BR>  日志~冲区是一个@环缓冲区。当LGWR日志缓冲区的日志项写入日志文g后,服务器进E可新的日志项写入到该日志~冲区。LGWR 通常写得很快Q可保日志~冲区LI间可写入新的日志项?BR>  注意Q有时候当需要更多的日志~冲区时QLWGR在一个事务提交前将日志写出,而这些日志项仅当在以后事务提交后才永久化?BR>  ORACLE使用快速提交机Ӟ当用户发出COMMIT语句Ӟ一个COMMIT记录立即攑օ日志~冲区,但相应的数据~冲区改变是被gq,直到在更有效时才它们写入数据文件。当一事务提交Ӟ被赋l一个系l修改号QSCNQ,它同事务日志一赯录在日志中。由于SCN记录在日志中Q以致在q行服务器选项配置情况下,恢复操作可以同步?BR>  
  CKPTq程Q该q程在检查点出现Ӟ对全部数据文件的标题q行修改Q指C查点。在通常的情况下Q该d由LGWR执行。然而,如果查点明显地降低系l性能Ӟ可CKPTq程q行Q将原来由LGWRq程执行的检查点的工作分d来,由CKPTq程实现。对于许多应用情况,CKPTq程是不必要的。只有当数据库有许多数据文gQLGWR在检查点时明昑֜降低性能才CKPTq行。CKPTq程不将块写入磁盘,该工作是由DBWR完成的?BR>  初始化参数CHECKPOINT-PROCESS控制CKPTq程的能或使不能。缺省时为FALSEQ即Z不能?BR>  
  SMONq程Q该q程实例启动时执行实例恢复,q负责清理不再用的临时Dc在hq行服务器选项的环境下QSMONҎ(gu)故障CPU或实例进行实例恢复。SMONq程有规律地被呼醒,查是否需要,或者其它进E发现需要时可以被调用?BR>  
  PMONq程Q该q程在用戯E出现故障时执行q程恢复Q负责清理内存储区和释放该进E所使用的资源。例Q它要重|活动事务表的状态,释放锁Q将该故障的q程的ID从活动进E表中移厅RPMONq周期地查调度进E(DISPATCHERQ和服务器进E的状态,如果已死Q则重新启动Q不包括有意删除的进E)?BR>  PMON有规律地被呼醒,查是否需要,或者其它进E发现需要时可以被调用?BR>  
  RECOq程Q该q程是在h分布式选项时所使用的一个进E,自动地解军_分布式事务中的故障。一个结点RECO后台q程自动地连接到包含有?zhn)而未决的分布式事务的其它数据库中QRECO自动地解x有的(zhn)而不决的事务。Q何相应于已处理的(zhn)而不决的事务的行从每一个数据库的?zhn)挂事务表中删厅R?BR>  当一数据库服务器的RECO后台q程试图建立同一q程服务器的通信Q如果远E服务器是不可用或者网l连接不能徏立时QRECO自动地在一个时间间隔之后再ơ连接?BR>  RECO后台q程仅当在允许分布式事务的系l中出现Q而且DISTRIBUTED ?TRANSACTIONS参数是大??BR>  
  ARCHq程Q该q程已填满的在U日志文件拷贝到指定的存储设备。当日志是ؓARCHIVELOG使用方式、ƈ可自动地归档时ARCHq程才存在?BR>  
  LCKnq程Q是在具有ƈ行服务器选g环境下用,可多?0个进E(LCK0QLCK1……,LCK9Q,用于实例间的锁?BR>  
  Dnnnq程Q调度进E)Q该q程允许用户q程׃n有限的服务器q程QSERVER PROCESSQ。没有调度进E时Q每个用戯E需要一个专用服务进E(DEDICATEDSERVER PROCESSQ。对于多U烦服务器(MULTI-THREADED SERVERQ可支持多个用户q程。如果在pȝ中具有大量用P多线索服务器可支持大量用P其在客户_服务器环境中?BR>  在一个数据库实例中可建立多个调度q程。对每种|络协议臛_建立一个调度进E。数据库理员根据操作系l中每个q程可连接数目的限制军_启动的调度程序的最优数Q在实例q行时可增加或删除调度进E。多U烦服务器需要SQL*NET版本2或更后的版本。在多线索服务器的配|下Q一个网l接收器q程{待客户应用q接hQƈ每一个发送到一个调度进E。如果不能将客户应用q接C调度q程Ӟ|络接收器进E将启动一个专用服务器q程。该|络接收器进E不是ORACLE实例的组成部分,它是处理与ORACLE有关的网l进E的l成部分。在实例启动Ӟ该网l接收器被打开Qؓ用户q接到ORACLE建立一通信路径Q然后每一个调度进E把q接h的调度进E的地址l予于它的接收器。当一个用戯E作q接hӞ|络接收器进E分析请求ƈ军_该用h否可使用一调度q程。如果是Q该|络接收器进E返回该调度q程的地址Q之后用戯E直接连接到该调度进E。有些用戯E不能调度进E通信Q如果用SQL*NET以前的版本的用户Q,|络接收器进E不能将如此用户q接C调度q程。在q种情况下,|络接收器徏立一个专用服务器q程Q徏立一U合适的q接?BR>  
  
  
  2Q、ORACLE内存l构
  ORACLE在内存存储下列信息:
  l 执行的程序代码?BR>  l q接的会话信?BR>  l E序执行期间所需数据和共享的信息
  l 存储在外存储上的~冲信息?BR>  ORACLEh下列基本的内存结构:
  l 软g代码?BR>  l pȝ全局?包括数据库缓冲存储区、日志缓冲区和共享池.
  l E序全局?包括栈区和数据区.
  l 排序?BR>  
  软g代码?BR>  用于存储正在执行的或可以执行的程序代码?BR>  软g区是只读Q可安装成共享或非共享。ORACLEpȝE序是可׃n的,以致多个ORACLE用户可存取它Q而不需要在内存有多个副本。用L序可以共享也可以不共享?BR>  
  pȝ全局?BR>  Zl由O(jin)RACLE分配的共享的内存l构Q可包含一个数据库实例的数据或控制信息。如果多个用户同时连接到同一实例Ӟ在实例的SGA中数据可为多个用h׃nQ所以又UCؓ׃n全局区。当实例起动ӞSGA的存储自动地被分配;当实例关闭时Q该存储被回收。所有连接到多进E数据库实例的全部用户可自动地被分配Q当实例关闭Ӟ该存储被回收。所有连接到多进E数据库实例的全部用户可使用其SGA中的信息Q但仅仅有几个进E可写入信息。在SGA中存储信息将内存划分成几个区Q数据库~冲存储区、日志缓冲区、共享池、请求和响应队列、数据字典存储区和其它各U信息?BR>  
  E序全局?BR>  PGA是一个内存区Q包含单个进E的数据和控制信息,所以又UCؓq程全局区(PROCESS GLOBAL AREAQ?BR>  
  排序?BR>  排序需要内存空_ORACLE利用该内存排序数据,q部分空间称为排序区。排序区存在于请求排序的用户q程的内存中Q该I间的大ؓ适就排序数据量的大小Q可增长Q但受初始化参数SORT-AREA-SIZER所限制?BR>  
  2Q?ORACLE的配|方?BR>  所有连接到ORACLE的用户必L行两个代码模块可存取一个ORACLE数据库实例:
  l 应用或ORACLE工具Q一数据库用h行一数据库应用或一个ORACLE工具Q可向ORACLE数据库发出SQL语句?BR>  l ORACLE服务器程序:负责解释和处理应用中的SQL语句?BR>  在多q程实例中,q接用户的代码可按下列三U方案之一配置Q?BR>  l 对于每一个用P其数据库应用E序和服务器E序l合成单个用戯E?BR>  l 对于每一个用P其数据库应用是由用户q程所q行Qƈ有一个专用服务器q程。执行ORACLE服务器的代码。这L配置UCؓ专用服务器体pȝ?BR>  l 执行数据库应用的q程不同于执行ORACLE服务器代码的q程Q而且每一个服务器q程Q执行ORACLE服务器代码)可服务于多个用户q程Q这L配置UCؓ多线索服务器体系l构?BR>  
  1) USER/SERVERq程相结合的l构
  在这U配|下Q数据库应用和ORACLE服务器程序是在同一个进E中q行Q该q程UCؓ用户q程?BR>  q种ORACLE配置有时UCؓ单Q务ORACLEQsingle_task ORACLEQ,该配|适用于这L操作pȝQ它可在同一q程中的数据库应用和ORACLE代码之间l护一个隔,该隔L为数据安全性和完整性所需。其中程序接口(program interfaceQ是负责ORACLE服务器代码的隔离和保护,在数据库应用和ORACLE用户E序之间传送数据?BR>  
  2) 使用专用服务器进E的pȝl构
  使用专用服务器进E的ORACLEpȝ在两台计机上运行。在q种pȝ中,在一计算Z用户q程执行数据库应用,而在另一台计机上的服务器进E执行相应的ORACLE服务器代码,q两个进E是分离的。ؓ每个用户q程建立的不同的服务器进E称Z用服务器q程Q因服务器进E仅对相q的用户q程起作用。这U配|又UCؓ两Q务ORACLE。每一个连接到ORACLE的用戯E有一个相应的专用服务q程。这U系l结构允许客户应用是有工作站上执行,通过|络与运行ORACLE的计机通信。当客户应用和ORACLE服务器代码是在同一台计机上执行时Q这U结构也可用?BR>  
  3) 多线索服务器的系l结?BR>  多线索服务器配置允许许多用户q程׃n很少服务器进E。在没有多线索服务器的配|中Q每一个用戯E需要自q专用服务器进E。在h多线索服务器的配|中Q许多用戯E连接到调度q程Q由调度q程客戯求发送到一个共享服务器q程。多U烦服务器配|的优点是降低系l开销Q增加用户个数?BR>  
  该系l中需要下列类型的q程Q?BR>  l |络接收器进E,用戯E连接到调度q程和专用服务器q程?BR>  l 一个或多个调度q程
  l 一个或多个׃n服务器进E?BR>  其中|络接收器进E等待新来的q接hQ决定每一用户q程能否用共享服务器q程。如果可以用,接收器进E将一调度q程的地址q回l用戯E。如果用戯E请求一专用服务器,该接收器q程徏立一个专用服务器q程Q将用户q程q接到该专用服务器进E。对于数据库客户机所使用的每U网l协议至配|一个调度进E,q启动它?BR>  当用户作一ơ调用时Q调度进E将h攄在SGA的请求队列中Q由可用的共享服务器q程获取。共享服务器q程为完成每一个用戯E的h作所有必要的数据库调用。当服务器完成请求时Q将l果q回到调度进E的队列Q然后由调度q程完成的hq回l用戯E?BR>  ׃n服务器进E:除共享服务器q程不是q接指定的用戯E外Q共享服务器q程和专用服务器q程提供相同的功能,一个共享服务器q程在多U烦服务器的配置中可ZQ何客戯求服务。一个共享服务器q程的SGA不包含有与用L关的数据Q其信息可ؓ所有共享服务器q程存取Q它仅包含栈I间、进E指定变量。所有与会话有关的信息是包含有SGA中。每一个共享服务器q程可存取全部会话的数据I间Q以致Q何服务进E可处理M会话的请求。对于每一个会话的数据I间是在SGA中分配空间?BR>  ORACLEҎ(gu)h队列的长度可动态地调整׃n服务器进E。可建立的共享服务器q程请求放到请求队列。一个用戯求是Ҏ(gu)据库的一ơ程序接口调用,为SQL语句。在SGA中请求队列对实例的全部调度进E是公用的。服务器q程为新h查公用请求队列,按先q先出的原则从队列检Z个请求,然后为完成该hҎ(gu)据库作必要的调用。共享服务器q程响应放在调度进E的响应队列。每一个调度进E在SGA中有自己的响应队列,每个调度q程负责完成的h回送给相应的用戯E?BR>  
  3.ORACLEq行
  1) 使用专用服务q程的ORACLE的运?BR>  在这U配|下QORACLEq行q程如下Q?BR>  Q?Q?数据库服务器计算机当前正在运行ORACLEQ后台进E)?BR>  Q?Q?在一客户工作站运行一个数据库应用Qؓ用户q程Q,如SQL*PLUS。客户应用用SQL*NET DRIVER建立Ҏ(gu)务器的连接?BR>  Q?Q?数据库服务器计算机当前正q行合适的SQL*NET DRIVERQ该Z接收器进E检出客h据库应用的连接请求,q在该机上ؓ用户q程建立专用服务器进E?BR>  Q?Q?用户发出单个SQL语句?BR>  Q?Q?专用服务器进E接收该语句Q在此处有两U方法处理SQL语句Q?BR>  l 如果在共享池一׃nSQLZ包含有相同SQL语句Ӟ该服务器q程可利用已存在的共享SQL区执行客LSQL语句?BR>  l 如果在共享池中没有一个SQL区包含有相同的SQL语句Ӟ在共享池中ؓ该语句分配一新的׃nSQL区?BR>  在每一U情况,在会话的PGA中徏立一个专用SQL区,专用服务器进E检查用户对查询数据的存取权限?BR>  (6) 如果需要,服务器进E从数据文g中检索数据块Q或者可使用已存储在实例SGA中的~冲存储区的数据块?BR>  (7) 服务器进E执行存储在׃nSQLZ的SQL语句。数据首先在SGA中修改,由DBWRq程在最有效时将它写入磁盘。LGWRq程在在U日志文件中记录用户提交h的事务?BR>  Q?Q如果请求成功,服务器将通过|络发送一信息。如果请求不成功Q将发送相应的错误信息?BR>  Q?Q在整个q程中,其它的后台进E是q行的,同时注意需要干预的条g。另外,ORACLE理其它事务Q防止不同事务之间请求同一数据的竞争?BR>  
  
  2)  使用多线索服务器的ORACLE的运?BR>  在这U配|下QORACLEq行q程如下Q?BR>  Q?Q?一数据库服务器计算行用多U烦服务器配|的ORACLE?BR>  Q?Q?在一客户工作站运行一数据库应用(在一用户q程中)。客户应用合适的SQL*NET驱动器试囑־立到数据库服务器计算机的q接?BR>  Q?Q?数据库服务器计算机当前运行合适的SQL*NET驱动器,它的|络接收器进E检出用戯E的q接hQƈ军_用户q程如何q接。如果用h使用SQL*NET版本2Q该|络接收器通知用户q程使用一个可用的调度q程的地址重新q接?BR>  Q?Q?用户发出单个SQL语句
  Q?Q?调度q程用戯E的h攑օh队列Q该队列位于SGA中,可ؓ所有调度进E共享?BR>  Q?Q?一个可用共享服务器验公用调度进E请求队列,q从队列中检Z一个SQL语句。然后处理该SQL语句Q同前一Q?Q,Q?Q和Q?Q。注意:会话的专用SQL区是建立在SGA中?BR>  Q?Q?一当共享服务器q程完成SQL处理Q该q程结果放|发入该h的调度进E的响应队列?BR>  Q?Q?调度q程查它的响应队列,q将完成的请求送回h的用戯E?BR>  
  4.数据库结构和I间理
  一个ORACLE数据库是数据的集合,被处理成一个单位。一个ORACLE数据库有一个物理结构和一个逻辑l构?BR>  物理数据库结构(physical database structureQ是由构成数据库的操作系l文件所军_。每一个ORACLE数据库是׃U类型的文gl成Q数据文件、日志文件和控制文g。数据库的文件ؓ数据库信息提供真正的物理存储?BR>  逻辑数据库结构是用户所涉及的数据库l构。一个ORACLE数据库的逻辑l构׃列因素决定:
  l 一个或多个表空?BR>  l 数据库模式对象(卌、视图、烦引、聚集、序列、存储过E)
  逻辑存储l构如表I间(dataspace)、段(segment)和范围将支配一个数据库的物理空间如何用。模式对?schema object)用它们之间的联系l成了一个数据库的关p设计?BR>  
  1Q?物理l构
  
  Q?Q?数据文g
  每一个ORACLE数据库有一个或多个物理的数据文?data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结?如表、烦?的数据物理地存储在数据库的数据文件中。数据文件有下列特征Q?BR>  l 一个数据文件仅与一个数据库联系?BR>  l 一旦徏立,数据文g不能改变大小
  l 一个表I间Q数据库存储的逻辑单位Q由一个或多个数据文gl成?BR>     数据文g中的数据在需要时可以dq存储在ORACLE内存储区中。例如:用户要存取数据库一表的某些数据Q如果请求信息不在数据库的内存存储区内,则从相应的数据文件中dq存储在内存。当修改和插入新数据Ӟ不必立刻写入数据文g。ؓ了减磁盘输出的LQ提高性能Q数据存储在内存Q然后由O(jin)RACLE后台q程DBWR军_如何其写入到相应的数据文g?BR>  
  Q?Q?日志文g
  每一个数据库有两个或多个日志文gQredo log fileQ的l,每一个日志文件组用于攉数据库日志。日志的主要功能是记录对数据所作的修改Q所以对数据库作的全部修Ҏ(gu)记录在日志中。在出现故障Ӟ如果不能修Ҏ(gu)据永久地写入数据文gQ则可利用日志得到该修改Q所以从不会丢失已有操作成果?BR>  日志文g主要是保护数据库以防止故障。ؓ了防止日志文件本w的故障QORACLE允许镜象日志(mirrored redo log)Q以致可在不同磁盘上l护两个或多个日志副本?BR>  日志文g中的信息仅在pȝ故障或介质故障恢复数据库时用,q些故障L数据库数据写入到数据库的数据文件。然而Q何丢q数据在下一ơ数据库打开ӞORACLE自动地应用日志文件中的信息来恢复数据库数据文件?BR>  
  Q?Q?控制文g
  每一ORACLE数据库有一个控制文?control file)Q它记录数据库的物理l构Q包含下列信息类型:
  l 数据库名Q?BR>  l 数据库数据文件和日志文g的名字和位置Q?BR>  l 数据库徏立日期?BR>  Z安全赯Q允许控制文件被镜象?BR>  每一ơORACLE数据库的实例启动Ӟ它的控制文g用于标识数据库和日志文gQ当着手数据库操作时它们必被打开。当数据库的物理l成更改ӞORACLE自动更改该数据库的控制文件。数据恢复时Q也要用控制文件?BR>  
  2Q?逻辑l构
  数据库逻辑l构包含表空间、段、范?extent)、数据块和模式对象?BR>  Q?Q?表空?BR>  一个数据库划分Z个或多个逻辑单位Q该逻辑单位UCؓ表空_TABLESPACEQ。一个表I间可将相关的逻辑l构l合在一赗DBA可利用表I间作下列工作:
  l 控制数据库数据的盘分配?BR>  l 确定的I间份额分配l数据库用户?BR>  l 通过使单个表I间在线或离U,控制数据的可用性?BR>  l 执行部分数据库后备或恢复操作?BR>  l 为提高性能Q跨设备分配数据存储?BR>  数据库、表I间和数据文件之间的关系如下图所C:
   
  。每个数据库可逻辑划分Z个或多个表空?BR>  。每一个表I间是由一个或多个数据文gl成Q该表空间物理地存储表空间中全部逻辑l构的数据。DBA可以建立新的表空_可ؓ表空间增加数据文件或可删除数据文Ӟ讄或更改缺省的D存储位|?BR>  
  每一个ORACLE数据库包含有一个名为SYSTEM的表I间Q在数据库徏立是自动建立。在该表I间中d含有整个数据库的数据字典表。最的数据库可只需要SYSTEM表空间。该表空间必LL在线。表和存储的PL/SQLE序单元Q过E、函数、包和触发器Q的全部存储数据是存储在SYSTEM表空间中。如果这些PL/SQL对象是ؓ数据库徏的,DBA在SYSTEM表空间中需要规划这些对象所需要的I间?BR>  表空间利用增加数据文件扩大表I间Q表I间的大ؓl成该表I间的数据文件大的和?BR>  DBA可以使ORACLE数据库中M表空_除SYSTEM表空间外Q在U(ONLINEQ或ȝQOFFLINEQ。表I间通常是在U,以致它所包含的数据对数据库用h可用的。当表空间ؓȝӞ其数据不可用。在下列情况下,DBA可以使其ȝ?BR>  。部分数据不可用,而剩余的部分允许正常存取
  。执行离U的表空间后?BR>  。ؓ了修Ҏ(gu)l护一应用Q它和它的一l表临时不可用?BR>  包含有正在活动的回滚D늚表空间不能被ȝQ仅当回滚段不正在用时Q该表空间才可离Uѝ?BR>  在数据字怸记录表空间的状态,在线q是ȝ。如果在数据库关闭时一表空间ؓȝQ那么在下次数据库装配和重新打开后,它仍然保持离Uѝ?BR>  当出现某些错误时Q一个表I间可自动地由在U改变ؓȝ。通过使用多个表空_不同类型的数据分开Q更方便DBA来管理数据库?BR>  ORACLE数据库中一表空间是׃个或多个物理数据文gl成Q一个数据文件只可与一个表I间惌pR当Z表空间徏立一数据文gӞORACLE建立该文Ӟ分配指定的磁盘空间容量。在数据文g初时建立后,所分配的磁盘不包含M数据。表I间可以在线或离Uѝ在ORACLE中还允许单独数据文g在线或离Uѝ?BR>  
  Q?Q?Dc范围和数据?BR>  ORACLE通过Dc范围和数据块逻辑数据l构可更l地控制盘I间的用?BR>  
  D?BR>  D(SEGMENTQ包含表I间中一U指定类型的逻辑存储l构Q是׃l范围组成。在ORACLE数据库中有几U类型的D:数据Dc牵引段、回滚段和时段?BR>  数据D:对于每一个非聚集的表有一数据D,表的所有数据存攑֜该段。每一聚集有一个数据段Q聚集中每一个表的数据存储在该段中?BR>  索引D:每一个烦引有一索引D,存储索引数据?BR>  回滚D:是由DBA建立Q用于时存储要撤消的信息,q些信息用于生成M致性数据库信息、在数据库恢复时使用、回滚未提交的事务?BR>  临时D:当一个SQL语句需要时工作区Ӟ由O(jin)RACLE建立。当语句执行完毕Q时段的范围退回给pȝ?BR>  ORACLEҎ(gu)有段的空间分配,以范围ؓ单位?BR>  
  范围
  一个范_EXTENTQ是数据库存储空间分配的一个逻辑单位Q它pl数据块所l成。每一个段是由一个或多个范围l成。当一D中间所有空间已完全使用ӞORACLED分配一个新的范围?BR>  Zl护的目的,在数据库的每一D含有段标题块(segment header blockQ说明段的特征以及该D中的范围目录?BR>  
  数据?BR>  数据块(data blockQ是ORACLE理数据文g中存储空间的单位Qؓ数据库用的I/O的最单位,其大可不同于操作系l的标准I/O块大?BR>  
  
  数据块的格式Q?BR>  
  Q?Q?模式和模式对?BR>  一个模?schema)为模式对?scehma object)的一个集合,每一个数据库用户对应一个模式。模式对象ؓ直接引用数据库数据的逻辑l构Q模式对象包含如表、视图、烦引、聚集、序列、同义词、数据库链、过E和包等l构。模式对象是逻辑数据存储l构Q每一U模式对象在盘上没有一个相应文件存储其信息。一个模式对象逻辑地存储在数据库的一个表I间中,每一个对象的数据物理地包含在表空间的一个或多个数据文g中?BR>  
  ?BR>  表(tableQؓ数据库中数据存储的基本单位,其数据按行、列存储。每个表h一表名和列的集合。每一列有一个列名、数据类型、宽度或_ֺ、比例。一行是对应单个记录的列信息的集合?BR>  
  视图
  一个视图(view)是由一个或多个表(或其他视图)中的数据的一U定制的表示Q是用一个查询定义,所以可认ؓ是一个存储的查询Qstored queryQ或是一个虚?virtual table)。视囑֏在用表的许多地方用?BR>  ׃视图是由表导出的Q视囑֒表存在许多类|视图象表最多可定义254列。视囑֏以被查询Q而在修改、插入或删除时具有一定的限制Q在视图上执行的全部操作真正地媄响视囄基本表中的数据,受到基本表的完整性约束和触发器的限制?BR>  视图与表不同Q一个视图不分配M存储I间Q视图不真正地包含数据。由查询定义的视囄应于视图引用表中的数据。视囑֏在数据字怸存储其定义?BR>  引入视图有下列好处:
  。通过限制对表的行预定义集合的存取Qؓ表提供附加的安全?BR>  。隐藏数据复杂性?BR>  。ؓ用户化命?BR>  。ؓ基本表的数据提供另一U观炏V?BR>  。可应用隔d本表定义的修?BR>  。用于不用视图无法表C的查询?BR>  。可用于保存复杂查询?BR>  
  聚集
  聚集QclusterQ是存储表数据的可选择的方法。一个聚集是一l表Q将h同一公共列值的行存储在一Pq且它们l常一起用。这些公共列构成聚集码。例如:EMP表各DEPT表共享DEPTNO列,所以EMP表和DEPT表可聚集在一P聚集码的列ؓDEPTNO列,该聚集将每个部门的全部职工行各该部门的行物理地存储在同一数据块中?BR>  
  索引
  索引(index)是与表和聚集相关的一U选择l构。烦引是为提高数据检索的性能而徏立,利用它可快速地定指定的信息。ORACLE索引数据提供快速存取\径。烦引适用于一范围的行查询或指定行的查询?BR>  索引可徏立在一表的一列或多列上,一旦徏立,由O(jin)RACLE自动l护和用,对用h完全透明的。烦引是逻辑地和物理地独立于数据Q它们的建立或删除对表没有媄响,应用可l处理。烦引数据的索性能几乎保持常数Q而当一表上存在许多索引Ӟ修改、删除和插入操作的性能会下降?BR>  索引有唯一索引各非唯一索引。唯一索引保证表中没有两行在定义烦引的列上h重复倹{ORACLE在唯一码上自动地定义唯一索引实施UNIQUE完整性约束?BR>  l合索引是在表的某个列上所建立的一索引。组全烦引可加快SELECT语句的检索速度Q在其WHERE子句中可引用l合索引的全部或主要部分 。所以在定义中给出列的次序,经常存取的或选择最多的列放在首位?BR>  在徏立烦引时Q将在表I间自动地徏立一索引D,索引D늩间分配和保留I间的用受下列方式控制Q?BR>  索引D范围的分配帔R该烦引段的存储参数控制?BR>  其数据块中未用空间可受该D늚PCTFREE参数讄所控制?BR>  
  序列生成?BR>  序列生成?sequence generator)产生序列受在多用L境下该序列生成器特别有用Q可生成各返回序列号而不需要磁盘I(y)/O或事务封锁?BR>  序列号ؓORACLE整数Q最多可?8个数字。一个序列定义指Z般信息:序列的名字、上升或下降、序列号之间间距和其它信息。对所有序列的的定义以行存储在SYSTEM表空间中的数据字典表中,所以所有序列定义L可用。由引用序列LSQL语句使用序列P可生成一个新的序列号或用当前序列号。一旦在用户会话中的SQL语句生成一序列P该序列号仅ؓ该会话可用。序列号生成是独立于表,所以同一序列生成器可用于一个和多个表。所生成序列号可用于生成唯一的主码?BR>  
  同义?BR>  一个同义词(synonym)ZQ何表、视图、快照、序列、过E、函数或包的别名Q其定义存储在数据字怸。同义词因安全性和方便原因而经怋用,可用于:
  l 可屏蔽对象的名字及其持有者?BR>  l 为分布式数据库的q程对象提供位置透明性?BR>  l 为用L化SQL语句?BR>  有两U同义词Q公用和专用。一个公用同义词为命名ؓPUBLICҎ(gu)用户l所持有Q可为数据库中每一个用h存取。一个专用同义词是包含在指定用户的模式中Q仅用户和授权的用户所使用?BR>  
  杂凑
  杂凑QhashingQ是存储表数据一U可选择的方法,用以改进数据索的性能。要使用杂凑Q就要徏立杂凑聚集,表装入到该聚集。在骠凑聚集中的表行Ҏ(gu)杂凑函数的结果进行物理学存储和检索。杂凑函数用于生成一个数值的分布Q该数值称为杂凑|它是Z指定的聚集码倹{?BR>  
  E序单元
  E序单元Qprogram unitQ是指存储过E、函数和包(PACKAGEQ。一个过E和函数Q是由SQL语句和PL/SQL语句l合在一P为执行某一个Q务的一个可执行单位。一个过E或函数可被建立Q在数据库中存储其编译Ş式,可由用户或数据库应用所执行。过E和函数差别在函数总返回单个值给调用者,而过E没有D回给调用者?BR>  包提供相关的q程、函数、变量和其它包结构封装v来ƈ存贮在一L一U方法,允许理者和应用开发者利用该Ҏ(gu)l织如此的程序(routineQ?来提供更多的功能和提高性能?BR>  
  数据库链
  数据库链是一个命名的对象Q说明从一数据库到另一数据库的一路径QPATHQ。在分布式数据库中,对全局对象名引用时Q数据库N式地使用?BR>  
  三、数据库和实例的启动和关?BR>  一个ORACLE数据库没有必要对所有用hL可用Q数据库理员可启动数据库,以致它被打开。在数据库打开情况下,用户可存取数据库中的信息。当数据库不使用ӞDBA可关闭它Q关闭后的数据库Q用户不能存取其信息?BR>  数据库的启动和关闭是非常重要的管理功能,通过以INTERNALq接到ORACLE的能力来保护。以INTERNAL q接到ORACLE需要有下列先决条gQ?BR>  该用L操作pȝ账号h使用INTERNALq接的操作系l特权?BR>  对INTERNAL数据库有一口oQ该用户知道其口令?BR>  另外Q当用户以INTERNALq接Ӟ可连接到专用服务器,而且是安全连接?BR>  
  1Q?数据库启?BR>     启动数据库ƈ使它可用有三步操作:
  l 启动一个实例;
  l 装配数据?BR>  l 打开数据?BR>  
  1Q?启动一个实?BR>  启动一实例的处理包含分配一个SGAQ数据库信息使用的内存共享区Q和后台q程的徏立。实例v动的执行先于该实例装配一数据库。如果仅启动实例Q则没有数据库与内存储结构和q程相联pR?BR>  
  2Q?装配一数据?BR>  装配数据库是一数据库与已启动的实例相联。当实例安装一数据库之后,该数据库保持关闭Q仅DBA可存取?BR>  
  3Q?打开一数据?BR>  打开一数据库是使数据库可以q行正常数据库操作的处理。当一数据库打开所有用户可q接到该数据库用存取其信息。在数据库打开Ӟ在线数据文g和在U日志文件也被打开。如果一表空间在上一ơ数据库关闭时ؓȝQ在数据库再ơ打开Ӟ该表I间与它所相联的数据文件还是离U的?BR>  
  2Q?数据库和实例的关?BR>  
  关闭一实例以及它所q接的数据库也有三步操作Q?BR>  
  1Q?关闭数据?BR>  数据库停止的W一步是关闭数据库。当数据库关闭后Q所有在SGA中的数据库数据和恢复数据相应地写入到数据文g和日志文件。在q操作之后,所有联机数据文件和联机的日志文件也被关闭,Mȝ表空间中数据文gҎ(gu)已关闭的。在数据库关闭后但还安装Ӟ控制文g仍保持打开?BR>  
  2Q?怸数据?BR>  停止数据库的W二步是从实例卸下数据库。在数据库卸下后Q在计算机内存中仅保留实例。在数据库卸下后Q数据库的控制文件也被关闭?BR>  
  3Q?停止实例
  停止数据库的最后一步是停止实例。当实例停止后,SAG是从内存中撤消,后台q程被中止?BR>  
  3Q?初始化参数文?BR>  在启动一个实例时QORACLE必须d一初始化参数文Ӟinitialization parameter fileQ,该参数文件是一个文本文Ӟ包含有实例配|参数。这些参数置成特D|用于初始ORACLE实例的许多内存和q程讄Q该参数文g包含Q?BR>  l 一个实例所启动的数据库名字
  l 在SGA中存储结构用多内存;
  l 在填满在U日志文件后作什么;
  l 数据库控制文件的名字和位|;
  l 在数据库中专用回滚段的名字?BR>  
  
  四、数据字典的使用
  数据字典是ORACLE数据库的最重要的部分之一Q是׃l只ȝ表及其视图所l成。它提供有关该数据库的信息,可提供的信息如下Q?BR>  l ORACLE用户的名字;
  l 每一个用h授的Ҏ(gu)和角Ԍ
  l 模式对象的名字(表、视图、快照、烦引、聚集、同义词、序列、过E、函数、包及触发器{)Q?BR>  l 关于完整性约束的信息Q?BR>  l 列的~省|
  l 有关数据库中对象的空间分布及当前使用情况Q?BR>  l 审计信息Q如谁存取或修改各种对象Q;
  l 其它一般的数据库信息?BR>  可用SQL存取数据字典Q由于数据字ؓ只读Q允许查询?BR>  
  1Q?数据字典的结?BR>  数据库数据字典是由基本表和用户可存取的视囄成?BR>  基本表:数据字典的基是一l基本表l成Q存储相关的数据库的信息。这些信息仅由O(jin)RACLEd写,它们很少被ORACLE用户直接存取?BR>  用户可存取视图:数据字典包含用户可存取视图,可概括地方便地显C数据字典的基本表的信息。视囑ְ基本表中信息解码成可用信息?BR>  
  2Q?数据字典的?BR>  当数据库打开Ӟ数据字典L可用Q它ȝ在SYSTEM表空间中。数据字典包含视NQ在许多情况下,每一视图集有三种视图包含有类g息,彼此?前缀 相区别,前缀 USER、ALL和DBA?BR>  l 前缀为USER的视图,为用 视图Q是在用L模式内?BR>  l 前缀为ALL的视图,为扩展的用户视图Qؓ用户可存取的视图Q?BR>  l 前缀为DBA的视图ؓDBA的视图(为全部用户可存取的视图)?BR>  在数据库中ORACLEq维护了一l虚表记录当前数据库的活动,q些表称为动态性能表。动态性能表不是真正的表,许多用户不能存取QDBA可查询这些表Q可以徏立视图,l其它用h予存取视图权?BR>  
  五、事务管?BR>  1Q?事务
     一个事务ؓ工作的一个逻辑单位Q由一个或多个SQL语句l成。一个事务是一个原子单位,构成事务的全部SQL语句的结果可被全部提交或者全部回滚。一个事务由W一个可执行SQL语句开始,以提交或回滚l束Q可以是昑ּ的,也可是隐式的Q执行DDL语句Q?BR>  在执行一个SQL语句出现错误Ӟ该语句所有媄响被回滚Q好像该语句没有被执行一P但它不会引v当前事务先前的工作的丢失?BR>  
  2Q?ORACLE的事务管?BR>    在ORACLE中一个事务是׃个可执行的SQL语句开始,一个可执行SQL语句产生对实例的调用。在事务开始时Q被赋给一个可用回滚段Q记录该事务的回滚项。一个事务以下列M一个出现而结束?BR>  l 当COMMIT或ROLLBACKQ没有SAVEPOINT子句Q语句发出?BR>  l 一个DDL语句被执行。在DDL语句执行前、后都隐式地提交?BR>  l 用户撤消对ORACLE的连接(当前事务提交Q?BR>  l 用户q程异常中止Q当前事务回滚)?BR>  
  1Q?提交事务
     提交一事务Q即在事务中由SQL语句所执行的改变永久化。在提交前,ORACLE已有下列情况Q?BR>  l 在SGA的回滚段~冲区已生成回滚D记录,回滚信息包含有所修改值的老倹{?BR>  l 在SGA的日志缓冲区已生成日志项。这些改变在事务提交前可q入盘?BR>  l 对SGA的数据库~冲区已作修改,q些修改在事务真正提交之前可q入盘?BR>  在事务提交之后,有下列情况:
  l 对于与回滚段相关的内部事务表记录提交事务Qƈ赋给一个相应的唯一pȝ修改PSCNQ,记录在表中?BR>  l 在SGA的日志缓冲区中日志项由LGWRq程写入到在U日志文Ӟ q是构成提交事务的原子事务?BR>  l 在行上和表上的封锁被释放?BR>  l 该事务标志ؓ完成 ?BR>  注意Q对于提交事务的数据修改不必由DBWR后台q程立即写入数据文gQ可l箋存储在SGA的数据库~冲ZQ在最有效时将其写入数据文件?BR>  
  2Q?回滚事务
     回滚事务的含义是撤消未提交事务中的SQL语句所作的Ҏ(gu)据修攏VORALCE允许撤消未提交的整个事务Q也允许撤消部分?BR>  在回滚整个事务(没有引用保留点)Ӟ有下列情况:
  l 在事务中所有SQL语句作的全部修改Q利用相应的回滚D被撤消?BR>  l 所有数据的事务锁被释放?BR>  l 事务l束?BR>  当事务回滚到一保留点(hSAVEPOINTQ时Q有下列情况Q?BR>  l 仅在该保留点之后执行的语句被撤消?BR>  l 该指定的保留点仍然被保留Q该保留点之后所建立的保留点被删除?BR>  l 自该保留点之后所获取的全部表锁和行锁被释放,但指定的保留点以前所获取的全部数据封锁l保持?BR>  l 该事务仍可l?BR>  
  3Q?保留?BR>     保留点(savepointQ是在一事务范围内的中间标志Q经常用于将一个长的事务划分ؓ的部分。保留点可标志长事务中的M点,允许可回滚该点之后的工作。在应用E序中经怋用保留点Q例如一q程包含几个函数Q在每个函数前可建立一个保留点Q如果函数失败,很容易返回到每一个函数开始的情况。在回滚C个保留点之后Q该保持点之后所获得的数据封锁被释放?BR>  
  六、数据库触发?BR>  1Q?触发器介l?BR>    数据库触发器(database trigger)是存储在数据库中的过E,当表被修Ҏ(gu)它隐式地被激发(执行Q。在ORACLE中允许在对表发出INSERT、UPDATE或DELETE语句旉式地执行所定义的过E,q些q程UCؓ数据库触发器。触发器存储在数据库中,q与所相关表分别存储。触发器仅可在表上定义。在许多情况中触发器用于提供很高U的专用数据库管理系l,来补充ORACLE的标准功能。触发器一般用于:
  l 自动地生成导出的列|
  l 防止无效的事务;
  l 实施更复杂的安全性检?BR>  l 在分布式数据库中实施跨越l点的引用完整性;
  l 实施复杂的事务规则;
  l 提供透明事g日志Q?BR>  l 提供高的审计;
  l l护同步表复Ӟ
  l 攉关于存取表的l计?BR>  注意Q数据库触发器与SQL*FORMS触发器之间的差别。数据库触发器是定义在表上,存储在数据库中,当对表执行INSERT、UPDATE或DELETE语句时被Ȁ发,不管是谁或哪一应用发出。而SQL*FORMS触发器是SQL*FORM应用的部分,仅当在指定SQL*FORMS应用中执行一个指定触发器Ҏ(gu)才被Ȁ发?BR>  触发器和说明性完整性约束都可用于约束数据的输入Q但它们之间有一定区别:
  说明性完整性约束是关于数据库L为“真”的语句。一个完整性约束应用于表中已有数据和操U表的Q何语句?BR>  而触发器U束事务不可应用于在定义触发器前已装入的数据Q所以它不能保证表中全部数据服从该触发器的规则。触发器实施瞬时U束Q即在数据改变时实施一U束?BR>  
  2Q?触发器的l成Q?BR>  一个触发器有三个基本部Ӟ触发事g或语句、触发器的限制、触发器动作?BR>  触发事g或语句:为引赯发器Ȁ发的SQL语句Q是Ҏ(gu)定表INSERT、UPDATE或DELETE语句?BR>  
  触发器限ӞZ布尔表达式,当触发器Ȁ发时该条件必MؓTRUE。触发器的限制是用WHEN子句来指定?BR>  
  触发器的动作Qؓ一个PL/SQL块(q程Q,由SQL语句和PL/SQL语句l成。当触发语句发出Q触发器的限制计得TRUEӞ它被执行。在触发器动作的语句中,可用触发器的处理的当前行的列|新倹{老|Q用Ş式ؓQ?BR>  NEW.列名             引用新?BR>  OLE.列名             引用老?BR>  在定义触发器时可指定触发器动作执行次敎ͼ受触发语句媄响每一行执行一ơ或是对触发语句执行一ơ?BR>  Ҏ(gu)一触发语句可有四种cd触发器:
  行触发器Q对受触发语句所影响的每一行,行触发器Ȁ发一ơ?BR>  语句触发器:该类型触发器对触发语句执行一ơ,不管其受影响行数?BR>  定义触发器可以指定触发时_指定Ȁ发器动作的执行相对于触发语句执行之后或之前?BR>  BEFORE触发器:该触发器执行触发器动作是在触发语句执行之前?BR>  AFTER触发器:该触发器执行触发器动作是在触发语句执行之后?BR>  一个触发器可处于两U不同的方式Q能触发器和不能触发器?BR>  使能触发器:只要当触发语句发出,触发器限制计ؓTRUEQ这U类型的触发器执行其触发动作?BR>  使不能触发器Q这U触发器即其触发语句被发出Q触发器限制计算为TRUEQ也不执行触发器动作?BR>  触发器的源代码存储在数据库中Q在W一ơ执行时Q触发器的源代码被编译,存储在共享池中。如果触发器从共享池中挤了,再用时必须再重新编译?BR>  
  七、分布处理和分布式数据库
  1Q??BR>    一个分布式数据库在用户面前为单个逻辑数据库,但实际上是由存储在多台计机上的一l数据库l成。在几台计算?上的数据库通过|络可同时修改和存取Q每一数据库受它的局部的DBMS控制。分布式数据库中每一个数据库服务器合作地l护全局数据库的一致性?BR>  在系l中的每一台计机UCؓl点。如果一l点h理数据?软gQ该l点UCؓ数据库服务器。如果一个结点ؓh服务器的信息的一应用Q该l点UCؓ客户。在ORACLE客户Q执行数据库应用Q可存取数据信息和与用户交互。在服务器,执行ORACLE软gQ处理对ORACLE数据库ƈ发、共享数据存取。ORACLE允许上述两部分在同一台计机上,但当客户部分和服务器部分是由|连接的不同计算ZӞ更有效?BR>  分布处理是由多台处理机分担单个Q务的处理。在ORACLE数据库系l中分布处理的例子如Q?BR>  客户和服务器是位于网l连接的不同计算Z?BR>  单台计算Z有多个处理器Q不同处理器分别执行客户应用?BR>  SQL*NET是ORACLE|络接口Q允许运行在|络工作站的ORACLE工具和服务器上,可存取、修攏V共享和存储在其它服务器上的数据。SAQL*NET可被认ؓ是网l通信的程序接口。SQL*NET利用通信协议和应用程序接口(APIQؓOARCLE提供一个分布式数据库和分布处理?BR>  SQL*NET驱动器ؓ在数据库服务器上q行的ORACLEq程与ORACLE工具的用戯E之间提供一个接口?BR>   参与分布式数据库的每一服务器是分别地独立地理数据库,?像每一数据库不是网l化的数据库。每一个数据库独立地被理Q称为场地自L。场地自L有下列好处Q?BR>  l pȝ的结点可反映公司的逻辑l织?BR>  l 由局部数据库理员控制局部数据,q样每一个数据库理员责d要小一些,可更
  好管理?BR>  l 只要一个数据库和网l是可用Q那么全局数据库可部分可用。不会因一个数据库的故  
  障而停止全部操作或引v性能瓉?BR>  l 故障恢复通常在单个结点上q行?BR>  l 每个局部数据库存在一个数据字典?BR>  l l点可独立地升软g?BR>  可从分布式数据库的所有结点存取模式对象,因此正像非分布的局部的DBMSQ必L供一U机Ӟ可在局部数据库中引用一个对象。分布式DBMS必须提供一U命名模式,以致分布式数据库中一个对象可在应用中唯一标识和引用。一般彩在层ơ结构的每一层实施唯一性。分布式DVMS单地扩充层次命名模型Q实施在|络上唯一数据库命名。因此一个对象的全局对象名保证在分布式数据库内是唯一?BR>  ORACLE允许在SQL语句中用T对象名引用分布式数据库中的模式对象(表、视囑֒q程Q。在ORACLE中,一个模式对象的全局名由三部分组成:包含对象的模式名、对象名、数据库名、其形式如:
  SCOTT.EMP@SALES.DIVISION3.ACME.COM
  其中SCOTT为模式名,EMP?@W号之后为数据库?
  一个远E查询ؓ一查询,是从一个或多个q程表中选择信息,q些表驻留在同一个远E结?
  一个分布式查询可从两个或多个结Ҏ(gu)索数?一个分布式更新可修改两个或两个以上l点的数?
  一个远E事务ؓ一个事?包含一人或多个q程语句,它所引用的全部是在同一个远E结点上.一个分布式事务中一个事?包含一个或多个语句修改分布式数据库的两个或多个不同l点的数?
  在分布式数据库中,事务控制必须在网l上直辖?保证数据一致?两阶D|交机制保证参与分布式事务的全部数据库服务器是全部提交或全部回滚事务中的语?
  ORACLE分布式数据库pȝl构可由O(jin)RACLE数据库管理员为终端用户和应用提供位置透明?利用视图、同义词、过E可提供ORACLE分布式数据库pȝ中的位置透明?
  ORACLE允许在SELECT(查询)、INSERT、UPDATE、DELETE、SELECT…FOR UPDATE和LOCK TABLE语句中引用远E数据。对于查询,包含有连接、聚合、子查询和SELECT …FOR UPDATEQ可引用本地的、远E的表和视图。对于UPDATE、INSERT、DELETE和LOCK TABLE语句可引用本地的和远E的表。注意在引用LONG和LONG RAW列、序列、修改表和封锁表Ӟ必须位于同一个结炏VORACLE不允怽q程DDL语句?BR>  在单场地或分布式数据库中Q所有事务都是用COMMIT或ROLLBACK语句中止。ORACLE提供两种机制实现分布式数据库中表重复的透明性:表快照提供异步的表重复;触发器实现同步的表的重复。在两种情况下,都实C对表重复的透明性?BR>  
  2Q?分布式数据库全局名与数据库链
  1Q?分布式数据库全局名:每一个数据库有一个唯一的全局名,׃部分l成Q数据库名(于{于8字符Q和|络域。全局数据库名的网l域成分必须服从标准互联|规范。域名中的层?q号?”分开Q域名的ơ序由叶xQ从左至叟?BR>  2Q?数据库链Qؓ对过E数据库定义的一路径。数据库铑֯分布式数据库的用h透明的,数据库链的名字与链所指向的数据库的全局名相同。其׃部分l成Q远E̎号和数据库串。例建立数据库链的Ş式:
  CREAT PUBLIC DATEBASE LINK sale。Division3。acme。com
  CONNECT TO guest IDENTIFIED BY password
  USING‘DB东y;
  其中Qsales。Divisin3。acme。com为定义的铑֐Qguest/password E数据库的用戯̎号和口oQDB串用于远E连接。由账号和DB串构成完全\径。如果只有一个则为部分\径?BR>  有三U数据库铑֏用于军_用户对全部对象名的引用:
  专用数据库链Qؓ一指定用户建立。专用数据库链仅铄Mh可用。在SQL语句中用于指定一全局对象名或者在持有者的视图q程定义中用?BR>  公用数据库链QؓҎ(gu)的用LPUBLIC建立。公用数据库铑֏ZQ何用户用,在SQL语句中用于指定一个全局对象名或对象定义?BR>  |络数据链:ql域服务器徏立和理Q可为网l中的Q何数据库的Q何用户用,可在SQL语句中指定全局对象名或对象定义中用。注意:当前|络域服务器对ORACLE不能用,所以网l数据库链不可用?BR>  
  3Q?表快?BR>  ORACLE的表快照特征允许一个主表在分布式数据库的其它结点进行复制。只允许修改主表Q而复制只可读。主表达式每一个复制称Z个快照。快照异步的hQ反映主表的一个最q事务一致状态?BR>  一个快照可的完全拷贝或者ؓ表的一个子集,由引用一个或多个主表、视图或其它快照的分布式查询所定义。包含主表的数据库称Z数据库?BR>  快照有简单快照和复杂快照。简单快照的每行是基于单个远E表中的一行。所以定义简单快照的查询中不能有GROUB BY或CONNECT BY子句Q或子查询、连接或集合操作。如果在快照定义的查询中包含有上q子句或操作Q这U快照称为复杂快照?BR>  在快照徏立时QORACLE在快照的模式中徏立几U内部对象:
  在快照结点,ORACLE建立一用于存储由快照定义的查询所索的行,然后表徏立一个只ȝ视图QƈE主表徏立一视图Q该视图用于新快照?BR>  一个快照周期地被刷斎ͼ反映它的主表的当前情cؓ了刷C快照Q快照定义查询是被发出,其查询结果想在存储在快照中,代替以前的快照数据?BR>  当快照ؓ单快照时Q可以由快照日志来刷斎ͼq样可加快刷新处理。快照日志是在主表数据库中的一表,与主表相兟뀂ORACLE使用快照日志跟踪主表中已修改的行。当Z主表的简单快照刷新时Q仅需要快照日志的相应行来h快照Q这U刷新称为快速刷新?img src ="http://www.aygfsteel.com/geyinglong/aggbug/32046.html" width = "1" height = "1" />

Java Fly 2006-02-23 08:01 发表评论
]]>
What are the basic SQL*Plus commands?http://www.aygfsteel.com/geyinglong/articles/26776.htmlJava FlyJava FlyThu, 05 Jan 2006 12:17:00 GMThttp://www.aygfsteel.com/geyinglong/articles/26776.htmlhttp://www.aygfsteel.com/geyinglong/comments/26776.htmlhttp://www.aygfsteel.com/geyinglong/articles/26776.html#Feedback0http://www.aygfsteel.com/geyinglong/comments/commentRss/26776.htmlhttp://www.aygfsteel.com/geyinglong/services/trackbacks/26776.htmlWhat are the basic SQL*Plus commands?The following SQL*Plus commands are available:

    ACCEPT Get input from the user
    DEFINE Declare a variable (short: DEF)
    DESCRIBE Lists the attributes of tables and other objects (short: DESC)
    EDIT Places you in an editor so you can edit a SQL command (short: ED)
    EXIT or QUIT Disconnect from the database and terminate SQL*Plus
    GET Retrieves a SQL file and places it into the SQL buffer
    HOST Issue an operating system command (short: !)
    LIST Displays the last command executed/ command in the SQL buffer (short: L)
    PROMPT Display a text string on the screen. Eg prompt Hello World!!!
    RUN List and Run the command stored in the SQL buffer (short: /)
    SAVE Saves command in the SQL buffer to a file. Eg "save x" will create a script file called x.sql
    SET Modify the SQL*Plus environment eg. SET PAGESIZE 23
    SHOW Show environment settings (short: SHO). Eg SHOW ALL, SHO PAGESIZE etc.
    SPOOL Send output to a file. Eg "spool x" will save STDOUT to a file called x.lst
    START Run a SQL script file (short: @)

http://www.orafaq.com/faqplus.htm#PLUSCOMMANDS

Java Fly 2006-01-05 20:17 发表评论
]]>
关于Oracle的copy from命ohttp://www.aygfsteel.com/geyinglong/articles/26449.htmlJava FlyJava FlyTue, 03 Jan 2006 08:39:00 GMThttp://www.aygfsteel.com/geyinglong/articles/26449.htmlhttp://www.aygfsteel.com/geyinglong/comments/26449.htmlhttp://www.aygfsteel.com/geyinglong/articles/26449.html#Feedback2http://www.aygfsteel.com/geyinglong/comments/commentRss/26449.htmlhttp://www.aygfsteel.com/geyinglong/services/trackbacks/26449.htmlhttp://www.itpub.net/225749.html

Java Fly 2006-01-03 16:39 发表评论
]]>
վ֩ģ壺 | | | | | | | | | | | ԰| ɽ| Զ| Ϲ| | ɽ| | | | | Ĭ| ̨| ɽ| | | ɽ| | ƽ| Ů| | | | | ޶| ƽ| | | | ǿ| Ϫ|