天萃荷净

分享一篇Oracle数据库故障恢复的案例,由Oracle数据库在AIX操作系统上的恢复操作的详细过程

最近接手一个AIX下面ORACLE 8.0.5恢复需求.这个需求要从2个月前说起.2个月前有客户提出需求,帮他们恢复8.0.5的库(该库被9.2.0.4的ORACLE强制拉过,但是未成功).当我准备去恢复的时候,客户和我说数据库的存储找不到了,暂时不用处理.本来这个事情到此也就算结束了,最多算一个笑话(找人数据库恢复,发现数据库丢了).前几天又接到关于这个恢复的请求,说他们还有磁带的备份(备份方式:begin tablespace backup+cp+archivelog),让我去协助恢复.按照客户的描述,他们购买了国外的读磁带机器可以读取磁带到硬盘,他们解压好数据文件,然后我去恢复,而且数据文件,控制文件,归档日志都存在.我当时认为这个是一个简单的恢复,顺利的话,一个小时就可以搞定.这里告诉我们:哪怕是N久的备份,也可能是最后的救命数据(2004年的磁带备份),一定要做好备份

今天到达现场,客户第一句话:文件没有解压,第二句话:归档日志没有恢复出来.听到这里,我有点感觉情况很不妙.

详细一问:文件没有解压是因为AIX 4.3.0默认的是文件系统格式是jfs,最大支持lv的大小为20g(估计和客户参数有关系),现在如果解压需要分到多个目录中(数据库原始运行就是按照该模式进行的,如:oradata001,oradata002等分别放几个数据文件),需要我去给他们做规划,如果存放这些文件.大脑一晕,dba原来真的什么活都要干啊.本身就对AIX不熟悉,还要去想办法处理这些问题,而且是从来没有见过的AIX 4.3.0.最后通过我和客户的一起努力终于解决了这个问题:使用其他技巧在AIX 4.3中建立jfs2文件系统(先划分小的LV,使用jfs系统,然后修改系统为jfs2,然后增加lv大小),解决以前jfs文件系统限制,解压的时候需要规划文件目录的体力活.这个问题告诉我们:有时候解决问题需要学会变通

归档日志没有恢复出来的原因:因为连续几天的恢复,加上客户本身工作繁忙,可能实在是太累,在最后一盘磁带的恢复的时候(一盘磁带15小时,一共4盘),客户敲错了命令tar -xvf输入成了-cvf,使得磁盘头被覆盖,磁带原则上报废,从而使得归档日志无法恢复出来.这一点点的事故告诉我们:越疲劳越容易出错,越到最后越容易出错,一定要小心谨慎

到这一步,没有解压(已经解决文件系统问题,接下来的解压问题不大),没有归档(修改scn原则上可以解决),这些东西总的来说问题都不大,当我安装好AIX FOR ORACLE 8.0.5,启动数据库到mount状态,核对恢复出来的数据文件和控制文件中的数据文件的时候,发现少了好几个,这下不能容忍了(能够open库,但是可能丢失需要数据,这个太不划算[因为用户还有该备份的前几天的备份]),寻找出现数据文件从磁带中丢失原因:1.因为jfs文件系统限制,不停的mv到其他目录导致丢失.2.uncompress解压丢失.3.最后一盘磁带损坏导致丢失.一切原因都是浮云,解决了jfs2文件系统,客户根据当前的情况,决定使用其他的备份再次从磁带中导出,然后进行恢复

1.AIX 4.3安装ORACLE 8.0.5

--检查内存

lsattr -El sys0 -a realmem

--检查交换分区

lsps -a

--检查临时目录

df -k /tmp

--检查操作系统位数

getconf HARDWARE_BITMODE

bootinfo -y

--检查操作系统版本号

oslevel -r

--检查软件包

lslpp -l bos.adt.base, bos.adt.libm

--检查补丁包

instfix -i | grep IX71948

--升级aix

smit install_latest

smit update_all

增加用户:

useradd oracle

增加组:

mkgrp dba

更改用户所属组:

usermod -g dba oracle

更改用户密码:

passwd oracle

pwdadm oracle

--关于用户

smit mkuser建立用户

smit lsuser列出所有用户的属性

lsuser ALL

smit chuser改变用户属性

rmuser -p *删除用户*

smit rmuser只删除用户,但是不删除所属目录,等于rmuser

smit passwd修改密码

smit lockuser给用户加锁

--关于用户组

smit mkgroup建立新组

smit lsgroup显示所有组的属性

smit chgroup修改组的属性

smit rmgroup删除*组

rmgroup *

配置shell limits( smit chuser)

soft FILE size -1

soft CPU time -1

soft DATA segment -1

soft STACK size -1

新建目录:

mkdir /u01

更改目录属主:

chown oracle /u01

更改目录所属组:

chgrp dba /u01

vi /home/oracle/.profile

export LINK_CNTRL=L_PTHREADS_D7

export NLS_LANG=american_america.zhs16cgb231280

export ORACLE_OWNER=oracle

export ORACLE_TERM=vt100

#export ORACLE_TERM=xterm

export ORACLE_BASE=/oracle

export ORACLE_HOME=$ORACLE_BASE/product/8.0.5

export ORACLE_SID=ora8

export LD_LIBRARY_PATH=$/ORACLE_HOME/lib:$LD_LIBRARY_PATH

export LIBPATH=$ORACLE_HOME/lib:$LIBPATH

export ORA_NLS32=$ORACLE_HOME/ocommon/nls/admin/data

export PATH=$ORACLE_HOME/bin:$PATH

export TMPDIR=/tmp

export DISPLAY=172.100.1.2:0.0

set -o vi

umask 022

--Mount产品光盘

$ su root

-查看光驱

$ lsdev -Cc cdrom

# mkdir /cdrom

# chmod 777 /cdrom

# /etc/mount -rv cdrfs /dev/cd0 /cdrom

# exit

--运行rootpre.sh脚本。

$ su root

# cd /cdrom/orainst

# ./rootpre.sh

# exit

--运行安装程序

$ cd /cdrom/orainst

-图形

$ ./orainst /m

-字符

$ ./orainst /c

# cd $ORACLE_HOME/orainst

# ./root.sh

建立密码文件

cd $ORACLE_HOME/dbs

orapwd file=orapw$ORACLE_SID password=oracle

创建pfile文件

vi $ORACLE_HOME/dbs/init.ora

db_name=ORCL

db_files = 5000

control_files = /oradata/ctl1ORCL.ora

db_file_multiblock_read_count = 8

db_block_buffers = 100000

shared_pool_size = 115343360

log_checkpoint_interval = 10000

processes = 590

parallel_max_servers = 5

log_buffer = 163840

sequence_cache_entries = 100

sequence_cache_hash_buckets = 90

max_dump_file_size = 102400

global_names = TRUE

background_dump_dest=/oracle/trace

user_dump_dest=/oracle/trace

db_block_size = 4196

remote_login_passwordfile = shared

text_enable = TRUE

job_queue_processes = 2

job_queue_interval = 10

job_queue_keep_connections = false

distributed_lock_timeout = 300

distributed_transactions = 5

open_links = 4

2.操作8.0.5数据库

--结果测试与win,linux/unix使用svrmgrl命令

C:\oracle\ora80\BIN>SVRMGR30.EXE

Oracle Server Manager Release 3.0.5.0.0 - Production

(c) Copyright 1997, Oracle Corporation. All Rights Reserved.

Oracle8 Release 8.0.5.0.0 - Production

PL/SQL Release 8.0.5.0.0 - Production

SVRMGR> connect system/manager

Connected.

SVRMGR> select * from v$version;

BANNER

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

Oracle8 Release 8.0.5.0.0 - Production

PL/SQL Release 8.0.5.0.0 - Production

CORE Version 4.0.5.0.0 - Production

TNS for 32-bit Windows: Version 8.0.5.0.0 - Production

NLSRTL Version 3.3.2.0.0 - Production

5 rows selected.

SVRMGR> connect internal/oracle

Connected.

SVRMGR> archive log list

Database log mode No Archive Mode

Automatic archival Disabled

Archive destination %RDBMS80%\

Oldest online log sequence 3

Current log sequence 6

SVRMGR> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SVRMGR> startup mount;

ORACLE instance started.

Total System Global Area 15077376 bytes

Fixed Size 49152 bytes

Variable Size 12906496 bytes

Database Buffers 2048000 bytes

Redo Buffers 73728 bytes

Database mounted.

SVRMGR> alter database archivelog;

Statement processed.

SVRMGR> archive log list;

Database log mode Archive Mode

Automatic archival Enabled

Archive destination C:\oracle\ora80\RDBMS80\

Oldest online log sequence 3

Next log sequence to archive 6

Current log sequence 6

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【案例】Oracle数据恢复思路 Oracle FOR AIX

aix还原Oracle数据库,【案例】Oracle数据恢复思路 Oracle FOR AIX相关推荐

  1. 【Oracle数据库丢失表排查思路】

    Oracle数据库丢失表排查思路 说明:由于系统采用ID取模分表法进行Oracle数据存储,某日发现Oracle数据库中缺少对应的几张业务数据表,遂进行相关问题查询,简单记录一下排查思路: 由于我们代 ...

  2. linux数据库实例开机启动,Oracle数据库之Linux下实现Oracle数据库单实例开机自启动设置...

    本文主要向大家介绍了Oracle数据库之Linux下实现Oracle数据库单实例开机自启动设置,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 步骤思路: 1:查看ORACLE_ ...

  3. exp导oracle数据库,使用exp/imp 在oracle数据库间导数据

    最近工作需要将oracle数据库的表数据导出到另一个oracle数据库表,找到了oracle 自带的命令行,并记录下导数据过程. 导数据过程分以下几步: 假设源数据库为A,目标数据库为B 1.在B上通 ...

  4. oracle数据库异常---SP2-1503: 无法初始化 Oracle 调用界面 SP2-1503: 无法初始化 Oracle 问题的解决办法

    oracle数据库异常---SP2-1503: 无法初始化 Oracle 调用界面 SP2-1503: 无法初始化 Oracle 问题的解决办法 win7 下   cmd  运行   sqlplus  ...

  5. oracle数据库 cmd,cmd命令操作Oracle数据库

    //注意cmd命令执行的密码字符不能过于复杂 不能带有特殊符号 以免执行不通过 譬如有!@#¥%--&*之类的  所以在Oracle数据库设置密码是不要太复杂 /String Database ...

  6. Oracle数据库中的方案,学习Oracle数据库_理解Oracle数据库中的方案

    理解数据库.表空间.数据文件之间的关系. 每个表空间由一个或多个数据文件组成.数据文件用于在物理上存储表空间中所有逻辑结构的数据.表空间中数据文件的大小之和就是表空间的存储容量(图中系统表空间存储容量 ...

  7. 删除oracle数据库的三种方法,oracle数据库的删除方法详解

    oracle数据库的删除方法详解 1.图形界面删除 练习之前记得创建快照 执行命令之前要保证数据库属于open状态 SQL> alter database open; [oracle@local ...

  8. oracle删除表的一个字段的数据库,学会Oracle数据库删除表字段和Oracle数据库表增加字段方法...

    Oracle数据库添加字段的语法:alter table tablename add (column datatype [default  value][null/not null],-.); Ora ...

  9. Oracle数据库的并行查询,解决Oracle数据库并行查询出错的方法

    当我们在使用Oracle数据库的时候会发现Oracle数据库并行查询出错这一问题,那么你知道如何解决Oracle数据库并行查询出错吗?下面就是解决Oracle数据库并行查询出错的方法介绍. Oracl ...

最新文章

  1. 怎么把虚拟机清空内存_深入理解java虚拟机1——内存管理机制与回收机制
  2. 图像处理(十二)图像融合(1)Seamless cloning泊松克隆-Siggraph 2004
  3. Asp.net MVC Filter监控页面性能和运行时间
  4. linux文本工具总结,Linux 文本工具
  5. SAP UI5 Model destroy
  6. 深度学习之自编码器(1)自编码器原理
  7. 一步步学习SPD2010--第二章节--处理SP网站(6)---- 探索SP网站
  8. php置顶文章,php实现文章置顶功能的方法
  9. 为解决半导体供应短缺问题,全球半导体厂商迅速增产
  10. java线性表多个属性_顺序存储结构的线性表(java实现)
  11. 核方法 Kernel method
  12. 计算机二级都有题库的吗,全国计算机二级考试的题库每年都变吗?我能不能拿去年的未来教育的题库来做,还会有原题吗?急...
  13. html协议是一种用于什么的协议,FTP协议是一种用于( )的协议。
  14. 京东API接口:item_search - 按关键字搜索商品
  15. MB/T 2020/4/9-技术创新方法·概述
  16. python画生肖兔
  17. win7系统 无法安装.Net 4.7版本解决方案
  18. android串口获取电子秤数据,c# 打开电子秤串口并读取电子秤数据
  19. 设置键盘一键打开网易云音乐
  20. MATLAB机器人工具箱的安装与下载(基于已经安装了MATLAB软件)

热门文章

  1. 微信中分享html5网页sdk,微信SDK网页分享
  2. 揭开家乐福赚钱内幕----家乐福是洋超市里的狼!
  3. 囚徒健身 mobi 【分享】
  4. 如何正确选择客流统计系统
  5. Undefined subroutine main::floor called
  6. 不动产登记证识别API开发文档
  7. U盘安装centos出现dracut initqueue timeout
  8. Matlab:船舶航向舵数学模型构建
  9. 快递如何查物流,这几种方法都不错
  10. 牛逼吧,微信状态竟然也能赚钱