什么是控制文件?
控制文件是Oracl
Oralce归档日志开启与关闭示例?
该命令完成创建实例、安装实例和打开数据库这三个步骤。此时,数据库将数据文件和重做日志文件联机,并且通常请求一个或多个回滚段。此时系统可以看到StartupMount模式下的所有提示,也给出一个。
orcal归档数据库存了哪些内容?
从orcal档案库数据清单下载的数据日志包括静态和动态数据。要访问这些数据,必须手动访问。
生产线历史数据归档是数据库运维的一项日常基础工作。设计表格时,数据流水表(如日志、用户登录历史、软件下载记录、用户属性变化历史表等。)通常被设计成范围分区表和区间分区表(11G)。当数据超过业务需求的保留范围时,基本上是静态数据,应用程序不会再访问,但由于一些特殊需求,可能需要手动查询。在这种情况下,每个人都将其数据从生产库归档到历史库,并对其进行压缩和保存。如果超出了特殊要求的范围,就直接导出压缩到磁带。
在Oracle数据库中,表数据的归档有很多种,如exp/imp、expdp/impdp、表空间传输等等,在日常的数据库维护中可能会用到。这些工具的用法这里就不展开了。让让我们进入今天的题目,用存储过程归档生产线历史表数据,先做一个简单的总结:
1、简单,不容易出错;
2.对于它的源库(这里是生产库),它是一个select查询语句,对性能影响不大;
3.数据不需要从源库登陆到目标库,类似于dblinkimpdp迁移数据的方法,节省了导出数据(数百GB表)所需的空间和归档时间;
4.可以监控归档进度和归档记录数量;
5.如果是跨机房传输,请监控网络带宽流量。
6、......
操作流程:
1.在生产库的维护用户的模式下创建一个视图,其中包含要归档的表的分区:
创建viewlog_table_p201209
如同
select*fromuser01.log_table分区(P201209)
注意:为什么要构建视图?因为你可以。;不要使用select*fromtablepartition(partition_name)这样的语句.....通过dblink查询时。
2.在将存档数据放入历史数据库的用户下创建数据存档状态表和序列创建表(历史数据库中的所有操作都在该用户下执行)。
创建表数据_存档_状态
(
身份证号,
线号,
table_nameVARCHAR2(60),
同步编号,
州号,
开始时间日期,
同步时间日期,
备注VARCHAR2(2000年)
)
-向列添加注释
对列data_archiv:启动,1:打开并解析游标,2:提取数据,3:完成一个表的同步,4:完成所有表,其他负数:错误代码#39。
-创建序列
创建序列序列号
最小值1
最大值9999999999999
从1开始
增加1
缓存20
3.在历史库中创建一个数据库链接,该数据库链接可以连接到具有只读权限的生产库,例如:。
-创建数据库链接
创建数据库链接XXDB。本地域
连接到只读
由#34#34标识
使用#39(描述
(LOAD_BALANCEno)
(地址列表
(地址
(协议)
(主机172.16.XX.XX)
(端口1521)
)
(地址
(协议)
(主机172.16.XX.XX)
(端口1521)
)
)
(连接_数据
(故障转移模式
(类型选择)
(方法基础)
(重试180次)
(延迟5)
)
(服务器专用)
(服务名称XX服务)
)
)#39
4.历史库应创建一个与生产库具有相同表结构的表,建议更改表名以标记存档数据。
创建表格log_table_p201209(......)
5.为数据存档创建存储过程:
将过程p_log_table_p201209创建为
-索引表
类型u_type是按pls_integer索引的log_table_p201209%rowtype的表
v_listu_type
-定义一个数组来存储要同步的视图的名称。
varchar_arrary类型是由pls_integer索引的varchar2(60)的表
v_remoteview_listvarchar_arrary
-定义参考索引
cur_ref类型是引用游标
当前数据当前引用
-局部变量,记录SQL%ROWCOUNT。
v_计数器编号:0
行id行id
:空值
v_querystrvarchar(1000):null
:日期为空
日期:为空
:日期为空
日期:为空
开始
-初始化阵列(在步骤1中创建的视图)
v_r:#39Zhanghui.log_tabl:#39select*from#39||v_r:系统日期
为v_querystr打开cur_data
:系统日期
更新数据存档状态
设置同步时间系统日期,
状态2,
备注备注||#39[#39||v_r:pars:0
:系统日期
-对于打开的游标,循环同步。
环
-使用批量绑定一次处理10000条记录。
提取cur_data批量收集
入v_list限制10000
foralliin1..五_
插入log_tabl:虚拟计数器sql%rowcount
更新数据存档状态测试
设置v_counter,sysdate
其中rowidv_rowid
通信它
未找到cur_data%时退出
结束循环
:系统日期
-更新计划,并在备注中记录当前分区的完成时间。
更新数据存档状态
设置状态3,
同步时间系统日期,
备注备注||#39fetch_elapsed#39||
round((v_fetch_elapsed_e-v_fetch_elapsed_s)*24*60,
4)||#39分钟,同步数#39||v_计数器||
#39,endtime#39||to_char(sysdate,#39yyyymmddhh24miss#39)||#39]#39
其中rowidv_rowid
犯罪
关闭cur_data
-更新时间表
更新数据存档状态测试集4
犯罪
结束循环
例外
当其他人
:
更新数据存档状态
设置同步时间系统日期,状态v_sqlcode
其中rowidv_rowid
犯罪
上升
结束
6.创建一个压缩对象存储过程。由于移动操作需要将近两倍的存储空间,请在压缩前预先评估空间需求。
创建过程p_compress_object(VOobject_namevarchar2,-object。
varpartition_namevarchar2defaultnull,-分区名
VParallelint默认值为0,-并行度
VPctfreeint默认值为0,-存储参数Pctfree设置为0,不再考虑DML操作。
vtablespacevarchar2默认为空,-表空间
Vownervarchar2d:0、表1、索引2、分区表3、索引分区
)Authid当前用户是
vSqlvarchar2(4000)
vsqlermvarchar2(256)
v_sqlstringvarchar2(4000)
开始
v_sqlstring:#39更改会话集db_file_multiblock_read_count128#39
立即执行v_sqlstring
如果vTyp:#39altertable#39||vowner||#39。#39||VOobject_name||#39move#39||当vTablespace为null时的情况,然后为nullelse#39表空间#39||vTablespaceend||#39pctfree#39||vPctfree||#39compr:#39alterindex#39||所有者||#39。#39||vObject_name||
#39rebuild#39||当vTablespace为null时的情况,然后为nullelse#39表空间#39||vTablespaceend||#39pctfree#39||vPctfree||#39compr:#39altertable#39||vowner||#39。#39||vObject_name||
#39移动分区#39||vPartition_name||当vTablespace为null时的情况,然后为nullelse#39表空间#39||vTablespaceend||#39pctfree#39||vPctfree||#39compr:#39alterindex#39||所有者||#39。#39||vObject_name||
#39重建分区#39||vPartition_name||当vTablespace为null时的情况,然后为nullelse#39表空间#39||vTablespaceend||#39pctfree#39||vPctfree||#39compr:SQLerrm
DBMS_output.put_line(vsqlerm||#39|#39||vSql)
结束
7.以上准备工作完成后,确认历史数据库的表空间,调用数据归档存储过程p_log_table_p201209,处理后的数据进行处理。压缩,调用存储过程p_compress_object(...);
8.确认数据正确,删除生产库维护用户对应的视图和业务表的分区,释放对象占用的空间(注意:检查分区表的索引是否在本地,否则...).