oracle 生产技术支持常见问题及解决方法

  • Post author:
  • Post category:其他




一、表中字段因插入数据字段名过长,导致失败。


问题描述:


开发票需要上传附件。附件名称过长。

在这里插入图片描述

而当前表字段名的长度为 varchar2(100.这里的100指的是100个字节。

在这里插入图片描述


解决问题:



步骤一:

select * from V$NLS_PARAMETERS;

在这里插入图片描述


步骤二:


需要查询当前此表的数据量,看次字段是否有值。

在这里插入图片描述


步骤三:

alter table 表名 modify file_name VARCHAR2(1500);



二、Oracle flashback 功能


Flashback

技术是以

Undo segment

中的内容为基础的, 因此受限于

UNDO_RETENTON

参数。要使用flashback 的特性,必须启用自动撤销管理

表空间



Oracle

Flashback

是一种方便快捷的数据库恢复技术,它不使用备份文件,通过闪回日志可以使数据库恢复到过去的某个状态,当用户发生逻辑错误时(误删表数据、表、表空间等)需要快速恢复数据库,可以使用

Flashback

实现。



1-开启归档功能,使数据库处于归档模式下

  • 先关闭数据库:shutdown immediate
  • 启动到mount状态:startup mount
  • 开启归档功能:alter database archivelog;
  • 打开数据库:alter database open;



2-开启闪回flashback功能(归档下才可开启数据库闪回)

  • 查看flashback是否开启:select name,flashback_on from v$database;
  • 查看闪回恢复区及大小是否设置:show parameter db_recovery;(如果已设置,下面可以省略)

    1、先设置闪回恢复区的大小:alter system set db_recovery_file_dest_size=‘2G’;(这里系统默认也是2G,也未改)

    2、确定闪回恢复区的目录: how parameter db_recovery_file_dest;

    3、再设置闪回恢复区路径:alter system set db_recovery_file_dest=‘oracle/db_recovery_file_dest’;
  • 设置数据库回退的时间,默认1440分钟为一天时间:alter system set

    db_flashback_retention_target = 1440;
  • 先关闭数据库:shutdown immediate;
  • 启动到mount状态:startup mount;
  • 开启flashback功能:alter database flashback on;
  • 打开数据库:alter database open;



FLASH_BACK 实践

select 'FLASH_BACK',
       COMMISSION,
       COMMISSION_RATE,
       COMMISSION_RULE_FLG
from ORDER_COMMISSION_INFO AS OF TIMESTAMP to_timestamp('20210928 14:00:00', 'yyyymmdd hh24:mi:ss')
where ORDER_ID = 'xxx';



版权声明:本文为qq_40814565原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。