拓扑园

  • O&M
    • Universal部署
    • PHP+VUE+Laravel相关
  • Oracle性能优化
  • Oracle项目案例
    • Oracle近期项目案例(目录)
    • Oracle实战问题解析(目录)
    • Oracle数据库名变更流程(2种方式)
    • Oracle数据库目录更换流程(使用Oracle的clone工具)
    • Oracle数据库迁移方案(目录)
    • 标准化文档系列
  • Oracle基础知识
    • LLL的Oracle培训(分类)
    • LLL的docker培训(分类)
    • 标准化文档系列--(分类)
    • Oracle核心经典分析(分类)
    • 图灵小队----(分类并包含以下文章)
    • --MySQL8.0/Oracle/Memcached/Redis等安装配置于RHEL/OL6/7/8.X系列-运行环境最优配置
    • --PG安装配置于RHEL/9X系列-运行环境最优配置
    • --自动维护任务详解-开启、关闭信息统计收集(统计信息)
    • --图灵小队—Oracle/PostgreSQL下创建一个用户测试表(自行定义数据行)
    • --图灵小队-Oracle存储过程导出表的明细_UTL_FILE(文章)
    • --图灵小队-Oracle数据库删除/卸载操作指南(文章)
    • --图灵小队-Oracle常用性能查询SQL语句(文章)
    • --图灵小队-Oracle数据库上线前检查(文章)
    • --图灵小队-Oracle常用SQL语句(文章)
    • --图灵小队—Linux/Oracle脚本/MySQL合集(持续更新)
    • --图灵小队-Oracle技巧记录(文章)
    • ADG
    • RAC
    • ASM
    • OGG
    • RMAN
    • EXPDP/IMPDP
    • 工厂数据导入导出系列
  • MySQL
    • MySQL数据库规范
    • MySQL项目案例
    • MySQL安装配置
    • MYSQL集群项目
    • MySQL常见处理
    • MySQL-Sysbench专题
    • MySQL-Percona Toolkit专题
  • Linux
    • Shell编程
    • kubernetes
    • docker
    • Linux
    • PHP
    • Nginx
    • haproxy
    • mail
    • 网站
    • 域名
    • 网址收藏
  • 数据中心
    • 新框架系统集合
    • 工作文档
    • EBS数据文件扩容
    • VMware虚拟化
    • EBS系列
    • 大数据
    • SVN
    • zabbix
    • SAP
    • 备份相关
    • FC交换机
    • SVN
  • K-Studing
    • D8-Python学习
    • Oracle/MySQl等面试题
    • LG-MySQL
    • LG-Docker/K8S
    • LG-PostgreSQL
    • LG-ORACLE_BBED
    • LG-ORACLE
    • LG-Elasticsearch(ES)+ELK
    • Oracle-19C-OCP
    • WERN_ORACLE培训
    • redis数据库
    • Nginx培训学习系列
  • 其他
    • 外研英语4年级下册-听力
    • 影视系列
    • 如何使用iTunes软件通过抓包下载旧版本的ios的app
天高任鸟飞
Oracle/MySQL数据库恢复/数据迁移/生产规范报告技术交流:TEL:18562510581(微信同号);加微信入群
  1. 首页
  2. Oracle基础知识
  3. 标准化文档系列
  4. 正文

Oracle数据库测试标准化文档1——测试流程

2023年3月7日 1404点热度 0人点赞 0条评论

目录

  • 一、环境准备
    • 1、源库环境
    • 2、目标库环境
    • 3、迁移方法
    • 4、注意事项:
  • 二、数据库检查
    • 1、查看数据库数据文件,确保是空库
    • 2、查看数据库字符集,确保是utf8
    • 3、查看数据库备份文件
    • 4、给备份文件目录授权
  • 三、Linux目标数据库还原
    • 1、安装新的数据库,并且数据库名称要和源库的一致。
    • 2、对当前库的参数文件做备份(备份为pfile)
    • 3、因为是异机,从rman备份文件进行spfile恢复。
      • (1)先启动当前数据库到nomount状态
      • (2)利用spfile的备份文件,进行还原
      • (3) 编辑spfile.ora为pfile.ora(使用strings spfile.ora获取到内容);
    • 4、rman还原控制文件并mount
      • (1)还原控制文件
      • (2)把数据启动到mount状态,加载控制文件中的内容
    • 5、查看当前控制文件记录的内容
    • 6、加载备份文件,并核对,删除失效文件
      • (1)查看当前控制文件加载的备份片信息
      • (2)核对备份文件
      • (3)删除失效的备份文件
    • 7、注册备份文件(指向新的备份片路径)—如果目标库的备份目录和源库的备份文件目录一致,就无需进行注册了。
      • (1)注册备份文件
      • (2)查看重新加载的备份片信息
    • 8、还原数据库
      • (1)如果目标端文件路径没有更改,可以直接使用
      • (2)如果目标端数据文件路径有更改,可以使用newname方式更改
    • 9、还原归档日志(备份的归档日志也需要还原)——三种情况解决方法
      • (1)还原归档日志---全部还原(这个容易出现错误,可以使用squence方式还原)
      • (2)如果我们有03.09号的rman数据0级备份+archivelog备份,同时有03.10,03.11号的archivloge备份,我们可以直接把两天的归档备份注册,还原最新的归档日志
      • (3)如果我们使用3.09的rman备份数据+archivelog,但是控制文件是从3.17号恢复的,那么可能会存在一个问题。
    • 10、恢复数据库(这里是重点)
      • (1)使用using backup controlfile until cancel进行恢复
    • 11、打开数据库
      • (1)如果此处打开过程出现下列问题:
      • (2)如果此处打开过程出现下列问题
      • 方法2:重新恢复,然后再打开(应该会自动转到其他有效redolog下打开,可以尝试测试)
      • (3)如果此时在9和10中并没有任何归档日志进行恢复,可以使用隐藏参数,直接resetlogs方式(但容易丢数据,慎用):
    • 12、恢复数据库2(生产库最短时间迁移)
      • (1)接10上的最后归档,不进行数据库的打开
      • (2)将原库最新的redo数据进行归档(执行归档次数,比redo log的个数多一次)
      • (3)将源库的归档(从上次备份以来的所有归档拷贝到目标库
      • (4)利用recover database using backup controlfile until cancel进行追加归档,追加到最新
      • (5)将原库最新的redo数据进行归档,并关闭原数据库
      • (6)拷贝最新产生的归档日志和redolog到目标库
      • (8)使用resetlogs打开数据库
  • 三、数据库日志文件调整(如果需要调整)
    • 1、查看日志文件信息
    • 2、添加日志组和文件
    • 3、查看当前的状态
    • 4、删除组1,2,3,再创建1,2,3组
  • 四、创建临时文件(如果不存在临时文件)
    • 1、查看当前临时文件
    • 2、创建其他临时表空间,并设置为默认
    • 3、删除原来的临时表空间temp
    • 4、创建新的临时表空间temp,并设为默认
    • 5、删除temp2临时表空间
  • 五、升级数据字典
      • 1、通过 startup upgrade 启动实例
      • (1)停库
      • (2)启动到upgrage模式
    • 2、升级数据字典
    • 3、重启实例
  • 六、测试数据库
  • 七、如果使用非完全恢复模式(且使用隐藏参数进行强制启动数据库),一定要做这个测试
    • 1、查询所有表的数据量对比
    • 2、对索引进行分析(如果可以对所有索引对比最好)是否报错

一、环境准备

1、源库环境

操作系统:Redhat/Oracle/CentOS Linux 7.9
字 符 集:AL32UTF8
数据库版本:11.2.0.4.0
数据库安装目录:/oracle/app

2、目标库环境

操作系统:Redhat/Oracle/CentOS Linux 7.9
字 符 集:AL32UTF8
数据库版本:11.2.0.4.0
数据库安装目录:/u01/app

3、迁移方法

源库拷贝RMAN备份,新库进行RMAN还原

4、注意事项:

目标库和源库的字符集一定要一致,否则会出现乱码。目标库在dbca的时候,要根据源库的字符集设置。

二、数据库检查

1、查看数据库数据文件,确保是空库

SQL> set line 300
SQL> col file_name for a60
SQL> select file_name,tablespace_name,bytes from dba_data_files;

2、查看数据库字符集,确保是utf8

select userenv('language') from dual;

3、查看数据库备份文件

4、给备份文件目录授权

[root@qzmes backup]# chown oracle:oinstall -R /backup/

三、Linux目标数据库还原

1、安装新的数据库,并且数据库名称要和源库的一致。

我们此处使用和原库一致的实例名:mesorcl。

【如果新的数据库名和源数据库名不一致,后续无法正常还原。我们可以用如下思路

①配置环境变量ORACLE_SID=mesorcl和源库一致
②生效环境变量,并登录sqlplus / as sysdba
③手动配置DB_NAME到pfile,和源库一致
④启动到nomount状态(startup pfile='pfile文件.ora' nomoutn)
⑤还原源库参数文件到当前目标库
  如果在备份中可以直接读取备份的参数文件,③④⑤这三步可以不用做
⑥关闭数据库,根据当前目标库环境,配置编辑源库参数文件(如sga,pga,路径等),并startup nomount;
⑦还原备份的控制文件【需要考虑原库的备份路径在当前环境中是否存在,如果不存在,需要重新注册备份文件路径,见下面案例】
⑧还原备份的归档日志文件【需要考虑原库的备份路径在当前环境中是否存在,如果不存在,需要重新注册备份文件路径,见下面案例】
⑨还原数据文件【需要考虑原库的数据文件路径和当前环境的数据文件路径是否一致,如果不一致需要setnewname,见下面案例】
⑩恢复数据文件(利用还原的归档日志)并以resetlogs打开数据库。

】

2、对当前库的参数文件做备份(备份为pfile)

SQL> create pfile='/oracle/pfile.ora.bak' from spfile;

3、因为是异机,从rman备份文件进行spfile恢复。

(1)先启动当前数据库到nomount状态

SQL> startup nomount;

(2)利用spfile的备份文件,进行还原

RMAN> set decryption identified by 'mesorcl';   --如果有密码,此处需要定义密码,后续可自行解密:
RMAN> restore spfile to '/oracle/spfile.ora' from '/oracle/rman/20221019/spfile_20_1_1118505194_1.spf';

(3) 编辑spfile.ora为pfile.ora(使用strings spfile.ora获取到内容);

SQL> startup pfile='/oracle/pfile.ora' nomount;

  --注意:目录路径,源数据库为/oracle下,目标数据库在/u01下,则pfile.ora文件中的相关目录需要进行修改。

4、rman还原控制文件并mount

(1)还原控制文件

RMAN>set decryption identified by 'mesorcl';  --如果备份中进行了加密,我们使用密码加密,进行解密即可,否则会报:ORA-28365: wallet is not open
RMAN> restore controlfile from '/oracle/rman/20221019/cntl_21_1_1118505195_1.ctl';

  --注意:当前进入的sqlplus必须是登录到和控制文件中记录的db_name一致的实例名称,才可以正常还原。

(2)把数据启动到mount状态,加载控制文件中的内容

SQL> alter database mount;

5、查看当前控制文件记录的内容

SQL> set line 300
SQL> col name for a60
SQL> select file#,name,status from v$datafile;

  --注意:查看控制文件,这个文件是记录的源库的数据文件的信息;mount后,v$datafile查出来的是源库的数据文件信息。

6、加载备份文件,并核对,删除失效文件

(1)查看当前控制文件加载的备份片信息

RMAN> list backup;

(2)核对备份文件

RMAN> crosscheck backup;

CROSSCHECK 命令用于核对备份文件,以确保 RMAN 资料库与备份文件保持同步。
当执行该命令时,如果 RMAN 资料库记录的状态与实际备份文件不匹配,则会更新资料库里的状态使其与实际备份文件状态一致;
若备份文件处于 expired 状态,那么说明该备份已失效,可以删除。

(3)删除失效的备份文件

RMAN> delete expired backup;

7、注册备份文件(指向新的备份片路径)—如果目标库的备份目录和源库的备份文件目录一致,就无需进行注册了。

(1)注册备份文件

catalog start with '/backup/rman/backup/';  -- 注意此处的目录

  --注意:如果还原过程中,备份目录有其他非datafile,archivelog,controlfile的备份文件,可能会出现报错,无需理会。

(2)查看重新加载的备份片信息

RMAN> list backup;

8、还原数据库

(1)如果目标端文件路径没有更改,可以直接使用

RMAN>set decryption identified by 'mesorcl';  --如果有加密,需要先解密
RMAN>run{
allocate channel d1 type disk; 
allocate channel d2 type disk;
restore database;
release channel d1; 
release channel d2; 
}

(2)如果目标端数据文件路径有更改,可以使用newname方式更改

RMAN>set decryption identified by 'mesorcl';     --如果有加密,需要先解密

RMAN>run{
allocate channel d1 type disk;
allocate channel d2 type disk;
set newname for datafile 1 to '/oracle/app/oracle/oradata/mesorcl/system01.dbf';
set newname for datafile 2 to '/oracle/app/oracle/oradata/mesorcl/sysaux01.dbf';
set newname for datafile 3 to '/oracle/app/oracle/oradata/mesorcl/undotbs01.dbf';
set newname for datafile 4 to '/oracle/app/oracle/oradata/mesorcl/users01.dbf';
set newname for datafile 5 to '/oracle/app/oracle/oradata/mesorcl/test01.dbf';
restore database;
switch datafile all;
release channel d1;
release channel d2;
}

--注意:有可能会报错:
RMAN-03002: failure of restore command at 09/03/2022 15:39:56
RMAN-06026: some targets not found - aborting restore
RMAN-06023: no backup or copy of datafile 4 found to restore
RMAN-06023: no backup or copy of datafile 3 found to restore
RMAN-06023: no backup or copy of datafile 2 found to restore
RMAN-06023: no backup or copy of datafile 1 found to restore

--分析1:这是incarnation的问题,重置后即可。

RMAN> list incarnation;

List of Database Incarnations
DB Key Inc Key  DB Name     DB ID         STATUS    Reset SCN       Reset Time
------- ------- -------- ---------------- ------- -------------- ----------------------
1         1      MESORCL 3048150118       PARENT     1            2013-10-09 18:23:38
2         2      MESORCL 3048150118       PARENT   897124         2022-09-02 09:20:40
3         3      MESORCL 3048150118       CURRENT  948244         2022-09-03 10:20:17

RMAN> reset database to incarnation 2;

database reset to incarnation 2
RMAN> list incarnation;

--分析2:也可能是加载的备份是1级或1c级备份,需要将全备备份或0级备份加载注册。

9、还原归档日志(备份的归档日志也需要还原)——三种情况解决方法

(1)还原归档日志---全部还原(这个容易出现错误,可以使用squence方式还原)

RMAN>set decryption identified by 'mesorcl';   --如果备份过程有加密,需要先解密 
RMAN> run{
 set archivelog destination to '/oracle/rman/archivelog';
 restore archivelog from sequence <序列号>;
}

<序列号>:从list backup中查询到的最开始点;根据list backup中的归档日志的开始点还原,备份的归档日志是连续的,则可以还原所有的archivelog文件。

--注意:如果 restore archivelog 过程报错:

报RMAN-20242错误:
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 09/22/2016 10:55:10
RMAN-06004: Oracle error from recovery catalog database: RMAN-20242: specification does not match any archived log in the repository
则使用如下方式:incarnation all

RMAN> run{
 set archivelog destination to '/oracle/rman/archivelog';
 restore archivelog from sequence <序列号> incarnation all;
}

(2)如果我们有03.09号的rman数据0级备份+archivelog备份,同时有03.10,03.11号的archivloge备份,我们可以直接把两天的归档备份注册,还原最新的归档日志

--注册0310,0311的归档日志备份信息到控制文件

catalog backuppiece '/oracle/20230310/archivelog/arch1c_MESORCLx_al1mo4ir_1_1.arc';
catalog backuppiece '/oracle/20230310/archivelog/arch1c_MESORCLx_am1mo4ir_1_1.arc';
catalog backuppiece '/oracle/20230310/archivelog/arch1c_MESORCLx_an1mo4ir_1_1.arc';
catalog backuppiece '/oracle/20230310/archivelog/arch1_MESORCLx_aa1mlg6s_1_1.arc';
catalog backuppiece '/oracle/20230310/archivelog/arch1_MESORCLx_ab1mlg6s_1_1.arc';
catalog backuppiece '/oracle/20230310/archivelog/arch1_MESORCLx_ac1mlg6s_1_1.arc';
catalog backuppiece '/oracle/20230310/archivelog/arch1_MESORCLx_ad1mlg6s_1_1.arc';
catalog backuppiece '/oracle/20230311/archivelog/arch1_MESORCLx_b81mtdar_1_1.arc';
catalog backuppiece '/oracle/20230311/archivelog/arch1_MESORCLx_b91mtdar_1_1.arc';
catalog backuppiece '/oracle/20230311/archivelog/arch1_MESORCLx_ba1mtdar_1_1.arc';
catalog backuppiece '/oracle/20230311/archivelog/arch1_MESORCLx_bb1mtdar_1_1.arc';

--再进行还原归档日志到/oracle/rman/archivelog'

RMAN> run{
 set archivelog destination to '/oracle/rman/archivelog';
 restore archivelog from sequence <序列号> incarnation all; 
}

(3)如果我们使用3.09的rman备份数据+archivelog,但是控制文件是从3.17号恢复的,那么可能会存在一个问题。

因为控制文件比较新,所以,还原时,默认的sequence比较新,我们无法通过如下方式进行还原归档;

RMAN>catalog backuppiece '/oracle/20230309/archivelog/arch1c_MESORCLx_al1mo4ir_1_1.arc'; 
RMAN>list backup; (虽然都已经加载到list中,但是下面几种都不好用)
RMAN> restore archivelog from sequence <开始的序列号>;
RMAN> restore archivelog from sequence <结束的序列号>;
RMAN> restore archivelog all <结束的序列号>;

--但我们可以用的方式是between,可以对某个或某几个归档的备份之间的归档进行还原。

RMAN> restore archivelog sequence between 48489 and 48511;

10、恢复数据库(这里是重点)

(1)使用using backup controlfile until cancel进行恢复

这里提示要哪个序列的归档,就到上述还原的归档目录中去查找。

【
 注意:在rman不完全恢复中,restore后,
 必须要执行recover database using backup controlfile  until cancel,
 即使只有一个archivelog或redolog日志,也必须要恢复,
 否则无法resetlogs方式open数据库,
 即使使用隐藏参数强制拉起数据库,也可能会出现丢失数据的情况。
】
SQL> recover database using backup controlfile until cancel;
ORA-00279: change 502875522 generated at 10/18/2022 02:00:04 needed for thread 1
ORA-00289: suggestion : /oracle/rman/o1_mf_1_21728_knv744j5_.arc
ORA-00280: change 502875522 for thread 1 is in sequence #21728
14:12:20 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/oracle/rman/archivelog/1_21728_1081589810.dbf
ORA-00279: change 502890274 generated at 10/18/2022 02:18:44 needed for thread 1
ORA-00289: suggestion : /oracle/rman/o1_mf_1_21729_knv9ygjk_.arc
ORA-00280: change 502890274 for thread 1 is in sequence #21729
ORA-00278: log file '/oracle/rman/archivelog/1_21728_1081589810.dbf' no longer needed for this recovery
14:22:07 Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel

11、打开数据库

此时可以通过resetlogs方式打开数据库。

SQL>alter database open resetlogs;

Database altered

(1)如果此处打开过程出现下列问题:

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-00392: log 2 of thread 1 is being cleared, operation not allowed
ORA-00312: online log 2 thread 1: '/oracle/app/oracle/oradata/mesorcl/redo02a.log'
ORA-00312: online log 2 thread 1: '/oracle/app/oracle/oradata/mesorcl/redo02b.log'

--解决方法:

清理文件,并重建,这种情况无法drop掉;如果重建过程提示目录不存在,创建目录即可。

alter database clear logfile group 2;

(2)如果此处打开过程出现下列问题

说明在打开过程并没有此目录,并且当前redo01.log,redo02.log,redo03.log等都记录在源库的目录下。

SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-00349: failure obtaining block size for
'/data/u01/app/oracle/oradata/KSSYORCLPRD/onlinelog/red01.log'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 9

--两种方法,首先需要重建其他的redolog

SQL> alter database drop logfile group 2;
SQL> alter database add logfile group 2 '/oracle/app/oracle/oradata/KSSYORCLPRD/redo02.log' size 50m;
SQL> alter database drop logfile group 3;
SQL> alter database add logfile group 3 '/oracle/app/oracle/oradata/KSSYORCLPRD/redo03.log' size 50m;
SQL> alter database drop logfile group 4;
SQL> alter database add logfile group 4 '/oracle/app/oracle/oradata/KSSYORCLPRD/redo04.log' size 50m;
SQL> alter database drop logfile group 5;
SQL> alter database add logfile group 5 '/oracle/app/oracle/oradata/KSSYORCLPRD/redo04.log' size 50m;

方法1:因为group 1是current状态,

创建目录/data/u01/app/oracle/oradata/KSSYORCLPRD/onlinelog/或创建/data/u01/app/oracle/oradata/KSSYORCLPRD/onlinelog/redo01.log
再进行清理删除
SQL> alter database clear logfile group 1;
SQL> alter database drop logfile group 1;
再打开数据库
SQL> alter database open resetlogs;

方法2:重新恢复,然后再打开(应该会自动转到其他有效redolog下打开,可以尝试测试)

SYS@ test11g>  recover database until cancel;
SYS@ test11g>  alter database open resetlogs;

(3)如果此时在9和10中并没有任何归档日志进行恢复,可以使用隐藏参数,直接resetlogs方式(但容易丢数据,慎用):

SQL> alter system set "_allow_resetlogs_corruption"=true scope=spfile;

--修改完参数之后重启数据库到 mount 状态

SQL> shutdown immediate 
SQL> startup;
ORA-01589: must use RESETLOGS or NORESETLOGS optionfor database open

--以 resetlogs 模式启动数据库

SQL> alter database open resetlogs;
SQL> alter system set"_allow_resetlogs_corruption"=FALSE scope=spfile;

--让参数关闭生效,再次启动数据库(强制启动)

SQL> shutdown immediate;
SQL> startup force;
ORACLE instance started.

--检查_allow_resetlogs_corruption 隐含参数是否关闭,确定已经关闭

SQL> show parameter _allow_resetlogs_corruption

12、恢复数据库2(生产库最短时间迁移)

这种方式接10,我们可以进行数据库迁移,使用最短的时间进行迁移,方法步骤:

(1)接10上的最后归档,不进行数据库的打开

(2)将原库最新的redo数据进行归档(执行归档次数,比redo log的个数多一次)

SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;
SQL> alter system switch logfile;

(3)将源库的归档(从上次备份以来的所有归档拷贝到目标库

[oracle@qdmes219:/home/oracle]$scp -r /oracle/archivelog/MESORCL/archivelog/ oracle@192.168.20.220:/backup/rman/backup

(4)利用recover database using backup controlfile until cancel进行追加归档,追加到最新

(5)将原库最新的redo数据进行归档,并关闭原数据库

(6)拷贝最新产生的归档日志和redolog到目标库

归档日志拷贝到归档目录

redolog日志拷贝到数据目录

(7)利用recover database using backup controlfile until cancel进行追加归档,追加到最新

(8)使用resetlogs打开数据库

SQL> alter database open resetlogs;

三、数据库日志文件调整(如果需要调整)

1、查看日志文件信息

SQL> col member for a100
SQL> select a.group#,a.thread#,a.bytes,a.status,b.member from v$log a,v$logfile b where a.group#=b.group#;

GROUP#       THREAD#     BYTES        STATUS                     MEMBER
---------- ---------- ---------- ---------------- ----------------------------------------------------------------------------------------------------
3              1       52428800       UNUSED        /oracle/app/oracle/product/11.2.0/db_1/dbs/D:APPADMINISTRATORORADATAMESORCLREDO03.LOG
2              1       52428800       UNUSED        /oracle/app/oracle/product/11.2.0/db_1/dbs/D:APPADMINISTRATORORADATAMESORCLREDO02.LOG
1              1       52428800       CURRENT       /oracle/app/oracle/product/11.2.0/db_1/dbs/D:APPADMINISTRATORORADATAMESORCLREDO01.LOG

2、添加日志组和文件

alter database add logfile group 5 '/oracle/app/oracle/oradata/mesorcl/redo05.log' size 50m;
alter database add logfile group 6 '/oracle/app/oracle/oradata/mesorcl/redo06.log' size 50m;
alter database add logfile group 7 '/oracle/app/oracle/oradata/mesorcl/redo07.log' size 50m;

3、查看当前的状态

SQL> select a.group#,a.thread#,a.bytes,a.status,b.member from v$log a,v$logfile b where a.group#=b.group#;

GROUP#       THREAD#     BYTES        STATUS                       MEMBER
---------- ---------- ---------- ---------------- ----------------------------------------------------------------------------------------------------
3             1        52428800        UNUSED     /oracle/app/oracle/product/11.2.0/db_1/dbs/D:APPADMINISTRATORORADATAMESORCLREDO03.LOG
2             1        52428800        UNUSED     /oracle/app/oracle/product/11.2.0/db_1/dbs/D:APPADMINISTRATORORADATAMESORCLREDO02.LOG
1             1        52428800        CURRENT    /oracle/app/oracle/product/11.2.0/db_1/dbs/D:APPADMINISTRATORORADATAMESORCLREDO01.LOG
5             1        52428800        UNUSED     /oracle/app/oracle/oradata/mesorcl/redo05.log
6             1        52428800        UNUSED     /oracle/app/oracle/oradata/mesorcl/redo06.log
7             1        52428800        UNUSED     /oracle/app/oracle/oradata/mesorcl/redo07.log

4、删除组1,2,3,再创建1,2,3组

--利用语句切换删除

SQL> alter system switch logfile;
SQL> alter system checkpoint;
SQL> alter database drop logfile group 2;
SQL> alter database drop logfile group 3;
SQL> alter system switch logfile;
SQL> alter system checkpoint;
SQL> alter database drop logfile group 1;

--物理删除redo01.log,redo02.log,redo03.log

alter database add logfile group 1 '/oracle/app/oracle/oradata/mesorcl/redo01.log' size 50m; 
alter database add logfile group 2 '/oracle/app/oracle/oradata/mesorcl/redo02.log' size 50m; 
alter database add logfile group 3 '/oracle/app/oracle/oradata/mesorcl/redo03.log' size 50m;

四、创建临时文件(如果不存在临时文件)

1、查看当前临时文件

SQL> select * from v$tempfile;
SQL> select * from dba_temp_files;
SQL> select file_name,file_id,tablespace_name,bytes,status from dba_temp_files;

2、创建其他临时表空间,并设置为默认

SQL> create temporary tablespace temp2 tempfile '/oracle/app/oracle/oradata/mesorcl/temp02.dbf' size 20m autoextend on;
SQL> alter database default temporary tablespace temp2;

3、删除原来的临时表空间temp

SQL> drop tablespace temp including contents and datafiles;
[oracle@qdmes219:/oracle/app/oracle/oradata/mesorcl]$rm -rf temp01.dbf

4、创建新的临时表空间temp,并设为默认

SQL> create temporary tablespace temp tempfile '/oracle/app/oracle/oradata/mesorcl/temp01.dbf' size 20m autoextend on;
SQL> alter database default temporary tablespace temp;

5、删除temp2临时表空间

SQL> drop tablespace temp2 including contents and datafiles;

如果此时卡住,则退出SQL,重新执行删除操作即可,因为当前SQL可能在使用这个临时表空间。

五、升级数据字典

1、通过 startup upgrade 启动实例

(1)停库

SQL> shutdown immediate

(2)启动到upgrage模式

SQL> startup upgrade;

2、升级数据字典

大约5-10分钟

SQL> @$ORACLE_HOME/rdbms/admin/catupgrd.sql
...
Final Actions
. 00:00:00
Total Upgrade Time: 00:04:26

PL/SQL procedure successfully completed.

3、重启实例

--停库

SQL> shutdown immediate

--启动到正常模式

SQL> startup;

六、测试数据库

查询表数据、进行日志切换等操作。

 

select B.* from (select to_char(DATETIME_CREATED,'YYYY-MM-DD hh24:mi:ss'),DATETIME_ACTUAL_END from mesprd.sfc_mo order by DATETIME_CREATED desc) B where rownum<3;

七、如果使用非完全恢复模式(且使用隐藏参数进行强制启动数据库),一定要做这个测试

1、查询所有表的数据量对比

SQL>select * from test1 union all
select * from test2 union all
select * from test3;

2、对索引进行分析(如果可以对所有索引对比最好)是否报错

SQL> analyze index mes_prd.IX_NEIP_TASK_CBANHAO validate structure online;
SQL> analyze index mes_prd.PK_NEIP_TASK_ID validate structure online;
SQL> analyze index mes_prd.IX_NEIP_LOG_CMSGID validate structure online;

 

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2023年9月27日

admin

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

COPYRIGHT © 2022 拓扑园. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鲁ICP备2021020523号

鲁ICP备2021020523号