文档库 最新最全的文档下载
当前位置:文档库 › hello第四课(二)f2812存储器映射及cmd详解-日志-eyes417-

hello第四课(二)f2812存储器映射及cmd详解-日志-eyes417-

hello第四课(二)f2812存储器映射及cmd详解-日志-eyes417-
hello第四课(二)f2812存储器映射及cmd详解-日志-eyes417-

hello第四课(二):f2812存储器映射及cmd详解-日志

-eyes417-...

2812存储器映射

2812具有32位的数据地址和22位的程序地址,总地址空间可以达到4M的数据空间和4M的程序空间。32位的数据地址,就是能访问2的32次,是4G,而22位的程序地址,就是能访问2的22次,是4M。其实,2812可寻址的数据空间最大是4G,但是实际线性地址能达到的只有4M,原因是2812的存储器分配采用的是分页机制,分页机制采用的是形如0xXXXXXXX的线性地址,所以数据空间能寻址的只有4M。 2812的存储器被划分成了下面的几个部分:

1. 程序空间和数据空间。2812所具有的RAM、ROM和FLASH都被统一编址,映射到了程序空间和数据空间,这些空间的作用就是存放指令代码和数据变量。

2. 保留区。数据空间里面某些地址被保留了,作为CPU的仿真寄存器使用,这些地址是不向用户开放的。

3. CPU中断向量。在程序空间里也保留了64个地址作为CPU 的32个中断向量。通过CPU的一个寄存器ST1中的VMAP

位来将这一段地址映射到程序空间的底部或者顶部。

映射和空间的统一编址 

F2812内部的映射空间 

2812CMD详解CMD:command 命令,顾名思义就是命令文件指定存储区域的分配.2812的CMD采用的是分页制,其中PAGE0用于存放程序空间,而PAGE1用于存放数据空间。

1.)#pragma ,CODE_SECTION和DATA_SECTION伪指令#pragma DATA_SECTION(funcA,"dataA"); ------ 函数外声明

将funcA数据块定位于用户自定义的段"dataA"中------ 需要在CMD中指定dataA段的物理地址2.)MEMORY和SECTIONS是命令文件中最常用的两伪指令。MEMORY伪指令用来表示实际存在目标系统中的可以使用的存储器范围,在这里每个存储器都有自己的名字,起始地址和长度。SECTIONS伪指令是用来描述输入端是如何组合到输出端内的。以常用的F2812_nonBIOS_RAM.cmd

F2812_nonBIOS_Flash.cmd 和

DSP281x_Headers_nonBIOS.cmd为例

F2812_nonBIOS_RAM.cmd ----- 用于仿真,无BIOS系统,片外SRAM配置CMD文件里有两个基本的段:初始化段和

非初始化段。初始化段包含代码和常数等必须在DSP上电之后有效的数。故初始化块必须保存在如片内FLASH等非遗失性存储器中,非初始化段中含有在程序运行过程中才像变量内写数据进去,所以非初始化段必须链接到易失性存储器中如RAM。已初始化的段:.text,.cinit,.const,.econst,..pinit 和.switch..

.text:所有可以执行的代码和常量

.cinit:全局变量和静态变量的C初始化记录

.const:包含字符串常量和初始化的全局变量和静态变量(由const)的初始化和说明

.econst:包含字符串常量和初始化的全局变量和静态变量(由far const)的初始化和说明

.pinit:全局构造器(C++)程序列表

.switch:包含switch声明的列表 

非初始化的段:.bss,.ebss,.stack,.sysmem,和esysmem.(更好的理解就是,这些段就是存储空间而已)

.bss: 为全局变量和局部变量保留的空间,在程序上电时.cinit 空间中的数据复制出来并存储在.bss空间中。

.ebss:为使用大寄存器模式时的全局变量和静态变量预留的空间,在程序上电时,cinit空间中的数据复制出来并存储

在.ebss中

.stack:为系统堆栈保留的空间,主要用于和函数传递变量或为局部变量分配空间。

.sysmem:为动态存储分配保留的空间。如果有宏函数,此空间被宏函数占用,如果没有的话,此空间保留为0

.esysmem:为动态存储分配保留的空间。如果有far函数,此空间被相应的占用,如果没有的化,此空间保留为

0.F2812_nonBIOS_Flash.cmd --- 用于无BIOS,从片内FLASH引导对于程序在FLASH中运行时,需要注意的:DSP在150M时钟频率下,FLASH中只能提供大约120M的时钟频率,所以有时候我们希望在RAM中运行时间敏感或计算量很大的子程序(比如AD采样)。但是我们所有代码都放在FLASH中,这就必须在上电后将FLASH中的这段敏感程序复制到RAM中运行,加快速度。这是在.CMD文件就必须划分一段用来设置RAM的载入和运行地址。程序代码如下:

SECTIONS {………

ramfuncs : LOAD = FLASHD,

RUN = RAML0,

LOAD_START(_RamfuncsLoadStart),

LOAD_END(_RamfuncsLoadEnd),

RUN_START(_RamfuncsRunStart),

PAGE = 0

}

“load=加载地址run =运行地址”链接器为每个输出段都在目标存储器里分配两个地址:一个是加载地址,一个是运行地址。通常情况下两个地址是相同的,可以认为输出段只有一个地址,这时就可以不加“run =运行地址”这条语句了;但有时需要将两个地址分开,比如将程序加载到FLASH,然后放到RAM中高速运行,这就用到了运行地址和加载地址的分别配置了.

“load =加载地址”的几种写法需要说明一下,首先“load”关键字可以省略,“=

”可以写成“>”, “加载地址

”可以是:地址值、存储区间的名字、PAGE关键词等,所以大家见到“.text:{ } > 0x0080”这样的语句可千万不要奇怪。“run =运行地址”中的

“ = ”可以用

“>”DSP281x_Headers_nonBIOS.cmd -----

用于无BIOS,外设寄存器产生的数据段映射至对应的存储器空间查看段的分配及使用情况.map的链接器(存储器)分配映射文件,链接器的map文件描述以下内容:通过map 文件可以查看各段的分配情况,包括段的起始地址,使用的字节数等配合cmd文件的使用,可确定各个段的使用情况,从而保证程序的正常运行和最小的空间使用。VisualLinker 可视化链接器TI公司出品的DSP软件开发环境CCS还提供了一种可视化生成存储器配置文件的工具:VisualLinker可视化链接器。如果程序原来包含了一个链接器命令文件(.cmd 文件),则当创建可视化链接文件的时候,原来cmd文件中的内存配置仍然会被使用。如果读者想修改内存配置,双击.rcp文件就会在CCS中打开可视化链接器的图形界面,调整每个内存模块的大小,直到认为合适,然后只需要重新连编,程序即可生成新的输出文件,重复上面的步骤,直到出现满意的结果。

用Oracle归档日志进行恢复的方法

联机重演日志没有丢失应使用完成恢复,如联机重演日志损坏,而又没有备份,就只能进行不完全恢复。 一、完全恢复: 1〃使用命令“svrmgrl”调用行方式服务器管理; 2〃输入命令“connect i nternal”,然后输入命令“startup m ount’; 3〃输入命令“recover d atabase;” 4〃按下ENTER,接受默认值。 5〃然后输入命令“alter d atabase o pen;”完成数据库恢复。 二、不完全恢复 警告: 应用不完成恢复前,必须将数据库做一次完全冷备份,因为应用不完全恢复后,联机重演日志将重置,以前的所有日志不可用。 如果恢复不成功,数据库就不能使用了。再次强调,做完全冷备份后再应用不完全恢复。 1).基于变化的恢复(change-based r ecovery) 要执行基于变化的恢复,需要知道丢失日志之前的系统写入归档重演日志的最大的变化号(SCN),然后可以启动恢复语句恢复数据库直到改变scn_number,其中比scn_number是写到已归档重演日志文件顺序号386的SCN(即,小于丢失日志顺序号387的SCN)。可以从V$log_history视图中得到SCN信息。 select f irst_change# f rom v$log_history w here s equence#=387; 其中387为最后一个有效的日志文件号加1,该例是查找386. 知道了SCN后,使用下述步骤完成恢复 1〃使用命令“svrmgrl”调用行方式服务器管理; 2〃输入命令“connect i nternal”,然后输入命令“startup m ount’; 3〃输入命令“recover d atabase u ntil c hange 9999;” 4〃在回答Oracle第一个归档重演日志建议信息时,输入“auto”,Oracle在找到第387号重演日志之前停止恢复。 5〃用命令“alter d atabase o pen r esetlogs;”打开数据库。(应用该命令前请确认数据库已备份,如打开失败,日志将不可用) 2).基于停止??恢复(cancel-based r ecovery) 1〃使用命令“svrmgrl”调用行方式服务器管理; 2〃输入命令“connect i nternal”,然后输入命令“startup m ount’; 3〃输入命令“recove r d atabase u ntil c ancel;”,Oracle提示需要的第一个归档重演日志文件名〃按下ENTER键

oracle11g更改归档模式、目录、日志大小

oracle11g更改归档模式、目录、日志大小 一、更改Oracle为归档模式 1.关闭oracle SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. 2.启动为mount状态 SQL> startup mount ORACLE instance started. Total System Global Area 2572144640 bytes Fixed Size 2283984 bytes Variable Size 738199088 bytes Database Buffers 1828716544 bytes Redo Buffers 2945024 bytes Database mounted. 3.更改为归档模式 SQL> alter database archivelog Database altered. 备注:‘archivelog’为归档模式;‘noarchivelog’为非归档模式。 4.更改数据库为‘打开’状态 SQL> alter database open 5.查看归档模式信息 SQL> archvie log list 它会提示归档的模式、是否启用、参数 Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence 88 Next log sequence to archive 90 Current log sequence 90 二、更改归档目录 1.查看参数db_recovery_file_dest (1)“db_recovery_file_dest”是用于定义存储归档日志的目录。通过show parameter命令,显示参数的值为(默认为)fast_recovery_area。示例如下:SQL> show parameter db_recovery NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string D:\oracle\fast_recovery_area db_recovery_file_dest_size big integer 4182M (2)查看v$recovery_file_dest视图,可得知fast_recovery_area的空间限制、已使用的空间、文件数等。 SQL> select * from v$recovery_file_dest; NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES ----------- ---------- ----------------- --------------- D:\oracle\fast_recovery_area 4385144832 4346230272 2741248 102 2.更改归档日志目录 语法:alter system set 参数=值scope=spfile; 示例:SQL> alter system set db_recovery_file_dest='D:\oracle\archivelog' scope=spfile; System altered.

Oracle数据库归档日志日常管理与建议

Oracle数据库归档日志日常管理与建议 1.简介 近日,项目组偶有发生归档日志占满归档目录空间导致数据库hang住(无响应),导致系统不能正常应用的情况。针对此类问题,笔者从Oracle数据库归档模式、归档模式的优缺点、归档日志日常管理方法等各方面浅析并整理出归档日志日常管理与建议。请各项目组依据实际情况,规范管理归档日志,排查相关隐患,以保证系统的正常高效运营。 另外,对于已开启数据库归档模式的项目组,若数据库管理权限不在我方,可将相关归档管理建议与当地运维部门充分沟通,避免归档的不当管理引起事故。 2.数据库归档模式与归档日志 2.1数据库运行模式简介 Oracle数据库包括归档模式与非归档模式两种运行模式。 一般情况下Oracle数据库的联机重做日志会记录对数据库所做的所有的修改,如创建对象;插入、删除、更新对象;删除对象等,这些操作都会记录在联机重做日志里。Oracle 数据库至少要有2个联机重做日志组。当一个联机重做日志组被写满(假设为1)的时候,就会发生日志切换,这时联机重做日志组2(假设为2)成为当前使用的日志,当联机重做日志组2写满的时候,又会发生日志切换,去写联机重做日志组1,这样反复进行。 如果数据库处于非归档模式,联机日志在切换时就会被丢弃。而在归档模式下,当发生日志切换的时候,被切换的联机日志会被归档。 如当前在使用联机重做日志1,当1被写满时,发生日志切换,开始写联机重做日志2,这时联机重做日志1的内容会被拷贝到一个指定的目录下。这个目录为归档目录,这个过程称之为归档,拷贝的文件叫归档日志。 2.2归档模式优点与归档日志作用 数据库运行在归档模式时,后台进程ARCH会将联机日志的内容拷贝到归档目录生成归档日志。 当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库。因此,开启归档模式及归档日志的益处与作用是非常明显的: 1.可以进行完全、不完全恢复。由于对数据库所做的全部改动都记录在日志文件中, 如果发生硬盘故障等导致数据文件丢失的故障,则可以利用物理备份和归档日志 完全恢复数据库,不会丢失任何数据。 2.可以进行联机热备。所谓联机热备,就是在数据库运行状态下,对数据库进行备 份,备份时用户对数据库的使用基本不受影响(不可避免的会对性能有负面影响)。 3.可以实施Data Guard。可以部署1个或多个备用数据库,从而最大限度地提供灾 难保护手段。

修改归档日志存放路径

那么如何设置归档呢?很简单的步骤 1.关闭数据库 SQL> shutdown immediate; 2.启动数据库为mount模式 SQL> startup mount 3.显示和修改归档模式 SQL> archive log list SQL> alter database archivelog; SQL> alter database open 4.设置归档日志的格式 SQL>alter system set log_archive_format='ARC%s%t%r.log' scope=spfile; 5.设置归档日志的存放路径 SQL>alter system set log_archive_dest='+data/arcl' scope=spfile; SQL>shutdown immediate SQL>startup 6.强制切换归档日至 SQL>alter system switch logfile; 7.取消归档 SQL>alter database noarchivelog; 、2:oracle中log_archive_dest_n和log_archive_dest不能共存,也就是只能使用其一,如果同时使用,会报错如下信息: ORA-16019: cannot use LOG_ARCHIVE_DEST_1 with LOG_ARCHIVE_DEST or LOG_ARCHIVE_DUPLEX_DEST log_archive_dest_n可以设置10个归档路径,也就是n可以是1-10,接下来要作的是去除db现在的log_archive_dest参数设置,可以执行如下命令清除: SQL> alter system reset log_archive_dest scope=spfile sid='*'; 也可以这样操作: SQL> alter system set log_archive_dest='' scope=spfile; 然后重新启动数据库。 3: 执行命令: SQL> alter system set log_archive_dest_n="location=F:\oracle\product\10.2.0\db_1 \database\arch" scope=spfile; alter system set log_archive_dest_1="location=C:\oracle\archive" scope=spfile;

ORACLE清理归档日志

清理归档日志: archive log 日志已满 ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法 1. 用sys用户登录 sqlplus sys/pass@tt as sysdba 2. 看看archiv log所在位置 SQL> show parameter log_archive_dest; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ log_archive_dest string log_archive_dest_1 string log_archive_dest_10 string 3. 一般VALUE为空时,可以用archive log list;检查一下归档目录和log sequence SQL> archive log list; Database log mode Archive Mode

Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 360 Next log sequence to archive 360 Current log sequence 362 4. 检查flash recovery area的使用情况,可以看见archivelog已经很大了,达到 SQL> select * from V$FLASH_RECOVERY_AREA_USAGE; FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES ------------ ------------------ ------------------------- --------------- CONTROLFILE .13 0 1 ONLINELOG 0 3 ARCHIVELOG 0 141 BACKUPPIECE 0 0 0 IMAGECOPY 0 0 0 FLASHBACKLOG 0 0 0 5. 计算flash recovery area已经占用的空间 SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;

归档大小日志计算

redo日志切换频率推算出存放归档日志所需的空间 我们可以通过日志切换频率推算出存放归档日志所需的空间,这样对存储规划有很好的指导意义。 可以按照如下步骤完成归档日志空间规划预估任务。 1.查看数据库日志文件的大小 sys@bomsdb> select distinct(bytes/1024/1024) MB from v$log; MB ---------- 200 如果上面的查询返回不止一条,说明你的系统中存在不同大小的redo log。应该强烈抵制这种事情的发生。确保数据库具有相同大小的redo log,便于管理和使用。 2.查询获得系统归档日志的切换频率及大小 sys@bomsdb> select max (first_time) max_first_time, 2 to_char (first_time, 'yyyy-mm-dd') day, 3 count (recid) count_number, 4 count (recid) * 200 size_mb 5 from v$log_history 6 group by to_char (first_time, 'yyyy-mm-dd') 7 order by 1 8 / MAX_FIRST_TIME DAY COUNT_NUMBER SIZE_MB -------------- ---------- ------------ ---------- 20 2010-12-24 40 8000 20 2010-12-25 50 10000 20 2010-12-26 45 9000 20 2010-12-27 46 9200 20 2010-12-28 44 8800 20 2010-12-29 46 9200 20 2010-12-30 47 9400 20 2010-12-31 45 9000 20 2011-01-01 47 9400 20 2011-01-02 44 8800 20 2011-01-03 48 9600 20 2011-01-04 53 10600 20 2011-01-05 45 9000 20 2011-01-06 52 10400 20 2011-01-07 48 9600 20 2011-01-08 52 10400 20 2011-01-09 49 9800 20 2011-01-10 50 10000 20 2011-01-11 46 9200 20 2011-01-12 52 10400

系统应急预案

系统应急预案2015年7月

系统名称 涉及部门财务部 人员名称人员所在单位人员联系方式涉 及 人 员 及 联 系 方 式 及 职 责 预案事件描述: 调整失败,可能涉及如下情况: 1)系统崩溃:系统出现重大故障是指所有的客户端程序都不能正常连接到服务器,任何合法的 系统用户都无法正确登录系统,甚至于系统完全崩溃; 2)数据丢失:系统数据丢失状态,如数据库服务出现故障,用户数据丢失,公司现有技术手段 无法恢复; 3)服务停顿:系统服务停顿状态,如系统由于不明原因导致大规模用户无法使用,服务停顿。 4)接口无法正常调用:系统无法正常调用财务管控接口(财务管控接口、ERP RFC接口、ESB)。预案处理要求 1)系统崩溃:停止系统后台服务,防止不知情用户继续投递数据。抓取并保存系统出错信息及 日志文件,简单判断异常部位,通知相关人员到岗,保留现场,分析查找原因。 2)数据丢失:停止服务和后台数据库服务,将剩余用户数据进行备份,抓取并保存系统出错信 息及日志文件,通知相关人员到岗,保留现场,分析查找原因。 3)服务停顿:联系网络管理人员、通知相关人员到岗,从网络和系统两个方面分析查找服务停 顿原因。 4)接口无法正常调用:联系相关接口服务提供方,确认服务是否正常。 注:对故障进行快速处理及归档,争取每次故障修复时间控制在两小时以内。 演练要求 1. 对在线系统不造成影响 2. 在主要系统管理员人员变更和服务器、操作系统、主页发布软件发生变更时要进行演练。 3. 演练前应填写工作单,并对系统做全备份。 4. 演练结束形成演练总结报告。 预案流程说明 一、事件报警与确认:系统人员在对系统进行调整的过程中发现公司系统运行中的异常及其它故障。由运维人员首先确认系统是否发生重大故障,及时通知相应管控经理及信通公司相应负责人,启用预案。 二、系统发生重大故障时,保护故障现场:必须及时采取以下措施,通知系统运维人员及时到场 1.保证服务器不再有任何人进行任何操作

ORACLE数据库归档日志满后造成系统宕机的处理方法

第一次宕机时,初始以为是系统内存溢出,于是重启应用服务器,发现应用服务器在启动时报错,错误为无法连接到数据库。于是连接数据库服务器,打开EM后发现系统报错如图: 提示归档日志写入失败,检查服务器发现磁盘空间满了,于是清理磁盘空间后,重启数据库问题解决。随后把服务器磁盘空间扩容,直接给了oracle数据所在盘1TB的磁盘空间。第二次又出现此问题,经过仔细检查,并与同事确认后,发现是由于ORACLE数据库的归档日志被启用了,而我们系统默认是没有启用ORACLE数据库归档日志这个功能的。 使用sql命令查看: Sql>sqlplus / as nolog;---------------------启动sql*Plus Sql> connect sys/password@orcl as sysdba; Sql> archive log list; 数据库日志模式存档模式 自动存档启用 存档终点USE_DB_RECOVERY_FILE_DEST 最早的联机日志序列4888 下一个存档日志序列4890 当前日志序列4890 Sql> show parameter db_recovery_file_dest; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string D:\oracle\product\10.2.0/flash_recovery_area db_recovery_file_dest_size big integer 20G 发现默认的归档路径为D:\oracle\product\10.2.0/flash_recovery_area。而且限制使用空间为20G。由于每天产生的oracle归档日志差不多就占用2个G的磁盘空间,而且oracle自身并不会自动清理也没有相关设置自动清理归档日志的功能,一段时间不进行清理,20G空间很快就满了。 与客户商议,准备关闭归档日志功能,客户了解情况后,觉得归档日志功能还是需要开启,(归档日志是oracle灾难恢复的必要数据),于是准备把归档日志使用空间扩大,设成200g。 处理方法: 一、首先要处理日志空间满的情况: 1、删除归档日志物理文件,归档日志一般都是位于D:\oracle\product\10.2.0\flash_recovery_area\ORCL\ARCHIVELOG目录下,以日期文件夹存放,删除时至少保留最近几天的日志用于数据库恢复。 2、归档日志的物理文件删除后,ORACLE可以正常登录了,但是还没完全把归档日志删除干净,ORACLE的controlfile中仍然记录着这些archivelog的信息,在oracle的OEM 管理器中有可视化的日志展现出,当我们手工清除archive目录下的文件后,这些记录并没有被我们从controlfile中清除掉,利用RMAN进行删除操作; 进入cmd, 1.指定数据库实例 C:/Documents and Settings/Administrator>SET ORACLE_SID =orcl 2.连接数据库

oracle 归档日志文件路径设置

oracle 归档日志文件路径设置 2012-05-23 15:37:42| 分类:oracle | 标签:oracle log_archive_dest |举报|字号订阅 1:首先查看是否是归档模式运行archive log list 命令(必须以sys身份运行) 运行结果如下; 2:通过上面的信息可以看出已经是归档模式了(如果是非归档模式参考博主的 另一篇文章有关“归档日志与非归档日志切换”), 查看归档日志文件 存放在哪个位置运行show parameter log_archive_dest 命令运行结果如下; 3: 在上面的信息中可以看到,log_archive_dest 的路径为空,我们可以设置这个路径来存放归档日志文件,运行alter system set log_archive_dest='d:/xxx/xxx' scope=spfile;(xxx代表存放路径,最好指定scope=spfile 否则的话重启db,则配置不会生效); 运行结果会出现在如下错误: 第1 行出现错误: ORA-02097: 无法修改参数, 因为指定的值无效 ORA-16018: 无法将LOG_ARCHIVE_DEST 与LOG_ARCHIVE_DEST_n 或DB_RECOVERY_FILE_DEST 一起使用 出现错误的原因是db_recovery_file_dest的参数已经被设置了,去查询一下看看,果真如此。 4: 查看db_recovery_file_dest 参数设置,运行show parameter db_recovery_file_dest 命令运行结果如下; 可以看到已经默认设置了归档的路径。 5:db_recovery_file_dest是缺省的归档位置,下面把它设置为"空",然后设置log_archive_dest参数,指定另外一个非缺省的参数 重启db 如下图 运行shutdown immediate;

归档日志异常增长处理方法

案例描述:近日湖北运维反应湖北数据库归档日志生成过快,导致磁盘空间占满,引起数据库宕机。问题看起来很简单,只要清理下归档日志然后重启就能解决,但这只是治标不治本的方法,显然是要找到归档日志增长异常频繁的原因。最后通过LogMiner分析归档日志发现是运维部署了频繁update的语句,停了后归档日志变为正常。下面是详细步骤 1.通过v$archived_log视图查看最近归档日志状态 select to_char(COMPLETION_TIME, 'yyyymmdd'), count(*) from v$archived_log t where https://www.wendangku.net/doc/0017749410.html,PLETION_TIME > sysdate - 20 group by to_char(COMPLETION_TIME, 'yyyymmdd') order by to_char(COMPLETION_TIME, 'yyyymmdd'); 2.查看今天的归档日志情况,看到8点左右归档日志增长最大 select to_char(FIRST_TIME, 'yyyymmddhh24'), count(*) from sys.v_$archived_log t where t.FIRST_TIME > trunc(sysdate) group by to_char(FIRST_TIME, 'yyyymmddhh24')

order by to_char(FIRST_TIME, 'yyyymmddhh24') 3.查看今天八点的归档日志的路径 select name, COMPLETION_TIME, t.FIRST_TIME, t.RESETLOGS_TIME from sys.v_$archived_log t where to_char(FIRST_TIME, 'yyyymmddhh24') = 2015081108 order by t.FIRST_TIME desc;

数据库归档管理

数据库归档 1、查看、更改归档路径 在ORACLE10G中,默认的归档路径为$ORACLE_BASE/flash_recovery_area。对于这个路径, ORACLE有一个限制,就是默认只能有2G的空间给归档日志使用,可以使用下面两个SQL语句去查看它的限制 select * from v$recovery_file_dest; show parameter db_recovery_file_dest(这个更友好直观一些) 当归档日志数量大于2G时,那么就会由于没有更多的空间去容纳更多的归档日志会报无法继续归档的错误。 如: RA-19809: limit exceeded for recovery files ORA-19804: cannot reclaim 10017792 bytes disk space from 2147483648 limit ARC0: Error 19809 Creating archive log file to '/u01/app/oracle/flash_recovery_area/ORCL/archivelog/2007_04_30/o1_mf _1_220_0_.arc' 这时我们可以修改它的默认限制,比如说将它增加到5G或更多,也可以将归档路径重新置到别的路径,就不会有这个限制了。 更改限制语句如下: alter system set db_recovery_file_dest_size=5368709102; 或者直接修改归档的路径即可 alter system set log_archive_dest_1='location=/u01/archivelog' scope =both; 2、修改归档模式 sql> archive log list; sql> shutdown immediate; sql> startup mount; sql> alter database archivelog;alter database noarchivelog sql> alter database open; sql> archive log list;

ORACLE清理归档日志

清理归档日志: archive log日志已满 ORA-00257:archiver error.Connect internal only,until freed错误的处理方法 1.用sys用户登录 sqlplus sys/pass@tt as sysdba 2.看看archiv log所在位置 SQL>show parameter log_archive_dest; NAME TYPE VALUE ----------------------------------------------------------------------------- log_archive_dest string log_archive_dest_1string log_archive_dest_10string 3.一般VALUE为空时,可以用archive log list;检查一下归档目录和log sequence SQL>archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence360 Next log sequence to archive360 Current log sequence362 4.检查flash recovery area的使用情况,可以看见archivelog已经很大了,达到96.62 SQL>select*from V$FLASH_RECOVERY_AREA_USAGE; FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES ---------------------------------------------------------------------- CONTROLFILE.1301

关于Oracle归档介绍

数据库归档模式介绍 简介: 归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重 做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换时,后台进程ARCH会将重做日志的内容保存到归档日志中,当数据库出现介质失败时,使用数据文件备份,归档日志和重做日志可以完全恢复数据库。在Oracle10g中,只要启动数据库的归档模式,Oracle 就会启用自动归档,从而避免了10g以前由于用户疏忽所带来的一系列问题。 日志操作模式:ARCHIVELOG(归档),NOARCHIVELOG(非归档) 启动Oracle10g数据库的归档模式详细步骤 对于非归档模式的数据库改为归档模式(主要以Oracle 10g为参考)使用以下步骤:步骤1(查看数据库的归档状态) 首先查看数据库现有模式可使用以下语句,显示数据库处于非归档模式下 SQL> select name,log_mode from v$database; NAME LOG_MODE --------- ------------ ZHQHDB NOARCHIVELOG 也可以用下面的语句 [oracle@wangdm ~ 10:28 #9]$ sqlplus / as sysdba SQL> archive log list Database log mode No Archive Mode Automatic archival Disabled Archive destination ?/dbs/arch Oldest online log sequence 534 Current log sequence 536 步骤2(设置归档日志文件路径) SQL>alter system set log_archive_dest_1='location=/u01/arch'; 该语句含义是设置归档日志文件的存放路径,实际上Oracle 10g以后可以生成多份一样的日志,保存多个位置以防不测

DB2_数据库日志管理

1、load 方法装入数据: export to tempfile of del select * from tablename where not 清理条件; load from tempfile of del modified by delprioritychar replace into tablenamenonrecoverable; 说明: 在不相关的数据表export数据时,可以采取并发的形式,以提高效率; tablename指待清理table的名称; modified by delprioritychar防止数据库记录中存在换行符,导致数据无法装入的情况; replace into对现数据库中的内容进行替换,即将现行的数据记录清理,替换为数据文件内容; nonrecoverable无日志方式装入; 2、查找当前的应用: db2 list application grep btpdbs; 3、删除当前正在使用的application: db2 "force application (id1,id2,id3)" id1,id2,id3 是list显示的应用号; 4、查看当前应用号的执行状态: db2 get snapshot for application agentid 299 grep row 5、查看数据库参数: db2 get dbcfg for //当前数据库可以省略 6、修改数据库的log数据: db2 update dbcfg using <参数名><参数值> 7、db2stop force的用法: 在进行bind的时候出现如下错误: sql0082can error has occurred which has terminated processing. sql0092nno package was created because of previous errors. sql0091nbinding was ended with "3" errors and "0" warnings. 主要是表文件被加锁,不能继续使用; 在进行stop的时候报错:db2stop 8/03/2005 21:46:530 0 sql1025nthe database manager was not stopped because databases are still active. sql1025nthe database manager was not stopped because databases are still active. 需要使用如下命令可以解决这个问题:db2stop force 08/03/2005 21:47:49 0 0 sql1064ndb2stop processing was successful. sql1064ndb2stop processing was successful. 然后启动数据库db2start,连接数据库db2s后,重新进行bind即可。 8、缓冲池参数修改: db2 alter bufferpoolibmdefaultbp size 10240 查看本表的数据内容如下:db2 "select * from syscat.bufferpools"; 9、db2 日志处理: db2日志是以文件的形式存放在文件系统中,分为两种模式:循环日志和归档日志。当创建新数据库时,日志的缺省模式是循环日志。在这种模式下,只能实现数据库的脱机备份和恢复。如果要实现联机备份和恢复,必须设为归档日志模式。 目前在综合业务系统中,设置的均是归档日志模式;其它系统(如事后监督、经营决策、中间业务等)一般都设置为循环日志模式。至于采用何种模式,可以通过修改数据库配置参数

如何使用归档日志进行完全恢复

如何使用归档日志进行完全恢复 系统环境: 1、操作系统:Windows 2000 Server,机器内存128M 2、数据库:Oracle 8i R2 (8.1.6) for NT 企业版 3、安装路径:C:\ORACLE 模拟现象: 先将数据库设置为归档模式(见“如何启动ARCHIVELOG模式(将数据库设置为归档模式).doc”)SQL*Plus --创建实验表空间 create tablespace test datafile 'c:\test.ora' size 5M AUTOEXTEND ON NEXT 1M MAXSIZE UNLIMITED default storage (initial 128K next 1M pctincrease 0) / --创建实验用户 drop user test cascade; create user test identified by test default tablespace test; grant connect,resource to test; conn test/test create table a(a number); insert into a values(1); insert into a select * from a; --反复插入,达到10万条 commit; 拷贝test.ora为test1.ora文件 insert into a select * from a; --20万条 commit; 关闭数据库 shutdown 删除test.ora文件,把test1.ora拷贝为test.ora。 重新启动数据库 这时,可以mount上,但无法打开,因为现在使用的数据文件是旧的 只有10万条记录,与控制文件中记载的log number不一样 startup mount 需要recover database,使数据库记录重新恢复到当前的20万条 C:\>svrmgrl svrmgrl>connect internal

Oracle丢失归档日志文件的数据库恢复方法

Oracle丢失归档日志文件的数据库恢复方法 丢失归档日志文件的数据库恢复方法,从一个不能正常打开的数据库(由于一个/多个数据库文件与其他文件不一致)中提取数据。场景:一个磁盘损坏了并且丢失了一个数据库文件。从一周前的热备转储数据文件,不幸的是丢失了几个归档日志文件。但是有问题的数据文件包含了最重要的表,如何能够挽救数据呢? 每个DBA都知道这是有问题的,一定会丢失数据,因为某些事务丢失了,问题是会丢失多少数据?Oracle 使用硬线路位置并且由于存在完整性约束问题,因此不允许正常打开数据。但是如果使用非常规的方法让Oracle删除其硬线路属性,那么应该能够提取尽可能多的数据。而通常这会比损失全部数据要好很多。 详细过程通常如果仅仅丢失了堆表的索引,或者某些能够很容易重建的数据,那么最好的方法应该是删除表空间并重建这些对象然后重新输入。但是如果丢失的数据文件包含了重要数据并且很难恢复,而且只有前一次的备份却又丢失了某些归档日志,那么用户可能希望能够尽可能多的从有问题的表空间恢复数据并且删除和重建表空间。 主要的步骤如下: 1. 对当前拥有的数据进行一个冷备; 2. 转储丢失的数据库文件备份并应用可以应用的日志; 3. 设置未文档化的初始化参数,其允许你在当前状态打开数据库; 4. 执行exp并提取全部可以从有问题的表空间提取的数据; 5. 从先前的冷备转储数据库; 6. 使毁坏的数据文件offline; 7. 执行exp并提取第4步没有提取的额外数据; 8. 在一次从冷备转储; 9. 删除有问题的表空间; 10. 重建有问题的表空间; 11. 使用第四步和第七步提取的数据重建数据; 使用案例描述:ORDTAB表空间的一个数据文件ordtab03.dbf毁坏,其包含很多ORDERS表的分区,数据文件热备于July 4,2004,July 4—至今的某些归档日志丢失。 第一步:备份数据库第一步的任务是冷备当前拥有的任何数据文件,在线重做日志,和控制文件。如果丢失了一个/多个数据文件但是数据库仍然是open的,那么对每个剩余的数据文件进行热备并确保备份期间/之后的归档被安全保存。

Oracle通过归档日志还原数据

Oracle通过归档日志还原数据 我要投稿 [ Oracle 的日志模式分为 archivelog (启用归档日志) 和 noarchivelog () 两种模式。 查看数据库日志模式: select log_mode from v$database; log_mode ----------------------------------- archivelog 如何启用Oracle的归档方式: 1.参照以下内容编辑init.ora文件: log_archive_start = true log_archive_dest_1 = " LOCATION=D:\Oracle\oradata\ORCL\archive " og_archive_format = %%ORACLE_SID%%T%TS%S.ARC Oracle 归档日志还原数据(还原前请做好冷备份): sqlplus /nolog conn / as sysdba; archive log list; (查看日志文件列表,查看单个日志文件可用 strings xxx.dbf to xx.txt) recover database until time '2011-09-15:15:00:00'; (提示:使用基于时间的恢复,时间的格式是YYYY/MM/DD HH24:MI:SS,并且用单引号括起。) 基于时间的恢复(time-based recovery) 为使用基于时间的恢复,必须知道记录在V$log_history归档重演日志序号387

(丢失重演日志)的时间,通过执行查询语句“select * from v$log_history where sequence#=387;” 或者 recover database until change 9999; alter database open resetlogs; (应用该命令前请确认已数据库已备份,如打开 失败,日志将不可用) 作者“学习笔记” 如何解决ORA-01033问题 (2010-05-08 20:49:35) 转载 标签: oracle my 日志文件 数据文件 sql it Oracle错误:ORA-01033 错误编码:ORA-01033: ORACLE initialization or shutdown in progress 故障描述:因为移动了数据库文件([NAME].DMP)/日志文件等文件,导致数据库连接出现ORA-01033错误。 故障分析:网上有一种常见的说法是该类故障通常是由于移动文件而影响了数据库日志文件出现损坏而导致的无法正常进行IO操作而引起的错误。ORACLE将识别为数据库未装载完成而导致出现如上错误。

oracleg更改归档模式目录日志大小

o r a c l e g更改归档模式 目录日志大小 Document number【980KGB-6898YT-769T8CB-246UT-18GG08】

oracle11g更改归档模式、目录、日志大小 一、更改Oracle为归档模式 1.关闭oracle SQL>shutdownimmediate; Databaseclosed. Databasedismounted. ORACLEinstanceshutdown. 2.启动为mount状态 SQL>startupmount ORACLEinstancestarted. TotalSystemGlobalAreabytes FixedSize2283984bytes VariableSizebytes DatabaseBuffersbytes RedoBuffers2945024bytes Databasemounted. 3.更改为归档模式 SQL>alterdatabasearchivelog Databasealtered. 备注:‘archivelog’为归档模式;‘noarchivelog’为非归档模式。 4.更改数据库为‘打开’状态 SQL>alterdatabaseopen 5.查看归档模式信息 SQL>archvieloglist 它会提示归档的模式、是否启用、参数 DatabaselogmodeArchiveMode AutomaticarchivalEnabled ArchivedestinationUSE_DB_RECOVERY_FILE_DEST Oldestonlinelogsequence88 Nextlogsequencetoarchive90 Currentlogsequence90 二、更改归档目录 1.查看参数db_recovery_file_dest (1)“db_recovery_file_dest”是用于定义存储归档日志的目录。通过showparameter命令,显示参数的值为(默认为)fast_recovery_area。示例如下:

相关文档