oracle数据库学习心得

2024-10-17

oracle数据库学习心得(14篇)

1.oracle数据库学习心得 篇一

Access数据表内容导入Oracle

产生该需求原因:

在实现中铝网站过程中,客户要求我们把原有数据导入到新搭建的网站系统中,原数据存储在Access数据库中,而新网站的所有数据存储于oracle中。

实现步骤:

一、在oracle中建立表T_HZOA_CM_TEMP,以便从Access中导入数据

在oracle中创建表就不再赘述了,相信各位大虾操作已经炉火纯青了。

二、创建序列和触发器,目的是为了在往该表中插入数据时创建ID列,该列值自动加一

创建序列代码:

CREATE SEQUENCE T_SEQ INCREMENT BY 1

START WITH 1

NOMAXVALUE

NOCYCLE

CACHE 10;

创建触发器代码:

CREATE TRIGGER T_TRI

BEFORE INSERT ON T_HZOA_CM_TEMP

FOR EACH ROW BEGIN

SELECT T_SEQ.NEXTVAL

INTO :NEW.id FROM DUAL;END T_TRI;

三、建立Oracle数据库的ODBC数据源

为将要导入数据的oracle数据库创建ODBC数据源

四、在本地Access数据库中创建Oracle数据表T_HZOA_CM_TEMP的链接表

1、点击“新建”创建Access表

2、在新建表中选中“链接表”,点击“确定”

3、在接下来的文件类型中选择“ODBC databases”

4、接下来,选中自己所建的数据源,输入密码即可

5、接下来,选中自己需要导入的表就可以

6、至此,链接表建立完毕,接下来可以建立查询进行数据导入了^_^

五、在本地Access数据库创建查询

1、新建查询,注意双击“在设计视图中创建查询”

2、选中链接表和将要导出数据的表

3、关闭选择表窗口,点击鼠标右键,选择“SQL视图”,输入相关sql语句,跟操作Access本身两张表没有区别,输入完毕后保存相关查询。

六、双击击相关查询进行数据导入

2.oracle数据库学习心得 篇二

伴随着IT行业的迅速发展,IT系统中数据的安全性,已经是对企业运营产生了重大影响。而数据库的安全迁移也为IT系统的可持续运行和数据安全提供一道保护屏障。而且近年来频繁出现的自然灾害或者突发事件也让越来越多的人们意识到,原有的数据存储方式已经无法满足企业的需要。本文正是从数据库迁移的实际操作中总结整理而成。

1 oracle数据库文件构成

数据库是一种物理的存储结构,它是由多种物理文件组成的,在Oracle数据库系统中分为,核心文件和非核心文件两大类[1]。其中核心文件由数据文件,控制文件,日志文件,参数文件组成,非核心文件由密码文件,告警日志文件,各种跟踪文件组成。

控制文件:控制文件是一个二进制的文件,它描述了数据库当前的物理状态,记录了RMAN备份的元数据。控制文件包含有数据库的名称、数据库的创建信息、表空间的信息、数据文件的状态、日志文件的信息、备份的信息、检查点的信息等。

数据文件:,一个数据库中一定至少有一个数据文件(system01.dbf),如果一个数据库存在多个数据文件,应该分别把它们存放在不同的磁盘上,这样做不仅可以提高数据的存取速度,有利于提高数据库的性能,而且还能防止数据文件同时被损坏,实现高度容灾。

日志文件:数据库日志文件包括归档日志和非归档日志,记录了数据库的所有修改信息,归档日志会在数据库切换日志时,备份历史日志,日志记录的是数据库改变的信息、因此当数据库损坏时可以通过日志文件实现数据库的完全恢复、不完全恢复,而非归档日志不会备份历史日志,只能恢复到数据库最后一次备份时的状态[2]。

临时文件:创建数据库对象的时候指定的是使用表空间,一个表空间至少包含一个数据文件,临时文件是临时表空间对应的数据文件,并不是已用完就被删除的,而是指这个文件存储的对象是临时存在的对象。临时文件主要用于大量的排序的时候,如果不能在数据库的内存中做排序,就会把临时文件作为中转。

参数文件:参数文件是记录数据库系统配置的文件,每次数据库一启动,Oracle就会自动地从参数文件中读取系统参数的设置来配置并启动数据库。如内存的大小分配,此次启动可以打开的进程数和会话数等。

2 Oracle数据库迁移的迁移方案

oracle数据库状态分类:

nomount:此状态可以读取初始化参数文件,启动实例,可以进行数据库的创建。

mount:数据库维护状态,读取控制文件。

open:打开数据文件,日志文件,是数据库可以对全体用户提供服务了。

数据库物理迁移过程大体可分为以下四个步骤:

第一步:加载初始化文件

oracle启动后,数据库默认会读取一个二进制的初始化文件spfile<SID>.ora,可在系统启动时指定初始化文件的路径,如startup pfile="pfilesid.ora"nomount或者startup spfile="spfilesid.ora"nomount。初始化过程可根据系统错误提示内容,用pfile进行编辑处理,然后重新startup就可以了。

第二步:加载控制文件,保证在初始化文件中,控制文件的路径正确

在初始化文件中定义控制文件的位置,在确保控制文件路径正确的情况下,才能对控制文件进行加载,其命令是alter database mount。

第三步:加载数据库,包括重做日志文件

加载控制文件之后,执行命令alter database open对数据库进行开启,整个数据库启动过程完成了。

第四步:启动数据库成功之后,就说明迁移成功,可以观察数据是否丢失,然后启动监听和配置文件等。

3 Oracle数据库迁移具体实践

下面以把数据库从文件系统迁移到ASM磁盘组为例进行演示步骤:

首先,ASM是把多个磁盘组织为一个磁盘组,作为Oracle的逻辑卷管理器,利用ASM技术可以把数据均匀分布在这些磁盘上来解决从文件区到物理磁盘块的映射问题。这种设计除了定位文件区非常快速之外,还在增加或删除磁盘时有所帮助,因为文件区的位置不需要调整[3]。

把数据库从文件系统迁移到ASM磁盘组主要是把数据库的控制文件,数据文件和日志文件分别放在不同的磁盘组上,实现对这些文件的一个冗余放置,还简化了对数据文件的管理。

3.1 迁移数据库

①迁移数据库前先在RMAN下备份数据库,设置系统冗余度,并打开优化器和控制文件的自动备份功能

②创建迁移的控制文件存放的目录

③修改参数文件把控制文件的默认位置修改到ASM磁盘组上,然后用Pfile来生成spfile文件

SQL>create pfile from spfile;

④利用RMAN工具恢复控制文件,将数据库启动到mount状态;加载控制文件,如果出现错误,就说明控制文件所在的路径和参数文件路径不一致,要修改初始化参数,文件中控制文件的参数,然后重新加载。

SQL>shutdown immediate;

数据库已经关闭。

SQL>startup nomount;

ORACLE例程已经启动。

RMAN>restore controlfile from'/backup/ctl';

RMAN>alter database mount;

数据库已装载

⑤利用RMAN工具恢复数据库,执行下面的命令

⑥执行下面的命令重置日志组打开数据库

RMAN>alter database open resetlogs;

数据库已打开

3.2 输入下面的查询命令查看数据文件和控制文件是否已成功迁移到ASM磁盘组上

3.3 迁移临时表空间

①输入下面的命令重置临时表空间,先在ASM磁盘组上建立新的临时表空间,结果显示表空间已更改

表空间已更改。

②输入下面的查询命令查看表空间是否已创建

③输入下面的命令删除文件系统中就得临时表空间

表空间已更改。

④输入下面的命令查看表空间是否已成功删除

3.4 迁移redo日志

①输入下面的查询命令查看日志的状态,由查询结果可知第一组是当前日志

②输入下面的命令先往三组日志中各添加一个asm磁盘组上的成员,结果显示数据库已更改

数据库已更改。

数据库已更改。

数据库已更改

③删除非ASM磁盘组上的日志成员,执行完命令后结果显示数据库已更改,删除成功

SQL>alter database drop logfile group 2;

数据库已更改。

SQL>alter database drop logfile group 3;

数据库已更改。

④由查询结果可知第一组是当前日志所以需要切换一下当前日志才能继续删除,执行完命令后显示系统已更改

SQL>alter system switch logfile;

系统已更改。

⑤输入下面的查询命令查看当前日志是否已切换

⑥输入下面的命令删除非ASM磁盘组上的第一组日志组成员,结果显示系统已更改

数据库已更改。

⑦输入下面的命令查看日志组成员状态

⑧输入下面的查询命令查看日志组的物理位置,查看日志组是否已成功迁移到ASM磁盘组上

4 总结与展望

数据库管理技术是现今社会中信息科学与技术的重要组成部分,数据库迁移技术的研究保证了数据安全以及高效的存储[4][5]。在实际操作过程中,Oracle数据库基于Linux系统的迁移过程中会出现各种各样的情况,如果想要安全完整的迁移数据库,一定要先做好备份,然后反复的实验验证,最终才能保证数据库完整安全的迁移。

摘要:本文介绍了Oracle数据库基于Linux系统迁移的研究问题。在数据库领域一直处于领先地位的Oracle数据库以其良好的可移植性、可靠性和高效性,倍受各级用户的推崇和喜爱。随着Oracle数据库的不断更新和发展,其使用用户的群体也在不断的增加,因此对Oracle数据库的存储迁移技术的研究在国内外如雨后春笋般不断发展。

关键词:oracle,数据迁移,跨平台

参考文献

[1]张敏.数据库安全研究现状与展望[J].中国科学院院刊,2011.03.

[2]赵钦,周丹.政府办公自动化信息系统数据迁移解决方案[J].广西科学院学报,2008.24.

[3]段卫国,李俊春.Oracle数据库数据迁移技术研究[J].信息技术,2015.8.

[4]Kathy Rich.Oracle Data Pump,10g Release 2(10.2)[M].Oracle Database Utilities,2005.

3.oracle数据库索引失效 篇三

今天一个同事突然问我索引为什么失效。说实在的,失效的原因有多种:

但是如果是同样的sql如果在之前能够使用到索引,那么现在使用不到索引,以下几种主要情况:

1. 随着表的增长,where条件出来的数据太多,大于15%,使得索引失效(会导致CBO计算走索引花费大于走全表)

2. 统计信息失效需要重新搜集统计信息

3. 索引本身失效需要重建索引

下面是一些不会使用到索引的原因

索引失效

1) 没有查询条件,或者查询条件没有建立索引

2) 在查询条件上没有使用引导列

3) 查询的数量是大表的大部分,应该是30%以上。

4) 索引本身失效

5) 查询条件使用函数在索引列上(见12)

6) 对小表查询

7) 提示不使用索引

8) 统计数据不真实

9) CBO计算走索引花费过大的情况。其实也包含了上面的情况,这里指的是表占有的block要比索引小。

10)隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tu_mdn定义为varchar2(20),

但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效.

错误的例子:select * from test where tu_mdn=13333333333;

正确的例子:select * from test where tu_mdn=‘13333333333‘;

11)对索引列进行运算导致索引失效,我所指的对索引列进行运算包括(+,-,*,/,! 等)

错误的例子:select * from test where id-1=9;

正确的例子:select * from test where id=10;

12)使用Oracle内部函数导致索引失效.对于这样情况应当创建基于函数的索引.

错误的例子:select * from test where round(id)=10;

说明,此时id的索引已经不起作用了 正确的例子:首先建立函数索引,

create index test_id_fbi_idx on test(round(id));

然后 select * from test where round(id)=10; 这时函数索引起作用了 1, 2,单独的>,<,(有时会用到,有时不会)

3,like “%_” 百分号在前.

4,表没分析.

5,单独引用复合索引里非第一位置的索引列.

6,字符型字段为数字时在where条件里不添加引号.

7,对索引列进行运算.需要建立函数索引.

8,not in ,not exist.

9,当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况,

10, 索引失效。

11,基于cost成本分析(oracle因为走全表成本会更小):查询小表,或者返回值大概在10%以上

12,有时都考虑到了 但就是不走索引,drop了从建试试在

13,B-tree索引 is null不会走,is not null会走,位图索引 is null,is not null 都会走

14,联合索引 is not null 只要在建立的索引列(不分先后)都会走,

in null时 必须要和建立索引第一列一起使用,当建立索引第一位置条件是is null 时,

其他建立索引的列可以是is null(但必须在所有列 都满足is null的时候),

或者=一个值;当建立索引的第一位置是=一个值时,其他索引列可以是任何情况(包括is null =一个值),

4.Oracle数据库面试练习题 篇四

分析:每个部门有多少员工 ―― 根据部门编号进行分组

select deptno,count(*) from emp group by deptno having count(*) >= 1;

2.列出薪金比“SMITH”多的所有员工。

分析:先查询出SMITH工资 : select sal from emp where ename=’SMITH’;

select * from emp where sal > (select sal from emp where ename=’SMITH’);

3.***** 列出所有员工的姓名及其直接上级的姓名。

分析:表自映射,为表起别名,进行关联 t1 表模拟员工表 t2 表保存直接上级信息

select t1.ename 员工姓名, t2.ename 直接上级 from emp t1,emp t2 where t1.MGR = t2.empno;

4.列出受雇日期早于其直接上级的所有员工。

分析:原理和上题类似

select t1.*,t2.hiredate from emp t1,emp t2 where t1.MGR = t2.empno and t1.hiredate < t2.hiredate;

5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

分析:部门没员工也要显示 ― 外连接。无论怎样部门信息一定要显示,通过部门去关联员工

select * from dept left outer join emp on dept.deptno = emp.deptno ;

6.列出所有“CLERK”(办事员)的姓名及其部门名称。

分析:查找job为CLERK 员工姓名和部门名称

员工姓名 emp表

部门名称 dept表

select emp.ename,dept.dname,emp.job from emp,dept where emp.deptno = dept.deptno and emp.job=’CLERK’;

7.列出最低薪金大于1500的各种工作。

分析:工作的最低薪金 ―- 按工作分组,求最低薪金

select min(sal) from emp group by job;

大于1500 是一个分组条件 ― having

select job,min(sal) from emp group by job having min(sal) > 1500;

8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

分析:员工姓名位于 emp 部门名称 dept

select emp.ename from emp,dept where emp.deptno = dept.deptno and dept.dname = ‘SALES’;

9.列出薪金高于公司平均薪金的所有员工。

分析:先求公司平均薪金 select avg(sal) from emp;

select * from emp where sal > (select avg(sal) from emp);

10.列出与“SCOTT”从事相同工作的所有员工。

分析:先查询SCOTT : select job from emp where ename =’SCOTT’;

select * from emp where ename ‘SCOTT’ and job = (select job from emp where ename =’SCOTT’);

11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

分析:查看部门30 中所有员工薪资列表 select sal from emp where deptno = 30;

select * from emp where sal in (select sal from emp where deptno = 30);

12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

分析:

select * from emp where sal > all(select sal from emp where deptno = 30);

select * from emp where sal > (select max(sal) from emp where deptno = 30);

5.浅析Oracle数据库应用 篇五

在计算机技术中, Oracle数据库是一个功能极其强大的数据库系统。它起始于七十年代末的关系型数据库技术。Oracle数据库的关键是怎样理解数据间的关系, 然后构造反映这些关系的信息库。1984年Oracle成功地将关系型数据库转移到桌面计算机上, Oracles提供了一个完整的客户/服务器体系结构的商用DBMS。利用SQL.NET软件层, 与多种操作系统支持通信协议配合, 为Oracle数据库提供分布式环境, 可以实现多点查询。Oracle数据库发布了革命式的行锁定模式, 提高了事务的处理速度, 使关系型数据库应用进入了一个全新的天地。

1992年推出的Oracle7数据库采用了自协调的多线索服务器体系结构, 动态调整高速数据库服务器进程的个数。这都为构造产业化的以及企业类的应用提供了技术支持。1997年, Oracle8数据库推出。Oracle8数据库不仅允许用户以处理关系数据的方式来梳理对象数据, 也可同样处理关系数据。因此, O-racle8数据库是一个紧密集成的对象关系数据库管理系统方案, 对象技术和关系型数据库的结合, 使用户现有Oracle7数据库应用软件无需移植, 便可在Oracle8数据库上使用, Oracle数据库发展到现在的Oracle 10g, 它是第一款为网格计算而设计的数据库, 集成了Oracle数据库管理技术的各种优势, 又融入了网格计算的各种新的性能特点。

Oracle数据库系统的特点是支持大数据库、多用户的高性能事务处理, Oracle数据库具有良好的硬件环境独立性, 支持各种类型的大型、中型、小型和微机系统。Oracle数据库遵守数据存取语言、操作系统、用户接口和网络通信协议的工业标准, 有着更好的安全性和完整控制, 并且Oracle数据库允许将处理分为数据库服务器和客户应用程序处理, 所有共享的数据管理由具有数据库管理系统的计算机处理, 而运行数据应用的工作站侧重于解释和显示数据。

2 数据库最优灵活体系结构OFA

OFA (Optimal Flexible Architecture) 是提高Oracle数据库逻辑配置和性能的一种优化结构, 使用这种结构进行设计会简化物理设计中的数据管理, 可以高效自由地分布逻辑数据对象。数据库逻辑设计要遵循: (1) 同样方式使用的段类型存储在一起; (2) 按照标准使用来设计系统; (3) 存在用于例外的分离区域; (4) 最小化表空间冲突; (5) 将数据字典分离。

3 系统级优化

Oracle数据库从物理结构上看, 是安装在硬件服务器上的由一个个文件组成的软件系统, 要确保其高效运行必须有充足的服务器资源来支撑。影响系统性能的主要问题有以下几个方面: (1) 现有系统自身存在的缺陷或不足; (2) CPU不足; (3) 内存不足; (4) I/O不足; (5) 网络约束; (6) 软件约束。在对数据库进行优化之前, 应该根据实际应用需求来配置服务器硬件, 选取合适的CPU型号及个数、存储容量大小等, 优化网络环境, 完善操作系统软件配置, 为Oracle数据库提供良好的运行环境。

4 数据库级优化

4.1 数据库设计开发阶段。

(1) 优化应用程序结构设计:在数据库系统设计阶段对其逻辑结构和物理结构进行优化设计, 系统性能可以达到最佳, 系统开销最小。因为不同的应用程序体系结构所要求的数据库资源是不同的, 要根据软件需求, 确定应用程序采用的体系结构, 是B/S、C/S还是其他体系结构。优化应用程序结构, 设置合理的数据库访问模式, 能极大提高数据库效率。 (2) 编写优质SQL语句:良好的SQL语句可以被数据库重复使用而减少分析时间, 充分利用了SQL语言和Oracle特性的应用程序处理速度较快, 效率较高。在进行数据库操作时, 选取合适的SQL代码, 能使程序更加明了, 运行速度也更快。 (3) 优化磁盘I/O:对于数据库系统来说, 磁盘I/O操作是数据库性能最重要的方面。减少磁盘I/O操作的最根本方法就是利用高速缓存存放频繁使用的数据信息, 恰当使用索引和Oracle分区技术能有效节约服务器查找时间, 减少磁盘操作。 (4) 参数优化:数据块的大小在数据库创建后不能改变, 因此在设计阶段必须确定合适的数据块大小和存储参数。一般来讲, 我们通常根据样例数据来确定数据块大小, 而根据业务量和未来数据库发展趋势确定存储参数。

Oracle数据库参数介绍: (1) LICENSE-MAX-SESSION。该参数指出允许并发用户会话的最大数。若此参数为0, 则不能实施并发。若并发的用户会话数已达到此极限, 则只有具有RESTRICTED SESSION权限的用户才能连接到服务器。 (2) CHECKPOINT-PRO-CESS。该参数根据是否要求检查点而设置成TRUE或者FALSE。当所有缓冲区的信息写到磁盘时, 检查点进程 (CHPT) 建立一个静态的点。在归档日志文件中做一个记号表示有一个检查点发生。检查点发生在归档日志转换的时候或当达到LOG-CHECKPOINT-IN-TERVAL定义的块数的时候。当设置此参数为TRUE时, 后台进程CHPT便可工作。在检查点期间内, 若日志写进程的性能减低, 则可用CHPT进程加以改善。 (3) DB-BLOCK-SIZE。该参数表示Oracle数据库块的大小, 以字节为单位, 典型值为2048或4096。该值一旦设定则不能改变。它影响表及索引的FREELISTS参数的最大值。 (4) OPTIMIZRER-MODE。若该参数的值为RULE, 则ORACLE优化器选择基于规则的优化;若设置为COST, 并且在数据字典中存在有统计信息, 则优化器选择基于代价的优化方法进行优化。

4.2 数据库运行阶段。

(1) SGA。在不影响应用系统的前提下, SGA应尽可能大, 通过合理设置SHARED-POOL-SIZE和DB-BLOCK-BUFFER的值来掌握好SGA的大小。如果服务器内存为1G, 那能够分配给SGA的内存大约是四五百兆, 通常我们习惯于通过直观的公式化来表达这样的问题:SGA+并发执行进程数* (sort-area-size+hashara-size+2M) +OS使用内存<总内存*70%。 (2) 共享池。共享池用于缓存最近被执行的SQL语句和最近被使用的数据定义, 主要包括库高速缓冲区和数据字典缓冲区。配置共享池的关键是看应该更改SHARED-POOL-SIZE还是应该使用保留池、大型池或Java池。通过查询库高速缓冲和数据字典缓冲的命中率, 可以衡量共享池的效率。 (3) 数据库缓冲区。数据库缓冲区是SGA中最大的区, 其大小设置是否合理直接跟应用系统的性能相关。通过测试我们得出结论:数据高速缓冲区的命中率最佳应保持在90%以上, 当该值低于80%时服务器性能就会下降, 而低于50%时则会严重影响服务器性能。 (4) 重做日志缓冲区。重做日志缓冲区的内存需求与数据库事务处理的数量和大小有关。重做日志缓冲池通常小于2M, 过大的重做日志将减少日志文件的I/O操作, 过小的重做日志缓冲区将会使日志写入过程过分繁忙。日志缓冲区的大小由LOG-BUFFER决定, 必须是DB-BLOCK-SIZE的整数倍。如果失败率大于1%, 则必须增大LOG-BUFF-ER的大小。

5 结束语

Oracle提供了丰富的选择环境, 可以从Oracle数据库的体系结构、软件结构、模式对象以及具体的业务和技术实现出发统筹考虑, 提高系统性能需要一种系统的整体方法, 在对数据库进行优化时, 需要对应用程序、系统和I/O子系统进行相应的优化, 有目的地调整一个或多个组件, 使系统满足一个或多个目标的过程。对于ORACLE来说, 优化是进行有目的调整组件级, 即增加吞吐量, 减少响应时间。综合考虑优化方案, Oracle应用按最优的方式来存取数据, 确保数据库的安全、稳定可靠。

摘要:在计算机技术中, Oracle数据库系统的优化对于整个系统的正常运行起着至关重要的作用, 但是它却是一项非常复杂的工作。Oracle数据库性能调整与优化涉及到多个层面, 并且可以提高Oracle数据库的稳定和可靠程度, 保障系统高效地运行, 解决系统瓶颈, 节约系统开销, 具有良好的应用价值。

关键词:数据库,Oracle,概述,优化,研究

参考文献

[1]魏亚楠, 宋义秋.Oracle数据库应用系统的性能优化[J].制造业自动化.2010.

6.oracle数据库学习心得 篇六

Oracle number datatype 语法:NUMBER[(precision [, scale])]

简称:precision -->p

scale    -->s

NUMBER(p, s)

范围: 1 <= p <=38, -84 <= s <= 127

保存数据范围:-1.0e-130 <= number value < 1.0e+126

保存在机器内部的范围: 1 ~ 22 bytes

有效为:从左边第一个不为0的数算起的位数,

s的情况:

s >0

精确到小数点右边s位,并四舍五入。然后检验有效位是否 <= p。

s < 0

精确到小数点左边s位,并四舍五入。然后检验有效位是否 <= p + s。

s = 0

此时NUMBER表示整数。

eg:

Actual Data  Specified As Stored As

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

123.89          NUMBER        123.89

123.89          NUMBER(3)    124

123.89          NUMBER(6,2)  123.89

123.89          NUMBER(6,1)  123.9

123.89          NUMBER(4,2)  exceeds precision (有效位为5, 5 >4)

123.89          NUMBER(6,-2) 100

.01234          NUMBER(4,5)  .01234 (有效位为4)

.00012          NUMBER(4,5)  .00012

.000127      NUMBER(4,5)  .00013

.0000012     NUMBER(2,7)  .0000012

.00000123    NUMBER(2,7)  .0000012

1.2e-4          NUMBER(2,5)  0.00012

1.2e-5          NUMBER(2,5)  0.00001

123.2564     NUMBER       123.2564

1234.9876    NUMBER(6,2)  1234.99

12345.12345  NUMBER(6,2)  Error (有效位为5+2 >6)

1234.9876    NUMBER(6)    1235 (s没有表示s=0)

12345.345    NUMBER(5,-2) 12300

1234567      NUMBER(5,-2) 1234600

12345678     NUMBER(5,-2) Error (有效位为8 >7)

123456789    NUMBER(5,-4) 123460000

1234567890   NUMBER(5,-4) Error (有效位为10 >9)

12345.58     NUMBER(*, 1) 12345.6

0.1          NUMBER(4,5)  Error (0.10000, 有效位为5 >4)

0.01234567   NUMBER(4,5)  0.01235

7.oracle数据库学习心得 篇七

论文摘要:数据库是一种实用性很强且功能非常强大的数据库技术,本文提出高职院校开设Oracle数据库课的必要性结论,并对高职院校Oracle数据库课程的教学方法进行探讨。

论文关键词:数据库,项目驱动教学法

随着数据库技术的发展,Oracle数据库脱颖而出,它具有很多的优良性,提供了多种开发工具,能极大的方便用户进行进一步的开发;Oracle良好的兼容性、可移植性和高生产率使OracleRDBMS具有良好的开放性。

除此以外,Oracle数据库还可以和多种语言连接,如VisualBasic,VisualC++,JSP,ASP,Delphi等,在开发管理系统的过程中,还可以和比较流行的几种语言结合使用,如XML,UML等。

一、高职院校开设数据库课程的情况分析

目前高等职业教育的发展趋势非常好,学校的教学目标就是把学生培养成技能型、应用型人才,所以在绝大部分专业的教学过程中都要努力培养学生的实践能力、动手能力。而高职院校学生起点相对低,基础相对差,在教学过程中就会存在一定的困难;目前宁夏的几所高职学校开设的数据库课程多数为VisualFoxPro,Access等小型数据库系统,而开设大型数据库如SQLServer的极少、开设Oracle的几乎没有。

二、高职院校开设Oracle数据库课的必要性

Oracle数据库技术因其具有强大的数据和信息管理功能成为管理信息系统、管理工程、办公自动化系统、地理信息系统、决策支持系统、计算机及其它相关专业的一门必修课,作为一门数据库课程,它不仅是学生学习后续专业课必备的工具,而且,在实际管理工作中,还具有广泛的用途,例如:土地资源管理信息系统、情报检索、专家系统等都是以数据库为基础开发的,因而在高职院校相关专业数据库也成为不可或缺的课程。所以,对Oracle数据库课程的教学探讨,一方面,对于学生进一步学习和掌握相关专业知识,特别在毕业后的工作中更好的开发和应用有关软件将起到很重要的作用,另一方面,对于其他语言课的教学改革,也有一定的借鉴作用。

三、高职计算机专业学生就业需求情况分析

随着企业信息技术的发展,很多企业都希望招收到的员工具有一定的编程知识,数据库知识,但企业和相当一部分毕业生对目前高职院校计算机专业的课程设置有些看法,同时认为教材普遍偏旧,而且学生也没有学得很扎实。计算机的.技术变化很快,课程也需要跟上发展的步伐,应该不断吸收新东西,把理论与当前的最新技术结合起来。对于数据库技术而言,如果一直都只开设小型数据库系统的课程,而不开设大型数据库,学生的知识面就太狭窄,见识太少,就不适应于现代企业的需求。

Oracle作为一种比较常用的大型数据库,经常应用于企业的大型应用软件中。Oracle数据库因为它的稳定和高效,已经牢牢占据数据库领域很高的市场份额,如果想成为一名真正的数据库管理员,没有使用和维护大型数据库的经验是不行的,Oracle则是现今最有代表性的大型数据库软件,当前有必要在高职院校开设Oracle数据库课程,以使学生掌握Oracle这个优秀的数据库技术,更好地适应现代企业对数据库的需求。

四、Oracle数据库教学探讨

1.在Oracle数据库的教学中使用“项目驱动教学法”。

在课程的教学组织上根据建构主义的学习理论,用项目驱动建立“同化和顺应”的学习条件,用第一重循环建立“情景”,第二重循环建立“协作”,第三重循环建立“会话”产生“意义建构”的教学效果。

在Oracle数据库课程的教学中,根据高职教育的培养目标和学生特点,可以这样进行教学设计,教学始终贯穿一个核心实例图书管理信息系统的开发,项目驱动教学法通常都和案例教学法结合使用。选择这样一个系统的原因是学生比较熟悉这个系统的业务,可以把主要精力集中在数据库课程内容的学习上,而不必花大量的时间进行业务分析。

第一重循环,教师演示已开发好的图书管理系统,告诉学生,通过本课程的学习,大家要开发这样的应用系统,在使学生明确任务的同时,激发其学习的热情和求知的欲望。教师制作这个系统时,要把大部分的Oracle知识都融化在这些系统(任务)中,每一次课,演示并讲授几个知识点。系统开发完成了,知识点也全部讲授完成了,因高职院校大多开设VB程序设计,所以教师可以使用VB语言来开发前台。

第二重循环,以学生为主体,让他们通过上机练习,自己动手,练习知识点,同时也是完成了图书管理系统的一部分,知识点全部练习了,图书系统也开发成功了。在练习时,同学之间可以相互讨论,也可以向老师提问。

第三重循环,安排另外几个管理信息系统,例如:学生档案管理系统,学生宿舍管理系统等,让学生从头到尾独立完成,教师不再集中讲授,学生有问题时,单独答疑,对课程的所有知识点进行独立的综合练习,综合练习时,可以参考和模仿前两重循环中的有些内容,同学之间可以相互讨论,也可以和老师交换意见,最后提交可运行的应用系统和课程设计报告。

2.在Oracle数据库教学中采用“错误分析法”

错误分析法是了解学生学习情况、检查教学效果的有效方法。随着语言学、心理学及其相关学科的发展,人们对错误的态度也发生了巨大的变化。上个世纪五六十年代以行为主义心理学和结构主义语言学为基础的对比分析被广泛用于对学习者错误的分析,六十年代末七十年代初出现了以认知心理学为理论基础的错误分析,它将错误看成是学习进步的一种表现。

在Oracle数据库的教学中可以适当使用错误分析法。SQL是结构化查询语句,用于对数据库以及数据库中的各种对象进行创建、删除、修改,用于操纵数据库中各种对象、检索和修改数据等。在讲授SQL语句时,可以先讲基本的SQL语句的语法结构,讲解完以后,就可以采用错误分析法让学生辨别SQL语句中的错误,通过错误分析,学生就能更好的掌握正确的SQL语句了。

3.在Oracle数据库教学中采用“比较教学法”

在Oracle数据库的教学中,还可以使用“比较教学法”。在Oracle中,可以使用界面创建数据库和数据表,也可以使用命令方式创建数据库和数据表,在讲解这一部分时,我们可以分别演示这两种方法,由老师来分析两种方法的优缺点,并让学生进行比较看哪种方法更容易理解掌握。可以使用界面操作表数据,也可以使用命令操作表数据,同样可以使用比较的方法来辅助教学。在综合实训的时候,教师可以给学生展示两个都使用Oracle数据库,但使用不同编程语言的管理信息系统,并使用“比较法”分析两个系统的界面,实现难易程度,与数据库的连接方法等,最终让学生掌握更多的知识。在Oracle数据库的教学中,我们适当的使用“比较教学法”,也是必不可少的。

参考文献

1 焦永杰.学生学习问题的探讨.中国科技信息,(8):286-287

2 顾明.三重循环任务驱动的课程教学设计.职教论坛,(16):36

3 任务驱动式教学法在数据库教学中的应用.www.lunwenduo.com/n25059c227.shtml

4 王子芳.数据库及应用课程教学探讨.西南农业大学学报(社会科学版),,3(3)

5 孟程.谈计算机数据库教学方法和手段.黑龙江农业工程职业学院学报,2005(1):48-50

6 宁红梅.高职院校教学方法探寻.高教研究,2006(4):22-23

7 计算机课程实践教学模式探索. kbs.cnki.net/Forums/10949/ShowPost.aspx

8.论Oracle数据库安全策略 篇八

关键词:Oracle数据库,安全策略,数据库安全

0引言

Oracle数据库是甲骨文公司的一款关系数据库管理系统, 在数据库系统市场中占有主要份额, 具有功能强大、性能优异和操作灵活的特点。针对Oracle数据库系统, 笔者根据多年的教学和实践经验, 就如何提高Oracle数据库系统的安全性, 提出了一些自己的看法。

1系统安全策略

1.1数据库用户的管理

对数据库访问者的管理, 是在源头上对数据库安全进行保护, 是保护数据库安全的重要手段之一。这种方式是建立相关的用户组和用户口令验证, 从而防止非法的用户进入数据库系统, 提高数据库系统的安全性和稳定性。数据库系统中的信息由用户进行访问, 因此, 对不同的用户组设置一定的权限, 能有效控制数据库的安全性。应该根据数据库系统的承载量、规模量以及数据库用户的访问量进行安全管理设计。数据库安全性管理者可能只是拥有create、alter或drop数据库用户的一个特殊用户, 或者是拥有这些权限的一组用户。总而言之, 只有那些值得信任的、有责任心的管理员才应该具有管理数据库用户的权限。

1.2数据库用户身份的一致性确认

数据库安全管理中比较重要的一项就是要对用户身份进行一致性认证。我们可以科学合理地利用数据库、操作系统以及网络服务的功能来进行认证, 从而让用户管理以及登录数据库变得更加安全和快捷, 也让用户的身份认证、合理审计数据库信息与操作系统信息一致性等这些目标得到集中控制。我们在审核的过程中, 如果操作系统与其数据库的用户信息一致, 那么Oracle数据库就不需要对用户的个人信息、名称和密码进行进一步的存储和管理, 从而能够极大地提高工作效率。

1.3操作系统安全性

在操作系统的安全管理方面, 要求数据库管理人员要具有对create (数据制作) 和delete (删除) 相应文件的操作管理权限, 一般的数据库用户和维修人员都不应该具备create和delete数据库相关文件的操作系统权限。如果操作系统能够为数据库用户分配角色, 那么安全管理员必须要具有修改操作系统账户安全性区域的权限。

2数据安全策略

数据库中数据的安全策略, 是指对数据库中数据的保护, 而数据的保护则分3个方面, 第一是数据库的备份, 第二是日志, 第三是控制文件的备份, 当然, 最主要的是数据库的备份。

数据库的备份, 就是指当计算机的硬件或者存储媒体发生故障的时候, 利用备份进行数据库的恢复, 从而恢复被破坏的数据库文件, 保护数据免受意外的损失。

日志用来记录数据库中每一次操作的时间、操作者和操作行为, 这些操作行为包括对数据的修改和调整等。Oracle数据库实例都提供日志, 从而在数据库内部建立一个涵盖所有操作的完整记录。

控制文件的备份, 在大多数情况下用于存储数据库物理结构的状态, 在实例恢复和介质恢复期间, 控制文件中的某些状态信息可以用来引导Oracle数据库。

2.1备份策略

导入/导出、冷备份和热备份是Oracle数据库3种标准的备份方法。其中, 导出备份是逻辑备份, 冷备份和热备份属于物理备份。导出 (emport) 是将数据从数据库中提取出来, 而导入 (import) 是将数据导入数据库, 导入是导出的逆过程。而冷备份是指在数据库正常关闭的情况下, 将关键性文件拷贝到另外的位置。冷备份是一种非常快速的备份方法, 而且容易归档, 具有低度维护和高度安全的优点。热备份是指数据库在运行的情况下, 采用archivelog mode方式备份数据库的方法。热备份能够对几乎所有数据库实体做恢复, 而且恢复较为快速, 大多数情况下在数据库仍然工作时恢复。但是, 热备份不能出错, 一旦出错, 后果十分严重, 而且维护困难, 要特别小心。

2.2恢复策略

数据库的恢复分为实例恢复和介质恢复。当数据库发生实例故障的时候就需要实例恢复, 实例恢复是由数据库自动进行的, 可以将数据库恢复到故障之前的事务一致性状态。介质恢复指当Oracle数据库不能使用联机日志文件进行恢复的情况下, 需要DBA参与。通常需要取备份文件再结合应用归档日志文件和联机日志文件进行恢复。在介质故障引起数据库文件的破坏时使用介质恢复。介质恢复能够将整个数据库恢复到故障之前的一个事务一致性状态。数据库在归档方式下运行, 则可以实施完全介质恢复和不完全介质恢复。完全介质恢复是利用重做日志或增量备份将数据块恢复到最接近当前时间的时间点。之所以叫做完整恢复是由于Oracle应用了归档日志和联机重做日志中所有的修改。不完全介质恢复是利用备份产生一个非当前版本的数据库。换句话说, 恢复过程中不会应用备份产生后生成的数据重做日志。

3用户安全策略

3.1管理员安全策略

管理员应该要保护好作为sys和system用户的连接, 因为在Oracle数据库中, sys和system拥有极大的管理权限, 能够用各种方式对数据库进行改动, 而且其初始密码均为manager。为了防止非法用户访问数据库, 在数据库建立之初, 就应该第一时间更改sys和system用户的密码。当数据库比较大时, 数据库的管理员数量也会相应增多, 因此, 安全管理员要合理给各个数据库管理员分配相应管理特权和管理职能。

3.2应用程序开发人员的安全策略

众所周知, 开发应用程序的人员必须具备特殊的权限才能够完成数据库的开发工作, 例如create table, create, procedure等系统权限, 但是, 我们只能依据开发的需要来赋予相应的权限。对程序开发人员, 必须要求其与终端用户竞争数据库资源, 同时也不能损害数据库其它应用产品。此外, 要给予数据库安全管理人员充分的管理权限, 使其能够细化应用程序开发人员的操作权限。同时, 还要对应用程序开发人员创建和使用权利进行一定的限制。

4密码管理安全策略

数据库系统的安全一直是由密码来防护的, 但是由于密码容易遭到偷窃、伪造, 因此, 必须采取一定的密码管理策略来维护数据库的安全。①当用户多次登录失败之后, 可以将该用户的账号锁定;②给密码设定一个周期, 在达到这个周期之后, 必须更改密码;③利用工具增强密码验证的复杂性。

5审计策略

Oracle数据库的审计工具用来记录有关数据库操作的信息。比如操作时间和操作人。如果某些事情一次或者连续发生, 通过审计, 可以追查到某些用户的活动, 从而追查到有问题的用户。为了提高审计的效率, 也为了减少审计的劳动量, 在审计开始之前, 必须明确需要什么内容, 明确审计的用户账号。同时, 针对某一个用户或者某一个或几个问题开始审计, 其原因必定是出现了确定的问题或者是出现了可疑的行为。进行审计的类型主要有语句审计、特权审计和模式对象审计。

6资源管理策略

在一个用户较多的数据库系统中, 资源限制特性显得非常重要。因为如果某一个或者某几个用户对资源的占用非常多, 必然会影响其它用户的正常工作。在单用户或者用户数量较少的数据库系统中, 这种影响较小。因此, 在多用户的数据库系统中, 应该对用户及其权限进行一定的规划, 同时对用户使用内部资源进行一定的限制, 防止重要系统资源被随意消耗。

7结束语

对Oracle数据库进行安全管理是一项长期的工作。文中提到了几种数据库的安全策略, 数据库安全管理员要根据这些安全策略, 利用技术手段进行严格管理, 认真做好安全防御工作, 构建一个稳定和安全的数据库系统。同时, 在万一发生问题的情况下, 数据库系统安全管理员应该让数据库系统尽快恢复, 不丢失数据, 保证整个系统的正常运行。

参考文献

[1]黎炳明.高校图书馆非物质文化遗产数据库的建设——以钦州学院为例[J].钦州学院学报, 2011 (3) .

[2]汪胜利.企业内部Oracle数据库监控系统技术体系[J].安徽电气工程职业技术学院学报, 2011 (S1) .

[3]刘恩军, 孙桂江.给予Oracle数据库的校园一卡通系统数据备份和恢复策略[J].齐齐哈尔大学学报:自然科学版, 2010 (6) .

9.oracle数据库学习心得 篇九

前言:因为项目原因,近期开始学习Oracle数据库,Oracle是目前最流行的数据库之一,功能强大,性能卓越,相对的学习的难度还是不小。我打算将自己的学习过程记录下来,做个积累,方便自己和其他的学习者。

写在学习前面的话,主要是:

1、把一些常见问题的问答分享一哈;

2、对学习路线的一个安排;

3、预期的结果展望。

1、Oracle数据库学习常见问题问答

Question1: Oracle数据库的书很难看懂,oracle真的很难学习吗?

Answer1: Oracle就是一个小软件,它把复杂的事情封装起来了,我们学习的是管理数据库.很简单.只要你掌握正确的学习方法,管理oracle数据库不难.

Question2: 数据库有好多版本,我应该学习哪个?

Answer2: 万物一理,数据库的版本虽然多,本质是一样的,变化的只是表象,你是oracle7的专家,一定也是oracle10g的专家。

Question3: 数据库存在好多平台,我应该学习哪个?

Answer3: 各个平台上有差别,很小。Windows是最好的学习的平台。

Question4: 有好多管理数据库的工具,我应该使用哪个?

Answer4: Sqlplus最好的管理工具,当你只用sqlplus管理数据库的时候,你就掌握oracle了。

Question5: 数据库学习中哪部分最难?

Answer5: Sql语句,永远是sql,书写高效的sql是我们永恒的目标。

Question6: 日常维护数据库最重要的工作是什么?

Answer6: 备份,永远是备份,有数据就有一切。

Question7: 学习数据库的基本课程是哪部分?

Answer7: 体系结构,它是备份和优化数据库的基石。

Question8: 如何衡量我的数据库的水平?

Answer8: 你在oracle数据库中想看什么就看得到,你入门了,

看什么都看得懂,你就学明白了。

Question9: 图形界面对数据库学习有帮助吗?

Answer9: 有害无益!

Question10: 我没有什么计算机专业的基础,能学会数据库吗?

Answer10: 能!数据库很简单,人人都能学会.象汽车一样,我们是学开车,不是造汽车.我们不懂汽车的内部结构,但不影响我们驾驶汽车,我们的工作就是管理数据库,不难.

Question11: Oracle的内容很多,我们应该掌握哪些产品?

Answer11: Oracle不是一个人做出来的,我们没有必要全面掌握,你掌握了基本的原理,在你的工作方向上深入一下.行业分工很细,一个人不能成为全能大师. 生命有涯,知识无边.

2、学习路线的安排

第一部分 sq l 基础

基本查询语句、DDL 和 DML 语句

第二部分 pl/sq l 基础

匿名块的编写、编写程序

第三部分 数据库的体系结构

实例的维护、控制文件、日志文件、数据文件、表空间、数据库的逻辑结构、undo 段的管理、表―存储数据的最基本单元、索引、约束的管理、Profile 配置、权限管理、数据库字符集、元数据

第四部分 数据库的网络配置

第五部分 数据库的备份和恢复

Exp 导出和 imp 导入、冷备份、热备份、Rman 备份和恢复

第六部分 数据库的优化

采集数据、Shared_pool、其它内存优化、不同的存储格式、SQL 语句的优化、数据库的不同访问模式

3、展望结果

预期的结果,基本掌握以下内容

基础部分:

Oracle基本使用

Oracle用户管理

Oracle表管理

高级部分:

Oracle表的查询

Oracle的函数

Oracle数据库管理

Oracle的权限、角色

Pl/sql编程

索引,约束和事务

10.oracle数据库学习心得 篇十

通常情况下,Oracle数据库会先将这些临时数据存放到内存的PGA(程序全局区)内。在这个程序全局区中有一个叫做排序区的地方,专门用来存放这些因为排序操作而产生的临时数据。但是这个分区的容量是有限的。当这个分区的大小不足以容纳排序后所产生的记录时,数据库系统就会将临时数据存放到临时表空间中。这就是临时表空间的来历。看起来好像这个临时表空间是个临时工,对于数据库的影响不会有多大。其实大家这是误解这个临时表空间了。在用户进行数据库操作时,排序、分组汇总、索引这些作业是少不了,其会产生大量的临时数据。为此基本上每个数据库都需要用到临时表空间。而如果这个临时表空间设置不当的话,则会给数据库性能带来很大的负面影响。为此管理员在维护这个临时表空间的时候,不能够掉以轻心。要避免因为临时表空间设置不当影响数据库的性能。具体来说,主要需要注意如下几个方面的内容。

一、创建用户时要记得为用户创建临时表空间。

最好在创建用户时为用户指定临时表空间。如可以利用语句default temporary table space语句来为数据库设置默认的临时表空间。不过在Oracle数据库中这个不是强制的。但是笔者强烈建议这么做。因为如果没有为用户指定默认临时表空间的话,那么当这个用户因为排序等操作需要使用到临时表空间的话,数据库系统就会“自作聪明”的利用系统表空间SYSTEM来创建临时段。众所周知,这是一个系统表空间。由于在这个表空间中存放着系统运行相关的数据,一般的建议是用户的数据不能够保存在这个表空间中。那么如果将用户的临时表空间防止在这个系统表空间之内,会产生什么负面影响呢?

由于临时表空间中的数据是临时的。为此数据库系统需要频繁的分配和释放临时段。这些频繁的操作会在系统表空间中产生大量的存储碎片。当这些存储碎片比较多时,就会影响系统读取硬盘的效率,从而影响数据库的性能。其次系统表空间的大小往往是有限制的。此时临时段也来插一脚,就会占用系统表空间的大小。

为此数据库管理员需要注意一点,当没有为用户指定临时表空间时,用户排序等操作仍然需要用到临时段。此时数据库系统就会将临时段放入到系统表空间中。为此就会对数据库的性能产生不利的影响。所以笔者建议各位读者与数据库管理员,在创建用户的时候同时为用户指定一个默认的表空间,以减少临时段对系统表空间的占用。

二、合理设置PGA,减少临时表空间使用的几率。

当排序操作产生临时数据时,数据库并不是马上将其存储在临时表空间中。通常情况下,会先将这些临时数据存储在内存的PGA程序全局区内。只有当这个程序全局区无法容纳全部数据时,数据库系统才会启用临时表空间中的临时段来保存这些数据。但是众所周知,操作系统从内存中读取数据要比从硬盘中读取数据块几千倍。为此比较理想的情况是,这个程序全局区足够的大,可以容纳所有的临时数据。此时数据库系统就永远用不到临时表空间了,

从而可以提高数据库的性能。

但是这毕竟只是一个理想。由于内存大小等多方面的限制,这个PGA程序区的大小往往是有限制的。所以在进行一些大型的排序操作时,这个临时表空间仍然少不了。现在数据库管理员可以做的就是合理设置这个PGA程序全局区的大小,尽量减少临时表空间使用的几率。如在实际工作中,数据库管理员可以根据需要来设置初始化参数SORT_AREA_SIZE参数。这个参数主要控制这个PGA程序全局区内排序区的大小。通常情况下,如果这个数据库系统主要用来查询并且需要大量的排序、分组汇总、索引等操作时,那么可以适当调整这个参数,来扩大PGA分区的大小。相反,如果这个系统主要用于更新操作,或者在这个数据库服务器上还部署由其他的应用程序,那么这个PGA分区就不能够占用太多的内存,以防止对其他应用程序产生不利的影响。所以说,数据库官员不能够一刀切,需要根据实际情况来调整。在必要的情况下,可以增加系统内存来增加PGA分区的大小,从而降低临时表空间的使用几率,以提高数据库的排序、分组汇总等操作的性能。

总之,如果临时段被频繁使用的话,由于内存与硬盘在性能上的差异,从而会降低数据库的性能。为此在平时工作中,数据库管理员还需要监控临时表空间的使用情况,以判断是否需要采取措施来减少临时表空间的使用来提高数据库的查询性能。为了实现这个目的,笔者建议数据库管理员可以查看v0_segment这张动态性能视图。通过这张动态性能视图可以查看系统排序段(临时段的一种)的使用情况。另外通过动态性能视图v0_usage还可以查询使用排序段的用户与会话信息。从而为数据库管理员优化数据库性能提供数据上的支持。对于这个排序段,笔者还要说明一点。对于排序段来说,同一个例程的所有SQL语句(如果需要排序操作的话)都将共享同一个排序段。并且排序段在第一次需要用到时被创建。排序完成后这个排序段不会被释放,只有在这个历程关闭后排序段才会被释放。为此以上两张视图要综合起来分析,才能够得到数据库管理员想要的信息。

三、要为临时表空间保留足够的硬盘空间。

其他表空间对应的数据文件,在其创建时就会被完全分配和初始化,即在其创建时就会被分配存储空间。但是临时表空间对应的临时文件则不同。如在Linux操作系统中,临时表空间创建时系统是不会分配和初始化临时文件的。也就是说,不会为临时文件分配存储空间。只有临时数据出现需要用到临时文件的时候,系统才会在硬盘上分配一块地方用来保存临时文件。此时就可能会产生一个问题,即当需要用到临时文件系统为其分配空间的时候,才会先系统分区中没有足够的存储空间了。此时就会产生一些难以预料的后果。

为此对于这些临时文件,数据库管理员最好能够预先为其保留足够的空间。如在Linux操作系统中,可以将其防止在一个独立的分区内,不允许其他应用程序使用。如此的话,就不用担心临时文件没有地方存储了。另外由于临时表空间主要用来存放一些排序用的临时文件。为此如果能够将这个临时表空间存放在性能比较好的分区中,还可以提高数据库系统读取临时表空间中数据的速度。另外由于系统需要频繁分配临时表空间中的数据,为此临时表空间所在的分区会出现比较多的碎片。此时如果将临时表空间存放在一个独立的分区内,那么数据库管理员就可以单独对这个分区进行碎片整理,从而提高这个分区的性能。所以无论出于什么原因,将临时表空间防止在一个独立的分区内,是一个不错的想法。不仅可以保证临时文件有存储的空间,而且还可以提高数据库的性能。

11.Oracle数据库移植技术探索 篇十一

关键词:数据库,移植方法、软硬件环境,oracle 10g,oracle11g

在数据库生命周期中最常发生的一件事就是不断地把数据库从老版本移植到新版本, 数据库移植不仅仅是导出导入的过程, 由于新旧运行平台、操作系统、应用设备等的不同, 其中涉及的问题方方面面[1]。在实际工作中, 软件开发和数据库建设工作已经完成, 正式交付用户使用, 但是后期的维护升级工作还得进行, 所以需要部署一个独立的测试环境来把测试环境和正式运行环境分开, 恰逢换新机器, 新旧机器的软硬件环境发生了很大变化, 因此部署测试环境的工作遇到了诸多问题, 总结下来供软件开发人员和数据库维护人员参考。

1 移植原则

不改变原有系统的后台数据库管理系统, 并保持原有系统架构、系统数据, 前后端应用程序不变[2], 也就是尽可能复制系统正式运行环境, 保持测试环境和正式运行环境的高度一致, 利于后期测试、维护、升级, 主要包括存储空间的移植、数据库对象的移植、数据库数据的移植、代码的移植、系统测试等很多技术方面的问题。

不同版本的oracle之间导入的原则:低版本exp, 高版本imp[3]。

Oracle数据库移植要遵循两个规则[4~6]:

规则一:从Oracle低版本的Export数据可以Import到Oracle高版本中, 但限于Oracle的相邻版本。对于两个不相邻版本间进行转换, 应先将数据输入到中间版本, 再从中间数据库转入更高版本。

规则二:Oracle的Export/Import工具只能连接到拥有更高或者一样的Export/Import版本的数据库。如Oracle 8.0.5的Export/Import (版本8.0.5.0.0) 可连接到Oracle 8.1.6数据库 (版本8.1.6.0.0) ;高版本的Export导出来的转储文件, 低版本的Import读不了;低版本的Export导出来的转储文件, 高版本的Import可以进行读取。

2 移植方法

数据库移植方法可以分为两类:使用数据库自带工具移植和编写程序进行移植。

使用oracle数据库自带工具进行移植, 也就是使用Oracle的逻辑备份与恢复工具来实现数据移植, 是目前比较通用的做法, 这种方法需要数据库维护人员对oracle比较熟悉才能操作, 好的是这种方法有太多的成功经验可借鉴, 因此难度也不是很大。

编写程序进行移植, 就是把诸多手工的过程统一在一个工具里, 这种方法要求软件开发人员将第一种方法用软件方式集中实现, 对软件开发人员来说有相当的软件开发量和技术难度, 但是对于应用人员来说, 就可以不用熟悉oracle及其自带的工具了, 熟悉了该软件就能进行数据库的移植了, 但是移植过程还会涉及到其他一些显著的改变, 例如操作系统改变、模式修改、以及相关应用软件的变化等等。每一项变化都存在着固有的风险性, 试图来个一劳永逸, 而且在移植过程中从头到尾都不去进行检测, 从一个软件工程师的观点来看不是很安全的方法。把所有的操作都结合在一起一步到位的实施, 移植过程是一个要么成功要么失败的过程, 没有中间地带, 而失败意味着时间可能都会浪费在这个过程的最简单部分, 也就是说数据的移出和移入要花费大把的时间, 如果失败, 这些过程的执行等于做了无用功[7~10]。在实际操作中, 还是把整体移植过程至少分成多个不同的阶段, 这样会把依赖关系链分割成若干小的关系链, 数据库移植的指导性原则还是通过安全渐进的步骤完成移植过程。

3 移植步骤

数据库移植工作的第一步是备份源数据库, 将源数据库全部导出;其次是创建新数据库并做好命名空间、用户权限等方面的准备工作, 最后一步是数据导入, 将源数据库内容导入目标数据库准备:建立和源数据库相同的数据库和命名空间以及用户;源数据库导入目标数据库。

4 移植

查阅了很多资料, 做足了数据库移植的准备工作之后, 遵循数据库移植的原则和通用做法, 开始了实际开发项目里涉及到的数据库移植工作。

4.1 新系统环境准备

(1) 安装win7操作系统;

(2) 安装oracle10g服务器和客户端失败, 鉴于时间关系, 转而安装oracle11g服务器和客户端, Oracle11g数据库服务器和客户端都安装成功, 出现的问题和解决方法后文详述。

准备完成后, 新旧系统软硬件环境情况如下:

原系统软硬件环境:

ACPI x64-based PC

Windows Server 2008 R2 Datacenter

处理器:Intel (R) Xeon (R) CPU:E5335@2.00GHz 2.00GHz

64位操作系统

新系统软硬件环境:

ACPI x86-based PC

Windows 7专业版

处理器:Intel (R) Core (TM) i5-2500 CPU:@3.30GHz3.30GHz32位操作系统

4.2 移植中出现的问题及解决方法

原来的数据库版本是oracle10g, 按照移植原则, 打算在新机器上安装同样版本的数据库, 这样测试环境和正式环境的相似度高一些, 而且同一版本的数据库之间的迁移工作也会比较顺利些, 但是在安装oracle10g的过程出现了以下问题:

系统自带数据库的方式不能安装;

去掉系统自带数数据库安装oracle, 安装完成后建立数据库时无法建立, 之后的数据库移植工作更无从谈起。

查阅资料, 发现win7环境下安装oracle10g问题多多, 宜安装oracle11g。

于是要彻底卸载本机已经安装的oracle10g, 彻底卸载oracle也是一个比较复杂的问题, 卸载不彻底, 后续安装就会重复失败, 不过这个问题已经得到很好的解决, 有很好的经验总结可以参照, 这里不再赘述。

卸载了oracle10g后, 在系统里安装oracle11g的数据库服务器和客户端win32_11g R2, 整个安装过程比较顺利, 问题出现在安装完成之后。安装完成后发现用sqlplus能够连接数据库, 但是用plsql却连接不上, 查阅资料找到解决方法:在plsql非登录状态下点击“Tools”菜单项下的“Preferences”选项, 把oracle主目录和oci路径设置正确就好了[11], 具体操作见图-1:

在上图中红色圈住的部分, 把参数设置成本机oracle数据库的主目录, 连接数据测试通过, 至此, oracle数据库服务器和客户端安装成功, sqlplus、plsql连接也顺畅, 剩下的工作就是把数据库从oracle10g移植到oracle11g了。

虽然提前对移植过程中可能出现的问题做了预见和准备, 但是正如前文所说, 看似简单的移植过程中间却不是一帆风顺。下面就移植实例为例再现移植过程中遇到的问题和解决方式。说明:文中所有的操作都是真实的, 只是用到的数据库及用户名等都经过修改, 参照本文进行操作时, 需要把自己的数据库实例名、用户名等信息替代进去。

(1) 首先是登录数据库, 登录到数据库方式有三种:

sql/plus直接登录, 一是通过sql/plus客户端, 一是cmd窗口交互式登录;

在oem (Oracle Enterprise Manager) 中打开数据库;

方式三是通过PL/SQL方式登录。

本文实例是以PL/SQL方式登录oracle10g数据库进行数据库备份的。

(2) 把oracle10g数据库备份:登录oracle数据库服务器, 在服务器上执行e x p t e s t/t e s t@T E S T D B f u l l=y f i l e=d:Oracle Backup20130417testdb.dmp命令进行数据库的完全备份, 成功导出, 没有出现警告。

(3) 将数据库备份文件从服务器上拷贝到本机F:Oracle Db Backup20130417testdb.dmp存放;

(4) 首先在本机的数据库testdb里面建立表空间test:用sys用户以管理员身份登录数据库test, 建立表空间test, 存储:50MB, 50MB。从浏览器里进入数据库的em管理页面完成这个操作。如果您本机安装了360安全卫士, 那么在安装时一定捆绑安装了360浏览器, 这时候你想通过ie进入em的话就会出现问题, 提示你“此网站的安全证书有问题”, 这个是360的问题, 不用担心, 用360的浏览器就可以了。

(5) 创建用户test;

(6) 授予test用户dba权限:在cmd窗口用sqlplus system/******@testdb as sysdba进入数据库, 然后用grant connect, resource, dba to test给用户授权, 其中的6个*是系统管理员的具体密码, 这里被隐去;

(7) 数据导入:数据导入有2种方法, 一是cmd窗口通过命令实现, 二是通过em实现数据导入。本文实例通过em来实现数据导入。

用test用户登录系统, 找到“数据移动”——“从导出文件导入”, 之后建立testdata目录对象, 路径是本机存放oracle备份文件所在的目录, 导入类型:方案;主机身份证明是系统管理员帐号, 之后在选择了自己创建的目录对象以后, 文件名称输入目录对象所指向的D M P文件的名称。

这一步出现一个错误:ORA-20446:The owner of the job is not registered ORA-06512:在"SYSMAN.MGMT_JOBS", line 168 ORA-06512:在"SYSMAN.MGMT_JOBS", line 86ORA-06512:在line 1, 这一问题的解决方法: (1) 修复这个错误, 但是目前似乎还没有很好的方式, 留待以后研究, 目前专攻数据库移植的目标; (2) 用系统管理员身份进入数据库:在c m d窗口用sqlplus system/******@testdb as sysdba, 然后执行execute MGMT_USER.MAKE_EM_USER (‘test’) 。

本文实例采用第二种方法解决了问题, 提示PL/SQL过程已成功完成, 之后根据提示进行, 成功创建了作业, 提交系统执行, 经过漫长的等待, 发现作业执行成功, 这最后一步还算是比较顺利的, 把应用程序拷贝过来进行测试, 发现完全畅通, 一个全新的测试环境部署成功。

5 结语

软件开发完成之后, 无论是出于部署测试环境还是进行数据库维护的需要, 数据库移植都是软件维护工作的重要部分, 数据库移植的过程虽然有不可预知的问题, 但是只要遇到问题多试多想多查, 从众多的成功案例中吸取经验解决问题, 数据库移植也不是那么高深莫测的, 希望本文更够给大家在数据库移植过程中提供有力的借鉴, 帮助大家顺利完成维护及升级工作。

参考文献

[1]佚名.Oracle 11g数据库移植.http://oracle.chinaitlab.com/backup/783734.html, 2009-05-10.

[2]范澔赟.基于Oracle数据库的商业网站数据库移植.Computer Knowledge and Technology电脑知识与技术, Vol.5, No.33, November2009.

[3]Defonds.Oracle数据库移植全步骤.http://blog.csdn.net/defonds/article/details/4261692, 2009-06-11.

[4]高道强.Oracle导入导出工具实现数据库移植.http://tech.it168.com/db/o/2007-04-11/200704112039968.shtml, 2007-04-11.

[5]肖伟, 赵嵩正.异构环境下Oracle数据移植问题研究.M icrocomputer Appl ications Vol.20, No.2, 2004.

[6]宋璇, 胡怀勇, 王敦洲.数据库移植方法的探讨.SCIENCE&TECHNOLO GY PRO GRESS AND POLLCY, 2003年.

[7]周力, 张勃.向Oracle进行数据移植的方法.沈阳大学学报, 第15卷第2期2003年6月.

[8]杨栋程, 郭泽平.大批量数据自动移植方案的设计与开发——在不同版本、不同编码格式的Oracle数据库之间.农业网络信息, 2009年第6期.

[9]宋明杰, 陆云山.Oracle备份与恢复工具实现Oracle数据库的移植.辽宁大学学报自然科学版, 第33卷第2期, 2006年.

[10]王敏.O racle数据库移植方案.中南民族大学学报 (自然科学版) , 第24卷第3期, 2005年9月.

12.oracle数据库学习心得 篇十二

第一步:客户端把语句发给服务器端执行。

当我们在客户端执行select语句时,客户端会把这条SQL语句发送给服务器端,让服务器端的进程来处理这语句。也就是说,Oracle客户端是不会做任何的操作,他的主要任务就是把客户端产生的一些SQL语句发送给服务器端。虽然在客户端也有一个数据库进程,但是,这个进程的作用跟服务器上的进程作用事不相同的。服务器上的数据库进程才会对SQL语句进行相关的处理。不过,有个问题需要说明,就是客户端的进程跟服务器的进程是一一对应的。也就是说,在客户端连接上服务器后,在客户端与服务器端都会形成一个进程,客户端上的我们叫做客户端进程;而服务器上的我们叫做服务器进程。所以,由于所有的SQL语句都是服务器进程执行的,所以,有些人把服务器进程形象地比喻成客户端进程的“影子”。

第二步:语句解析。

当客户端把SQL语句传送到服务器后,服务器进程会对该语句进行解析。同理,这个解析的工作,也是在服务器端所进行的。虽然这只是一个解析的动作,但是,其会做很多“小动作”。

1、查询高速缓存。服务器进程在接到客户端传送过来的SQL语句时,不会直接去数据库查询。而是会先在数据库的高速缓存中去查找,是否存在相同语句的执行计划。如果在数据高速缓存中,刚好有其他人使用这个查询语句的话,则服务器进程就会直接执行这个SQL语句,省去后续的工作。所以,采用高速数据缓存的话,可以提高SQL语句的查询效率。一方面是从内存中读取数据要比从硬盘中的数据文件中读取数据效率要高,另一方面,也是因为这个语句解析的原因。

不过这里要注意一点,这个数据缓存跟有些客户端软件的数据缓存是两码事。有些客户端软件为了提高查询效率,会在应用软件的客户端设置数据缓存。由于这些数据缓存的存在,可以提高客户端应用软件的查询效率。但是,若其他人在服务器进行了相关的修改,由于应用软件数据缓存的存在,导致修改的数据不能及时反映到客户端上。从这也可以看出,应用软件的数据缓存跟数据库服务器的高速数据缓存不是一码事。

2、语句合法性检查。

当在高速缓存中找不到对应的SQL语句时,则数据库服务器进程就会开始检查这条语句的合法性。这里主要是对SQL语句的语法进行检查,看看其是否合乎语法规则。如果服务器进程认为这条SQL语句不符合语法规则的时候,就会把这个错误信息,反馈给客户端。在这个语法检查的过程中,不会对SQL语句中所包含的表名、列名等等进行SQL他只是语法上的检查。

3、语言含义检查。

若SQL语句符合语法上的定义的话,则服务器进程接下去会对语句中的字段、表等内容进行检查。看看这些字段、表是否在数据库中。如果表名与列名不准确的话,则数据库会就会反馈错误信息给客户端。

所以,有时候我们写select语句的时候,若语法与表名或者列名同时写错的话,则系统是先提示说语法错误,等到语法完全正确后,再提示说列名或表名错误。若能够掌握这个顺序的话,则在应用程序排错的时候,可以节省时间。

4、获得对象解析锁。

当语法、语义都正确后,系统就会对我们需要查询的对象加锁。这主要是为了保障数据的一致性,防止我们在查询的过程中,其他用户对这个对象的结构发生改变,

对于加锁的原理与方法,我在其他文章中已经有专门叙述,在这里就略过不谈了。

5、数据访问权限的核对。

当语法、语义通过检查之后,客户端还不一定能够取得数据。服务器进程还会检查,你所连接的用户是否有这个数据访问的权限。若你连接上服务器的用户不具有数据访问权限的话,则客户端就不能够取得这些数据。故,有时候我们查询数据的时候,辛辛苦苦地把SQL语句写好、编译通过,但是,最后系统返回个“没有权限访问数据”的错误信息,让我们气半死。这在前端应用软件开发调试的过程中,可能会碰到。所以,要注意这个问题,数据库服务器进程先检查语法与语义,然后才会检查访问权限。

6、确定最佳执行计划。

当语句与语法都没有问题,权限也匹配的话,服务器进程还是不会直接对数据库文件进行查询。服务器进程会根据一定的规则,对这条语句进行优化。不过要注意,这个优化是有限的。一般在应用软件开发的过程中,需要对数据库的sql语言进行优化,这个优化的作用要大大地大于服务器进程的自我优化。所以,一般在应用软件开发的时候,数据库的优化是少不了的。

当服务器进程的优化器确定这条查询语句的最佳执行计划后,就会将这条SQL语句与执行计划保存到数据高速缓存。如此的话,等以后还有这个查询时,就会省略以上的语法、语义与权限检查的步骤,而直接执行SQL语句,提高SQL语句处理效率。

第三步:语句执行。

语句解析只是对SQL语句的语法进行解析,以确保服务器能够知道这条语句到底表达的是什么意思。等到语句解析完成之后,数据库服务器进程才会真正的执行这条SQL语句。

这个语句执行也分两种情况。一是若被选择行所在的数据块已经被读取到数据缓冲区的话,则服务器进程会直接把这个数据传递给客户端,而不是从数据库文件中去查询数据。若数据不在缓冲区中,则服务器进程将从数据库文件中查询相关数据,并把这些数据放入到数据缓冲区中。

这里仍然要注意一点,就是Oracle数据库中,定义了很多种类的高速缓存。像上面所说的SQL语句缓存与现在讲的数据缓存。我们在学习数据库的时候,需要对这些缓存有一个清晰的认识,并了解各个种类缓存的作用。这对于我们后续数据库维护与数据库优化是非常有用的。

第四步:提取数据。

当语句执行完成之后,查询到的数据还是在服务器进程中,还没有被传送到客户端的用户进程。所以,在服务器端的进程中,有一个专门负责数据提取的一段代码。他的作用就是把查询到的数据结果返回给用户端进程,从而完成整个查询动作。

从这整个查询处理过程中,我们在数据库开发或者应用软件开发过程中,需要注意以下几点:

一是要了解数据库缓存跟应用软件缓存是两码事情。数据库缓存只有在数据库服务器端才存在,在客户端是不存在的。只有如此,才能够保证数据库缓存中的内容跟数据库文件的内容一致。才能够根据相关的规则,防止数据脏读、错读的发生。而应用软件所涉及的数据缓存,由于跟数据库缓存不是一码事情,所以,应用软件的数据缓存虽然可以提高数据的查询效率,但是,却打破了数据一致性的要求,有时候会发生脏读、错读等情况的发生。所以,有时候,在应用软件上有专门一个功能,用来在必要的时候清除数据缓存。不过,这个数据缓存的清除,也只是清除本机上的数据缓存,或者说,只是清除这个应用程序的数据缓存,而不会清除数据库的数据缓存。

13.oracle数据库学习心得 篇十三

学习完oracle数据库后,我们进行了一次大实习,实习是分组进行的,我们组根据老师的安排,采用Oracle数据库技术建立员工工资及其个人所得税管理系统。小组成员主要是xx,xx和xxx。xx:整体设计,数据展现层操作,代码整合;xxx:数据库概念结构、逻辑结构、物理结构设计,增删改查sql语句的编写;xx:税值计算函数编写,系统测试,调试,相关文档的整理及编写。

通过对需要完成任务的整体分析,我得出需要做的工作包括这么几条:

1.根据需要创建自己的用户(注意起名规范,参见下述要求:对象含义_姓名首字母_学号后三位)和相关数据库表(比如类似在Hr Schema中的employees及departments表等)

2.编写一个函数(函数名需带姓名首字母及学号后三位),查出给定员工号的员工工资及佣金的每月应纳税额:注:个人所得税算法如下:扣除标准:工薪所得扣除标准提高到3500元,计算个人所得税税率表 :工资、薪金所得适用。

3.用Java作一个界面C/S,通过JDBC/ODAC/ADO调用oracle数据库对象,采用友好易用的用户界面:

 实现员工基本信息(含工资、奖金等)的增删改查;要求员工表主键是自增

长字段,使用sequence和触发器或存储过程实现自增长。

 实现员工工资及奖金和需缴纳的个人所得税等员工工资条信息的查询与(可

选的)Excel输出;

 通过调用存储过程实现各部门员工工资及其年收入的分析报表(具体分析需

求自定,如分析一下各部门员工中比本部门员工平均年收入高出30%的员工(可简称“高薪员工”)姓名、所在部门名和年收入金额、个人所得税等;)。接着我们的工作开始了。在开始的时候我们各做各的去了,很多意见和想法没有去及时沟通,所以各自盲目地做着,有些时候做不下去了也不知道去沟通,而是一个人呆着苦闷或是干脆不做了。所以在开始的时候大家对于怎么合作完成一个实习任务是不清楚的。因为每一个环节都不可能是孤立的,我们在每一步都需要去了解互相的进展和需要,比如李杨负责数据库的与平台的链接,我负责数据库的操作和结构设计,如果不去及时沟通,总不能知道我做成什么样让他能更好地操作,甚至我做好了数据库,他还不清楚,这时候其实是可以提前拿过去测试一下的。正如这种例子经常在我们前期工作的时候出现。经过我们前两天的工作,我们后来一起讨论了下下一步怎么配合。所以在后期我们都能很好地合作,顺利地完成了任务。

本学期oracle数据库的学习对于我了解数据库又有了进一步的理解和进一步加强了数据库的操作能力。对数据的更删改查更熟悉了,对用户的创建和管理有了进步。Oracle的学习,开始是在自己电脑上安装了软件,然后对软件的操作有了了解。在老师的讲解和学习中,学会了数据库的各种操作,创建了自己的永华和数据表,使用了oracle内置函数、调用存储过程和函数。学会使用PL/SQL的顺序、循环和分值结构。前面学习过数据库原理,通过这学期Oracle的课程觉得Oracle在用户的划分上要比SQL Server好很多,划分了多种用户级别,数据库也是以用户划分,这对于管理员和用户都是很有用的。Oracle的学习对于以后各种数据处理工作有很大的帮助,相信以后的学习中也会经常运用到oracle,我也将会不断加深对oracle的理解。

14.NUB恢复ORACLE数据库 篇十四

NUB(Veritas Net Backup)是公认的企业级备份和恢复软件的领导者,越来越多的企业采用NBU备份ORACLE数据库。NBU备份的ORACLE数据,依据不同的情况及用户期望的目标,可以有不同的恢复方式。本文所陈述的是在一种极端情况下的数据库恢复,即原来运行的数据库软硬件平台已不复存在,仅留下备份数据,需要将ORACLE数据库恢复到一个新建的数据库平台上。理解了这种恢复方式,则其他恢复方式都可以看做这种恢复方式的简化操作。

2 运行环境

2.1 原始数据库的运行环境

原始数据库运行于Linux平台,采用2台服务器组成RAC集群,数据库的数据文件存储在ASM的+YTNC存储组中,数据库实例分别是ytcdb1和ytcdb2。Hosts文件内容如下:

其中netbackup为NBU备份服务器主机及备份介质服务器。

2.2 新建数据库运行环境

新建数据库运行环境运行于Linux平台,采用2台服务器组成RAC集群,数据库的数据文件存储在ASM的+DBDIR存储组中,安装数据库时仅安装程序,不创建数据库。CRS程序安装目录为/oracle/crs,数据库程序安装目录为/oracle/ora。

Hosts文件内容如下:

新环境包含ytcdb03、ytcdb04的CRS集群及ASM实例,不包括任何数据库。

3 安装NBU客户端

CRS环境下的数据库恢复,仅需在其中一个集群成员上完成,本文选择在ytcdb03上实施数据库恢复。在ytcdb03上安装NBU客户端,确保ytcdb03能够与netbackup建立通讯。NBU程序安装于/usr/openv/netbackup/bin。

4 查看备份数据

以上为2016年9月2日22时59分开始做的一个数据库全备份,其中/c-588629775-20160903-05中含有这个备份数据的最新的参数文件及控制文件,本文将从这个全备份中恢复数据。

5 恢复参数文件spfile

我们所需要的参数文件位于备份集c-588629775-20160903-05中,其原始存储位置位于ASM的+YTNC存储组中,在恢复的时候要重定位到ASM的+DBDIR存储组中。以下为恢复参数文件的RMAN程序:

6 编辑参数文件

由于参数文件中控制文件的位置、归档日志位置、闪回区位置等都是指向原始运行平台的位置,所以,参数文件恢复之后,要对参数文件进行修改,主要是修改控制文件、归档日志、闪回区位等在新环境下的位置。

6.1 设置oracle环境变量

6.2 启动数据库到nomount状态

6.3 利用spfile生成可编辑的pfile文件

6.4 编辑pfile文件

将以上涉及存储位置的行对应修改为:

6.5 用新的pfile文件启动数据库

6.6 创建新的spfile文件

7 恢复控制文件

参数文件准备好以后,就可以恢复控制文件了。控制文件的存储位置是有参数文件确定的,在恢复时不需要指定存储位置。控制文件恢复的RMAN程序如下:

8 恢复数据文件

8.1 将数据库启动到mount状态

在恢复数据文件之前,我们要将数据库启动到mount状态。由于在恢复控制文件之前已将数据库启动到nomount状态,因此可以用如下SQL命令将数据库置于mount状态。

8.2 查看原始数据文件

到目前为止,控制文件中仍然保存着原始数据库的数据文件名称及存储位置,我们先要确定原始数据库有哪些数据文件及存储在什么位置,可以通过查询v$datafile获得原始数据库文件名及存储位置。

8.3 恢复数据文件

恢复数据文件最主要的是重定向数据文件的存储位置,将数据文件恢复到新环境下的ASM存储组中。恢复数据文件的RAM程序如下:

8.4 修改redolog文件位置

原始redolog文件的名称及存储位置可以通过查询图v$Logfile获得:

利用SQL命令修改redolog文件的存储位置:

8.5 修改tempfile文件位置

原始tempfile文件的名称及存储位置可以通过查询图v$tempfile获得:

利用SQL命令修改tempfile文件的存储位置:

9 恢复数据库

恢复数据库仍然必须使用RMAN程序,并且同样要连接到NBU的磁带库,因为恢复数据库时要查找所需的归档日志。恢复数据库的RMAN程序如下:

注意程序执行完毕时的错误提示:

由于NBU采用在线备份(热备份),在备份时数据库仍然在运行,在线归档日志在不断变化,NBU并不备份在线归档日志。把数据库恢复到一个新的数据库平台上,由于没有在线归档日志,实际上是一种不完全恢复,因此,在数据库恢复时会报需要在线归档日志的错误,只能忽略。

1 0 打开数据库

由于数据库恢复过程中无法应用在线归档日志。因此,在打开数据库时,需要使用RESETLOG参数,强制数据库放弃原来的在线归档日志,使用新的在线归档日志。

1 1 在集群中添加数据库

数据库成功恢复并打开之后,需要将数据库添加到CRS集群中,添加数据库的关键是spfile文件的位置及数据库程序的安装位置。

以oracle登录:

其中:oracle数据库安装目录为/oracle/ora,数据库名称为ytcdb。

查看数据库添加结果:

1 2 在集群中添加数据库实例

以oracle登录:

查看数据库实例添加结果:

1 3 重启数据库集群

1 3.1 分别在ytcdb03和ytcdb04重启CRS。

1 3.2 查看CRS集群状态

1 4 结语

NBU恢复oracle数据库依据不同的目的及环境状况可以有不同的恢复方式,本文论述的是原始数据库运行环境被彻底破坏,需要将数据库恢复到一个新的运行环境时的恢复方法,可以说基本囊括了常见的数据库恢复方法。针对不同的数据库故障,参照本文,适当省略不必要的步骤,可以轻松完成各种故障现象下的oracle数据库恢复。

参考文献

上一篇:初三英语学习复习计划下一篇:员工关系管理的原则