配置归档日志,让数据库管理更加顺畅

配置归档日志,让数据库管理更加顺畅,第1张

一 更改日志 *** 作模式三步走

默认情况下 Oracle数据库采用的是非归档模式 但是 非归档模式不能够防止因物理损坏而导致丢失数据问题 为此数据库管理员可能需要把日志 *** 作模式从非归档模式转换为归档模式 其实 要进行这个转换的话 只需要通过简单的三个步骤即可 不过在进行 *** 作之前 要需要注意 以下的 *** 作都必须要求用户具有数据库管理员的权限 即只有SYSDBA或者SYSOPER身份才能够执行如下的 *** 作

要更改日志 *** 作模式 具体 *** 作步骤如下

第一步 先确定当前的日志 *** 作模式 当数据库管理员更改当前 *** 作日志模式之前 需要先确定一下当前日志 *** 作模式 此时数据库管理员可以查询动态性能视图 来确认当前日志 *** 作模式 如可以利用如下语句来查询我们所需要的信息 动态性能视图中存储著很多数据库运行信息 从中我们数据库管理员可以获取很多有用的信息 如现在要了解当前数据库的日志 *** 作模式 就可以从数据库动态性能视图中获知

第二步 关闭数据库 如果确认数据库当前的日志 *** 作模式为非归档模式 需要把它改为归档 *** 作模式 需要先关闭当前运行的数据库 然后重新装载数据库 需要注意的是 更改日志 *** 作模式只能够在MOUNT状态下进行 因此必须首先关闭数据库 然后重新装载数据库 另外 如果需要更改日志 *** 作模式 那么在关闭数据库时不能够使用SHUTDOWN ABORT命令 SHUTDOWN ABORT命令的作用其实跟KILL进程具有同样的效果 若利用这个命令的话 可能会给数据库带来一些不利的因素 如可能导致文件状态不一致 在数据库正常关闭的时候 数据库会同步校验各个文件 使得重新启动的时候文件时间点一致并且不用进行崩溃修复 而使用这个命令不会进行这个检验 所以 采用SHUTDOWN ABORT命令关闭数据库的时候 可能会导致数据库启动出错 导致已经递交的数据丢失 甚至出现数据库崩溃的噩梦 所以 无论是在更换数据库日志 *** 作模式 又或者其他原因需要关闭数据库的 最好不要采用这个命令 只有在采用其他关闭数据库命令不能够奏效的情况下 才能够使用这个命令 笔者建议通过SHUTDOWN IMMEDIATE命令来关闭数据库

数据库关闭之后 再利用Startup命令 把数据库启动到MOUNT状态 再次提醒一次 只有在Mount状态下才能够更改日志 *** 作模式

第三步 更改日志 *** 作模式 以上准备工作做好之后 就可以利用相关命令来更改日志 *** 作模式 我们可以利用如下命令来进行更改

然后重新打开数据库之后 设置就生效了

二 手工对重做日志文件进行归档

有时候出于某些原因 数据库管理员可能需要手工对重做日志进行归档 在 G以后的版本中 默认情况下 当将日志 *** 作模式从非归档模式转换为归档 *** 作模式的时候 Oracle数据库会在后台自动启动一个ARCH进程 这个进程就是负责重做日志的备份任务 通常情况下 归档模式下 数据库会自动备份重做日志

若需要手工备份重做日志的话 即手工归档 则必须在改变 *** 作日志模式中明确说明 即在上面的命令中 加入MANUAL参数 如果加入这个参数后 则数据库管理员就必须手工执行归档命令 如果数据库管理员没有手工执行归档命令的话 则日志组中的内容就无法被进行覆盖 所以通常情况下 除了一些特殊的需要 如数据库测试 才使用手工归档方式 否则的话 就还是采用自动归档方式更加的合理 值得一提的是 根据笔者了解 这个参数只是一个过渡参数 主要为了跟以前的Oracle数据库版本兼容 估计在不久之后 这个手工归档的参数会取消掉

三 设置归档文件的存储位置

在 *** 作系统管理中 系统管理员往往会重新设置我的文档 IE收藏夹等存储位置 以防止系统奔溃时这些数据的丢失 其实 在Oracle归档日志文件管理中也是如此 当数据库管理员把日志 *** 作模式从非归档模式转换为归档模式时 需要根据实际情况 重新设置归档文件的存储位置

当数据库处于归档模式时 如果进行日志切换 后台进程将自动生成归档日志文件 归档日志文件的默认存储位置为Oracle数据库安装目录下的RDBMS下 而在实际工作中 数据库管理员往往会改变其存储位置 如出于空间的考虑或者安全方面的考虑 会把归档日志存放在数据文件不同的硬盘中 等等

如果需要更改归档日志的 *** 作文件 则需要变更相应的初始化参数 参数Log Archive Dest就是用来控制归档日志的存储路径的 通常情况下 若是没有备用数据库的话 则只需要把归档日志存放到服务器上的独立的硬盘中即可 而不需要进行异地备份 如果需要配置本地归档日志的存储路径 则可以通过以上的初始化参数以及Log Archive Duples_Dest参数 其中前面一个参数用来指定第一个归档日志的位置 第二个参数用来指定第二个归档日志的位置 当分别对以上两个参数进行配置后 数据库系统在进行日志切换时 后台进程就会生成两份完全相同的归档日志 分别存储在上面两个不同的路径中 这里需要强调的一点是 存放在两个不同路径中的归档日志文件是完全相同的 这主要是出于数据安全的需要 一般情况下 只需要一个归档日志即可 若不放心的话 则可以设置多个归档日志存放位置 不过这些归档日志最好能够存放到不同的磁盘上 否则的话 就没有多少的实际意义

除了以上这个配置参数之外 平时工作中 我们还经常会使用Log Archive Dest_N这个参数 这个参数主要用于指定多个归档位置 通常情况下 可以多大十个归档位置 这个参数跟先前提到的两个参数有比较大的不同 数据库管理员要对此有清晰的认识 只有如此 才能够根据自己的需要 选择合适的初始化参数 他们的差异主要有以下几点

一是不带N的初始化参数(即前面的两个参数)只能够用来配置本地归档位置 而后面谈到的这个参数这可以用来配置本地归档位置与远程归档位置 也就是说 如果数据库管理员要把归档日志文件保存在网络上的其它主机中时 就必须利用后面的参数进行配置 这个区别是几个参数之间最大的差异 不过由于网络传输等方面的限制 笔者并不建议把归档日志保存在其它主机上 而是建议在数据库服务器中增加一块独立的硬盘用来保存归档日志文件即可 因为硬盘之间数据的复制要比网络传输要快的多 这可以避免重做日志归档时对网络资源过多的占用 从而降低网络的性能

二是前面两个参数只能够配置两个不同的归档日志位置;而后面一个参数则可以配置多大十个归档日志文件位置 这是两者数量上的差异 不过没什么作用 对于大部分企业来说 可能两个归档日志文件存放位置已经可以满足他们的需求了 另外一个小的差异就是 后面这个参数不能够跟前面两个参数共存 为此 当使用后者这个参数时 就需要先把前面两个参数禁用掉 因为数据库默认情况下 是启动第一个初始化参数的

三是具体的配置也有所不同 利用后者参数指定归档日志存储位置时 如果配置本地归档位之 则需要指定Location选项;如果是配置远程归档日志位置时 则就需要制定Service选项 这个选项主要用来指定远程数据库的网络服务名 通常情况下 数据库管理员可以同时配置本地归档位置与远程归档位置

lishixinzhi/Article/program/Oracle/201311/18259

联机备份的时候,数据库还处于可 *** 作状态,即备份的时候或备份后可能在做DML *** 作,而做这些 *** 作会记录到联机日志文件中,当联机日志文件满后就把这些 *** 作存入归档日志中,备份一段时间后,数据库出现问题,就可以用备份的文件与日志文件(归档日志与联机日志文件)进行恢复,保证数据不丢失。

exp/imp属于逻辑备份;处理起来速度有点慢。

你可以尝试关机后将数据文件,控制文件,日志文件等全部copy出去备份起来,这叫冷备份。

等弄完系统后,再安装一个跟当前oracle的sid一样的oracle实例,将对应文件copy上去就可以了。

参考1: exp迁移数据库实例

环境描述:

源数据库

Oracle服务器版本: Oracle9208

数据库名称 db_name = oradb instance_name=oradb

*** 作系统版本: windows 2003

实例安装位置: $oracle_base = e:\oracle

目标数据库

Oracle服务器版本: Oracle9208

数据库名称 db_name = orcl instance_name=orcl

*** 作系统版本: windows xp

实例安装位置: $oracle_base = d:\oracle

执行步骤

一, 数据库名称和sid要求相同

11 数据库名称的相关概念

一, 数据库名

数据库名是数据库的身份z号码, 用于表示一个数据库 在参数文件(/database/initSIDora)中用DB_NAME表示

db_domain=''

db_file_multiblock_read_count=16

db_name='oradb'

instance_name='oradb'

数据库名是在安装数据库, 创建新的数据库, 创建数据控制文件, 修改数据库结构, 备份与恢复数据库时都需要使用到的

查询数据库名称:

 Select name, dbid from v$database;

 Show parameter db_name;

 查看参数文件initsidora

二, 数据库实例名

数据库实例名是用户和 *** 作系统进行联系的标识, 也就是说数据库和 *** 作系统之间的交互使用的是数据库实例名

实例名在参数文件中也存在, 该参数为instance_name

数据库名和实例名可以相同也可以不同, 在一般情况下, 数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中, 数据库名和实例名是一对多的关系

查询当前数据库实例名

 使用sql语句 Select instance_name from v$instance;

 使用show命令 Show parameter instance_name;

 查看参数文件initsidora

数据库实例名和oracle_sid两者都表示oracle实例, 但是有区别的 Instance_name是oracle数据库参数 而oracle_sid是 *** 作系统的环境变量 Oracle_sid用于于 *** 作系统交互, 也就是说, 从 *** 作系统角度访问实例名, 必须通过oracle_sid

Oracle_sid和instance_name必须是一致的, 否则用户将会受到一个错误 在unix平台, 是oracle not available, 在winnt平台, 是tns, 协议适配器错误

三, 数据库域名与全局数据库名

随着由多个数据库构成的分布式数据库的普及, 单一的db_name表示的数据库命名方式给数据库的管理造成了一定的负担 因为分布式环境下的数据库名字可能一样, 造成管理上的混乱

为了解决这种情况, 引入了db_domain参数, 这样在数据库的标识是由db_name和db_domain两个参数共同决定的 避免了因为数据库重名而造成管理上的混乱

查询数据库域名

 使用sql命令 select value from v$parameter where name = ‘db_domain’;

 使用show命令 show parameter domain

 查看参数文件initsidora

四, 数据库服务名

该参数是oracle8i新引入的 在8i之前, 我们用sid来表示数据库的一个实例, 但是在oracle的并行环境中, 一个数据库对应多个实例, 这样就需要多个网络服务名, 设置繁琐 为了方便并行环境中的设置, 引进了service_name参数 该参数对应一个数据库, 而不是一个实例 该参数的初始值为db_namedb_domain, 即等于global_name 如果数据库有域名, 则数据库服务器名就是全局数据库名; 否则, 数据库服务名与数据库名相同

查询数据库服务名的方法

使用sql语句: select value from v$parameter where name = ‘service_name’;

使用show命令: show parameter service_name;

查看参数文件: 在参数文件initsidora中查询

五, 网络服务名

网络服务名, 又称为数据库别名, 是客户端程序访问数据库时需要的配置 屏蔽客户端如何连接到服务器端的细节, 实现了数据库的位置透明的特性 网络服务名被记录在tnsnamesora文件中

六, 总结

Oracle中各种命名的比较

名称 查询方式

Db_name Select name from v$database

Instance_name Select instance_name from v$instance

Oracle_sid 值和instance_name相同

Db_domain Select value from v$parameter where name = ‘db_domain’;

Global_name Db_namedb_dommain

Service_name Select value from v$parameter where name=’service_name’;

Net_service_name 检查tnsnamesora文件

12 修改oracle数据库的db_name和sid

一,用oracle自带的工具nid改数据库名

在本例中,假设原来的数据库名为orcl, 要改成oradb, 原实例名(service_name, instance_name)orcl要改成oradb。

Nid是自带的工具, 在oracle_home/bin目录下, 以下方法假设登陆到需要修改db_name的数据库服务器本地处理。

1, 在mount状态下使用nid修改sid

C:\Documents and Settings\Administrator>sqlplus /nolog

SQL> conn / as sysdba

SQL> shutdown immediate

SQL> startup mount -- nid需要在mount状态下处理。

SQL> host nid target=/ dbname=oradb

处理过程中需要与用户执行一次交互。

Change database ID and database name ORCL to ORADB (Y/[N]) => Y

2, 在mount状态下修改db_name

完成上述 *** 作后需要再次启动到mount状态修改参数文件。

SQL> shutdown immediate

SQL> startup mount

SQL> alter system set db_name=oradb scope=spfile;

SQL> shutdown immediate

3, 重建pwdsidora文件

Passwd文件通常放在oracle_home/database下, 文件命名形式为pwdsidora, sid为实例名(instance_name)

SQL> host orapwd file=D:\oracle\ora92\database\pwdorclora password=sys_47522341 entries=5;

4, 开启数据库(要open resetlogs)

SQL> startup mount

SQL> alter database open resetlogs;

5, 检查修改后的结果

SQL> select name from v$database;

二, 使用oradim工具修改instance_name

执行完步骤一中的 *** 作后, 数据库db_name变为oradb, 但instance_name依然还是orcl。 这个名称需要使用oracle的oradim工具进行修改。

1, 如果是windows系统, 先要将所有的oracle服务关闭, 否则会出错。

2, 将之前的instance_name删除

C:\Documents and Settings\Administrator>oradim -delete -sid orcl

3, 创建密码文件

SQL> host orapwd file=D:\oracle\ora92\database\pwdoradbora password=sys_47522341 entries=5;

4, 创建一个新的sid。

C:\Documents and Settings\Administrator>oradim -new -sid oradb

C:\Documents and Settings\Administrator>oradim -new -sid oradb

5, 进入oracle并创建spfile

设置环境变量oracle_sid=oradb

C:\Documents and Settings\Administrator>set oracle_sid = oradb

修改spfile里实例信息(包含路径里的zs改为zstest,OS目录zs改为zstest)

//如果此处不修改路径中的zs到zstest则后面应无需重建控制文件

C:\Documents and Settings\Administrator>sqlplus sys/admin as sysdba

SQLPlus: Release 102010 - Production on 星期四 7月 3 16:23:16 2008

Copyright (c) 1982, 2005, Oracle All rights reserved

已连接到空闲例程。

//先从spfile创建pfile

SQL> create pfile='D:\oracle\product\1020\admin\zs\pfile\init080703ora' from

spfile='D:\oracle\product\1020\db_1\database\SPFILEZSORA';

文件已创建。

//调整pfile里的参数后再创建spfile

SQL> create spfile='D:\oracle\product\1020\db_1\database\SPFILEZSTESTORA' fro

m pfile='D:\oracle\product\1020\admin\zstest\pfile\init080703ora';

文件已创建。

5)更改listenerora和tnsnamesora并重启listener

直接编辑这两个文件将里面的sid_name、dbname和service_name都改为zstest

6)因为更改了OS数据库目录路径(zs改为zstest)所以需要重建controlfiles

//创建控制文件的脚本可以再旧数据库的时候使用如下语句获得:

alter database backup controlfile to trace as 'd:\controlfiletxt';

再做修改即可使用。

SQL> CREATE CONTROLFILE REUSE DATABASE "ZSTEST" RESETLOGS ARCHIVELOG

2 MAXLOGFILES 16

3 MAXLOGMEMBERS 3

4 MAXDATAFILES 100

5 MAXINSTANCES 8

6 MAXLOGHISTORY 292

7 LOGFILE

8 GROUP 1 (

9 'D:\ORACLE\PRODUCT\1020\ORADATA\ZSTEST\REDO01ALOG',

10 'E:\ORADATA\ZSTEST\REDO01BLOG'

11 ) SIZE 250M,

12 GROUP 2 (

13 'D:\ORACLE\PRODUCT\1020\ORADATA\ZSTEST\REDO02ALOG',

14 'E:\ORADATA\ZSTEST\REDO02BLOG'

15 ) SIZE 250M,

16 GROUP 3 (

17 'D:\ORACLE\PRODUCT\1020\ORADATA\ZSTEST\REDO03ALOG',

18 'E:\ORADATA\ZSTEST\REDO03BLOG'

19 ) SIZE 250M

20 DATAFILE

21 'D:\ORACLE\PRODUCT\1020\ORADATA\ZSTEST\SYSTEM01DBF',

22 'D:\ORACLE\PRODUCT\1020\ORADATA\ZSTEST\UNDOTBS01DBF',

23 'D:\ORACLE\PRODUCT\1020\ORADATA\ZSTEST\SYSAUX01DBF',

24 'D:\ORACLE\PRODUCT\1020\ORADATA\ZSTEST\USERS01DBF',

25 'D:\ORACLE\PRODUCT\1020\ORADATA\ZSTEST\EXAMPLE01DBF',

26 'D:\ORACLE\PRODUCT\1020\ORADATA\ZSTEST\ZSKJ_DATA01DBF',

27 'E:\ORADATA\ZSTEST\ZSKJ_DATA02DBF',

28 'D:\ORACLE\PRODUCT\1020\ORADATA\ZSTEST\ZS_DATA01DBF',

29 'E:\ORADATA\ZSTEST\ZS_DATA02DBF',

30 'D:\ORACLE\PRODUCT\1020\ORADATA\ZSTEST\ZS_IDXDATA01DBF',

31 'E:\ORADATA\ZSTEST\ZS_IDXDATA02DBF',

32 'D:\ORACLE\PRODUCT\1020\ORADATA\ZSTEST\ZSKJ_IDXDATA01DBF',

33 'E:\ORADATA\ZSTEST\ZSKJ_IDXDATA02DBF'

34 CHARACTER SET ZHS16GBK;

控制文件已创建。

SQL> alter database open resetlogs;

数据库已更改。

//重建完控制文件记得要重新启用temp表空间,再trace的控制文件脚本里有提示

SQL> ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\PRODUCT\1020\ORADATA\ZSTEST

\TEMP01DBF'

2 SIZE 20971520 REUSE AUTOEXTEND ON NEXT 524288000 MAXSIZE 32767M;

表空间已更改。

二, 镜像迁移数据文件,控制文件以及归档日志文件

21 数据文件存储位置

视图 v$datafile;

Select file#, name from v$datafile;

22 控制文件存储位置

视图 v$controlfile

Select name from v$controlfile;

23 联机重做日志文件存储位置

视图 v$logfile;

Select from v$logfile;

三, 镜像跟踪文件和警告文件到目标数据库

如果源数据库的安装路径和目标数据库不一致, 则需要在源数据库中先使用spfilesidora创建一个initsidora, 然后到目标数据库中修改initsidora对应文件的配置 然后再创建一个spfileora

31 在源数据库中创建pfile

SQL> create pfile='E:\oracle\admin\oradb\pfile\initoradb20090922ora' from spfile='E:\oracle\ora92\database\spfileoradbora';

32 将跟踪文件和警告文件镜像到目标数据库

源数据库路径

$oracle_base/admin

33 在目标数据库中修改pfile

修改在31中生成的pfile文件initoradb20090922ora, 将其中与目标数据库配置路径不同的地方替换为目标数据库中对应的路径

34 常见的手工修改spfile的错误

Oracle的spfile是一个二进制文件, 这个文件不能采用手工修改的方式进行维护 可以选择的维护方式有两种, 一是在登录到服务器后使用alter system set … scope=both/spfile来实现 或者是先通过create pfile from spfile 然后修改pfile的内容 之后使用startup pfile=’’启动数据库后,再执行create create spfile from pfile来完成对spfile的修改

在数据库的迁移中, 只能采用第二种方式

四, 重新生成控制文件

41 在目标数据库中备份控制文件到跟踪文件中

首先,我们使用下述命令备份源数据库的控制文件;

SQL> alter database backup controlfile to trace as 'd:\zhangleitxt';

42 修改控制文件中的内容

将上面步骤产生的控制文件中与目标数据库不匹配的内容使用目标数据库的路径替换

CREATE CONTROLFILE REUSE DATABASE "ORADB" NORESETLOGS ARCHIVELOG

-- SET STANDBY TO MAXIMIZE PERFORMANCE

MAXLOGFILES 50

MAXLOGMEMBERS 5

MAXDATAFILES 100

MAXINSTANCES 1

MAXLOGHISTORY 226

LOGFILE

GROUP 1 'E:\ORACLE\ORADATA\ORADB\REDO01LOG' SIZE 100M,

GROUP 2 'E:\ORACLE\ORADATA\ORADB\REDO02LOG' SIZE 100M,

GROUP 3 'E:\ORACLE\ORADATA\ORADB\REDO03LOG' SIZE 100M

-- STANDBY LOGFILE

DATAFILE

'E:\ORACLE\ORADATA\ORADB\SYSTEM01DBF',

'E:\ORACLE\ORADATA\ORADB\UNDOTBS01DBF',

'E:\ORACLE\ORADATA\ORADB\CWMLITE01DBF',

'E:\ORACLE\ORADATA\ORADB\DRSYS01DBF',

'E:\ORACLE\ORADATA\ORADB\EXAMPLE01DBF',

'E:\ORACLE\ORADATA\ORADB\INDX01DBF',

'E:\ORACLE\ORADATA\ORADB\ODM01DBF',

'E:\ORACLE\ORADATA\ORADB\TOOLS01DBF',

'E:\ORACLE\ORADATA\ORADB\USERS01DBF',

'E:\ORACLE\ORADATA\ORADB\XDB01DBF',

'E:\ORACLE\ORADATA\ORADB\ASSMDBF',

'E:\ORACLE\ORADATA\ORADB\PERFSTAT01DBF',

'E:\ORACLE\ORADATA\ZHANGLEIDBF',

'E:\ORACLE\ORADATA\ORADB\CTL01DBF'

CHARACTER SET ZHS16GBK

;

43 在目标数据库中执行替换后的控制文件

将上面替换后的sql语句拿到目标数据库中进行执行

完成后, 可以使用下面的语句打开数据库

Sql> alter database open resetlogs;

44 生成spfile文件

SQL> create spfile='D:\oracle\ora92\database\spfileoradbora' from pfile='D:\oracle\admin\oradb\pfile\initoradb20090922ora';

45 重启数据库完成数据库迁移

到这一步完成, 数据库已经迁移成功

重新启动数据库, 使用spfile登录

SQL> shutdown immediate;

SQL> startup

以上就是关于配置归档日志,让数据库管理更加顺畅全部的内容,包括:配置归档日志,让数据库管理更加顺畅、为什么Oracle数据库进行联机备份与恢复,数据库必须处于归档模式下、oracle 10g数据备份与恢复等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存