资源描述
精品文档就在这里
-------------各类专业好文档,值得你下载,教育,管理,论文,制度,方案手册,应有尽有--------------
--------------------------------------------------------------------------------------------------------------------------------------------
一、数据分发原理
数据分发使用物化视图复制技术,在省局建立一个主点(查询库),各地市分发库建立只读物化视图。
(一) 物化视图简介
物化视图,即实体化视图,是包括一个查询结果的数据库对象,它的定义与视图相似,不同的是它是有“实体”的,在建立好一个物化视图之后,数据库中会增加两个对象:一个类型为materialized view,一个类型为table。这里的table不是我们建立的,而是数据库自行根据物化视图的定义建立的一个表对象。物化视图可以说是另一个数据库对象的视图,这个对象可以是表或视图,也可以是另一个物化视图,在下面讲的内容中,我们称这个数据库对象为基表。
在9i之前,物化视图叫做“快照”。这个名称更能表达它的数据特征:它的数据总是基表在某一时刻的快照。物化视图的数据是通过刷新机制从基表同步过来的。它常用的刷新方式有快速刷新和完全刷新两种。快速刷新是一种增量的刷新,即每次只刷新自上一次刷新以来增删改的部分数据。完全刷新则是重新生成整个视图,在把物化视图中的数据清空后,把基表的数据全部复制到物化视图中。
根据我们使用的需要,下面的内容我们对语法进行简化。
简化后建立物化视图的语法如下:
Create materialized view [mview_name] tablespace [tablespace_name of mview_table] refresh fast|complete with primary key|rowid as select * from [table_owner].[table_name]@ [dblink_name] <where clause>;
说明:
mview_name:是物化视图的名字
tablespace_name of mview_table:mview_table是建物化视图后数据库中存放物化视图数据的实体表,tablespace_name是物化视图实体表所在的表空间
with primary key|rowid:指定物化视图刷新时是按照主键还是rowid寻找发生变化的数据。
table_owner:数据源表的所有者
table_name:数据源表的名字
dblink_name:第二步建的数据库链接
where clause:下发数据的条件,一般是查询指定下发地市的数据
对于使用快速刷新机制的物化视图而言,需要有一个日志来记录每次数据的改变,所以在创建使用快速刷新的物化视图之前,物化视图日志是必要的。如果在基表上创建了刷新日志表,那么Oracle 不管这次刷新是不是完全刷新,都会去作一次删除mlog 表中数据的操作。如果没有创建过物化视图日志,那么这一步将被省略。所以如果决定使用完全刷新,那么就不要在基表上创建刷新日志了,省得无谓的资源消耗。
简化后建立物化视图日志的语法如下:
Create materialized view log on [table_name] tablespace [tablespace_name of log_table] with primary key|rowid;
说明:table_name:是指基表表名
Tablespace_name of log_table:log_table是指建完物化视图日志后系统自动生成的日志表,这里的表空间名字是日志表存放的空间,若不加tablespace分句,则日志表将建在用户默认表空间上。
With primary key|rowid: 指定物化视图刷新时是按照主键还是rowid寻找发生变化的数据。若数据基表有主键,则使用with primary key ,否则用with rowid.
(二) 数据分发结构及实现
代码表全表下发,业务数据根据税务机关代码实现按市分发,对于部分没有税务机关代码字段而又需要按市分发的业务表,采用复合查询建立物化视图。
单一查询的物化视图采用快速刷新fast refresh,复合查询的物化视图采用完全刷新complete refresh
在各地市数据库中创建一个存储过程refresh_all_snapshot和一个job用于实现物化视图刷新。刷新频率由job指定。
二、数据库健康监控
(一)数据库进程
监控命令:
oracle进程 ps –ef|grep ora_
监听进程 lsnrctl status
实例状态 v$instance status,database_status
Oracle进程:
写数据文件的进程 ora_dbwn_ctais
写日志文件的进程 ora_lgwr_ctais
监控实例状态的进程 ora_smon_ctais
监控客户连接进程状态的进程 ora_pmon_ctais
检查点进程 ora_ckpt_ctais
进行恢复的进程 ora_reco_ctais
(二)日志文件
$ORACLE_BASE/admin/ctais/bdump/alert_ctais.log
查找ora-,Error,Failed等出错信息
注:$ORACLE_BASE/admin/ctais下面还有udump,cdump目录,分别存放了用户进程出错信息和核心进程出错信息
(三)oracle对象
控制文件 v$controlfile
在线日志文件 v$logfile
数据文件 v$datafile
表空间 dba_tablespaces
表、索引、存储过程、触发器、包等 dba_objects
检查方法:
正常状态下:
v$controlfile的status为空
v$logfile status为空
v$datafile status为ONLINE
dba_tablespaces status为SYSTEM 或者ONLINE
dba_objects status为valid,如果存在失效对象,可使用pl/sql developer工具的Tools>Compile Invalid Objects重新编译失效对象,若有无法通过便宜解决的,请查看失效原因并查找解决办法。
(四)相关资源使用情况
1、文件系统使用空间
linux:df –h
unix:bdf
aix:df –g
2、表空间使用情况
表空间使用情况可以直接通过oem图形化界面查看,也可以通过sql查询
Select a.tablespace_name,(1-a.total/b.total)*100 used_percent
From
(select tablespace_name,sum(bytes) total
from dba_free_space group by tablespace_name) a,
(select tablespace_name,sum(bytes) total
from dba_data_files group by tablespace_name) b
Where a.tablespace_name=b.tablespace_name;
三、数据分发监控及维护
分发监控
在保证数据库正常运转的基础上,还应监控数据定时刷新是否稳定正常进行。
刷新是否正常,可通过查看刷新任务进行检查。
select job,log_user,last_date,failures from dba_jobs;
其中last_date为任务上一次完成的时间,failures为任务失败次数。如果failures不为0 ,则应登陆服务器检查后台警告日志中是否有出错信息。
刷新过程中,如果想看目前刷新的情况,可以使用以下语句:
Select owner,name,last_refresh
from dba_snapshots
order by last_refresh desc;
查询结果第一行显示的是上一张刷完的表。
分发维护
对于物化视图刷新失败的情况,在检查并处理出错原因之后,可以使用以下命令进行单个物化视图的刷新,以确认问题是否解决。
快速刷新:
exec dbms_mview.refresh(‘物化视图名称’,’f’);
完全刷新:
exec dbms_mview.refresh(‘物化视图名称’,’c’);
在对单个物化视图进行刷新时,优先考虑使用快速刷新,对于不能使用快速刷新的情况才考虑使用完全刷新,因为完全刷新数据量比较大,比较耗时。
在确认导致刷新任务失败的问题都已经解决之后,可以使用以下命令手动刷新任务:
exec dbms_job.run(任务号);
对于failures数少于16的任务,在问题解决之后到了下次定时的时间任务会自动执行;failures数大于等于16的任务,不会自动运行,需要通过以上的命令采取手工启动的方式。
附录:
数据分发常见问题:
(一)ORA-12004: "REFRESH FAST cannot be used for ...
这类错误一般出现在对应该使用完全刷新的物化视图采用了快速刷新的时候。解决方法很检查,使用完全刷新就可以了。
(二)ORA-12034: "snapshot log on "%s"."%s" younger than last refresh"
这类问题通常会出现在省局对基表表结构进行变动之后。可先尝试使用完全刷新,不过多数时候还是需要把出错的物化视图重建。
(三)刷新任务执行很长时间都没结束
物化视图在刷新的时候可以分为三个阶段:建立到主站点的连接并检查必要的数据字典定义,刷新数据,刷新后清理主站点数据。本问题通常都是在第一阶段出的错误,多数都与网络环境或者主站点的性能有关,各地市一般无法独立检测或者解决。一般若遇到这类问题,可以尝试将正在执行的任务停止后重新启动。如果问题仍然存在,则需与省局分发库管理员联系确认。
---------------------------------------------------------精品 文档---------------------------------------------------------------------
展开阅读全文