SOX(萨班斯)法案知多少

| | Comments (0)

最近公司正在根据nasdaq的要求,启动SOX法案合规工作。 根据规定,需要准备N多IT相关规范文档。被折腾了个够。 不过还好,经历了这次,部门的技术规范文档更加规范齐全了。

现在也对SOX法案有了一定的了解:

2002年7月,美国国会正式通过了Sarbanes-Oxley法案(简称SOX法案),明确要求管理层对公司财务信息披露和内部控制效力负有直接责任,公司的内控措施应由管理层声明有效并由独立审计机构出具内控审计意见提交给美国证监会(SEC)。

SOX法案的出台是由于全世界包括美国金融投资领域对上市公司的内部控制失去了信心,为了重新树立信心而制订的。

下面是SOX法案目录及摘要:

目 录

萨班斯法案摘要
  
萨班斯法案
  
一、 萨班斯法案正文目录
  
二、 萨班斯法案正文
  
三、 萨班斯法案关于SEC的规定及执行
  
四、萨班斯法案有关定义
  
萨班斯法案摘要
萨班斯法案主要包括以下几个方面的内容:
一、成立独立的公众公司会计监察委员会,监管执行公众公司审计职业
  公众公司会计监察委员会(以下简称PCAOB)负责监管执行公众公司审计的会计师事务所及注册会计师。法案规定:
(一)PCAOB拥有注册、检查、调查和处罚权限,保持独立运作,自主制定预算和进行人员管理,不应作为美国政府的部门或机构,遵从哥伦比亚非赢利公司法,其成员、雇员及所属机构不应视为联邦政府的官员、职员或机构。
(二)授权美国证券交易委员会(以下简称SEC)对PCAOB实施监督。PCAOB由5名专职委员组成,由SEC与美国财政部长和联邦储备委员会主席商议任命,任期5年。5名委员应熟悉财务知识,其中可以有2名是或曾经是执业注册会计师,其余3名必须是代表公众利益的非会计专业人士。
(三)要求执行或参与公众公司审计的会计师事务所须向PCAOB注册登记。PCAOB将向登记会计师事务所收取"注册费"和"年费",以满足其运转的经费需要。
(四)PCAOB有权制定或采纳有关会计师职业团体建议的审计与相关鉴证准则、质量控制准则以及职业道德准则等。PCAOB如认为适当,将与指定的、由会计专家组成的、负责制定准则或提供咨询意见的专业团体保持密切合作,有权对这些团体建议的准则进行补充、修改、废除或否决。PCAOB须就准则制定情况每年向SEC提交年度报告。
(五)根据《1934年证券交易法》和修订《1933年证券法》的有关要求,授权SEC对会计准则制定机构的会计原则是否达到"一般公认"的目标进行认定。该准则制定机构必须符合如下要求:第一,应是民间机构;第二,由某个理事会(或类似机构)管理,该理事会多数成员在过去两年内未在任何会计师事务所任职;第三,经费获取方式与PCAOB相似;第四,通过多数票的方式确保会计原则及时反映新的会计问题和商业实务;第五,制定准则时考虑准则适应商业环境的变动性,以及高质量会计准则国际趋同的必要性或适当性。此外,法案还要求SEC就美国财务报告系统如何采用以原则为基础的会计准则问题进行研究,并在一年内向国会提交研究报告。
(六)PCAOB对公众公司审计客户超过100户以上的会计师事务所,要进行年度质量检查,其它事务所每3年检查一次。PCAOB和SEC可随时对会计师事务所进行特别检查。
(七)PCAOB有权调查、处罚和制裁违反该法案、相关证券法规以及专业准则的会计师事务所和个人。不过,PCAOB的处罚程序要受SEC监督,SEC可以加重、减轻其做出的处罚,也可以修改或取消其处罚决定。PCAOB对会计师事务所和个人进行处罚和制裁的形式包括:临时或永久吊销注册;临时或永久禁止个人在会计师事务所执业;临时或永久限制事务所或个人的执业活动、职能等;对于故意、明知故犯、不计后果的行为或者屡犯的过失行为,可对自然人处以75万美元以下的罚款,对单位处以1500万美元以下的罚款;对于过失行为,自然人罚款不超过10万美元,单位不超过200万美元;谴责;强制要求参加附加的专业培训和教育;其它处罚形式。
(八)审计美国公司(包括审计美国公司的国外子公司)的外国会计师事务所也必须向PCAOB登记。

二、要求加强注册会计师的独立性

(一)修改1934年《证券交易法》,禁止执行公众公司审计的会计师事务所为审计客户提供列入禁止清单的非审计服务,未明确列入禁止清单的非审计服务也要经过公司审计委员会的事先批准。被禁止的非审计服务包括:簿记服务以及为审计客户提供的与会计记录或财务报表相关的其它服务、财务信息系统设计与实施、评估或估价服务、精算服务、内部审计外包服务、管理职能或人力资源服务、经纪人、投资顾问或投资银行服务、法律服务以及与审计无关的专家服务、公众公司监察委员会根据有关规则认为不可提供的其它服务。
(二)审计合伙人和复核合伙人每5年必须轮换,规定了注册会计师需向公司审计委员会报告的事项。
(三)如果公司首席执行官、财务总监、首席会计官等高级管理者在前一年内曾在会计师事务所任职,该事务所则被禁止为这家公司提供法定审计服务。
另外,责成各州监管机构自行决定PCAOB的独立性标准是否适用于未在该委员会登记的中小事务所。

三、要求加大公司的财务报告责任

(一)要求公司的审计委员会负责选择和监督会计师事务所,并决定会计师事务所的付费标准。
(二)要求公司首席执行官和财务总监对呈报给SEC的财务报告"完全符合证券交易法,以及在所有重大方面公允地反映了财务状况和经营成果"予以保证。对违反证券法规而重编会计报表后发放的薪酬和红利应予退回。
(三)公司财务报告必须反映会计师事务所做出的所有重大调整,年报和季报要披露重大表外交易,以及与未合并实体之间发生的对现在或将来财务状况具有重大影响的其他关系。
(四)SEC有权对违反证券法规者担任公司的董事或管理人员采取禁入措施。
(五)强制要求公司高级财务人员遵循职业道德规则。
(六)禁止公司给高层管理者或董事贷款,并要求公司管理层在买卖公司股票后立即告知SEC。

四、要求强化财务披露义务

(一)公众公司应进行实时披露,即要求及时披露导致公司经营和财务状况发生重大变化的信息。
(二)由SEC制定规则,要求公众公司披露对公司财务状况具有重大影响的所有重要的表外交易和关系,且不以误导方式编制模拟财务信息。由SEC负责对特殊目的实体等表外交易的披露进行研究,提出建议并向国会报告。
(三)主要股东或高级管理者披露股权变更或证券转换协议的强制期间由原来的10个工作日减少为2个工作日。
(四)由SEC制定规则,强制要求公众公司年度报告中应包含内部控制报告及其评价,并要求会计师事务所对公司管理层做出的评价出具鉴证报告。
(五)由SEC制定规则,强制要求公司审计委员会至少应有一名财务专家,并且要予以披露。

五、加重了违法行为的处罚措施

(一)故意进行证券欺诈的犯罪最高可判处25年入狱。对犯有欺诈罪的个人和公司的罚金最高分别可达500万美元和2500万美元。
(二)故意破坏或捏造文件以阻止、妨碍或影响联邦调查的行为将视为严重犯罪,将处以罚款或判处20年入狱,或予以并罚。
(三)执行证券发行的会计师事务所的审计和复核工作底稿至少应保存5年。任何故意违反此项规定的行为,将予以罚款或判处20年入狱,或予以并罚。
(四)公司首席执行官和财务总监必须对报送给SEC的财务报告的合法性和公允表达进行保证。违反此项规定,将处以50万美元以下的罚款,或判处入狱5年。
(五)起诉证券欺诈犯罪的诉讼时效由原来从违法行为发生起3年和被发现起1年分别延长为5年和2年。
(六)对检举公司财务欺诈的公司员工实施保护措施,并补偿其特别损失和律师费。
  
六、增加经费拨款,强化SEC的监管职能
   从2003年度起将SEC的拨款增加到7.76亿美元,加强欺诈防范、风险管理、市场监管与投资管理。其中9800万美元用于招聘200名工作人员,加强对注册会计师和审计业务的监管。

七、要求美国审计总署加强调查研究

(一)授权美国审计总署对会计师事务所强制轮换制度进行研究。
(二)要求美国审计总署对1989年以来的会计师事务所的合并进行研究,评估其现在和未来的影响,并对发现的问题提出解决方案。
(三)要求美国审计总署研究导致会计师事务所竞争受限的因素,如高成本、低服务质量、独立性、缺乏选择等。并调查联邦或州的监管政策是否存在妨碍会计师事务所正当竞争的因素。
(四)责成美国审计总署就调查研究的情况,在一年内分别向参议院银行委员会和众议院金融服务委员会报告。


--以上内容部分引自互联网--


--The End--

今天一个同事在一台Solaris测试机上测试时,误将/usr/lib/ld.so.1文件给覆盖了。进而导致系统中命令无法使用:

bash-2.03# ls

Bus Error

ls: Cannot read /usr/lib/ld.so.1

Killed

# dmesg

dmesg: Cannot read /usr/lib/ld.so.1

Killed

 

不过还好,这时没有将当前的session断开,否则就只有通过光盘恢复了。下面是恢复命令:

/usr/sbin/static/cp /etc/lib/ld.so.1 /usr/lib/

 

使用/usr/sbin/static/cp静态命令将/etc/lib目录下的ld.so.1备份文件拷贝到ld.so.1目录下即可。

 

上面的情况是用户现有session没有断开的情况下的恢复情况,如果系统当前session断开后,用户是无法再登录系统的,这时只能重启系统(而且运行reboot命令也会提示错误,只能通过按钮重启),通过光盘启动的方法恢复了:

 

恢复的方法,用光盘或者其他方式启动安装界面,在界面上直接启动一个终端程序。

1 当前的usr/lib目录下是光盘中mount的目录。可以做为恢复系统中损坏的ld.so.1文件用。

2 接下来要做的是找到原来系统中usr/lib目录,一般这个设备是在/dev/dskc1t*的设备文件,一般不会是c1t0d0s0的。如果以前有各个目录的设备名记录可以直接mount,不然只有一个一个来了。有可能在mount的时候会提示需要fsckfsck命令是:fsck -F ufs /dev/rdsk/c1t0d0s0(设备名称,根据实际情况来改)

mount命令:mount /dev/rdsk/c1t0d0s0 /mnt   (设备名称也是要一个一个改的哦)

mount成功后需要到mnt目录下查看,是不是有lib目录,因为我们找的就是这个。

3 找到这个设备后,就先ls -l 看一下,是不是没有运行权,没有当然加一下喽。方法:chmod +x  ld.so.1  

4 这里要做的是先umount后再重新启动机器。

Umount命令: umount /mnt 

 

Fsck也可以用在发生系统不能启动的情况下,可以一个一个修复设备,一般的小问题都可以解决。

 

 

下面介绍一下Solaris动态链接库:

 

         大家都知道,在WINDOWS系统中有很多的动态链接库(.DLL为后缀的文件,DLLDynamic Link Library)。这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个执行程序间共享,节省了空间,提高了效率,具备很高的灵活性,得到越来越多程序员和用户的青睐。

 

         Solaris系统里面有些库文件,当编译的时候,如果把库文件也编译到文件中,那文件本身就可以执行,但这样的缺点是生成的文件十分大。所以很多情况下使用动态连接库,就是编译出的文件不包含库,而只包含到库的指针,这样在运行的时候会到指定的地方调用这个库,这样就减少了文件的大小。Solaris包含的实时连接器ld.so.1,就是动态对象的运行阶段链接程序。许多系统命令都要通过该文件实时将相关东西动态装载进内核,如果用truss来跟踪某个命令来执行的话,都会发现绝大多数命令都要调用到ld.so.1库文件。

 

         如果ld.so.1文件丢失将造成系统大多数命令都不能执行,为了防止这种情况,Solaris将一些重要的库文件备份在"/etc/lib"目录下,并在 /usr/sbin/static下保存了五个常用和关键系统的命令,这些命令不受该库文件的影响(也就是说即使该库文件被损坏,这些命令依然可以运行),此时如果系统还没有宕机或者没有reboot,可以通过以下的方法来恢复:

 

# /usr/sbin/static/cp /etc/lib/ld.so.1 /usr/lib/

 

/usr/sbin/static目录下的这个五个命令为:

cp ln mv rcp tar

 

这几个命令都是静态链连接的命令文件,不受库文件的影响:

# file *

  cp: ELF 32-bit MSB executable SPARC Version 1, statically linked, stripped

  ln: ELF 32-bit MSB executable SPARC Version 1, statically linked, stripped

  mv: ELF 32-bit MSB executable SPARC Version 1, statically linked, stripped

  rcp: ELF 32-bit MSB executable SPARC Version 1, statically linked, stripped

  tar: ELF 32-bit MSB executable SPARC Version 1, statically linked, stripped

 

--The End--

 

Oracle Release Number Format含义

| | Comments (0)

长时间以来对Oracle的Release命名法有些模糊,今天查了一下资料记录下来。下面以Oracle Release 9.2.0.1.0为例,说明Oracle的release命名法,如下所示:

Example of an Oracle Release Number

 

 

 

oracle release number format.jpg

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Major Database Release Number

This is the most general identifier. It represents a major new edition (or version) of the software that contains significant new functionality.

 

Database Maintenance Release Number

This digit represents a maintenance release level. Some new features may also be included.

 

Application Server Release Number

This digit reflects the release level of the Oracle9i Application Server (Oracle9iAS).

 

Component Specific Release Number

This digit identifies a release level specific to a component. Different components can have different numbers in this position depending upon, for example, component patch sets or interim releases.

 

Platform Specific Release Number

This digit identifies a platform specific release. Usually this is a patch set. Where different platforms require the equivalent patch set, this digit will be the same across the effected platforms.

 

Note: Starting with release 9.2, maintenance releases of Oracle are denoted by a change to the second digit of a release number. In previous releases, the third digit indicated a particular maintenance release.

 

 

下面几个有用视图可用来检查你的数据库当前版本:

V$OPTION

This view lists options that are installed with the Oracle server.

V$option是指dbms安装的组件。

 

SQL> select * from v$option;

PARAMETER                                VALUE

---------------------------------------- --------------------

Partitioning                             TRUE

Objects                                  TRUE

Real Application Clusters                FALSE

Advanced replication                     TRUE

Bit-mapped indexes                       TRUE

Connection multiplexing                  TRUE

Connection pooling                       TRUE

Database queuing                         TRUE

Incremental backup and recovery          TRUE

Instead-of triggers                      TRUE

Parallel backup and recovery             TRUE

Parallel execution                       TRUE

Parallel load                            TRUE

Point-in-time tablespace recovery        TRUE

Fine-grained access control              TRUE

Proxy authentication/authorization       TRUE

Change Data Capture                      TRUE

Plan Stability                           TRUE

Online Index Build                       TRUE

Coalesce Index                           TRUE

Managed Standby                          TRUE

Materialized view rewrite                TRUE

Materialized view warehouse refresh      TRUE

Database resource manager                TRUE

Spatial                                  TRUE

Visual Information Retrieval             TRUE

Export transportable tablespaces         TRUE

Transparent Application Failover         TRUE

Fast-Start Fault Recovery                TRUE

Sample Scan                              TRUE

Duplexed backups                         TRUE

Java                                     TRUE

OLAP Window Functions                    TRUE

Block Media Recovery                     TRUE

Fine-grained Auditing                    TRUE

Application Role                         TRUE

Enterprise User Security                 TRUE

Oracle Data Guard                        TRUE

Oracle Label Security                    FALSE

OLAP                                     FALSE

Heap segment compression                 TRUE

Join index                               TRUE

Trial Recovery                           TRUE

Oracle Data Mining                       FALSE

Online Redefinition                      TRUE

Streams                                  TRUE

File Mapping                             TRUE

 

47 rows selected.

 

 

PRODUCT_COMPONENT_VERSION

PRODUCT_COMPONENT_VERSION contains version and status information for component products.

Product_component_versionrdbms的产品:

 

SQL> select * from product_component_version;

PRODUCT                                  VERSION              STATUS

---------------------------------------- -------------------- --------------------

NLSRTL                                   9.2.0.4.0            Production

Oracle9i Enterprise Edition                    9.2.0.4.0            64bit Production

PL/SQL                                    9.2.0.4.0            Production

TNS for Solaris:                             9.2.0.4.0            Production

 

 

DBA_REGISTRY

DBA_REGISTRY displays information about the components loaded into the database.

DBA_REGISTRY指数据库中组件的信息:

比如,建库时如选择 Oracle Text,则此视图查询时也会有 Oracle Text这一项。

 

SQL> select comp_name,version,status from dba_registry;

COMP_NAME                      VERSION              STATUS

------------------------------ -------------------- --------------------

Oracle9i Catalog Views          9.2.0.4.0            VALID

Oracle9i Packages and Types      9.2.0.4.0            VALID

Oracle Workspace Manager       9.2.0.1.0            VALID

 

 

Oracle 10.2.0.3的Ora-1461错误

| | Comments (0)

 

发现最近在Oracle 10.2.0.3的RAC环境中,时不时会提示下面错误:

ORA-1461 encountered when generating server alert SMG-3500

 

经研究发现,其是Oracle 10g的一个Bug,并且目前只有Oracle 10.2.0.3会遇到:

造成这个错误的原因是由于SMON 进程正在 UPDATE SMON_SCN_TIME表时引发了ORA-1461:

下面是诊断信息:

 

DIAGNOSTIC ANALYSIS:

--------------------

Set the event 1461 and got the smon trace file which shows the error

.

SQL> alter system set EVENT="1461 TRACE NAME ERRORSTACK LEVEL 10" 

scope=spfile;

.

ksedmp: internal or fatal error

ORA-01461: can bind a LONG value only for insert into a LONG column

Current SQL statement for this session:

update smon_scn_time set orig_thread=0, time_mp=:1, time_dp=:2, scn=:3,  

scn_wrp=:4,  scn_bas=:5, num_mappings=:6, tim_scn_map=:7 where thread=0 and 

scn =  (select min(scn) from smon_scn_time where thread=0)

----- Call Stack Trace -----

ksedmp ksddoa ksdpcg ksdpec ksfpec kgesev 

ksesec0 opiobv opipbr opibvg opiexe opiall0 

opikpr opiodr rpidrus skgmstack rpidru rpiswu2 

kprball ktf_scn_time ktmmon ksbrdp opirip opidrv 

sou2o opimai_real main start 

 

ORA-1461错误有时也会和

ORA-01461: can bind a LONG value only for insert into a LONG column   错误一起出现。

 

Solution:

 Oracle提供 Patch 6602742 补丁下载可以解决问题。

 

不过还好此错误对系统影响不大。

 

--The End--

过年回家,水土不服

| | Comments (4)

大过年的,回家居然连续上起火来,在家呆了一周搞得鼻子嘴巴都烂了,回北京后不得已只好带个口罩"遮丑"。身体不爽,也懒得动笔了。

大家都说我回家水土不服了,晕倒 ^_^

其实我不是水土不服,这一点俺家的那只 大笨狗 可以证明,一年不见了,它见到偶还是那么亲切,老远的就摇着尾巴跑过来亲热。

追究上火之原因,也就是在家熬夜、暴饮暴食的缘故了。还有一条就是喝酒所致。

回到家老妈每到吃饭就会说我瘦,要多吃点,本来可以吃一碗米饭(我们家的碗挺大的),老妈一定要"逼"着我吃一碗半,然后又会给夹好多菜。我是个孝顺而且听话的儿子,每到这个时候我就会主动请缨,"妈,我要吃两碗饭",妈妈听了后就会比较高兴。我直到吃到肚皮"圆"了为止,呵呵 ^_^ 

在父母眼里,孩子永远都是孩子,天下父母心啊!

还要非常感谢我的女友,回到北京后,每天做好多青菜吃,还有泡蜂蜜水喝,上火症状很快消去,伤口也很快长好了!

母亲和女友,她们爱我的方式是不一样的,但她们都是我最爱的女人!

 

--The End--

ORA-03113错误解决一例

| | Comments (1)

 

大家知道,ORA-03113错误是Oracle数据库常见的错误,导致这个错误的原因比较复杂,各种各样的原因。可能是网络中断引起的、也可能是数据库本身出现了问题。

 

下面就一个案例,分析一下ORA-03113错误。

 

故障现象:

 

开始alert文件提示错误:

Error 1013 trapped in 2PC on transaction 1.60.1257421. Cleaning up.

Error stack returned to user:

ORA-02050: transaction 1.60.1257421 rolled back, some remote DBs may be in-doubt

ORA-01013: user requested cancel of current operation

ORA-06553: PLS-103: Encountered the symbol "EXCEPTION" when expecting one of the following:

   begin case declare exit for function goto if loop mod null

   package pragma procedure raise return select separate type

   update while with <an identifier>

   <a double-quoted delimited-identifier> <a bind variable> <<

   form table call close current define delete fetch lock

Mon Feb 18 09:07:19 2008

DISTRIB TRAN SMSBOSS.09aad41c.1.60.1257421

  is local tran 1.60.1257421 (hex=01.3c.132fcd)

  insert pending collecting tran, scn=8914343855672 (hex=81b.884c8638)

然后时不时的会提示下面错误:

ERROR, tran=1.60.1257421, session#=1, ose=0:

ORA-03113: end-of-file on communication channel

*** 2008-02-18 09:45:25.919

ERROR, tran=1.60.1257421, session#=1, ose=0:

ORA-03113: end-of-file on communication channel

*** 2008-02-18 10:19:42.891

 

 

Oracle数据库只有这些错误提示,其余状态均正常。

 

从错误提示看,应该是由于分布事务由于人为cancel中止,引起的事务失败,下面查看相关信息:

 

 

SQL> select LOCAL_TRAN_ID,GLOBAL_TRAN_ID,STATE,MIXED,HOST,COMMIT# from dba_2pc_pending;

 

LOCAL_TRAN_ID    GLOBAL_TRAN_ID                        STATE         MIX       HOST                              COMMIT#

---------------------- -------------------- ---------------- --- -------------------- ----------------

1.60.1257421               SMSBOSS.09aad41c.1.60.1257421  collecting       no      WORKGROUP\LIUQING  8914343855672

 

SQL> select * from DBA_2PC_NEIGHBORS;

 

LOCAL_TRAN_ID          IN_      DATABASE        DBUSER_OWNER                   DBID                  SESS# BRANCH

---------------------- --- --------------- ------------------------------ ----------------- ---------- --------------------

1.60.1257421                     in                                       BOSSMGR                             N                                  1            0000

 

1.60.1257421                      out      SMSDBN          BOSSMGR                              N      cc3ddb9b              1            4

 

select * from DBA_2PC_PENDING@smsdbn;

 

no rows selected

 

select * from DBA_2PC_NEIGHBORS@smsdbn;

 </