【YashanDB数据库】Yashandb表闪回业务表实践

简介: Yashandb表闪回业务表实践

数据误删除
DELETE 操作闪回
示例(HEAP表)

基于闪回查询(建议):

select * from sales.branches1;
BRANCH_NO BRANCH_NAME AREA_NO ADDRESS EMPLOYEE_COUNT


0001 深圳 40
0101 上海 01 上海市静安区
0102 南京 01 City of Nanjing 70
0103 福州 01
0104 厦门 01 Xiamen
0401 北京 04
0402 天津 04 10
0403 大连 04 大连市 30
0404 沈阳 04
0201 成都 02
0501 武汉 30
0405 贵州 04 Guizhou

12 rows fetched.

delete sales.branches1 where BRANCH_NO = '0405' and BRANCH_NAME ='贵州';
commit;

SQL> SQL> select systimestamp from dual;

SYSTIMESTAMP

2024-05-11 14:03:11.193397

1 row fetched.

insert into sales.branches1 values('0406','江西',4,'JiangXi',50);
commit;

SQL> select systimestamp from dual;

SYSTIMESTAMP

2024-05-11 14:04:46.152775

SQL> select * from sales.branches1 as of TIMESTAMP TIMESTAMP('2024-05-11 14:03:00.00000');

BRANCH_NO BRANCH_NAME AREA_NO ADDRESS EMPLOYEE_COUNT


0001 深圳 40
0101 上海 01 上海市静安区
0102 南京 01 City of Nanjing 70
0103 福州 01
0104 厦门 01 Xiamen
0401 北京 04
0402 天津 04 10
0403 大连 04 大连市 30
0404 沈阳 04
0201 成都 02
0501 武汉 30
0405 贵州 04 Guizhou

12 rows fetched.

create table sales.branches1_1403 as select * from sales.branches1 as of TIMESTAMP TIMESTAMP('2024-05-11 14:03:00.00000');

Succeed.

SQL> select * from sales.branches1_1403;

BRANCH_NO BRANCH_NAME AREA_NO ADDRESS EMPLOYEE_COUNT


0001 深圳 40
0101 上海 01 上海市静安区
0102 南京 01 City of Nanjing 70
0103 福州 01
0104 厦门 01 Xiamen
0401 北京 04
0402 天津 04 10
0403 大连 04 大连市 30
0404 沈阳 04
0201 成都 02
0501 武汉 30
0405 贵州 04 Guizhou

12 rows fetched.

create table sales.branches1_1405 as select * from sales.branches1 as of TIMESTAMP TIMESTAMP('2024-05-11 14:05:00.00000');

SQL> select * from sales.branches1_1405 ;

BRANCH_NO BRANCH_NAME AREA_NO ADDRESS EMPLOYEE_COUNT


0001 深圳 40
0101 上海 01 上海市静安区
0102 南京 01 City of Nanjing 70
0103 福州 01
0104 厦门 01 Xiamen
0401 北京 04
0402 天津 04 10
0403 大连 04 大连市 30
0404 沈阳 04
0201 成都 02
0501 武汉 30
0406 江西 4 JiangXi 50

12 rows fetched.

--将需要的数据整合到业务表中

create table sales.branches_bak as select * from sales.branches1_1403;

insert into sales.branches_bak select * from sales.branches1_1405 where BRANCH_NO ='0406';

SQL> ALTER TABLE SALES.BRANCHES RENAME TO BRANCHES_ORG;

Succeed.

SQL> ALTER TABLE SALES.BRANCHES_BAK RENAME TO BRANCHES;

Succeed.

SQL> SELECT * FROM SALES.BRANCHES;

BRANCH_NO BRANCH_NAME AREA_NO ADDRESS EMPLOYEE_COUNT


0001 深圳 40
0101 上海 01 上海市静安区
0102 南京 01 City of Nanjing 70
0103 福州 01
0104 厦门 01 Xiamen
0401 北京 04
0402 天津 04 10
0403 大连 04 大连市 30
0404 沈阳 04
0201 成都 02
0501 武汉 30
0405 贵州 04 Guizhou
0406 江西 4 JiangXi 50

13 rows fetched.
基于闪回+闪回查询

SQL> SELECT * FROM SALES.BRANCHES;

BRANCH_NO BRANCH_NAME AREA_NO ADDRESS EMPLOYEE_COUNT


0001 深圳 40
0101 上海 01 上海市静安区
0102 南京 01 City of Nanjing 70
0103 福州 01
0104 厦门 01 Xiamen
0401 北京 04
0402 天津 04 10
0403 大连 04 大连市 30
0404 沈阳 04
0201 成都 02
0501 武汉 30
0405 贵州 04 Guizhou

12 rows fetched.

delete sales.branches where BRANCH_NO = '0405' and BRANCH_NAME ='贵州';
commit;

delete sales.branches where BRANCH_NO = '0405' and BRANCH_NAME ='贵州';
commit;
SQL>
1 row affected.

SQL>
Succeed.

SQL>
SQL> SELECT * FROM SALES.BRANCHES;

BRANCH_NO BRANCH_NAME AREA_NO ADDRESS EMPLOYEE_COUNT


0001 深圳 40
0101 上海 01 上海市静安区
0102 南京 01 City of Nanjing 70
0103 福州 01
0104 厦门 01 Xiamen
0401 北京 04
0402 天津 04 10
0403 大连 04 大连市 30
0404 沈阳 04
0201 成都 02
0501 武汉 30

11 rows fetched.

SQL> select systimestamp from dual;

SYSTIMESTAMP

2024-05-11 14:23:32.963164

1 row fetched.

insert into sales.branches values('0406','江西',4,'JiangXi',50);

select * from sales.branches ;

BRANCH_NO BRANCH_NAME AREA_NO ADDRESS EMPLOYEE_COUNT


0001 深圳 40
0101 上海 01 上海市静安区
0102 南京 01 City of Nanjing 70
0103 福州 01
0104 厦门 01 Xiamen
0401 北京 04
0402 天津 04 10
0403 大连 04 大连市 30
0404 沈阳 04
0201 成都 02
0501 武汉 30
0406 江西 4 JiangXi 50

12 rows fetched.

SQL> select * from sales.branches as of TIMESTAMP TIMESTAMP('2024-05-11 14:22:32.00000');

BRANCH_NO BRANCH_NAME AREA_NO ADDRESS EMPLOYEE_COUNT


0001 深圳 40
0101 上海 01 上海市静安区
0102 南京 01 City of Nanjing 70
0103 福州 01
0104 厦门 01 Xiamen
0401 北京 04
0402 天津 04 10
0403 大连 04 大连市 30
0404 沈阳 04
0201 成都 02
0501 武汉 30
0405 贵州 04 Guizhou

12 rows fetched.

FLASHBACK TABLE sales.branches TO TIMESTAMP TIMESTAMP('2024-05-11 14:22:32.00000');

CREATE TABLE SALES.branches_1430 as select * from sales.branches as of TIMESTAMP TIMESTAMP('2024-05-11 14:30:11.00000');

SQL> insert into sales.branches select * from SALES.branches_1430 where branch_no='0406';

1 row affected.

SQL> commit;

Succeed.

SQL> select * from sales.branches;

BRANCH_NO BRANCH_NAME AREA_NO ADDRESS EMPLOYEE_COUNT


0001 深圳 40
0101 上海 01 上海市静安区
0102 南京 01 City of Nanjing 70
0103 福州 01
0104 厦门 01 Xiamen
0401 北京 04
0402 天津 04 10
0403 大连 04 大连市 30
0404 沈阳 04
0201 成都 02
0501 武汉 30
0406 江西 4 JiangXi 50
0405 贵州 04 Guizhou

13 rows fetched.
DROP 操作闪回
基于闪回查询:

ALTER SYSTEM SET RECYCLEBIN_ENABLED=ON;DROP TABLE finance_info;DROP TABLE orders_info;DROP TABLE sales_info;DROP TABLE employees;-- 1.查询回收站是否存在finance_info表SELECT original_name,object_name FROM DBA_RECYCLEBIN
WHERE original_name IN ('FINANCE_INFO','ORDERS_INFO','SALES_INFO','EMPLOYEES');
ORIGINAL_NAME OBJECT_NAME


SALES_INFO BIN$2393
ORDERS_INFO BIN$2389
EMPLOYEES BIN$2385
FINANCE_INFO BIN$2408-- 2.表结构及表数据闪回
FLASHBACK TABLE "BIN$2393" TO BEFORE DROP;-- 或使用表的原始名称进行闪回
FLASHBACK TABLE finance_info TO BEFORE DROP;-- 或通过RENAME TO命令指定表的新名称
FLASHBACK TABLE employees TO BEFORE DROP RENAME TO employees_recycle;-- 3.验证相关对象是否保留系统生成的回收站名称,若名称未恢复,请使用ALTER INDEX语句手动修改SELECT INDEX_NAME
FROM USER_INDEXES
WHERE TABLE_NAME = 'FINANCE_INFO';

INDEX_NAME

IDX_FINANCE_INFO_1
TRUNCATE 操作闪回
ALTER SYSTEM SET RECYCLEBIN_ENABLED=ON;TRUNCATE TABLE product;-- 1.查询回收站是否存在product表SELECT original_name,object_name FROM DBA_RECYCLEBIN WHERE original_name = 'PRODUCT';
ORIGINAL_NAME OBJECT_NAME


PRODUCT PRODUCT

-- 2.表数据闪回
FLASHBACK TABLE product TO BEFORE TRUNCATE;-- 3.验证相关对象是否保留系统生成的回收站名称,若名称未恢复,请使用ALTER INDEX语句手动修改SELECT INDEX_NAME
FROM USER_INDEXES
WHERE TABLE_NAME = 'PRODUCT';

INDEX_NAME

SYS_C_133

相关文章
|
6月前
|
存储 人工智能 NoSQL
AI大模型应用实践 八:如何通过RAG数据库实现大模型的私有化定制与优化
RAG技术通过融合外部知识库与大模型,实现知识动态更新与私有化定制,解决大模型知识固化、幻觉及数据安全难题。本文详解RAG原理、数据库选型(向量库、图库、知识图谱、混合架构)及应用场景,助力企业高效构建安全、可解释的智能系统。
|
运维 监控 数据可视化
一文拆解 YashanDB Cloud Manager,数据库运维原来还能这么“智能”!
传统数据库运维依赖人工,耗时耗力还易出错。YashanDB Cloud Manager(YCM)作为“智能运维管家”,实现主动、智能、可视化的运维体验。它提供实时资源监控、智能告警系统、自动巡检机制、高可用架构支持和强大的权限管理功能,帮助用户统一管理多实例与集群,减少人工干预,构建现代化数据库运维体系,让企业高效又安心地运行数据库服务。
|
SQL Oracle 关系型数据库
用 YashanDB Migration Platform,数据库迁移不再是“高风险动作”
数据库迁移一直是企业信息化中的难题,耗时长、风险高。YashanDB Migration Platform(YMP)提供一站式解决方案,涵盖评估、改写、迁移与校验全流程。其核心能力包括SQL自动适配、智能对象迁移、高性能数据通道及数据对比校验,显著降低人力成本与业务风险。适合从Oracle、MySQL等迁移到YashanDB的企业,以及需异构整合或国产化替代的集团、政府和国企项目。YMP不仅是工具,更是推动数据库国产化的关键平台。
|
安全 Linux 网络安全
YashanDB数据库服务端SSL连接配置
YashanDB支持通过SSL连接确保数据传输安全,需在服务端生成根证书、服务器证书及DH文件,并将根证书提供给客户端以完成身份验证。服务端配置包括使用OpenSSL工具生成证书、设置SSL参数并重启数据库;客户端则需下载根证书并正确配置环境变量与`yasc_env.ini`文件。注意:启用SSL后,所有客户端必须持有根证书才能连接,且SSL与密码认证独立运行。
|
7月前
|
存储 弹性计算 Cloud Native
云原生数据库的演进与应用实践
随着企业业务扩展,传统数据库难以应对高并发与弹性需求。云原生数据库应运而生,具备计算存储分离、弹性伸缩、高可用等核心特性,广泛应用于电商、金融、物联网等场景。阿里云PolarDB、Lindorm等产品已形成完善生态,助力企业高效处理数据。未来,AI驱动、Serverless与多云兼容将推动其进一步发展。
379 8
|
9月前
|
人工智能 运维 数据挖掘
瑶池数据库Data+AI驱动的全栈智能实践开放日回顾
阿里云瑶池数据库重磅推出“Data+AI能力家族”,包括DTS AI数据准备、Data Agent系列智能体及DMS MCP统一数据访问服务,重构数据与AI协同边界。通过智能化工具链,覆盖数据全生命周期,提升企业数据开发、分析、治理与运维效率,降低技术门槛,激活数据资产价值,助力企业迈向全栈智能新时代。
|
9月前
|
Oracle 关系型数据库 数据库
数据库闪回失败怎么办?ORA-38757 修复全攻略
本文详解Oracle数据库恢复过程中常见的ORA-38757错误,分析其产生原因,并提供六步解决方案,帮助用户正确执行FLASHBACK操作,顺利完成数据库闪回。内容涵盖状态检查、关闭与挂载、闪回日志配置及关键操作命令,适合DBA和开发人员参考学习。
326 0
|
10月前
|
人工智能 运维 数据挖掘
瑶池数据库开放日:全新发布Data+AI能力家族,赋能企业全栈智能实践
近日,阿里云瑶池数据库生态工具产品重磅升级,推出“Data+AI能力家族”,并举办了为期3天的全栈智能实践开放日活动。发布会上首次公开了 “Data Agent for Analytics、Data Agent for Meta、DAS Agent”等瑶池数据库Data Agent系列能力,以工具智能化 × 智能化工具的双引擎重构数据与AI的协同边界,揭秘AI时代数据价值释放的全新路径。
|
监控 数据库
【YashanDB 知识库】ycm 托管数据库时报错 OM host ip:127.0.0.1 is not support join to YCM
在托管数据库时,若 OM 的 IP 被设置为 127.0.0.1,将导致无法托管至 YCM,并使数据库失去监控。此问题源于安装时修改了 OM 的监听 IP。解决方法包括:将 OM 的 IP 修改为本机实际 IP 或 0.0.0.0,同时更新 env 文件及 yasom 后台数据库中的相关配置。经验总结指出,应避免非必要的后台 IP 修改,且数据库安装需遵循规范,不使用仅限本机访问的 IP(如 127.0.0.1)。
下一篇
开通oss服务