李卓异?杨见飞
Oracle數据库是目前世界上使用最为广泛的数据库管理系统。由于其稳定性强、安全性高,在国内被大型企业集团广泛采用。
在本次审计中,根据被审计单位的数据库类型,运用相应的数据库技术,可以提高审计工作的效率和质量,就Oracle数据库而言,处理GB级别以上的数据,通常要比SQL Server、MySQL等数据库效率更高。在本案例的审计过程中,该集团结算系统后台数据库使用Oracle数据库,体量在500GB以上,体量大、结构复杂,尤其适合应用Oracle数据库技术。
应用功能
一、数据库备份与还原
根据具体数据环境,选择恰当的备份与还原方式,本次审计使用数据泵技术恢复被审计单位提供的业务数据。
二、业务数据分析
根据具体审计方向,了解被审计单位数据逻辑与结构,通过编写SQL查询语句实现相应的审计需求。
数据准备
在该审计项目中,数据准备涉及结算系统、智能调度系统等2套数据,大小分别约为500GB、240GB,涉及客流分析、充电平台、基本报表、公车定位等4套数据,大小约15GB。下面以数据泵还原结算系统数据示例。
根据本次审计需求,运用数据泵技术对结算系统后台数据库进行全库备份和还原,同时为提高效率,分配转储文件、设置压缩参数和并行参数。
(一)了解本地系统、软件版本,布置环境,使其能够兼容被审计单位的数据。
(二)以system用户的dba权限登录,打开SQL操作平台。
(三)根据实际需要,确定数据文件存储位置,估计数据文件大小,建立表空间。
create tablespace ccen datafile 'D:\gjgs\bkj\ccen01.dbf' size 10000m autoextend on next 1000m maxsize unlimited;
(为提高效率,建议表空间名称与原转储文件一致,同一表空间下可增加多个数据文件。)
(四)建立用户,同时指定默认表空间。
create user ccense identified by 123456 default tablespaceccen;
(为提高效率,建议用户名称与原转储文件一致。)
(五)确定被审计单位数据存储位置,建立对应的虚拟路径。
create directory ccense_data as 'D:\gjgs\202205报送\结算数据';
(虚拟路径。)
(六)给用户授予角色、权限。
grant resource, connect, dba to ccense;
(给用户授予基本角色。)
grant unlimited tablespace to ccense;
(给用户授权,无限使用表空间权限。)
grant read, write on directory ccense_data to ccense;
(给用户授权,虚拟路径的读写权限。)
(七)利用数据泵还原数据。
impdp ccense/123456 directory=ccense_datadumpfile=mydb_%U.dmp logfile=mydb_in.log parallel=8 full=y;
(涉及8个转储文件,使用%U通配符;为提高还原效率,增加并行度参数。)
(八)执行过程中,容易出现表空间缺失、容量不足、用户不存在等报错信息,这就需要根据具体问题,采取新建表空间、增加数据文件、新建用户等策略。
应用步骤
一、了解数据
根据业务流程特点,掌握相关报表及数据结构,了解报表之间的关系,明白相关字段及含义。
二、验证数据
验证数据的真实性、完整性。本次验证中发现2020年4―7月数据不完整、不真实,及时要求被审计单位补充所缺数据。建议数据分别存储,避免数据合并过程中发生错误,影响前期数据。以次卡钱包消费明细数据为例。
select extract(year from OPDT) 年, extract(month from OPDT) 月, count(*) 消费次数from rec_vicecard_consume19 group by extract(year from OPDT), extract(month from OPDT) union select extract(year from OPDT) 年, extract(month from OPDT) 月,count(*) 消费次数from rec_vicecard_consume group by extract(year from OPDT), extract(month from OPDT) order by 1,2;
三、处理与分析数据
通过对结算中心业务流程的梳理,确定办卡、充值、消费等方面的审计。(注:以下步骤涉及的编程语句较为冗长,故不再列出。)
1.办卡情况
重点关注学生卡、老年卡、老年优惠卡、爱心卡等办理条件与实际情况。
问题一:核验是否存在一人同时办理两张卡的问题。
(1)找出制卡信息表,利用卡类型字段对各类办卡人员进行分类,分别筛选出敬老卡、学生卡和老年优惠卡办卡数据,进行逐一分析(分析过程以敬老卡为例)。
(2)查看敬老卡制卡信息表的属性,确定唯一主键字段,针对该字段进行计数和筛选操作,筛选出该字段出现两次及以上的办卡人员信息即为曾经办理过两张或两张以上敬老卡的人员。
(3)將筛选结果与注销卡人员信息表相关联剔除已注销卡信息人员,并再次进行步骤(2)操作,得到在同一时段办理两张敬老卡的制卡信息表。
(4)将该表与基本人员信息表相关联,确定同时段办理两张及以上敬老卡人员身份信息,再将其与月票卡消费信息表相关联,筛选出同时段所产生的消费记录,分析结束。
问题二:核验是否存在年龄不符合规定而办理公交卡的问题。
分析过程包括以下几个步骤,其中步骤(1)和(4)同问题一:
(1)找出制卡信息表,利用卡类型字段对各类办卡人员进行分类,分别筛选出敬老卡、学生卡和老年优惠卡办卡数据,进行逐一分析(分析过程以敬老卡为例)。
(2)以唯一主键字段为依据,将敬老卡制卡信息表与基本信息表相关联,获取敬老卡办理人员的身份证信息,利用身份证号字段计算敬老卡办理人员的年龄并增加年龄字段。
(3)利用年龄字段筛选出年龄小于70周岁的办卡人员即为不符合年龄办理敬老卡的人员。
(4)将所得不符合年龄办理敬老卡的人员信息与月票卡消费记录相关联,筛选出违规办理敬老卡人员的消费记录,分析结束。
2. 充值情况
关注大额充值与实际消费情况。
问题一:核验是否存在职工月票卡充值金额每年超过1200元。
根据“公交集团在职员工每月充值100元月票卡”的规定思路对结算中心的充值数据进行分析:
(1)找出基本信息表和职工花名册,利用身份证号字段进行关联,筛选出在职职工名下拥有公交卡情况。
(2)利用customerid字段与月票卡充值记录表进行关联,筛选出在职职工的充值情况,依据次卡钱包交易金额字段值判定充值金额是否超过1200元,若超过即违反规定。
(3)再将其与月票卡消费信息表相关联,筛选出违反规定充值月票卡员工的消费记录,分析结束。
问题二:核验是否存在职工免费充值月票卡情况。
根据月票卡充值情况表中次卡钱包虚充金额字段和次卡钱包交易金额字段,以此为切入点对职工充值数据进行分析,步骤(1)和(3)同问题一:
(1)找出基本信息表和职工花名册,利用身份证号字段进行关联,筛选出在职职工名下拥有公交卡情况。
(2)判断次卡钱包虚充金额字段值和次卡钱包交易金额字段值是否相同,若两字段值相同,即为职工免费充值情况。
(3)再将其与月票卡消费信息表相关联,筛选出免费充值月票卡员工的消费记录,分析结束。
3. 消费情况
重点关注每日异常消费情况。这里利用次卡钱包消费明细表和电子钱包消费明细表数据展开分析与评价。
问题一:总体消费情况评价。
(1)获得年、月消费人次数据。
(2)以图形直观展示年月消费人次与趋势变化。
问题二:异常消费数据情况。
(1)创建次卡钱包消费异常中间表,以日消费大于30次的卡号为消费异常标准。利用中间表(卡号、年月日等信息),结合消费明细表可分析异常消费数据特征。
(2)创建电子钱包消费异常中间表,以日消费大于30次的卡号为消费异常标准。利用中间表(卡号、年月日等信息),结合消费明细表可分析异常消费数据特征。
(3)获得异常消费汇总数据。
4. 线路运营效益情况
根据结算中心提供的结算系统后台数据库与运营部提供的智能调度系统的线路运营里程数据,将各条公交线路的收入与运营里程(反映一定的成本)关联分析。
(1)获得各公交线路的消费人次数据。
(2)获得各公交线路的运营里程数据。
(3)将公交线路的消费人次数据与运营里程数据关联分析,注意以实际线路名称统一结算中心的线路编码和运营部的线路编码。
应用成果分析
在本次审计中,通过对结算数据的还原和校验,发现2020年4―7月数据不完整(及时要求被审计单位补充报送完整数据);通过对结算中心业务流程的梳理,确定办卡、充值、消费等方面的审计,最终发现各个环节的不规范行为,尤其是存在大量非正常消费行为。
一、办卡情况
1. 同时办理两张以上敬老卡、学生卡或老年优惠卡,共计128人次,其中同一时段两张卡均产生消费记录共计1173条。
2. 年龄不符情况下办理敬老卡、学生卡或老年优惠卡,共计135人次,产生消费记录共计25979条。
二、充值情况
1. ×××等4名在职职工享受退休员工卡免费充值月待遇,其中×××等3名职工还同时享受在职员工月票卡充值福利,退休员工卡涉及免费充值次数共计2880次,消费记录共计18次,月票卡消费记录共计5488次。
2. ×××等5名职工月票卡充值金额分别为1300元、1850元、1250元、1250元、1250元,均超过规定金额1200元,共计涉及金额6900元,共计消费次数9483次。
3. 三分公司职工×××在2021年免费充值乘车次数共计21次,包含5次学生卡免费充值和16次成人卡免费充值,涉及金额4200元,1元充值200次乘车次数共计7次,涉及金额1393元,共计金额5593元,共计消费记录105条。
三、消费情况
1.总体消费情况:2019―2022年5月,消费人次分别为1.24亿、0.72亿、0.94亿、0.23亿。受疫情等因素影响,2020年消费人次较2019年下降41.8%,2020年、2021年、2022年1―5月消费人次分别为2019年同期的58%、76%、44%。
观察月度数据变化情况,个别月份消费人次增幅异常,如2020年11月、2021年3月与4月。这个异常情况与异常刷卡问题在月度数据上的体现相吻合。
2.非正常消费情况:单张IC卡日刷卡次数在30次以上的合计3733.7777万次,其中2019年达424.2108万次,2020年达1060.5334万次,2021年达1952.8494万次,2022年1―5月达296.1841万次。
3. 非正常消费主要特征:大量老年优惠卡在非高峰时段(9―17时,免费乘车时间段)连续刷卡(电子钱包功能区),单张卡日消费次数最高达26426次;大量成人卡连续刷卡(次卡钱包功能区,50元可月消费100次),单张卡日消费次数绝大多数维持在100次(含)以内。
四、线路运营效益情况
自2019年1月至2022年4月,4年均在运营线路计113条,百公里消费人次(指每运营100公里所载客人次)平均值为144,其中低于平均值的线路合计75条,低于100人次的线路合计39条,低于50人次的线路合计10条。
2019年平均百公里消费人次183,其中低于平均值的线路合计81条,低于100人次的线路合计27条,低于50人次的线路合计8条。
2020年平均百公里消费人次125,其中低于平均值的线路合计75条,低于100人次的线路合计54条,低于50人次的线路合计15条。
2021年平均百公里消费人次123,其中低于平均值的线路合计72条,低于100人次的线路合计59条,低于50人次的线路合计11条。
2022年1―4月平均百公里消费人次108,其中低于平均值的线路合计72条,低于100人次的线路合计64条,低于50人次的线路合计15条。
通过比对分析发现,连续4年百公里消费人次低于100的线路合计19条,低于50的线路合计3条。
应用特点
优点:数据库稳定可靠、运行效率高,尤其适合大数据处理与分析。该技术在提升工作质量和效率方面优势突出。一是该技术可覆盖全部的业务数据,避免抽样审计带来的审计误差,提高审计质量;二是该技术可通过科学的语句设计,优化数据分析逻辑,提高工作效率。
缺点:数据库逻辑结构复杂,掌握、应用难度较高。
主要创新点:一是打造数据分析闭环,全程跟进数据需求调研、采集、处理、分析与结果反馈;二是既关注微观疑点问题,又注重宏观数据评价。
推广建议
Oracle数据库技术已经被国内外大型企业集团广泛使用,大型企业集团日常业务交易数据量极为庞大,以本案例涉及的企业为例,日均交易数据记录达30万条以上,因此在企业审计中有必要推广使用该技术,以更全面、更好地掌握审计对象业務情况。
该技术在使用中,需注意的地方很多,主要集中在:一是使用数据泵技术进行数据导入和导出环节,在导入和导出工作进行前,需要提前配置好数据泵工作环境,如建立所需表空间、所需用户、虚拟路径等,并为用户分配恰当的权限,否则数据导入和导出环节极易出现问题,直接影响下一步工作正常进行;二是在使用SQL查询语言时,涉及的部分关键词和函数等与SQL Server、MySQL等数据库语言的不同。(作者单位:洛阳市审计局)