第一篇:银行通用大型数据库
银行通用大型数据库---Db2 日常实用操作 收藏
怎么没人发DB2啊,我记得我刚参加工作时面试,有一个问题是“你用过什么大型数据库?”,我当时还搞不清什么叫大型,就顺便说了FOX,ACCESS,主考的人看着我的,用一句歌词来形容就是”得意的笑,他得意的笑“,也幸好去面试的只有一个人说了个INFORMIX,我才在公司学了DB2,学了 INFORMIX,学了SOCKET,哈,看着公司一年有十亿RMB的进账,看着我每月薪水都在一把(一把是一百张,一张是一百元,哈)以上,真是感慨良多啊!哈,幸好是走过来了!
先贴点基础的,可别小看,这是你以后的基础,就像现在IBM搞培训,不到一周时间,会讲600M的文档,知识点也就讲个名字,要不老师会累死,哈!
以下是正文:
1、Load 方法装入数据:
export to tempfile of del select * from TABLENAME where not 清理条件; load from tempfile of del modified by delprioritychar replace into TABLENAME nonrecoverable;
说明:
在不相关的数据表export数据时,可以采取并发的形式,以提高效率;
TABLENAME指待清理table的名称;
modified by delprioritychar防止数据库记录中存在换行符,导致数据无法装入的情况;replace into对现数据库中的内容进行替换,即将现行的数据记录清理,替换为数据文件内容;
nonrecoverable无日志方式装入;
2、查找当前的应用:
db2 list application |grep DBSNAME;
3、删除当前正在使用的application:
db2 “force application(Id1,Id2,Id3)”
Id1,Id2,Id3 是List显示的应用号;
4、查看当前应用号的执行状态:
db2 get snapshot for application agentid 299 |grep Row5、查看数据库参数:
db2 get db cfg for
6、修改数据库的Log数据:
db2 update db cfg using <参数名> <参数值>、Db2Stop Force的用法:
在进行Bind的时候出现如下错误:
SQL0082C An error has occurred which has terminated processing.SQL0092N No package was created because of previous errors.SQL0091N Binding was ended with “3” errors and “0” warnings.主要是表文件被加锁,不能继续使用;
在进行stop的时候报错:db2stop
8/03/2005 21:46:53 0 0SQL1025N The database manager was not stopped because databases are still active.SQL1025N The database manager was not stopped because databases are still active.需要使用如下命令可以解决这个问题: db2stop force
08/03/2005 21:47:4900SQL1064N DB2STOP processing was successful.SQL1064N DB2STOP processing was successful.然后启动数据库db2start,连接数据库db2s后,重新进行bind即可。
8、缓冲池参数修改:
db2 alter bufferpool ibmdefaultbp size 10240
查看本表的数据内容如下:
db2 “select * from syscat.bufferpools”;
9、DB2 日志处理:
DB2日志是以文件的形式存放在文件系统中,分为两种模式:循环日志和归档日志。当创建新数据库时,日志的缺省模式是循环日志。在这种模式下,只能实现数据库的脱机备份和恢复。如果要实现联机备份和恢复,必须设为归档日志模式。目前在综合业务系统中,设置的均是归档日志模式;其它系统(如事后监督、经营决策、中间业务等)一般都设置为循环日志模式。至于采用何种模式,可以通过修改数据库配置参数(LOGRETAIN)来实现: 归档日志模式:db2 update db cfg for
必须按照以下正确的步骤进行操作:要求必须使用DB2命令PRUNE进行清理,不建议使用rm命令删除。删除前应保证应用已停止(即联机已下来)。查看当前使用的日志文件目录及第一活动日志文件用 “db2 get db cfg for
$ db2 connect to
$ db2 prune logfile prior to S???.LOG
注:S???.LOG为查看到的第一活动日志文件。此命令可以将当前第一活动日志文件之前的归档日志文件全部删除。
11、如何清理db2diag.log文件
db2diag.log,是用来记录DB2数据库运行中的信息的文件。可以通过此文件,查看记录的有关DB2数据库详细的错误信息。此文件也是不断增大的,需要定期进行清理。可以通过查看实例的配置参数DIAGPATH,来确定db2diag.log文件是放在哪个目录下:db2 get dbm cfg 如果Diagnostic data directory path(DIAGPATH)= /home/db2inst1/sqllib/db2dump,则此文件是放在/home/db2inst1/sqllib/db2dump目录下。当文件系统/home的使用率达到80%-90%左右时,应及时删除db2diag.log文件。请按以下正确步骤操作:确认应用(如BTP)、DB2已经停止。将原db2diag.log文件备份到其它文件系统下。删除db2diag.log文件。删除后,DB2会自动创建一个新的文件。
12、Load 操作
在进行load的时候
db2 “load from acmmst.txt of del modified by coldel| replace into acmmst nonrecoverable ”
由于数据不规范出现错误,强行中断以后,进行操作的时候出现如下错误:
SQL0668N Operation not allowed for reason code ”3“ on table ”BTP.ACMMST“.SQLSTATE=57016
此时,进行反方向操作即可:
db2 ”load from /dev/null of del terminate into acmmst nonrecoverable“。
如果没有使用参数nonrecoverable,则会出现数据库状态不正确的情况,使用:
db2 list tablesapces show detail 查看状态,如果不是正常状态,则脱机状态进行备份即可。
两个表文件之间UPDATE的方法:
db2 ”update cdmcrd set offset =(select cdmlsl.offset from cdmlsl where cdmlsl.crdno=cdmcrd.crdno)where cdmcrd.crdno in(select cdmlsl.crdno from cdmlsl)
13、多字段条件查询和修改:
表A中的字段有actno, cnlno,bal,pwd;表B中的字段为Actno,Cnlno,TxnAmt;目的是将A表中的bal修改为B表中的TxnAmt,命令:
db2 “update A set bal=(select txnamt from B where actno=A.actno and cnlno=A.Cnlno)where A.actno||A.cnlno in(select Actno||cnlno from B);
14、多条件匹配查询
查询某个表中条件是B?AAA的记录:
db2 ”select * from A where actno like 'B_AAA%'“.查询数据中存在某些字符的记录:
db2 ”select * from A where actno like '%-AAA%“.15/数据库恢复的处理
进行数据库恢复的时候使用以下的命令:
restore db db1 to /tstdb2/catalog into db newlogpath /tstdb2/db2log buffer 2048
replace existing redirect parallelism 16;
set tablespace containers for 1 using(path '/tstdb2/db2tmp');
set tablespace containers for 2 using
(device '/dev/rtstcontlv00' 2621440, device '/dev/rtstcontlv01' 2621440,device '/dev/rtstcontlv02' 2621440, device '/dev/rtstcontlv03' 2621440);
restore db db1 continue;
恢复完成以后执行命令db2s时报如下的错误:
P570:>db2s
SQL1117N A connection to or activation of database ”DB" cannot be made because of ROLL-FORWARD PENDING.SQLSTATE=57019
DB21034E The command was processed as an SQL statement because it
was not a
valid Command Line Processor command.During SQL processing it returned:
SQL1024N A database connection does not exist.SQLSTATE=08003 解决办法如下:
P570:>db2 rollforward db db to end of logs and complete
Rollforward Status
Input database alias= db
Number of nodes have returned status= 1
Node number= 0
Rollforward status= not pending
Next log file to be read=
Log files processed=-
Last committed transaction= 2005-11-20-10.59.23.000000
DB20000I The ROLLFORWARD command completed successfully.
第二篇:大型数据库技术教案01
课
题
概述
目的要求
1、了解Oracle产品简史,学习大型数据库技术课程的意义。
2、了解网格计算的概念及特点及其在数据库中的技术应用。
3、理解数据库管理的主要工作内容。
教学重点
1、Oracle产品简史,网格计算的概念和特点
2、Oracle Database 10g系统特点,数据库技术特点
3、数据库管理员的关键任务
教学难点
网格计算的概念和特点
教学课时
教学方法
大屏幕投影、PowerPoint幻灯课件
教学内容与步骤
1.1 Oracle产品简史 1.2 网格计算的概念和特点 1.3 Oracle Database 10g系统特点 1.4 数据库技术特点
1.5 数据库管理员的工作任务 教学过程
导入语:Oracle Database 10g产品把我们带入了网格计算时代。Oracle Database 10g是由Oracle公司推出的数据库系统,本书将全面介绍Oracle Database 10g数据库系统的功能特点。据统计,Oracle在全球数据库市场上的占有率超过三分之一,多年来持续性地雄踞全球数据库市场霸主地位。我国于1987引进了Oracle系统,当前,Oracle公司在中国的业务取得了迅猛发展,赢得了国内许多行业主管部门、应用单位和合作伙伴的广泛信任和支持,确立了在中国数据库和电子商务应用市场的绝对领先优势。1 Oracle产品简史 × 25 = 500
Oracle,甲骨文自20世纪70成功推出Oracle产品以来,它成为世界上最大的数据库专业厂商之一。1996年,Oracle公司成功推出了专门面向中国市场的数据库产品,即Oracle 7。1997年,Oracle公司推出了基于网络计算的数据库产品,即Oracle 8。1999年,针对Internet技术的发展,Oracle公司推出了第一个基于Internet的数据库,即Oracle 8i。2001年,Oracle公司又推出了新一代Internet电子商务基础架构,即Oracle 9i。2003年9月,Oracle公司发布了其最新数据库产品,即Oracle Database 10g。网格计算的概念和特点
围绕网格计算,本节讲述两个方面的内容,首先讲述网格计算的概念,然后探索网格计算的基本特点。
背景介绍:企业IT不断承受使用越来越少的资源做好越来越多事情的压力。同时,为了应付计算需求的不可预测性和即时性,公司一般扩大服务器规模来适应高峰负载。
为了解决这些问题,出现了一种新的计算模型,即网格计算模型。但是也有其他说法:
按需计算(computing on demand)自适应计算(adaptive computing)效用计算(utility computing)托管计算(hosted computing)有机计算(organic computing)泛在计算(ubiquitous computing)网格计算的概念:核心思想是计算应当和公用设施一样可靠、深入和透明。网格计算的目标是使计算成为一项公用设施—— 一种无处不在的数据日用品。网格计算基础架构的5个特点
每一层计算堆栈上的虚拟化;
根据策略和动态需求来提供工作和资源; 集中资源以提高利用率; 自我调整和修补的自适应软件; 统一管理和供应。Oracle Database 10g系统特点 × 25 = 500
Oracle Database 10g提供了4个版本,每一个版本适用于不同的开发和部署环境。除了Oracle Database 10g系统之外,Oracle还提供了另外几种数据库产品,这些针对特殊应用需求的数据库产品大大增强了Oracle Database 10g 的功能。
本节从版本类型、可选产品和Oracle管理程序包了个方面来介绍Oracle Database 10g系统的特点。
在服务器集群上运行和调整全部应用负载的独特能力是企业网格的重要基础。利用两个主要的新功能使得管理集群数据库变得更加容易:集成的集群件/自动工作负载管理 4 数据库技术特点
本节从数据库和实例、表、视图、索引、数据存储、数据保护、可编程的结构等几个方面概括介绍Oracle Database 10g系统的技术特点。
数据库:每一个Oracle数据库都是一个数据的集合,这些数据包含在一个或多个文件中。数据库有物理和逻辑两种结构。
Oracle实例:由被称为系统全局区(system global area,SGA)的内存区域和相应的后台进程组成。这些后台进程负责SGA和数据库磁盘文件之间的交互。表:在Oracle数据库中,表是最基本的结构。Oracle Database 10g系统支持多种类型的表,这些表包括关系表、对象关系表、索引编排表、外部表、分区表、物化视图、临时表、群集表、删除的表。
视图:可以使用视图访问表中的数据。视图可以处理连接和聚集、限制返回的数据行、更改显示的列名称等。在Oracle Database 10g系统中,视图既可以是只读的,也可以是可更新的,既可以引用本地表,也可以引用远程表。
索引:为了提高对表中数据的访问效率,Oracle系统支持多种类型的索引,这些索引包括B树索引、位图索引、反转键值索引、基于函数的索引、分区索引、文本索引等。
数据存储:数据库中的所有逻辑结构都必须存储在数据库中的某个地方。Oracle系统提供了一个记录与所有对象相关的元数据的数据字典。对于需要物理空间保存的对象,Oracle系统会在一个表空间中为其分配空间。
表空间由一个或多个文件组成,数据文件可能是表空间的全部,也可能是一个表空间的一部分。× 25 = 500
数据保护:在Oracle系统中,可以完全控制数据的访问权限。可以为用户授予执行select、update等特定操作所需要的权限。可以对角色授权,然后把角色授予用户,从而简化权限的管理。
可编程的结构:SQL语言是操纵数据库的最基本的方法。
可以使用PL/SQL创建存储过程和函数,可以在查询中调用已创建的函数,过程和函数可以集中存放在程序包中。可以使用PL/SQL创建触发器,用于通知数据库当不同的事件发生时应该分别采取什么样的操作。5 数据库管理员的工作任务
在Oracle系统中,数据库管理员(database administrator,DBA)是最重要的角色。DBA的工作目标是确保Oracle系统正常高效的运行。DBA的工作是最繁忙的,无论是性能调整,还是灾难恢复,都离不开DBA的支持。一般情况下,作为一个DBA,应该做好下面12项任务。
安装和配置;容量规划;应用架构设计;管理数据库对象;存储空间管理;安全管理;备份和恢复;作业调度;网络管理;高可用性和高可伸缩性管理;故障解决 × 25 = 500
第三篇:大型关系数据库模拟题2参考答案范文
并发生在各个节点的变化。(3 分)
一、选择题(每题 1 分,共 10 分)选择题(选择题
1 D 2 B 3 C 4 A 5 D 6 B 7 D 8 B 9 C 10 C 4.答:一个高效的安全模式应考虑以下内容:(1)做一些细致的、具有前瞻性的安全规划;(2)选择安全形式;(3)配置安全角色;(4)指定对象及语句许可权限。(共 5 分,错 1 项扣 1 分)5.答: “追加到媒体”是指进行备份时不改写现有备份设备中已有的备份内容,将新的备份内容 添加进去;(2 分)“重写现有媒体”是在进行备份时将新的备份内容添加到备份设备中并覆盖 已有的备份内容(3 分)语句检索:
五、用 SQL 语句检索:(每题 2 分,共 10 分)2.选择、连接、投影、除法 1.select * from 职工 outa where 工资 <(select avg(工资)from 职工 inn where outa.仓库号=inn.仓库号)2.select * from 职工 order by 工资 3.select 城市 =1350)4.insert into 仓库 values(‘WH6’,’长沙’,’1000’)13.%、_(下划线)5.update 职工 set 工资=工资+200 where 职工号=’E006’ from 仓库 where 仓库号 in(select 仓库号 from 职工 where 工资
二、判断题(每题 1 分,共 15 分)判断题(1 ╳ 2 ╳ 3 ╳ 4 √ 5 ╳ 6 √ 7 √ 8 ╳ 9 √ 10 ╳ 11 ╳ 12 √ 13 √ 14 √ 15 ╳
(每空
三、填空题: 每空 1 分,共 35 分)填空题:(1.存储过程
3.数据库的并发控制、数据库的恢复、数据完整性、数据安全性 4.查询处理器、存储管理器具 6.主文件、次文件、日志文件 5.企业管理器 7.聚集索引、非聚集索引
8.声明游标、打开游标、读取游标、关闭游标、删除游标 9.成功、有错误发生 10.出版服务器、发行服务器和订阅服务器
11.对象许可、数据库许可、固有角色隐含许可 12.磁盘、磁带、命名管道
四、简答题(共 30 分)简答题(1.答: 存储过程是事先编好的、存储在数据库中的程序,是一组预先编译过的 SQL 语句组成的 SQL Sever 数据库应用程序。这些程序用来完成对数据库的指定操作。它能够检索系统信息,管理 数据库或执行其他任务。分)(5 使用存储过程具有以下优点:降低网络通讯量;执行速度快;具有安全控制机制;能减轻程序 设计工作量。分)(5 2.答:约束是 SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单 个列中的数据的限制条件。(1 分)有 5 种约束:主键约束、外键约束、唯一性约束、检查约束、缺省约束。分)(4 3.答:合并复制作为一种从出版者向订购者分发数据的方法允许出版者和订购者对出版数据进行 修改(2 分),而不管订购者与出版者是相互连接或断开,然后当所有或者部分节点相连时便合
第四篇:SQL Server 2008之数据库大型应用解决方案总结
SQL Server 2008之数据库大型应用解决方案总结
本教案需配合视频教程学习,视频教程地址为:http://www.xiexiebang.com/eschool/SQLxin3721/ 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。
一、负载均衡技术
负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器。
1、实现原理
实现数据库的负载均衡技术,首先要有一个可以控制连接数据库的控制端。在这里,它截断了数据库和程序的直接连接,由所有的程序来访问这个中间层,然后再由中间层来访问数据库。这样,我们就可以具体控制访问某个数据库了,然后还可以根据数据库的当前负载采取有效的均衡策略,来调整每次连接到哪个数据库。
2、实现多据库数据同步
对于负载均衡,最重要的就是所有服务器的数据都是实时同步的。这是一个集群所必需的,因为,如果数不据实时、不同步,那么用户从一台服务器读出的数据,就有别于从另一台服务器读出的数据,这是不能允许的。所以必须实现数据库的数据同步。这样,在查询的时候就可以有多个资源,实现均衡。比较常用的方法是Moebius for SQL Server集群,Moebius for SQL Server集群采用将核心程序驻留在每个机器的数据库中的办法,这个核心程序称为Moebius for SQL Server 中间件,主要作用是监测数据库内数据的变化并将变化的数据同步到其他数据库中。数据同步完成后客户端才会得到响应,同步过程是并发完成的,所以同步到多个数据库和同步到一个数据库的时间基本相等;另外同步的过程是在事务的环境下完成的,保证了多份数据在任何时刻数据的一致性。正因为Moebius 中间件宿主在数据库中的创新,让中间件不但能知道数据的变化,而且知道引起数据变化的SQL语句,根据SQL语句的类型智能的采取不同的数据同步的策略以保证数据同步成本的最小化。
数据条数很少,数据内容也不大,则直接同步数据 数据条数很少,但是里面包含大数据类型,比如文本,二进制数据等,则先对数据进行压缩然后再同步,从而减少网络带宽的占用和传输所用的时间。
数据条数很多,此时中间件会拿到造成数据变化的SQL语句,然后对SQL语句进行解析,分析其执行计划和执行成本,并选择是同步数据还是同步SQL语句到其他的数据库中。此种情况应用在对表结构进行调整或者批量更改数据的时候非常有用。
3、优缺点
(1)扩展性强:当系统要更高数据库处理速度时,只要简单地增加数据库服务器就 可以得到扩展。
(2)可维护性:当某节点发生故障时,系统会自动检测故障并转移故障节点的应用,保证数据库的持续工作。(3)安全性:因为数据会同步的多台服务器上,可以实现数据集的冗余,通过多份数据来保证安全性。另外它成功地将数据库放到了内网之中,更好地保护了数据库的安全性。(4)易用性:对应用来说完全透明,集群暴露出来的就是一个IP(1)不能够按照Web服务器的处理能力分配负载。
(2)负载均衡器(控制端)故障,会导致整个数据库系统瘫痪。
二、数据库的读写分离
1,实现原理:读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操作,从数据库提供读操作,其实在很多系统中,主要是读的操作。当主数据库进行写操作时,数据要同步到从的数据库,这样才能有效保证数据库完整性。
(ebay的读写比率是260:1,ebay的读写分离)(微软数据库分发)
2,实现方法:在MS Sql server中可以使用发布定义的方式实现数据库复制,实现读写分离,复制是将一组数据从一个数据源拷贝到多个数据源的技术,是将一份数据发布到多个存储站点上的有效方式。使用复制技术,用户可以将一份数据发布到多台服务器上。复制技术可以确保分布在不同地点的数据自动同步更新,从而保证数据的一致性。SQL SERVER复制技术类型有三种,分别是:快照复制、事务复制、合并复制。SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器,负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器,分发服务器包含有一个分发数据库,可接收数据的所有改变,并保存这些改变,再把这些改变分发给订阅服务器。3,优缺点
(1)数据的实时性差:数据不是实时同步到自读服务器上的,当数据写入主服务器后,要在下次同步后才能查询到。(2)数据量大时同步效率差:单表数据量过大时插入和更新因索引,磁盘IO等问题,性能会变的很差。(3)同时连接多个(至少两个)数据库:至少要连接到两个数据数据库,实际的读写操作是在程序代码中完成的,容易引起混乱
(4)读具有高性能高可靠性和可伸缩:只读服务器,因为没有写操作,会大大减轻磁盘IO等性能问题,大大提高效率;只读服务器可以采用负载均衡,主数据库发布到多个只读服务器上实现读操作的可伸缩性。
三、数据库拆分(分布式)
通过某种特定的条件,将存放在同一个数据库中的数据分散存放到多个数据库上,实现分布存储,通过路由规则路由访问特定的数据库,这样一来每次访问面对的就不是单台服务器了,而是N台服务器,这样就可以降低单台机器的负载压力。
垂直(纵向)拆分:是指按功能模块拆分,比如分为订单库、商品库、用户库...这种方式多个数据库之间的表结构不同。水平(横向)拆分:将同一个表的数据进行分块保存到不同的数据库中,这些数据库中的表结构完全相同。
(纵向拆分)
(横向拆分)
1,实现原理:使用垂直拆分,主要要看应用类型是否合适这种拆分方式,如系统可以分为,订单系统,商品管理系统,用户管理系统业务系统比较明的,垂直拆分能很好的起到分散数据库压力的作用。业务模块不明晰,耦合(表关联)度比较高的系统不适合使用这种拆分方式。但是垂直拆分方式并不能彻底解决所有压力问题,例如 有一个5000w的订单表,操作起来订单库的压力仍然很大,如我们需要在这个表中增加(insert)一条新的数据,insert完毕后,数据库会针对这张表重新建立索引,5000w行数据建立索引的系统开销还是不容忽视的,反过来,假如我们将这个表分成100个table呢,从table_001一直到table_100,5000w行数据平均下来,每个子表里边就只有50万行数据,这时候我们向一张只有50w行数据的table中insert数据后建立索引的时间就会呈数量级的下降,极大了提高了DB的运行时效率,提高了DB的并发量,这种拆分就是横向拆分
2,实现方法:垂直拆分,拆分方式实现起来比较简单,根据表名访问不同的数据库就可以了。横向拆分的规则很多,这里总结前人的几点,(1)顺序拆分:如可以按订单的日前按年份才分,2003年的放在db1中,2004年的db2,以此类推。当然也可以按主键标准拆分。优点:可部分迁移
缺点:数据分布不均,可能2003年的订单有100W,2008年的有500W。
(2)hash取模分: 对user_id进行hash(或者如果user_id是数值型的话直接使用user_id的值也可),然后用一个特定的数字,比如应用中需要将一个数据库切分成4个数据库的话,我们就用4这个数字对user_id的hash值进行取模运算,也就是user_id%4,这样的话每次运算就有四种可能:结果为1的时候对应DB1;结果为2的时候对应DB2;结果为3的时候对应DB3;结果为0的时候对应DB4,这样一来就非常均匀的将数据分配到4个DB中。
优点:数据分布均匀
缺点:数据迁移的时候麻烦;不能按照机器性能分摊数据。(3)在认证库中保存数据库配置
就是建立一个DB,这个DB单独保存user_id到DB的映射关系,每次访问数据库的时候都要先查询一次这个数据库,以得到具体的DB信息,然后才能进行我们需要的查询操作。
优点:灵活性强,一对一关系
缺点:每次查询之前都要多一次查询,会造成一定的性能损失。
第五篇:求解大型银行资本金缺口
求解大型银行资本金缺口
在金融危机冲击下,主要国家普遍加强了对银行资本的监管,实行更加严格的资本定义,扩大资本覆盖范围,并提出系统重要性、逆周期等资本要求。
基于此,中国的银行监管部门于2011年8月公布了《商业银行资本管理办法》(征求意见稿,下称新资本管理办法),对大型银行的资本充足率提出了新的要求。
在现阶段银行融资仍占社会融资总量主体的情况下,商业银行特别是大型银行的信贷增速短期内将无明显放缓迹象,新增资本需求会继续上升。
以上两个趋势性因素,令工、农、中、建、交五家大型商业银行面临巨大资本金缺口,初步测算,这一缺口在“十二五”期间将高达4000亿元。
资本金饥渴成为困扰大型商业银行的一道难题。可供选择的解决路径究竟有哪些?笔者认为:大型银行拓展资本补充渠道需要同时从内源融资和外源融资进行拓展。在内源融资方面,需要设置合适的分红比例;在外源融资方面,需要客观看待配股、定向增发对国有控股股东的财务压力和股权稀释影响。同时,要从分子和分母两个渠道进行机制创新,来提高资本充足率水平。
五大行4000亿资本缺口
2011年5月,银行监管部门发布了《关于中国银行业实施新监管标准的指导意见》,明确了最新资本监管框架,新监管标准实施后,正常条件下系统重要性银行最低资本充足率要求为11.5%。2011年8月,银行监管部门发布新资本管理办法,对加权风险资产测算方法进行调整(主要变化参见附件一)。
基于监管部门所要求的风险权重的变化和新资本管理办法的相关测算要求,以大型银行2011年6月末数据为基础,笔者对权重法下银行资本充足率及资本缺口所受到的影响进行了初步估算(见表1)。
由于新资本充足率管理办法中核心资本增加了其他无形资产扣减项、部分资产项目风险权重上升、增加了操作风险资本要求等原因,大型银行核心资本充足率均下降了0.6个-0.8个百分点左右,除建设银行外,其余四家银行均存在核心资本缺口而无法满足9.5%的监管要求。
总资本充足率情况也不容乐观,由于风险加权资产增加规模较大,附属资本计算方法中将原来的贷款一般准备项改为损失准备缺口(即贷款损失准备低于150%贷款拨备覆盖率的缺口)等原因,大型银行资本充足率将下降0.7个至1.3个百分点不等,工商银行、农业银行和交通银行均难以达到监管标准。
必须说明的是,由于数据可得性有限,风险加权资产调整影响的测算并不完备,部分风险权重增加项并未计算在内,此处进行的整体测算结果可能还比实际情况相对乐观。因此,由于新监管标准造成的大型银行资本补充压力不容忽视。
如果拉长分析的时间长度,大型银行的信贷扩张还将进一步对资本充足率带来压力。如果按照未来GDP增速至少为7%,CPI增幅4%,信贷增速至少高于名义GDP增速3个-5个百分点计算,在今后一段时间内,大型银行贷款规模将维持14%-20%左右的持续扩张状态,对银行资本的新增需求不容忽视。
现拟基于以下假设,对“十二五”时期大型银行资本金缺口情况进行试测(见表2):1)2012年-2015年信贷增速依次递减:17%、16%、15%、14%;2)利润年均增速依次为20%、19%、18%、17%;3)信贷资产增量与风险加权资产增量比例为1∶1.2(考虑到未来非贷款业务占比将逐步提升,设定值略高于2011年水平);4)不良贷款率1.3%(考虑到地方政府融资平台、房地产等领域贷款风险因素的可能影响,设定值略高于2011年水平)、拨备贷款比例2.5%;5)分红比例40%。
从基于上述假设测算结果可以看出,随着信贷投放规模逐年扩大,资本需求日益扩大,如不进行资本补充,则至“十二五”期间,五家大型银行将面临近4000亿元资本缺口,如果不转变业务模式,则如何拓展资本补充渠道必然会成为大型银行难以忽视的重要挑战。
路径一:分红比例下调
利用留存收益进行内源融资具有成本低、不稀释老股东股权比例、银行具有主动权等优势,是银行补充资本金、提高核心资本的最可持续的途径。如果将现金分红比例适当调低,则可在一定程度上支持计划中的信贷增长。
基于前述假设条件,如将分红比例降至30%,则工商银行、建设银行在2015年前就不再面临资本补充问题;如将分红比例降至20%,则农业银行、中国银行也可不进行资本补充,仅靠内源融资即可补足新监管标准和信贷规模增长所带来的资本消耗。
各银行单靠利润留存即可满足资本补充需求的现金分红比例上限(如表3),也即当大型银行分红比例分别降至35.3%、26.1%、20.8%、37.5%和4.8%以下时,就不需要新的外源融资即可满足资本补充需求。
考虑到汇金公司在四家大型银行股改之初先后向其注资6000余亿元,由此需靠四家银行分红按年支付特别国债利息,降低现金分红比例会对其财务状况产生一定影响。
按现有控股比例不变进行测算,如果将现金分红比例降至40%,汇金公司在支付特别国债利息后,还将产生7000亿元左右的盈余。即使下降分红比例至20%,即前述四家大型银行均无需外源融资的分红比例,汇金公司仍将有4000亿元左右的财务盈余。事实上,工、农、中、建四行仅需按照4.5%、6.8%、5.7%、4.9%的比例进行现金分红,即可满足汇金公司支付特别国债利息的资金需求(见表4)。
路径二:国有控股股东配股
股改上市以来,大型银行曾在2010年进行过一次以配股和定向增发为主要形式的外源资本补充。
财政部、汇金公司、全国社保基金等国有控股股东依靠其历年累计的现金分红,即有足够的财务资源参与大型银行的配股。“十二五”期间,在其他基础假设条件不变的情况下,假设大型银行已通过调整现金分红比例至30%进行了内源融资,则资本缺口如表5所示。以上测算结果显示,在降低现金分红比例后,工商银行、建设银行已不存在资本缺口。假设1)其余三行均在开始出现资本缺口后,即2012年进行定向增发或配股形式的外源融资;2)三家银行均一次性补足“十二五”期间全部资本缺口,即农业银行、中国银行、交通银行分别补充500亿元、550亿元和700亿元(见表6)。
从上述测算结果可以看出,汇金公司依靠农业银行和中国银行的分红,就可以在完成对应特别国债利息支出及参加2010年配股后,继续参加“十二五”时期的资本补充,且仍能有近500亿元的财务盈余。交通银行由于补充资本规模相对较大,而分红额度较低,会对财政部造成一定财务压力,但是考虑到财政部从农业银行的分红收入后,综合来看,财政部仍有财务实力参加农业银行和交通银行的配股。
路径三:增发稀释国有控股权
但是,无论分红是否能够满足国有控股股东参与银行配股的资金需求,只要参与资本补充,都将对国有控股股东的财务状况造成压力。那么如果不参与配股,其影响如何?
按照上述假设进行测算,设想在农、中、交行分别于2012年和2013年补充500亿元、550亿元和700亿元资本时,国有股东并未选择参与定向增发或者配股,而是选择适当稀释国有控股股东在大型银行中的持股比例。
假设增发时股价较2011年末上升20%,则在不参与增发的情况下,汇金公司对农业银行和中国银行的持股比例下降至38.2%和64%,分别下降1.8个和3.7个百分点;财政部对农业银行和交通银行的持股比例下降至37.4%和19.9%,分别下降1.8个和6.6个百分点。以汇金公司和财政部为代表的国有控股股东仍然维持着对农业银行和中国银行的绝对控股地位(见表7)。
由此可见,在信贷持续增长带来资本需求,以及国有控股股东要维持目前控股比例的前提下,资本补充必然对财政部、汇金公司等国有大股东造成现实的财务压力。同时,在确保国有股东绝对控股地位的前提下,允许国有股比例适当稀释,也有利于实现大型银行股权结构的进一步多元化和公司治理机制的完善。
因此,建议对国有控股股东持股比例设立一个合理区间,允许其通过不参与配股和定向增发、引进战略投资者等方式,使其持股比例在绝对控股比例底线之上适当波动,从而降低国有控股股东的财务压力。
路径四: 分子、分母资本工具创新
从资本充足率的计算角度看,可从做大分子和缩小分母两方面,对资本补充机制进行创新。
在分子方面,可扩大债务资本补充工具的应用范围。次级债、可转债、混合资本债等债券工具具有发行便利、对资本市场冲击相对较小、不会摊薄原有股东收益、避税等优势,可成为银行资本补充的重要渠道;同时,创新一些新的资本性质的金融工具。
在分母方面,一是要强化资本对于信贷扩张的约束作用,推动银行更多发展资本节约型业务。测算结果表明,在信贷增速降至12%、利润率保持在15%、其他假设条件不变的情况下,除交通银行外,其余大型银行均可依靠内源资本积累达到资本监管要求,而无需进行外源融资。
二是逐步推行信贷资产转让,增强银行信贷资产流动性。
三是尝试运用资产证券化等金融创新工具,缓解信贷资产对银行的资本占用压力。作者为国务院发展研究中心金融研究所副所长、中国银行业协会首席经济学家