文章目录
一、表中字段因插入数据字段名过长,导致失败。
问题描述:
开发票需要上传附件。附件名称过长。
而当前表字段名的长度为 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';