oracle数据库怎样还原到以前某个正确的状态

oracle数据库怎样还原到以前某个正确的状态,第1张

你可以试试PRM-DUL for Oracle。

ParnassusData Recovery Manager(以下简称PRM-DUL)是企业级ORACLE数据灾难恢复软件,可直接从Oracle9i,10g,11g,12c的数据库数据文件(datafile)中抽取还原数据表上的数据,而不需要通过ORACLE数据库实例上执行SQL来拯救数据。ParnassusDataRecovery Manager是一款基于JAVA开发的绿色软件,无需安装,下载解压后便可直接使用。

恢复场景1 误Truncate表的常规恢复

D公司的业务维护人员由于误将产品数据库当做测试环境库导致错误地TRUNCATE了一张表上的所有数据,DBA尝试恢复但是发觉最近的备份不可用,导致无法从备份中恢复出该数据表上的记录。 此时DBA决定采用PRM来恢复已经被TRUNCATE掉的数据。

由于该环境中 所有数据库文件均是可用且健康的,用户仅需要 字典模式下加载SYSTEM表空间的数据文件以及被TRUNCATED表的数据文件即可,例如:

create table ParnassusDatatorderdetail_his1 tablespace users asselect from parnassusdatatorderdetail_his;SQL> desc ParnassusDataTORDERDETAIL_HIS

Name Null Type

----------------------- -------- --------------SEQ_ID NOT NULL NUMBER(10)SI_STATUS NUMBER(38)D_CREATEDATE CHAR(20)D_UPDATEDATE CHAR(20)B_ISDELETE CHAR(1)

N_SHOPID NUMBER(10)N_ORDERID NUMBER(10)C_ORDERCODE CHAR(20)N_MEMBERID NUMBER(10)N_SKUID NUMBER(10)C_PROMOTION NVARCHAR2(5)N_AMOUNT NUMBER(7,2)N_UNITPRICE NUMBER(7,2)N_UNITSELLINGPRICE NUMBER(7,2)N_QTY NUMBER(7,2)N_QTYFREE NUMBER(7,2)N_POINTSGET NUMBER(7,2)N_OPERATOR NUMBER(10)C_TIMESTAMP VARCHAR2(20)H_SEQID NUMBER(10)N_RETQTY NUMBER(7,2)N_QTYPOS NUMBER(7,2)select count() from ParnassusDataTORDERDETAIL_HIS;COUNT()

----------

984359

select bytes/1024/1024 from dba_segments where segment_name='TORDERDETAIL_HIS' and owner='PARNASSUSDATA';BYTES/1024/1024

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

18971875

SQL> truncate table ParnassusDataTORDERDETAIL_HIS;Table truncated

SQL> select count() from ParnassusDataTORDERDETAIL_HIS;COUNT()

----------

0

启动PRM ,并选择 Tools => Recovery Wizard点击Next

在此TRUNCATE场景中并未采用ASM存储,所以仅需要选择 《Dictionary Mode》字典模式即可

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。

ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能;作为一个关系数据库,它是一个完备关系的产品;作为分布式数据库它实现了分布式处理功能。

特点

1、完整的数据管理功能:[2]

1)数据的大量性

2)数据的保存的持久性

3)数据的共享性

4)数据的可靠性

2、完备关系的产品:

1)信息准则---关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显式地表示;

2)保证访问的准则

3)视图更新准则---只要形成视图的表中的数据变化了,相应的视图中的数据同时变化

4)数据物理性和逻辑性独立准则

3、分布式处理功能:

ORACLE数据库自第5版起就提供了分布式处理能力,到第7版就有比较完善的分布式数据库功能了,一个ORACLE分布式数据库由oraclerdbms、sqlNet、SQLCONNECT和其他非ORACLE的关系型产品构成。

4、用ORACLE能轻松的实现数据仓库的 *** 作。

这是一个技术发展的趋势,不在这里讨论。

优点

■ 可用性强

■ 可扩展性强

■ 数据安全性强

■ 稳定性强

oracle数据库的备份与恢复

---- 当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(包括机器故障、介质故障、误 *** 作等),数据库有时也可能遭到破坏,这时如何尽快恢复数据就成为当务之急。如果平时对数据库做了备份,那么此时恢复数据就显得很容易。由此可见,做好数据库的备份是多么的重要,下面笔者就以oracle7为例,来讲述一下数据库的备份和恢复。oracle 数据库有三种标准的备份方法,它们分别为导出/导入(export/import)、冷备份、热备份。导出备份是一种逻辑备份,冷备份和热备份是物理备份。

---- 一、 导出/导入(export/import)

---- 利用export可将数据从数据库中提取出来,利用import则可将提取出来的数据送回oracle数据库中去。

---- 1 简单导出数据(export)和导入数据(import)

---- oracle支持三种类型的输出:

---- (1)表方式(t方式),将指定表的数据导出。

---- (2)用户方式(u方式),将指定用户的所有对象及数据导出。

---- (3)全库方式(full方式),将数据库中的所有对象导出。

---- 数据导出(import)的过程是数据导入(export)的逆过程,它们的数据流向不同。

---- 2 增量导出/导入

---- 增量导出是一种常用的数据备份方法,它只能对整个数据库来实施,并且必须作为system来导出。在进行此种导出时,系统不要求回答任何问题。导出文件名缺省为exportdmp,如果不希望自己的输出文件定名为exportdmp,必须在命令行中指出要用的文件名。

---- 增量导出包括三个类型:

---- (1)“完全”增量导出(complete)

---- 即备份整个数据库,比如:

---- $exp system/manager inctype=complete file=990702dmp

---- (2) “增量型”增量导出

---- 备份上一次备份后改变的数据。比如:

---- $exp system/manager inctype=incremental file=990702dmp

---- (3) “累计型”增量导出(cumulative)

---- 累计型导出方式只是导出自上次“完全” 导出之后数据库中变化了的信息。比如:

---- $exp system/manager inctype=cumulative file=990702dmp

---- 数据库管理员可以排定一个备份日程表,用数据导出的三个不同方式合理高效地完成。

---- 比如数据库的备份任务可作如下安排:

---- 星期一:完全导出(a)

---- 星期二:增量导出(b)

---- 星期三:增量导出(c)

---- 星期四:增量导出(d)

---- 星期五:累计导出(e)

---- 星期六:增量导出(f)

---- 星期日:增量导出(g)

---- 如果在星期日,数据库遭到意外破坏,数据库管理员可按以下步骤来恢复数据库:

---- 第一步:用命令create database重新生成数据库结构;

---- 第二步:创建一个足够大的附加回段。

---- 第三步:完全增量导入a:

---- $imp system/manager inctype= rectore full=y file=a

---- 第四步:累计增量导入e:

---- $imp system/manager inctype= rectore full=y file =e

---- 第五步:最近增量导入f:

---- $imp system/manager inctype=restore full=y file=f

---- 二、 冷备份

---- 冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份oracle信息而言,冷备份是最快和最安全的方法。冷备份的优点是:

---- 1.是非常快速的备份方法(只需拷贝文件)

---- 2.容易归档(简单拷贝即可)

---- 3.容易恢复到某个时间点上(只需将文件再拷贝回去)

---- 4.能与归档方法相结合,作数据库“最新状态”的恢复。

---- 5.低度维护,高度安全。

---- 但冷备份也有如下不足:

---- 1.单独使用时,只能提供到“某一时间点上”的恢复。

---- 2.在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。

---- 3.若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。

---- 4.不能按表或按用户恢复。

---- 如果可能的话(主要看效率),应将信息备份到磁盘上,然后启动数据库(使用户可以工作)并将所备份的信息拷贝到磁带上(拷贝的同时,数据库也可以工作)。冷备份中必须拷贝的文件包括:

---- 1.所有数据文件

---- 2.所有控制文件

---- 3.所有联机redo log文件

---- 4.initora文件(可选)。

---- 值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的

---- 下面是做冷备份的完整例子:

---- (1) 关闭数据库$sqldba lmode=y

---- sqldba >connect internal;

---- sqldba >shutdown normal;

---- (2) 用拷贝命令备份全部的时间文件、重做日志文件、控制文件、初始化参数文件

---- sqldba >! cp < file > <; backup directory >

---- (3) 重启oracle数据库

---- $sqldba lmode=y

---- sqldba >connect internal;

---- sqldba >startup;

---- 三、 热备份

---- 热备份是在数据库运行的情况下,采用archivelog mode方式备份数据的方法。所以,如果你有昨天夜里的一个冷备份而且又有今天的热备份文件,在发生问题时,就可以利用这些资料恢复更多的信息。热备份要求数据库在archivelog方式下 *** 作,并需要大量的档案空间。一旦数据库运行在archivelog状态下,就可以做备份了。热备份的命令文件由三部分组成:

---- 1.数据文件一个表空间一个表空间地备份。

---- (1)设置表空间为备份状态

---- (2)备份表空间的数据文件

---- (3)恢复表空间为正常状态

---- 2.备份归档log文件。

---- (1)临时停止归档进程

---- (2)log下那些在archive redo log目标目录中的文件

---- (3)重新启动archive进程

---- (4)备份归档的redo log 文件

---- 3.用alter database backup controlfile命令来备份拷贝文件

---- 热备份的优点是:

---- 1.可在表空间或数据文件级备份,备份时间短。

---- 2.备份时数据库仍可使用。

---- 3.可达到秒级恢复(恢复到某一时间点上)。

---- 4.可对几乎所有数据库实体作恢复。

---- 5.恢复是快速的,在大多数情况下在数据库仍工作时恢复。

---- 热备份的不足是:

---- 1.不能出错,否则后果严重。

---- 2.若热备份不成功,所得结果不可用于时间点的恢复。

---- 3.因难于维护,所以要特别仔细小心,不允许“以失败而告终”。

按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONG RAW& RAW类型、ROWID & UROWID类型。

在讲叙字符串类型前,先要讲一下编码。字符串类型的数据可依编码方式分成数据库字符集(CHAR/VARCHAR2/CLOB/LONG)和国际字符集(NCHAR/NVARCHAR2/NCLOB)两种。数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块中。通过不同的编码集转换,即便是相同的字符,也可能会转换成不同的二进制编码。这也是产生乱码的原因。数据库的编码格式一般是在创建数据库时指定的。当然也可以修改数据库的编码。

一 字符串类型

11:CHAR类型 CHAR(size [BYTE | CHAR])

CHAR类型,定长字符串,会用空格填充来达到其最大长度。非NULL的CHAR(12)总是包含12字节信息。CHAR字段最多可以存储2,000字节的信息。如果创建表时,不指定CHAR长度,则默认为1。另外你可以指定它存储字节或字符,例如 CHAR(12 BYTYE) CHAR(12 CHAR)一般来说默认是存储字节

注意:数据库的NLS_CHARACTERSET 为AL32UTF8,即一个汉字占用三到四个字节。如果NLS_CHARACTERSET为ZHS16GBK,则一个字符占用两个字节。

12: NCHAR类型

这是一个包含UNICODE格式数据的定长字符串。NCHAR字段最多可以存储2,000字节的信息。它的最大长度取决于国家字符集。

13 VARCHAR类型

不要使用VARCHAR数据类型。使用VARCHAR2数据类型。

14: VARCHAR2类型

变长字符串,与CHAR类型不同,它不会使用空格填充至最大长度。VARCHAR2最多可以存储4,000字节的信息。

15: NVARCHAR2类型

这是一个包含UNICODE格式数据的变长字符串。 NVARCHAR2最多可以存储4,000字节的信息。

二 数字类型

21 NUMBER类型

NUMBER(P,S)是最常见的数字类型,可以存放数据范围为10130~10126(不包含此值),需要1~22字节(BYTE)不等的存储空间。

P 是Precison的英文缩写,即精度缩写,表示有效数字的位数,最多不能超过38个有效数字

S是Scale的英文缩写,可以使用的范围为-84~127。Scale为正数时,表示从小数点到最低有效数字的位数,它为负数时,表示从最大有效数字到小数点的位数

下面是官方文档的示例

Actual Data Specified As Stored As

12389 NUMBER 12389

12389 NUMBER(3) 124

12389 NUMBER(6,2) 12389

12389 NUMBER(6,1) 1239

12389 NUMBER(3) 124

12389 NUMBER(4,2) exceeds precision

12389 NUMBER(6,-2) 100

01234 NUMBER(4,5)01234

00012 NUMBER(4,5) 00012

000127 NUMBER(4,5) 00013

0000012 NUMBER(2,7) 0000012

00000123 NUMBER(2,7) 0000012

12e-4 NUMBER(2,5) 000012

12e-5 NUMBER(2,5) 000001

22 INTEGER类型

INTEGER是NUMBER的子类型,它等同于NUMBER(38,0),用来存储整数。若插入、更新的数值有小数,则会被四舍五入。

23 浮点数

Oracle 数据库提供了专为浮点数的两种数值数据类型:

BINARY_FLOAT

BINARY_FLOAT 是 32 位、 单精度浮点数字数据类型。可以支持至少6位精度,每个 BINARY_FLOAT 的值需要 5 个字节,包括长度字节。

BINARY_DOUBLE

BINARY_DOUBLE 是为 64 位,双精度浮点数字数据类型。每个 BINARY_DOUBLE 的值需要 9 个字节,包括长度字节。

在数字的列中,浮点数有小数精度。在 BINARY_FLOAT 或 BINARY_DOUBLE 的列中,浮点数有二进制的精度。二进制浮点数支持的特殊值无穷大和 NaN (不是数字)。

25 FLOAT类型

FLOAT类型也是NUMBER的子类型。

Float(n),数 n 指示位的精度,可以存储的值的数目。N 值的范围可以从 1 到 126。若要从二进制转换为十进制的精度,请将 n 乘以 030103。要从十进制转换为二进制的精度,请用 332193 乘小数精度。126 位二进制精度的最大值是大约相当于 38 位小数精度。

三 日期类型

日期类型用于存储日期数据,但是并不是使用一般的格式(2012-08-08)直接存储到数据库的。

31 DATE类型

DATE是最常用的数据类型,日期数据类型存储日期和时间信息。虽然可以用字符或数字类型表示日期和时间信息,但是日期数据类型具有特殊关联的属性。为每个日期值,Oracle 存储以下信息: 世纪、 年、 月、 日期、 小时、 分钟和秒。一般占用7个字节的存储空间。

32 TIMESTAMP类型

这是一个7字节或12字节的定宽日期/时间数据类型。它与DATE数据类型不同,因为TIMESTAMP可以包含小数秒,带小数秒的TIMESTAMP在小数点右边最多可以保留9位

33 TIMESTAMP WITH TIME ZONE类型

这是TIMESTAMP类型的变种,它包含了时区偏移量的值

34 TIMESTAMP WITH LOCAL TIME ZONE类型

35 INTERVAL YEAR TO MOTH

36 INTERVAL DAY TO SECOND

四 LOB类型

内置的LOB数据类型包括BLOB、CLOB、NCLOB、BFILE(外部存储)的大型化和非结构化数据,如文本、图像、视屏、空间数据存储。BLOB、CLOB、NCLOB类型

41 CLOB 数据类型

它存储单字节和多字节字符数据。支持固定宽度和可变宽度的字符集。CLOB对象可以存储最多 (4 gigabytes-1) (database block size) 大小的字符

42 NCLOB 数据类型

它存储UNICODE类型的数据,支持固定宽度和可变宽度的字符集,NCLOB对象可以存储最多(4 gigabytes-1) (database block size)大小的文本数据。

43 BLOB 数据类型

它存储非结构化的二进制数据大对象,它可以被认为是没有字符集语义的比特流,一般是图像、声音、视频等文件。BLOB对象最多存储(4 gigabytes-1) (database block size)的二进制数据。

44 BFILE 数据类型

二进制文件,存储在数据库外的系统文件,只读的,数据库会将该文件当二进制文件处理

五 RAW & LONG RAW类型

51 LONG类型

它存储变长字符串,最多达2G的字符数据(2GB是指2千兆字节, 而不是2千兆字符),与VARCHAR2 或CHAR 类型一样,存储在LONG 类型中的文本要进行字符集转换。ORACLE建议开发中使用CLOB替代LONG类型。支持LONG 列只是为了保证向后兼容性。CLOB类型比LONG类型的限制要少得多。 LONG类型的限制如下:

1一个表中只有一列可以为LONG型。(Why有些不明白)

2LONG列不能定义为主键或唯一约束,

3不能建立索引

4LONG数据不能指定正则表达式。

5函数或存储过程不能接受LONG数据类型的参数。

6LONG列不能出现在WHERE子句或完整性约束(除了可能会出现NULL和NOT NULL约束)

52 LONG RAW 类型,能存储2GB 的原始二进制数据(不用进行字符集转换的数据)

53 RAW类型

用于存储二进制或字符类型数据,变长二进制数据类型,这说明采用这种数据类型存储的数据不会发生字符集转换。这种类型最多可以存储2,000字节的信息

六 ROWID & UROWID类型

在数据库中的每一行都有一个地址。然而,一些表行的地址不是物理或永久的,或者不是ORACLE数据库生成的。

例如,索引组织表行地址存储在索引的叶子,可以移动。

例如,外部表的ROWID(如通过网关访问DB2表)不是​​标准的ORACLE的rowid。

ORACLE使用通用的ROWID(UROWIDs)的存储地址的索引组织表和外表。索引组织表有逻辑urowids的,和国外表的外urowids。UROWID这两种类型的存储在ROWID伪(堆组织的表的物理行id)。

创建基于逻辑的rowid在表中的主键。逻辑的rowid不会改变,只要主键不改变。索引组织表的ROWID伪UROWID数据类型。你可以访问这个伪列,你会堆组织表的ROWID伪(即使用一个SELECT …ROWID语句)。如果你想存储的rowid索引组织表,那么你就可以定义一列的表型UROWID到列检索值的ROWID伪。

可以通过insert into …… as select 语句来进行实现。

sql:insert into tablename2( id,name) as select id ,name from tablename2 where 条件语句。

备注:以上语句中插入的字段顺序必须要和查询的语句的顺序保持一致,否则会报错,如果有条件语句的话,可以增加 where条件。

运行>CMD>ORACLE路径>BIN>DIR>导出的文件路径>IMP>USERID=用户名/密码 FULL=Y FILE=文件路径

建议优酷上搜索玩转ORACLE17、18讲

一 视图概念

视图是原始数据库数据的一种变换 是查看表中数据的另外一种方式 可以将视图看成是一个移动的窗口 通过它可以看到感兴趣的数据

视图是从一个或多个实际表中获得的 这些表的数据存放在数据库中 那些用于产生视图的表叫做该视图的基表 一个视图也可以从另一个视图中产生

视图的定义存在数据库中 与此定义相关的数据并没有再存一份于数据库中 通过视图看到的数据存放在基表中

视图看上去非常象数据库的物理表 对它的 *** 作同任何其它的表一样 当通过视图修改数据时 实际上是在改变基表中的数据 相反地 基表数据的改变也会自动反映在由基表产生的视图中 由于逻辑上的原因 有些视图可以修改对应的基表 有些则不能(仅仅能查询)

二 视图的作用

简单性 看到的就是需要的 视图不仅可以简化用户对数据的理解 也可以简化他们的 *** 作 那些被经常使用的查询可以被定义为视图 从而使得用户不必为以后的 *** 作每次指定全部的条件

安全性 通过视图用户只能查询和修改他们所能见到的数据 数据库中的其它数据则既看不见也取不到 数据库授权命令可以使每个用户对数据库的检索限制到特定的数据库对象上 但不能授权到数据库特定行和特定的列上 通过视图 用户可以被限制在数据的不同子集上

使用权限可被限制在基表的行的子集上

使用权限可被限制在基表的列的子集上  

使用权限可被限制在基表的行和列的子集上  

使用权限可被限制在多个基表的连接所限定的行上  

使用权限可被限制在基表中的数据的统计汇总上

使用权限可被限制在另一视图的一个子集上 或是一些视图和基表合并后的子集上

逻辑数据独立性 视图可帮助用户屏蔽真实表结构变化带来的影响

三 视图的安全性

视图的安全性可以防止未授权用户查看特定的行或列 是用户只能看到表中特定行的方法如下

在表中增加一个标志用户名的列

建立视图 是用户只能看到标有自己用户名的行

把视图授权给其他用户

四 逻辑数据独立性

视图可以使应用程序和数据库表在一定程度上独立 如果没有视图 应用一定是建立在表上的 有了视图之后 程序可以建立在视图之上 从而程序与数据库表被视图分割开来 视图可以在以下几个方面使程序与数据独立

如果应用建立在数据库表上 当数据库表发生变化时 可以在表上建立视图 通过视图屏蔽表的变化 从而应用程序可以不动

如果应用建立在数据库表上 当应用发生变化时 可以在表上建立视图 通过视图屏蔽应用的变化 从而使数据库表不动

如果应用建立在视图上 当数据库表发生变化时 可以在表上修改视图 通过视图屏蔽表的变化 从而应用程序可以不动

lishixinzhi/Article/program/Oracle/201311/16872

以上就是关于oracle数据库怎样还原到以前某个正确的状态全部的内容,包括:oracle数据库怎样还原到以前某个正确的状态、数据库oracle简介、Oracle如何备份还原数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10145897.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存