Oracle基础知识学习笔记(自己整理的)

基本概念:

数据:描述事物的符号;

数据库:数据存放的地方,数据库是由数据和数据库对象组成的;

数据库管理系统(DBMS):用于管理数据的计算机软件,使用户能方便的定义和操纵数据,维护数据的安全性和完整性,以及进行多用户下的并发控制和数据库恢复。

关系数据库(RDB):基于关系模型的数据库。

ORACLE数据库的体系结构是由一个实例和若干个数据库文件组成。

SQL语句分为:

数据定义语句(DDL):create、drop、alter、truncate(不能回滚)

数据操作语句(DML):insert、select、update、delete、merge

数据控制语句(DCL):grant、revoke

事物控制语句:commit、rollback、savepoint

 

ORACLE数据库的核心组件:

数据字典(DD)

动态性能表(DPT)

触发器

PL/SQL

用户与角色:角色是一些权限的集合,分为dba、connect、resource、exp_full_database、imp_full_database。用户分为sys、system。

用户权限包括两种:是指执行某一SQL语句或访问另一用户对象的权限。它分为系统权限和对象权限。(Dba_roles/dba_roles_privs/dba_sys_privs/dba_tab_privs/dba_col_privs/role_role_privs/role_sys_privs/role_tab_privs)

创建用户:Create user username identified by password;

修改用户:Alter user username identified by newpassword;

创建角色:Create role rolename identified by password;

修改角色:Alter role rolename identified by new password;

ORACLE数据库的物理结构

1.     数据文件:用于存放所有的数据库数据,若干个数据文件组成表空间;它包括系统数据(数据字典)、用户数据(表、索引、簇等)、undo数据等。当建立数据库或表空间时,数据文件是通过DATAFILE选项制定的。一个或多个数据文件在物理上组成一个表空间。(v$datafile、v$datafile_header)

2.     控制文件:每个数据库必须至少得有两个控制文件,以组为单位。Oracle系统通过控制文件保持数据库的完整性以及决定恢复数据时使用哪些重做日志。Oracle通过控制文件将实例与数据库连接在一起。当装载数据库时(mount),Oracle根据初始化参数control_files定位控制文件;当打开数据库时,Oracle会根据控制文件记载的信息,打开所有数据文件和日志文件。(v$controlfile)

3.     重做日志文件:用于记录数据库的活动,记录数据库的所有修改操作;

日志组:在单实例环境中,只有一个重做线程;在RAC(real application cluster)环境中,包含多个重做线程。每个重做线程至少包含两个日志组。(v$log、v$logfile )

4.     归档日志文件:当数据库处于archivelog状态时,Oracle将自动归档重做日志文件。(v$archived_log)

5.     参数文件:定义启动例程的初始化参数,包含了实例和数据库配置参数列表,包括文本参数文件(PFILE)和服务器参数文件(SPFILE),PFILE的名称格式为initSID.ora,SPFILE的名称格式为spfileSID.ora,SID是例程名。

6.     口令文件:验证特权用户,特权用户是指具有sysdba或sysoper权限的特殊数据库用户。(v$pwfile_users)

7.     报警和跟踪日志文件

8.     备份文件

ORACLE数据库的逻辑结构

1.      表空间(tablespace):是数据库的逻辑划分,每个数据库至少有一个表空间,一个表空间只能属于一个数据库。system表空间必须在MOUNT状态下恢复,而其它的数据表空间可以在OPEN状态下恢复,临时表空间不需要恢复。

2.     段(segment):由一组范围组成,分为数据段、索引段、回滚段和临时段。

数据段:对于每个非聚集的表有一数据段,表的所有数据存放在该段里。每一个聚集有一个数据段。

索引段:每一个索引有一个索引段,存储索引数据。

回滚段:由DBA建立,用于存储操作之前的数据影像(备份)。查看是否有回滚段竞争:select * from v$waitstat;

临时段:当一个SQL语句需要临时工作区时,由ORACLE建立。当语句执行完毕,临时段的范围退回给系统。

3.     盘区(extent):由连续数据块组成;

4.     ORACLE数据块(block):是ORACLE管理数据文件中存储空间的最小逻辑单位。

数据块的物理结构:

块头(header):包含块的信息,即什么类型的段数据存储在块中,什么段在块中有数据,块地址以及指向存储在其中的实际行的指针;

数据存储区(data):是块实际存储数据的地方;

自由空间区(free space):保留区域,用于存储有关在块中的行即将要更新的信息。

PCTFREE和PCTUSED:PCTFREE规定了在块中保留的用于更新操作所需的自由空间的百分比。PCTUSED规定了最小的已使用空间的百分比。已使用空间百分比低于PCTUSED时,块被加入到自由列表中。自由列表中的块可以insert操作。

PCTFREE和PCTUSED是段的两个参数。当ORACLE向数据库中写信息时,必须首先在一个段的分配区中找到一个或更多块来存储信息。ORACLE保留了块的一个列表,这些块对每个段来说都是自由的,称为自由列表。ORACLE使用PCTFREE和PCTUSED参数的组合确定块何时有、何时没有足够的空间接受新信息。

pctused:如果数据块的使用率小于pctused的值,则该数据块重新加入到freelist中。

Pctfree:如果数据块的使用率高于pctfree的值,则该数据块从freelist中移出。

方案和方案对象(schema)

方案是方案对象的集合;方案对象是直接引用数据库数据的逻辑结构,包括表、视图、索引、聚集、序列、同义词、数据库链、过程和包等。

表(table):数据库数据存储的基本单位。

视图(view):一个视图是由一个或者多个表中的数据的一种定制的表示,是一个查询定义,可以认为是一个存储的查询或是一个虚表。视图可以被查询,但修改、插入或者删除时具有一定的限制,受到基表的完整性约束和触发器的限制。

索引(index):索引是为了提高数据检索的性能而建立的,利用它可快速的确定指定的信息。索引分为:B-Tree Index(最常用)、全局或局部索引、位图索引(Bitmap Index)、函数索引、反向键索引、键压缩索引、分区索引。

索引通常能提高select/update/delete的性能,会降低insert的速度。

B-Tree Index:B树索引是一个典型的树结构。

其包含的组件主要是:

叶子节点(Leaf node):包含条目直接指向表里的数据行;

分支节点(Branch node):包含的条目指向索引里其他的分支节点或者是叶子节点;

根节点(Root node):一个B树索引只有一个根节点,它实际就是位于树的最顶端的分支节点。

按照存储结构的不同可分为簇索引(clustered index)和非簇索引(nonclustered index);

簇索引:对表的物理数据页中的数据按列排序,再重新存储在磁盘上。簇索引查找数据很快,但占磁盘的空间也很大。

非簇索引:将行定位器按关键字的值用一定的方式排序,与表的行在数据页的排序是不匹配的。一个表可以建立很多非簇索引,但只能建立一个簇索引。

创建索引的语句:

create [unique] [clustered|nonclustered] index index_name on {table|view} (column[asc|desc])

[with

[pad_index],

[[fillfactor=fillfactor],

[ignore_dup_key],

[drop_existing],

[statistics_norecompute],

[sort_in_tempdb]][on filegroup]

其中

Unique:创建唯一索引,及索引的键值不重复。

Clustered:簇索引;

Pad_index:指定填充索引的内部节点的行数,至少应大于等于两行;

Fillfactor:填充因子,指定创建索引时,每个索引页的数据占索引页大小的百分比;

Ignore_dup_key:控制了当向包含于一个唯一约束中的列中插入重复数据时数据库所做的反应;

Drop_existing:指定要删除并重新创建簇索引。删除簇索引会导致所有的非簇索引被重建;

Statistics_norecompute:指定分布统计不自动更新 ;

Sort_in_ tempdb:指定用于创建索引的分类排序结果将被存储到tempdb数据库中;

On filegroup:指定存放索引的文件组。

ORACLE数据字典(DD)

数据字典的结构是基表和视图,录了数据库的系统信息, 其所有者为SYS。它由内部RDBMS(X$)表,数据字典表($),动态性能视图(v$)和数据字典视图(all_,user_,dba_)组成。当执行DDL语句时,数据库修改数据字典。数据字典视图有三种:ALL_xxx,USER_xxx,DBA_xxx。

(dba_tables、user_tables、all_tables、dba_users、dba_sys_privs(用户所具有的系统权限)、dba_tab_privs(用户所具有的对象权限)、dba_col_privs(用户所具有的列权限)、dba_role_privs(用户所具有的角色)、dba_jobs(sql执行计划))。

动态性能视图(Dynamic Performance Tables)

是一组虚表(Virtual tables),记录数据库当前的活动情况,从内存和控制文件中获取信息,所有者为SYS,以v$开头,v$fixed_table(一览表);(v$controlfile、v$database、v$datafile、v$instance、v$logfile、v$parameter、v$session、v$SGA、v$spparameter、v$tablespace、v$thread、v$version、v$db_cache_advice(buffer cache命中率))

诊断IO、CPU性能状况的方法:

查询并分析v$system_event/v$session_event(db file sequent )/v$session_wait(p1-p3的值.file_id/block_id/blocks)可查询Oracle系统的性能(包括CPU/IO/其他性能状况);

查询并分析v$sqlarea(disk_reads或buffer_gets/executions较大的SQL)。

实例(instance)

实例是用来访问数据库文件集的存储结构以及后台进程的集合,它是存取和控制数据库的软件机制。ORACLE实例分为单进程实例和多进程实例。

实例是由内存结构进程结构组成的;

内存结构:基本的内存结构有系统全局区(SGA)和程序全局区(PGA)

系统全局区(SGA):是系统为实例分配的一组共享缓冲存储区。它分为:

数据高速缓存区(Database Buffer Cache):用来存储最近访问的数据块信息。由DB_CACHE_SIZE决定,它的大小由数据库实例init.ora中的DB_BLOCK_BUFFERS决定,ORACLE用LRU(最近最少算法)来管理可用空间。它分为脏列表LRU(Least Recently Used)列表(空闲缓冲块、正在存取的缓冲块、已被修改但未被移到脏列表的缓冲块)

SQL共享池(Share Pool):存放最近执行的SQL语句和数据字典信息。大小由SHARED_POOL_SIZE决定。分为字典缓存区(Database Dictionary Buffer Cache)库缓存区(共享SQL区和PL/SQL区);share pool的空闲量(诊断其性能):select inst_id,bytes from gv$sgastat; 空闲大小:select value from v$parameter where name=’shared_pool_size’;

重做日志缓存区(Redo Log Buffer Cache):在重做项被写到重做日志前,事物先被写到重做日志缓冲区中,它的大小由init.ora中的LOG_BUFFER决定。

大池Java

进程结构:

用户进程:用于执行一个应用程序的软件代码,用户进程同服务器进程进行通信是通过程序接口完成的。

服务器进程:ORACLE创建服务器进程来处理来自连接上的用户进程的请求。一个服务器进程负责同用户进程的会话。

后台进程:为了增强用户进程运行的ORACLE程序处理的功能。

几个重要的后台进程:

数据写(DBWn):数据库书写器进程,从数据高速缓存区中将修改的数据块(脏缓冲区)写入到数据文件中,并使用LRU算法来保持缓冲区中的数据块为最近经常使用的,以减少I/O次数。该进程在启动实例时自动启动。

日志写(LGWR):日志书写器将重做日志写入日志文件中。重做日志的实体是在SGA的重做日志缓冲区中生成的,LGWR将重做日志实体写入到重做日志文件中。该进程在启动实例时自动启动。

系统监视器(SMON):在一个失败实例进程启动的时候执行崩溃回复,将数据字典中空闲的区域连接起来变成连续的。

1.     redo:重新应用被记载到重做日志但未写入数据文件的数据。

2.      undo:取消未提交的数据。在打开数据库之后,Oracle自动使用undo段回退未提交的数据。

进程监视器(PMON):在用户进程失败的时候重新创建进程。

检查点(CKPT)

归档(ARCH)

ORACLE数据库的启动与关闭

启动

1.     nomount(非安装启动):NONOUNT选项仅仅创建一个Oracle实例。读取init.ora初始化参数文件、启动后台进程、初始化系统全局区(SGA)。Init.ora文件定义了实例的配置,包括内存结构的大小和启动后台进程的数量和类型等。实例名根据Oracle_SID设置,不一定要与打开的数据库名称相同。

2.     mount(安装启动):创建实例并且安装数据库,但没有打开数据库。Oracle系统读取控制文件中关于数据文件和重作日志文件的内容,但并不打开该文件。这种打开方式常在数据库维护操作中使用,如对数据文件的更名、改变重作日志以及打开归档方式等。

3.     open(打开):创建实例、安装实例和打开数据库的所有三个步骤。此时数据库使数据文件和重作日志文件在线,通常还会请求一个或者是多个回滚段。这时系统除了可以看到前面Startup Mount方式下的所有提示外,还会给出一个"数据库已经打开"的提示。此时,数据库系统处于正常工作状态,可以接受用户请求。

其他打开方式:

STARTUP RESTRICT:数据库将被成功打开,但仅仅允许一些特权用户(具有DBA角色的用户)才可以使用数据库。这种方式常用来对数据库进行维护,如数据的导入/导出操作时不希望有其他用户连接到数据库操作数据。

startup pfile=参数文件名:带初始化参数文件的启动方式,先读取参数文件,再按参数文件中的设置启动数据库。

关闭

1.     shutdown normal:发出该命令后,任何新的连接都将再不允许连接到数据库。在数据库关闭之前,Oracle将等待目前连接的所有用户都从数据库中退出后才开始关闭数据库。采用这种方式关闭数据库,在下一次启动时不需要进行任何的实例恢复。

2.     shutdown immediate:常用的一种关闭数据库的方式,想很快地关闭数据库,但又想让数据库干净的关闭,常采用这种方式。当前正在被Oracle处理的SQL语句立即中断,系统中任何没有提交的事务全部回滚。如果系统中存在一个很长的未提交的事务,采用这种方式关闭数据库也需要一段时间(该事务回滚时间)。系统不等待连接到数据库的所有用户退出系统,强行回滚当前所有的活动事务,然后断开所有的连接用户。

3.     shutdown transactional:该命令常用来计划关闭数据库,它使当前连接到系统且正在活动的事务执行完毕,运行该命令后,任何新的连接和事务都是不允许的。在所有活动的事务完成后,数据库将和SHUTDOWN IMMEDIATE同样的方式关闭数据库。

4.     shutdown abort:关闭数据库的最后一招,也是在没有任何办法关闭数据库的情况下才不得不采用的方式,一般不要采用。如果下列情况出现时可以考虑采用这种方式关闭数据库。

表空间(tablespace)与数据文件(datafile)

ORACLE数据库将数据逻辑的存储在表空间里,物理的存储在数据文件里。一个表空间只能属于一个数据库,而一个数据库能拥有多个表空间。一个表空间由一个或多个数据文件组成,一个数据文件只能属于一个表空间。数据文件是存储模式对象数据的容器(仓库)。

表空间在数据库中分为两种:系统表空间和非系统表空间。系统表空间中存有数据字典,系统表空间中还包含系统还原(回滚)段。非系统表空间由DBA创建,非系统表空间可以存储用户的数据段、索引(index)段、还原(undo)段和临时(temp)段。创建非系统表空间的语句:

CREATE TABLESPACE表空间名

[DATAFILE子句]

[MINIMUM EXTENT 正整数[K|M]]

[BLOCKSIZE正整数[K]]

[LOGGING|NOLOGGING]

[DEFAULT 存储子句]

[ONLINE|OFFLINE]

[PERMANENT|TEMPORARY]

[区段管理子句]

[段管理子句]

其中

DATAFILE子句:组成所要创建的表空间的文件说明。

MINIMUM EXTENT:表空间中所使用的每个EXTENT都必须是该参数所指定数的整数倍。

BLOCKSIZE:为该表空间说明非标准块的大小。在使用这一子句之前,您必须先设置DB_CACHE_SIZE:参数和DB_nK_CACHE_SIZE参数,而且该子句中所说明的正整数一定与DB_NK_CACHE_SIZE参数的设定相对应。

LOGGING:说明在该表空间中所有数据的变化都将写入重做日志文件中,这也是默认方式。

NOLOGGING:说明在该表空间中所有数据的变化不都写入重做日志文件中,NOLOGGING只影响一些DML和DDL命令。

DEFAULT存储子句:说明所有在该表空间中所创建的对象的默认存储参数。

OFFLINE:说明该表空间在创建后立即被置为脱机,即不能使用。

表空间的磁盘空间管理

数据字典管理表空间:在早期是由数据字典管理表空间的,它是通过freelist表来管理表空间的。数据字典(系统)管理表空间中所有的EXTENTS的管理都是在数据字典中进行的,而且每一个存储在同一个表空间中的段可以具有不同的存储子句。这种管理方式可以修改存储参数,因此其存储管理较灵活,但系统的效率较低,并且有时需要合并碎片。

创建数据字典管理的表空间语句:

CREATE TABLESPACE TABLESPACENAME DATAFILE ‘路径’SIZE M

MINIMUM EXTENT 50K EXTENT MANAGEMENT DICTIONARY

DEFAULT STORAGE (INITIAL 50K NEXT 50K MAXEXTENTS 100 PCTINCREASE 0);

其中为了防止用户在创建对象时使用的EXTENT过小而产生过多的碎片,决定最小的EXTENT为50K(MINIMUM EXTENT 50K)。当需要磁盘空间的自动分配时第一次分配为50K(INITIAL 50K),第二次也为50K(NEXT 50K),所分配的最大磁盘空间为100个EXTENTS(MAXEXTENTS 100)。

本地管理表空间:它的空闲EXTENTS是在表空间中管理的,使用位图(Bitmap)来记录空闲EXTENTS,位图中的每一位对应一块或一组块,而每位的值指示空闲或分配。当一个EXTENT被分配或释放时,Oracle服务器就会修改位图中相应位的值来反映该EXTENT的新的状态。位图存放在表空间所对应的数据文件的文件头中。使用本地管理的表空间减少了数据字典表的竞争,而且当磁盘空间分配或收回时也不会产生回滚(还原),它也不需要合并碎片。但是本地管理表空间无法修改存储参数,因此没有数据字典管理表空间那样灵活,但系统效率较高。

在本地管理的表空间中,表空间的管理,如磁盘空间的分配与释放等已经不在需要操作数据字典了,系统表空间的瓶颈问题得到了很好的解决。

创建本地管理的表空间:

CREATE TABLESPACE TABLESPACENAME DATAFILE ‘路径’SIZE 多少M

EXTENT MANAGEMENT LOCAL

UNIFORM SIZE 多少M;

还原表空间(undo):自动管理还原(回滚)数据。还原表空间是用来存储还原(回滚)段的,在还原表空间中不能包含任何其它的对象。还原表空间中的区段(extents)是由本地管理的,而且在创建还原表空间的SQL语句中只能使用DATAFILE和EXTENT MANAGEMENT子句。在数据库中可以存在多个undo表空间,但同一时刻只能使用一个undo表空间。

临时表空间(temporary):作为排序操作使用的(通常是在pga或sort_area_size中完成排序的,如果不能就将在临时表空间进行(disk sort))。当用户的SQL语句中使用了诸如ORDER BY,GROUP BY子句时,Oracle服务器就需要对所选取的数据进行排序,这时如果排序的数据量很大,内存的排序区(在PGA中)可能装不下,Oracle服务器就要把一些中间的排序结果写到磁盘上,即临时表空间中。当用户的SQL语句中经常有大规模的多重排序而内存的排序区不够时,使用临时表空间就可以改进数据库的效率。临时表空间中的排序段是在实例启动后当有第一个排序操作时创建的,排序段在需要时可以通过分配EXTENTS来扩展并一直可以扩展到大于或等于在该实例上所运行的所有排序活动的总和。当创建临时表空间时,必须使用标准数据块。另外Oracle还推荐使用本地管理的表空间。

默认临时表空间:如果在创建一个数据库时没有设定默认临时表空间,那么任何一个用户如果在创建时没有使用TEMPORARY TABLESPACE子句,就将使用SYSTEM表空间作为排序区。这将使SYSTEM表空间碎片化,从而使数据库系统的效率下降。如果在创建一个数据库时没有设定默认临时表空间,Oracle服务器将把SYSTEM表空间是默认临时表空间的报警信息写入报警文件。因此说明一个数据库范围的默认临时表空间可以消除使用系统(SYSTEM)表空间对临时数据进行排序的现象,从而提高数据库系统的效率。默认临时表空间即可以在创建数据库时一起创建,也可以在数据库创建之后建立。

ORACLE数据库中逻辑结构与物理结构

每个数据库是由一个或多个表空间所组成(至少一个)。

每个表空间基于一个或多个操作系统的数据文件(至少一个)。

每个表空间中可以存放有零个或多个段(Segment)。

每个段是由一个或多个区段(Extent)所组成。

每个区段是由一个或多个连续的Oracle数据块所组成。

每个Oracle数据块是由一个或多个连续的操作系统数据块所组成。

每个操作系统数据文件是由一个或多个区段(Extent)所组成。

每个操作系统数据文件是由一个或多个操作系统数据块所组成。

关于undo与redo

undo表空间中数据的特点:是数据修改前的备份,主要是保证用户的读一致性;在事物修改数据时产生;至少保存到事物结束。

undo的作用:回滚(rollback)操作;实现读一致性和闪回(flash back)查询;从失败的事物中还原数据;非正常停机后的实例回复。

undo表空间数据与redo日志文件数据的区别

1.undo记录数据修改之前的操作,redo记录磁盘数据将要进行的操作;

2.undo用于数据的回滚操作和实现读一致性,redo用于前滚数据库操作;

3.undo存储在回滚段里,redo存储在重做日志文件里;

4.undo用于在多用户并发的系统里保证读一致性,redo用于防止数据丢失

视图与表的区别

表需要占用磁盘空间,视图不需要;

视图不能添加索引(查询速度略慢);

使用视图可以简化复杂查询;

使用视图有利于提高安全性。

数据库的备份分为逻辑备份和物理备份。逻辑备份是指使用工具export将数据对象的结构和数据导出到文件的过程,只能在数据库open状态下进行;(导出表、导出方案、导出数据库三种方式);

物理备份是指可在数据库open的状态下进行也可在close状态下进行的备份。物理备份可分为热备份和冷备份。

PFILE与SPFILEpfile存储初始化参数设置,这些参数在实例启动时被读取,任何修改需要重启实例才能生效;使用spfile,可以使用ALTER SYSTEM或者ALTER SESSION来动态修改那些可动态修改的参数,所有更改可以立即生效,可以选择更改只应用于当前实例还是同时应用到spfile。pfile是文本形式的,而spfile是二进制文件,rman可以对spfile进行备份。

报错误:ORA-01034:Oracle not available.(实例未启动)

报错误:ORA-01033:Oracle initialization or shutdown in progress.(数据库未打开)

Oracle数据库的日志操作模式分为noarchivelog和archivelog,默认的为noarchivelog模式。

Oracle数据库备份与恢复

物理备份:

用户管理的备份与恢复

用户管理的备份是指使用OS命令(UNIX:cp,Windows:copy)备份数据库物理文件(数据文件、控制文件)的过程。当数据库处于archivelog模式时,重做历史信息会被保存到归档日志里。由于归档日志是介质回复所必需的文件,所以在archivelog模式下还应该考虑备份归档日志。

备份数据库:是指备份数据库的所有数据文件和控制文件,另外还有参数文件和口令文件。但备份重做日志文件“有弊无益”

数据库一致性备份关闭数据库之后备份所有数据文件和控制文件的方法,可在两种模式下备份。

数据库非一致性备份:数据库在OPEN状态下备份数据库所有的数据文件和控制文件的方法。由于在OPEN状态下,数据库内容随时都会改变,导致不同数据文件的当前SCN值完全不同,所以该备份为非一致性的。进行数据库一致性备份要中断业务操作,而数据库非一致性备份不会影响业务操作,但是该备份方式只能在archivelog模式下进行。

备份表空间:是指在数据库处于OPEN状态下,备份数据文件的方法,只适用于archivelog模式。

脱机备份:指当表空间处于offline状态时,备份表空间所有数据文件或单个数据文件的过程。与联机备份相比,它的优点为会生成较少的重做信息,缺点是影响表空间上的业务操作。由于system表空间和undo表空间不能脱机,所以这两种表空间不能用该方法备份。

联机备份:指当表空间处于online状态时,备份表空间所有数据文件或单个数据文件的过程。可以备份数据库的所有表空间和数据文件。其优点为不影响在表空间上的业务操作,缺点是生成很多的重做日志和归档信息。

RMAN管理的备份与恢复

RMAN(Recovery Manager,恢复管理器):是Oracle Database 10g所提供的实用程序。

RMAN的特点:

1.     备份数据库、表空间、数据文件、控制文件、归档日志和spfile。备份时要求目标数据库须处于MOUNT或OPEN状态;

2.     存储频繁执行的备份和恢复操作;

3.     跳过未用块,使用RMAN备份会生成备份集,只会备份使用的数据块,跳过未用的数据块;

4.     使用RMAN生成备份集时,可以使用增量备份和累计备份减少备份时间。

逻辑备份

EXPDP和IMPDP:Oracle 10g之后引入了最新的数据泵(Data Dump)技术,可以将数据库的元数据(对象定义)和数据快速的移动到另一个Oracle数据库中。

数据泵导入导出的作用:

1.     可以实现逻辑备份和逻辑恢复;

2.     可以在数据库用户之间移动对象;

3.     可以实现表空间搬移。

数据泵导入与导出与传统的导入导出的区别:

1.     EXP和IMP是客户端工具程序,它们既能在客户端使用也能在服务器端使用;

2.     EXPDP和IMPDP是服务器端工具程序,不能在客户端使用。

IMP和EXP的作用

1.     可以重新组织表;

2.     可以在用户之间移动对象;可以在数据库之间移动对象;

3.     可以升级数据库到其他平台。

监听器进程:当有客户端请求到达服务器时,监听器进程完成如下任务(listener.ora文件):

1.     受理客户端的请求;

2.     产生相应的服务器进程;

3.     将受理的客户端连接转移到服务器进程去受理。

监听器进程由lsnrctl(listener control untitly,监听器控制实用程序)控制,通过lsnrctl命令执行。lsnrctl start(启动缺省的监听器)

表的几种连接方式:nested loop、hash join、merge join、inner join。

表的几种合并方式(查询):union(并集去重)、union all(并集不去重)、intersect(交集)、minus(差集)。

oracle中truncate和delete命令的区别:

(1)delete将在回滚段中产生回滚信息,truncate不产生,因此无论表中的记录多少,truncate执行都很快。

(2)truncate 是 DDL,执行隐含的commit,truncate不能回滚。任何没有提交的 DML 改变也将会和truncate一起提交。

(3)truncate 重置表及其索引高水位标志。全表扫描和索引快速全扫描读高水位(High-water Mark)以下的所有数据块,因此在delete执行后全局扫描性能没有提高,但truncate执行后将会加快。

(4)truncate 不触发 delete 触发器。

(5)没有对象权限允许一个用户 truncate 另一个用户的表。这样做需要 DROP ANY TABLE 系统权限。

(6)当一个表被 truncate,表及其索引的存储将被回滚到初始大小。而 delete 回滚,即不收缩表及其索引的大小。

(7)当父表有一个可用的引用完整性约束时不能被 truncate。必须先disable引用父表的外键约束,再truncate。

:用来保证数据的一致性,分为只读锁、排他锁、共享排他锁;行级锁、页级锁、表级锁。

两个事物分别锁定一部分数据,而都在等待对方释放锁才能完成事物操作,就发生死锁

SELECT  FOR  UPDATE(锁定表行)

LOCK TABLE tablename IN {SHARE(共享)|EXCLUSIVE(独占)} MODE(锁定表)

相关推荐