lijietz's technology world!
自我介绍
Layout and Color
新闻聚合
博客日历
文章归档...
最新发表...
博客统计...
网站链接...
===========================================================
什么是银行SWIFT代码,如何查得?
===========================================================

SWIFT是“Society Worldwide Interbank Financial Telecommunication环球同业银行金融电讯协会”的英文简称。凡该协会的成员银行都有自己特定的SWIFT代码,即SWIFT CODE。在电汇时,汇出行按照收款行的SWIFT CODE发送付款电文,就可将款项汇至收款行。该号相当于各个银行的身份证号。

所谓SWIFT系Society for worldwide Interbank Financial Telecommunication之简称。中文译为环球银行间财务通信系统。它是一套用于全世界各银行间信息传递,调拨资金,开发信用状等一种高性能, 低成本、安全、迅速、电文标准化,而且可以与各种计算机连续作业的电信系统,其功能几乎可以完全取代电报作业。

SWIFT为一国际性非营利法人组织,总部设于比利时首都布鲁塞尔,于美国、荷兰分别设有国际作业中心(Operation Genter)。SWIFT自1973年5月间成立以来,到1997年12月底止参加的国家及银行已高达168个国家3,070家银行,每天传达电文高达 210万次以上,由于SWIFT有下列之优点。

(一)安全:SWIFT是银行间之通讯工具,涉及资金移转,安全之重要性不言可喻。其安全控制方法有四:
SWIFT系自成严密专用的通讯网路,使用者仅限于银行金融界之会员,因非公共网络,他人无法进入此网络,对安全性之提升大有助益。
SWIFT信息的传递过程中均以乱码执行,讯息不易被第三者译码窃取。
SWIFT发电,收电作业均有使用者代号(User I/D)及密码(Password)控制,以保障信息传递之安全性,各银行必须使用经SWIFT总部检查合格之计算机软件设备。且电文资料输入,至少须经过两层不同层次之控管作业。
SWIFT之往来电文除○、三、九类以外,均须「全文」加押,往来同业应先交换密码,定时更换密码。较Telex仅对交易日期、币别、金额加押,SWIFT密码控制更为严谨。
(二)经济:各银行申请加入SWIFT之组织,依规定要缴纳会费(早期会员需缴178万比利时法郎,目前已降至40万比利时法郎)外,尚需投资经SWIFT总部核可之计算机软件之硬设备,尔后使用只需分摊成本费,每笔约30比利时法郎。

(三)自动化:SWIFT之电讯包括下列九大项,均依固定格式拍发内容、用语标准化,便于各银行自动化作业。

由于以上优点,自成立后,除各银行纷纷要求加入外,甚至一些证券经纪商、交易商、旅行支票销售公司等非银行机构,也积极加入正式作业,我国外汇指定银行及在我国设有分行之外商银行大部分已加入会员,并于1985年9月23日开始使用。

SWIFT提供用户完成金融交易之电文,按电文种类第一位数字分为九大类:
System Message系统电文
Customer Transfers客户汇款
Bank Transfers银行汇款
Foreign Exchange/loans/Deposit外汇及放款/存款交易
Collections托收
Securities有价证券电文
Documentary Credits跟单信用状
Special Payment Mechansim特别付款方法(结构)(旅行支票)
Special Messages特殊电文
用来开发或修改信用状交易的Formate代号为700。

字体大小: 正文
中国各银行的swift代码(bic)查询 (2008-11-28 00:19:48)

SWIFT地址是一个8或11位的字符串,是一个银行在国际上的识别号码。SWIFT地址又被称为BIC(银行识别码)。该号相当于各个银行的身份证号。

SWIFT的编号规则一般是8位或11位,前四位为某银行代码(如中行:BKCH 工行: ICBK农行:ABOC建行:PCBC招行:CMBC民生银行:MSBC交通银行:COMM华夏银行:HXBK),紧接着四位是国别及地区代码(如中国 CN,北京BJ;中国北京CNBJ;中行美国纽约分行是BKCHUS),后面可能会有3位的数字或字母代码,一般是指具体的分支行。(中行北京总行代码是 BKCHCNBJ,是8位的,BJ代表中行是通过SWIFT北京连接点对外连接,下面每个分行或支行都在8位基础上分配一个地址,即添加另外3位数,共 11位以作区别。其他银行也是如此。)

统一的格式,如:BKCH CN BJ 110
前4位为一家银行的统一代码(如中国银行为BKCH),5-6位代表国家代码(中国为CN),7-8位代表城市代码(如:BJ),110代表北京市分行。

网上查询方法:请打开http://www.swift.com/biconline/

http://www.swift.com/biconline/index.cfm?fuseaction=display_freesearch

在 BIC code 栏内输入下面的8位代码(你要查哪个行的就输哪个行的),在"county" 一栏选择“china”,点下面的橙色"search"按钮,即可查到这个行所有的SWIFT。
用拼音填入城市名City heading(比如大连就填dalian),选国家CHINA,点搜索Search。会出现如下部分表格:BIC code Institution(银行名) Branch name(分支行名) City heading.

会出现如下部分表格: N°编号 BIC code Swift代码 Institution 银行机构 Branch name 分支机构 City heading 城市

eg:
1 ABOCCNBJ340 AGRICULTURAL BANK OF CHINA, THE (DALIAN BRANCH) DALIAN
2 BEASCNSHDLN BANK OF EAST ASIA LIMITED, THE (DALIAN BRANCH) DALIAN
3 BKCHCNBJ810 BANK OF CHINA (LIAONING BRANCH) DALIAN
4 BKCHCNBJ82H BANK OF CHINA (K.F.Q. BRANCH) DALIAN
5 BKCHCNBJ82N BANK OF CHINA (DALIAN ZHONGSHAN SQUARE SUB-BRANCH) DALIAN
6 BOTKCNBDXXX BANK OF TOKYO-MITSUBISHI LTD.,THE DALIAN BRANCH DALIAN
7 CIBKCNBJ116 CITIC INDUSTRIAL BANK DALIAN
8 CMBCCNBS182 CHINA MERCHANTS BANK (DALIAN BRANCH) DALIAN
其中的BIC coad就是swift code.

本例中的第1,3,4,5,8号分别是:
1,中国农业银行大连分行 swift code 是ABOCCNBJ340
3,中国银行辽宁省分行 swift code 是BKCHCNBJ810
4,中国银行大连开发区分行 swift code 是BKCHCNBJ82H
5,中国银行大连中山区支行 swift code 是BKCHCNBJ82N
8,招商银行大连分行 swift code 是CMBCCNBS182
注意:中行的swift code只要找到省或市一级的就可以了,不用详细到各区的分支行。比如你是大连的朋友,不论你在哪个区的招行网点办的"一卡通"或者“一本通”都只要记住该号码就可以了。
该网页下面还注明了表格中底色是蓝色的,其swift code是可以正常使用的,而红或深灰色的是暂时有问题,不可用。浅灰色的是已经被删除的Swift code。

SWIFT代码简介及查询办法

SWIFT代码列表及查询办法:

中国工商银行SWIFT号码查询

农业银行SWIFT号码查询

中国银行SWIFT号码查询

建设银行SWIFT号码查询

招商银行SWIFT号码查询

民生银行SWIFT号码查询

交通银行SWIFT号码查询

华夏银行SWIFT号码查询

什么是SWIFT代码?

随着中国国际贸易业务的发展,广大中国用户相应的银行知识顿感匮乏了。在电汇请求的登记中,有“SWIFT Code”须填写,现在就来普及一下相关的知识。

什么是“SWIFT”?“SWIFT”是环球银行电信协会(Society for Worldwide Interbank Financial Telecommunication)的英文简称,它的标志是

由于国际银行业之间经济活动日益频繁,账务往来与日俱增,传统的手工处理手段无法满足客户的要求,为了适应瞬息万变的市场发展,客户要求在一个国家内,甚 至世界范围内的转账结算与资金清算能迅速完成。所以,从上世纪60年代末70年代初,欧洲七家银行就酝酿建立一个国际通信系统以提供国际间金融数据及其他 信息的快速传递服务,开始对通用的国际金融电文交换处理程序进行可行性研究。研究结果表明,应该建立一个国际化的金融处理系统,该系统要能正确、安全、低 成本和快速地传递标准的国际资金调拨信息。到1973年5月,来自美国、加拿大和欧洲的15个国家的239家银行宣布正式成立SWIFT, 其总部设在比利时的布鲁塞尔,它是为了解决各国金融通信不能适应国际间支付清算的快速增长而设立的非盈利性组织,负责设计、建立和管理SWIFT国际网 络,以便在该组织成员间进行国际金融信息的传输和确定路由。从1974年开始设计计算机网络系统,1977年夏,完成了环球同业金融电信网络(SWIFT网络)系统的各项建设和开发工作,并正式投入运营。

该组织创立之后,其成员银行数逐年迅速增加。从1987年开始,非银行的金融机构,包括经纪人、投资公司、证券公司和证券交易所等,开始使用SWIFT。 目前该网络已遍布全球206个国家和地区的8,000多家金融机构,提供金融行业安全报文传输服务与相关接口软件,支援80多个国家和地区的实时支付清算 系统。

1980年SWIFT联接到香港。我国的中国银行于1983年加入SWIFT,是SWIFT组织的第1034家成员行,并于1985年5月正式开通使用,成为我国与国际金融标准接轨的重要里程碑。之后,我国的各国有商业银行及上海和深圳的证券交易所,也先后加入SWIFT。进入90年代后,除国有商业银行外,中国所有可以办理国际银行业务的外资和侨资银行以及地方性银行纷纷加入SWIFTSWIFT的使用也从总行逐步扩展到分行。1995年,SWIFT在北京电报大楼和上海长话大楼设立了SWIFT访问点SAP(SWIFT Access Point),它们分别与新加坡和香港的SWIFT区域处理中心主节点连接,为用户提供自动路由选择。为更好地为亚太地区用户服务,SWIFT于1994年在香港设立了除美国和荷兰之外的第三个支持中心,这样,中国用户就可得到SWIFT支持中心讲中文的员工的技术服务。SWIFT还在全球17个地点设有办事处,其2000名的专业人员来自55个国家,其中北京办事处于1999年成立。

SWIFT的服务内容有:
全世界金融数据传输、文件传输、直通处理STP(straight through process)、撮合,清算和净额支付服务、操作信息服务、软件服务、认证技术服务、客户培训和24小时技术支持。

SWIFT自投入运行以来,以其高效、可靠、低廉和完善的服务,在促进世界贸 易的发展,加速全球范围内的货币流通和国际金融结算,促进国际金融业务的现代化和规范化方面发挥了积极的作用。我国的中国银行、中国农业银行、中国工商银 行、中国建设银行、交通银行、中信实业银行等已成为环球银行金融通信协会的会员。这也就是为什么PP只支持电汇这几家国内银行的原因。

SWIFT的设计能力是每天传输1100万条电文,而当前每日传送500万条电文,这些电文划拨的资金以万亿美元计,它依靠的便是其提供的240种以上电文标准。SWIFT的电文标准格式,已经成为国际银行间数据交换的标准语言。这里面用于区分各家银行的代码,就是“SWIFT Code”,依靠SWIFT Code便会将相应的款项准确的汇入指定的银行。

SWIFT Code是由该协会提出并被ISO通过的银行识别代码,其原名是BIC (Bank Indentifier Code),但是BIC这个名字意思太泛,担心有人理解成别的银行识别代码系统,故渐渐大家约定俗成地把BIC叫作SWIFT Code了。

每个银行(包括每个分行、支行)都有一个代码,是由银行名称的英文缩写和总行所在地的英文缩写(也有用数字加字母表示某城市的)以及该分行所在地的代码(字母、数字或混合)组成。在国际上,银行的SWIFT Code 都是统一的格式,例如:BKCHCNBJ110 ,1-4位为一家银行的统一代码(中国银行为BKCH),5-6位代表国家代码(中国为CN),7-8位代表城市代码(北京为BJ),110代表北京市分行。其中总行的SWIFT Code没有所在地代码,位数为8位(如中国银行总行BKCHCNBJ),其余都为11位。

要查询某家银行的SWIFT Code,可以直接打电话咨询,但对于我们做网赚的人来说,在网上查询更方便!登陆 环球银行电信协会 网站便可查询任意一个银行的SWIFT Code。

附带说一下,除了SWIFT Code,在美国还有 Routing Number,也称作 Routing Transit Number 或 ABA Number,它是由ABA(美国银行家协会)在美联储监管和协助下提出的金融机构识别码,很多金融机构都有一个,主要用于和银行相关的交易,转帐,清算 等的路由确认,由9位值(不是数!8位内容加1个校验码)构成。我们收到的美国支票,通常在其正面左下角都印有上该银行的Routing Number。


vecentli post on :2009.03.23 16:24 ::catagories: ( IT生活 ) ::reads:(34938) :: Comments (9) :: 引用 (0)
===========================================================
form登陆EBS url串。
===========================================================
http://testerp.tencent.com:8003/dev60cgi/f60cgi?lookAndFeel=ORACLE&colorScheme=OLIVE&lang=ZHS&env=NLS_LANG='SIMPLIFIED%20CHINESE_CHINA.UTF8'+FORMS60_USER_DATE_FORMAT='DD-MON-RRRR'+FORMS60_USER_DATETIME_FORMAT='DD-MON-RRRR%20HH24%3AMI%3ASS'+NLS_DATE_LANGUAGE='AMERICAN'+NLS_SORT='BINARY'+NLS_NUMERIC_CHARACTERS=
lijietz post on :2006.04.04 16:12 ::catagories: ( oracle 技术 ) ::reads:(9701) :: Comments (0) :: 引用 (0)
===========================================================
关于ebs使用的dbc文件.
===========================================================

(11.5.9+)

确认当前系统使用的dbc文件.

select host_name||'_'||instance_name from v$instance;

dbc文件的的位置和权限位设置:

ls –al $FND_SECURE/*.dbc (11.5.10+).

owner最好为 applmgr,权限伟644.

用AdminAppServer 验证dbc文件.

java oracle.apps.fnd.security.AdminAppServer apps/vecentli STATUS DBC=/u01/dev/devappl/fnd/11.5.0/secure/testdb.tencent.com_dev.dbc

返回的status必须为valid..

当然,你还要确认系统是否使用这个dbc文件.

在路径$APPL_TOP/admin/[SID]_[host].xml
查找_dbc_file_name,和上面说的dbc文件匹配即可.

修正dbc文件就重新autoconfig了.也可以运行..

$COMMON_TOP/admin/install/adgendbc.sh


lijietz post on :2006.04.04 14:28 ::catagories: ( oracle 技术 ) ::reads:(2929) :: Comments (0) :: 引用 (0)
===========================================================
最近学的东西很杂。
===========================================================

感觉知识面广了许多,但专业性却不行了。。像我这样子的?去做售前是否更好一点呢?能吹,而且吹的也不会很水。。

准备近期就rman,data guard,rac,ERP的sysadmin模块,还有shell编程深入系统的总结一下。

 查看全文

lijietz post on :2006.04.04 11:15 ::catagories: ( IT生活 ) ::reads:(2748) :: Comments (3) :: 引用 (0)
===========================================================
获取当前用户SID的几种方法.
===========================================================

1:

SELECT
TO_NUMBER(SUBSTRdbms_session.unique_session_id,1,4),'XXXX') FROM DUAL ;

备注:

以下方法获取的不是当前用户的sid.

select SYS_CONTEXT('USERENV','SESSIONID') sessionid
from dual

而是audit session id。

SYS_CONTEXT('USERENV','SESSIONID') = v$session.AUDSID

参见:

http://www.itpub.net/showthread.php?=&postid=2888443#post2888443


lijietz post on :2005.08.17 12:09 ::catagories: ( oracle 技术 ) ::reads:(4651) :: Comments (2) :: 引用 (0)
===========================================================
关于oracle中用存储过程返回动态记录集的学习
===========================================================
测试过程:
1、建立测试表
CREATE TABLE student
(
id NUMBER,
name VARCHAR2(30),
sex VARCHAR2(10),
address VARCHAR2(100),
postcode VARCHAR2(10),
birthday DATE,
photo LONG RAW
)
/

2、建立带ref cursor定义的包和包体及函数:
CREATE OR REPLACE
package pkg_test as
/* 定义ref cursor类型
不加return类型,为弱类型,允许动态sql查询,
否则为强类型,无法使用动态sql查询;
*/
type myrctype is ref cursor;

--函数申明
function get(intID number) return myrctype;
end pkg_test;
/

CREATE OR REPLACE
package body pkg_test as
--函数体
function get(intID number) return myrctype is
rc myrctype; --定义ref cursor变量
sqlstr varchar2(500);
begin
if intID=0 then
--静态测试,直接用select语句直接返回结果
open rc for select id,name,sex,address,postcode,birthday from student;
else
--动态sql赋值,用:w_id来申明该变量从外部获得
sqlstr := 'select id,name,sex,address,postcode,birthday from student where id=:w_id';
--动态测试,用sqlstr字符串返回结果,用using关键词传递参数
open rc for sqlstr using intid;
end if;

return rc;
end get;

end pkg_test;
/

3、用pl/sql块进行测试:
declare
w_rc pkg_test.myrctype; --定义ref cursor型变量

--定义临时变量,用于显示结果
w_id student.id%type;
w_name student.name%type;
w_sex student.sex%type;
w_address student.address%type;
w_postcode student.postcode%type;
w_birthday student.birthday%type;

begin
--调用函数,获得记录集
w_rc := pkg_test.get(1);

--fetch结果并显示
fetch w_rc into w_id,w_name,w_sex,w_address,w_postcode,w_birthday;
dbms_output.put_line(w_name);
end;

4、测试结果:
通过。

在上述的online document中有相当多的内容,包括怎样在pro*c传递动态参数给存储过程、ref cusor的使用限制、open cursor for的4中不同方法等等。

lijietz post on :2005.07.25 15:51 ::catagories: ( oracle 技术 ) ::reads:(1347) :: Comments (0) :: 引用 (0)
===========================================================
soft parse 和hard parse的区别及步骤。
===========================================================

这是我一直以来对hard parse和soft parse的理解。。
以下是5个步骤。。

1:语法是否合法。(sql写法)
2:语义是否合法。(权限,对象是否存在)

3:检查该sql是否在公享池中存在.

//如果存在存在,直接跳过3和4,运行sql. 此时算soft parse。

//如果5个步骤全做,这就叫hard parse.
4:选择执行计划。
5:产生执行计划。


lijietz post on :2005.07.15 12:24 ::catagories: ( oracle 技术 ) ::reads:(6002) :: Comments (0) :: 引用 (0)
===========================================================
Desc 视图存在,select却报视图不存在的原因。
===========================================================

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

Claughingocuments and Settingsvecentli>sqlplus /nolog

SQL*Plus: Release 9.2.0.1.0 - Production on 星期三 7月 13 09:32:28 2005

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> conn sys/********@oravis as sysdba
已连接。
SQL> grant select any table to ap;

授权成功。

SQL>

SQL> conn ap/********@oravis;
已连接。
SQL> desc tab
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------

TNAME NOT NULL VARCHAR2(30)
TABTYPE VARCHAR2(7)
CLUSTERID

SQL> select count(*)
2 from tab;

COUNT(*)
----------
255


SQL> desc scott.tab
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------

TNAME NOT NULL VARCHAR2(30)
TABTYPE VARCHAR2(7)
CLUSTERID NUMBER

SQL> select *
2 from scott.tab
3 ;
from scott.tab
*
ERROR 位于第 2 行:
ORA-00942: 表或视图不存在

SQL>

SQL> conn sys/************@oravis as sysdba
已连接。
SQL> desc tab
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------

TNAME NOT NULL VARCHAR2(30)
TABTYPE VARCHAR2(7)
CLUSTERID NUMBER

SQL> desc scott.tab
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------

TNAME NOT NULL VARCHAR2(30)
TABTYPE VARCHAR2(7)
CLUSTERID NUMBER

SQL> select *
2 from scott.tab;
from scott.tab
*
ERROR 位于第 2 行:
ORA-00942: 表或视图不存在


SQL>

dba权限的用户也不可以。。
只能desc其他用户的tab,而不能select其他用户的tab。。
看来不是权限的问题,难道oracle限制了这个做法?

----回过头来看看视图定义。

select o.name,
decode(o.type#, 2, 'TABLE', 3, 'CLUSTER',
4, 'VIEW', 5, 'SYNONYM'), t.tab#
from sys.tab$ t, sys.obj$ o
where o.owner# = userenv('SCHEMAID')
and o.type# >=2
and o.type# <=5
and o.linkname is null
and o.obj# = t.obj# (+);


肯定这个 userenv('SCHEMAID') 破玩意在作怪!

SQL> select userenv('SCHEMAID')
2 from dual;

USERENV('SCHEMAID')
-------------------
0

SQL>


SCHEMAID的解释.
SCHEMAID returns the id of the schema for the current user. This id is used, for example, in obj$ (column owner#).
select userenv('SCHEMAID') from dual;

--可是为什么会报 表或视图不存在的错误呢?应该是未选定行才对啊?!

猜测:

根椐下面的试验,我猜测DESC时如果指定了方案限定词时是查找用户的表,视图,私有同义词或者公有同义词,而SELECT的时候,如果指定了方案限定词,不会去查找公有同义词,所以才有这样的差别。

SQL> show user
USER is "WYQ"
SQL> select table_name from user_tables;

TABLE_NAME
------------------------------
PLAN_TABLE
T

SQL> desc t
Name Null? Type
----------------------------------------------------------------------- -------- ------------------------------------------------

X NOT NULL NUMBER
Y VARCHAR2(128)

SQL> create synonym syn_t for t;

Synonym created.

SQL> conn sys/wyq as sysdba
Connected.
SQL> desc wyq.syn_t
Name Null? Type
----------------------------------------------------------------------- -------- ------------------------------------------------

X NOT NULL NUMBER
Y VARCHAR2(128)

SQL> select count(*) from wyq.syn_t;

COUNT(*)
----------
100

SQL> conn wyq/wyq
Connected.
SQL> drop synonym syn_t;

Synonym dropped.

SQL> create public synonym syn_t for t;

Synonym created.

SQL> conn sys/wyq as sysdba
Connected.
SQL> desc wyq.syn_t;
Name Null? Type
----------------------------------------------------------------------- -------- ------------------------------------------------

X NOT NULL NUMBER
Y VARCHAR2(128)

SQL> select count(*) from wyq.syn_t;
select count(*) from wyq.syn_t
*
ERROR at line 1:
ORA-00942: table or view does not exist


SQL>

--做个trace验证一把。

sqlplus " /as sysdba"
alter session set events '10046 trace name context forever,level 12'
;
desc sys.TT (there's no object name TT in my db)
exit

some thing in the trace file.

PARSING IN CURSOR #1 len=198 dep=1 uid=0 oct=3 lid=0 tim=2205811854802 hv=2703824309 ad=
'91cfeb40'
select obj#,type#,ctime,mtime,stime,status,dataobj#,flags,oid$, spare1, spare2 from obj$
where owner#=:1 and name=:2 and namespace=:3 and remoteowner is null and linkname is nu
ll and subname is null
END OF STMT
PARSE #1:c=0,e=3248,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=0,tim=2205811854790
BINDS #1:
bind 0: dty=2 mxl=22(22) mal=00 scl=00 pre=00 oacflg=08 oacfl2=1 size=24 offset=0
bfp=ffffffff7d069640 bln=22 avl=03 flg=05
value=0
bind 1: dty=1 mxl=32(02) mal=00 scl=00 pre=00 oacflg=18 oacfl2=1 size=32 offset=0
bfp=ffffffff7d069608 bln=32 avl=02 flg=05
value="TT"
bind 2: dty=2 mxl=22(22) mal=00 scl=00 pre=00 oacflg=08 oacfl2=1 size=24 offset=0
bfp=ffffffff7d0695d8 bln=24 avl=02 flg=05
value=1
EXEC #1:c=10000,e=3068,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=3,tim=2205811858366
FETCH #1:c=0,e=310,p=0,cr=3,cu=0,mis=0,r=0,dep=1,og=3,tim=2205811858772
BINDS #1:
bind 0: dty=2 mxl=22(22) mal=00 scl=00 pre=00 oacflg=08 oacfl2=1 size=24 offset=0
bfp=ffffffff7d069640 bln=22 avl=02 flg=05
value=1
bind 1: dty=1 mxl=32(02) mal=00 scl=00 pre=00 oacflg=18 oacfl2=1 size=32 offset=0
bfp=ffffffff7d069608 bln=32 avl=02 flg=05
value="TT"
bind 2: dty=2 mxl=22(22) mal=00 scl=00 pre=00 oacflg=08 oacfl2=1 size=24 offset=0
bfp=ffffffff7d0695d8 bln=24 avl=02 flg=05

上面红色部分是owner# 的bind 值

1 select name,user#
2* from user$ where user# in (0,1)
SQL> /
PUBLIC 1
SYS 0

可以看出,Oracle先根据“SYS”(owner#=0) 找,没找到,于是就到“public” (owner#=1) 里找
....
--继续做select的trace。

SQL> alter session set events '10046 trace name context forever,level 12'
2 /

Session altered.

SQL> select * from sys.TT
2 /
select * from sys.TT
*
ERROR at line 1:
ORA-00942: table or view does not exist

可以方向在trace file里只找了"SYS”(owner#=0) 的object
PARSING IN CURSOR #3 len=198 dep=1 uid=0 oct=3 lid=0 tim=2206623598500 hv=2703824309 ad=
'91cfeb40'
select obj#,type#,ctime,mtime,stime,status,dataobj#,flags,oid$, spare1, spare2 from obj$
where owner#=:1 and name=:2 and namespace=:3 and remoteowner is null and linkname is nu
ll and subname is null
END OF STMT
PARSE #3:c=0,e=139,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=3,tim=2206623598489
BINDS #3:
bind 0: dty=2 mxl=22(22) mal=00 scl=00 pre=00 oacflg=08 oacfl2=1 size=24 offset=0
bfp=ffffffff7d068d78 bln=22 avl=01 flg=05
value=0
bind 1: dty=1 mxl=32(02) mal=00 scl=00 pre=00 oacflg=18 oacfl2=1 size=32 offset=0
bfp=ffffffff7d068d40 bln=32 avl=02 flg=05
value="TT"
bind 2: dty=2 mxl=22(22) mal=00 scl=00 pre=00 oacflg=08 oacfl2=1 size=24 offset=0
bfp=ffffffff7d068d10 bln=24 avl=02 flg=05
value=1
EXEC #3:c=0,e=621,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=3,tim=2206623599523
FETCH #3:c=0,e=252,p=0,cr=3,cu=0,mis=0,r=0,dep=1,og=3,tim=2206623599848
=====================
PARSE ERROR #2:len=21 dep=0 uid=0 oct=3 lid=0 tim=2206623600042 err=942
select * from sys.TT

conclusions:

DESC时如果指定了方案限定词时是查找用户的表,视图,私有同义词或者公有同义词,而SELECT的时候,如果指定了方案限定词,不会去查找公有同义词,所以才有这样的差别。


lijietz post on :2005.07.13 14:48 ::catagories: ( oracle 技术 ) ::reads:(142815) :: Comments (409) :: 引用 (0)
===========================================================
总结处理 ora_04031 错误。
===========================================================

出现ora_04031 非常有可能是共享池碎片严重。或者shared_pool/java pool太

小。一般来说,重启或者执行 alter system flush shared_pool;语句就

以解决。建议做个statspack看看,查找可能的原因。


lijietz post on :2005.06.13 17:36 ::catagories: ( oracle 技术 ) ::reads:(1671) :: Comments (3) :: 引用 (0)
===========================================================
如何跟踪绑定变量的值
===========================================================

前段时间看到了pub上有人问如何跟踪绑定变量的值。当时也没有想到办法,今天再看跟踪事件,
发现了设置10046事件并且level大于4能显示绑定变量的详细信息,但是否有绑定变量的值呢?我试了一下。结果如下:
对当前session,设置10046事件,ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 4';
执行如下pl/sql,

declare
v_birth date:=sysdate;
v_accounts char(10):= 'lijietz' ;
begin
insert into lijietz values(v_birth, v_accounts);
end;
然后到user_dump_dest下找trace文件.大概内容如下:


PARSING IN CURSOR #2 len=36 dep=1 uid=0 oct=2 lid=0 tim=18446744073296766171 hv=507792077 ad='65e33520'
INSERT into lijietz values(:b2, :b1)
END OF STMT
PARSE #2:c=0,e=286,p=0,cr=0,cu=0,mis=1,r=0,dep=1,og=0,

tim=18446744073296766163
BINDS #2:
bind 0: dty=12 mxl=07(07) mal=00 scl=00 pre=00 oacflg=13 oacfl2=1 size=8 offset=0
bfp=09a201f4 bln=07 avl=07 flg=09
value="5/31/2005 15:12:9"
bind 1: dty=96 mxl=32(10) mal=00 scl=00 pre=00 oacflg=13 oacfl2=1 size=32 offset=0
bfp=09a201d8 bln=32 avl=10 flg=09
value="lijietz"
EXEC #2:c=31250,e=26379,p=0,cr=1,cu=2,mis=0,r=1,dep=1,

og=4,tim=18446744073296810934
EXEC #1:c=46875,e=52807,p=0,cr=1,cu=2,mis=0,r=1,dep=0,

og=4,tim=18446744073296814766

解析后的语句 INSERT into lijietz values(:b2, :b1) ,
搜索值'lijietz', value="lijietz",相同的找到了value="5/31/2005 15:12:9",注意tkprof
以后就找不到了绑定变量的值了。
最后关闭跟踪事件alter session set events '10046 trace name context off';


lijietz post on :2005.05.31 15:56 ::catagories: ( oracle 技术 ) ::reads:(1822) :: Comments (0) :: 引用 (0)
===========================================================
尝试解答biti_rainy的面试题。
===========================================================

联接地址:http://www.itpub.net/showthread.php?s=&postid=2574881#post2574881

一:SQL tuning 类

1:列举几种表连接方式
答:mj,hj,nl


2:不借助第三方工具,怎样查看sql的执行计划
答:autotrace /utlxplan.sql


3:如何使用CBO,CBO与RULE的区别


答:在初始化参数里面设置optimizer_mode=choose/all_rows/first_row等可以使用cbo.

rbo会选择不合适的索引,cbo需要统计信息。


4:如何定位重要(消耗资源多)的SQL

答:根据v$sqlarea 中的逻辑读/disk_read。



5:如何跟踪某个session的SQL

答:先找出对应的'sid,serial',然后调用system_system.set_sql_trace_in_session(sid,serial,true);


6:SQL调整最关注的是什么

答:逻辑读。



7:说说你对索引的认识(索引的结构、对dml影响、对查询影响、为什么提高查询性能)

答:默认的索引是b-tree.
对insert的影响.(分裂,要保证tree的平衡)
对delete的影响.(删除行的时候要标记改节点为删除).
对update的影响,如果更新表中的索引字段,则要相应的更新索引中的键值。

查询中包含索引字段的键值和行的物理地址。



8:使用索引查询一定能提高查询的性能吗?为什么

答:不能。如果返回的行数目较大,使用全表扫描的性能较好。



9:绑定变量是什么?绑定变量有什么优缺点?

答:通俗的说,绑定变量就是变量的一个占位符,使用绑定变量可以减少只有变量值不同的
语句的解析。



10:如何稳定(固定)执行计划
答:使用stored outline.


11:和排序相关的内存在8i和9i分别怎样调整,临时表空间的作用是什么


答:8i:使用sort_area_size,hash_area_size,每个session分配相同的值,不管有无使用。
9i: 使用pga_aggregate来统一管理。

临时表空间的作用:
在sort_area_size中不能完成的部分在临时表空间完成,临时表空间在重建索引,创建临时表等都要用到。
还有hash join不能完成的也在临时表空间中做。


12:存在表T(a,b,c,d),要根据字段c排序后取第21—30条记录显示,请给出sql

select a,b,c,d from (select a,b,c,d from T order by c) where rownum<=30
minus
select a,b,c,d from (select a,b,c,d from T order by c) where rownum <=20;


二:数据库基本概念类

1吐舌ctused and pctfree 表示什么含义有什么作用

答:表示数据块什么时候重联接或者从freelist中删除。
pctused:如果数据块的使用小于pctused的值,则该数据块重新加入到fresslist中。
pctused:如果数据块的空闲空间小于pctfree的值,则该数据块从freelist中删除。



2:简单描述table / segment / extent / block之间的关系

答:table是一个逻辑上的概念。
segment表示结构的相同的一段空间。
extent。多个block组成一个extent,便于dbms分配。
block,多个os块组成一个block,是oracle i/o的单位。


3:描述tablespace和datafile之间的关系

答:
tablespace是逻辑上的概念,datafile是物理上的概念。
一个tablespace可以由多个datafile组成,一个datafile不能跨越多个tablespace。

4:本地管理表空间和字典管理表空间的特点,ASSM有什么特点
答:一个使用freelist管理,一个使用位图管理。


5:回滚段的作用是什么

答:保存数据的前像,保证数据读取的时间点一致性。


6:日志的作用是什么

答:纪录对数据库的操作,便与恢复。



7:SGA主要有那些部分,主要作用是什么
答:db_cache(缓存数据块),shared_pool(缓存sql,执行计划,数据字典信息等),large_pool(rman要用到),java pool(java程序时要用到)


8:racle系统进程主要有哪些,作用是什么

答:smon(合并空间,实例恢复),pmon(清理失败的进程),归档进程(负责在日志切换的时候归档日志文件),lgmr(日志书写器进程,负责

写日志咯),
ckpt(检查点进程,触发检查点),dbwr(数据库写入器,负责把数据写入导datafile)





三:备份恢复类

1:备份如何分类
答:逻辑备份(exp)与物理备份。
或者冷备份与热备份。



2:归档是什么含义
答:把日志文件放到另一个地方。


3:如果一个表在2004-08-04 10:30:00 被drop,在有完善的归档和备份的情况下,如何恢复
答:
拷贝备份,
recove database until time 2004-08-04 10:30:00
alter database open resetlogs;

4:rman是什么,有何特点
答:rman叫恢复管理器.
特点很多。

1:热备份。
2:可以存储脚本。
3:可以增量备份。
4:自动管理备份集。


5:standby的特点
答:利用传输重做日志来达到同步的目的。



6:对于一个要求恢复时间比较短的系统(数据库50G,每天归档5G),你如何设计备份策略
答:每天一个全备份。



四:系统管理类

1:对于一个存在系统性能的系统,说出你的诊断处理思路

答:做一个statspack,根据top 5,system load,top sql等来做相应的调整。




2:列举几种诊断IO、CPU、性能状况的方法

答:
hp-unix:iostat -x 1 5;
top/vmstat/glance


3:对statspack有何认识

答:
一个性能诊断工具而已咯,其本质就是在两个时间点采样两个系统数据。(动态性能视图)
然后根据两个snapshot,产生一个报告。



4:如果系统现在需要在一个很大的表上创建一个索引,你会考虑那些因素,如何做以尽量减小对应用的影响
答:

1:增大sort_area_size(8i)/pga_aggregate_target(9i)值。
2:用并行的方式来建。
3:系统空闲的时候建。



5:对raid10 和raid5有何认识
答:raid5写入慢。raid10不了解。



五:综合随意类

1:你最擅长的是oracle哪部分?
答:性能/sql 调优。



2:喜欢oracle吗?喜欢上论坛吗?或者偏好oracle的哪一部分?
答:http://www.itpub.net/forum2.html



3:随意说说你觉得oracle最有意思的部分或者最困难的部分

答:性能调优。


4:为何要选择做DBA呢?
答:自己爱好加上稍高的工资


lijietz post on :2005.05.30 20:31 ::catagories: ( oracle 技术 ) ::reads:(5782) :: Comments (2) :: 引用 (0)
===========================================================
如何启动AUTOTRACE
===========================================================

如何在SQL*PLUS中使用Autotrace?

sqlplus system
SQL> @$ORACLE_HOME/rdbms/admin/utlxplan.sql
SQL> create public synonym plan_table for plan_table;
SQL> grant all on plan_table to public;
SQL> conn sys
SQL> @$ORACLE_HOME/sqlplus/admin/plustrce
SQL> grant plustrace to public;

SET AUTOTRACE OFF | ON EXPLAIN | ON STATISTICS | ON | TRACEONLY | TRACE EXPLAIN

AUTOTRACE是要实际执行一个查询的。


lijietz post on :2005.05.23 22:24 ::catagories: ( oracle 技术 ) ::reads:(919) :: Comments (0) :: 引用 (0)
===========================================================
SQLNET.AUTHENTICATION_SERVICES 参数摘要。
===========================================================

要启用远程控制数据库的功能,

 SQLNET.AUTHENTICATION_SERVICES =none

and

remote_login_passwordfile='EXCLUSIVE'

就可以了。

Use the parameter SQLNET.AUTHENTICATION_SERVICES to enable one or more authentication services. If authentication has been installed, it is recommended that this parameter be set to either none or to one of the authentication methods.

Values:Authentication Methods Available with Oracle Net Services:
·NONE for no authentication methods. A valid username and password can be used to access the database.
·ALL for all authentication methods
·NTS for Windows NT native authentication


lijietz post on :2005.05.17 18:25 ::catagories: ( oracle 技术 ) ::reads:(1355) :: Comments (4) :: 引用 (0)
===========================================================
红帽企业版官方中文文档
===========================================================

纪录于此,供以后查阅。

1 红帽群集套件配置和管理群集
 http://www.dvdshop.com.cn/manual/redhat_AS_3.0_CS/
2 红帽企业Linux4各体系的安装指南
 http://www.dvdshop.com.cn/manual/rhel-ig-x8664-multi-zh_cn-4/
3 红帽企业Linux4安全指南
 http://www.dvdshop.com.cn/manual/rhel-sg-zh_cn-4/
4 红帽企业Linux4用于IBM体系的安装指南
 http://www.dvdshop.com.cn/manual/rhel-ig-s390-multi-zh_cn-4/
5 红帽企业Linux4系統管理導論
 http://www.dvdshop.com.cn/manual/rhel-isa-zh_tw-4/


lijietz post on :2005.05.12 14:13 ::catagories: ( oracle 技术 ) ::reads:(1238) :: Comments (2) :: 引用 (0)
===========================================================
truncate,delete,drop的比较.
===========================================================

truncate,delete,drop的比较.

  
注意:这里说的delete是指不带where子句的delete语句


相同点:truncate和不带where子句的delete, 以及drop都会删除表内的数据 


不同点:  
1. truncate和 delete只删除数据不删除表的结构(定义)  
     drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态.  


2.delete语句是DML,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发.  
    truncate,drop是DDL, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger.  


3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动  
   显然drop语句将表所占用的空间全部释放  
   truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage;   truncate会将高水线复位(回到最开始).  


4.速度,一般来说: drop> truncate > delete  


5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及  
使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大.  
想删除表,当然用drop  
想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete.  
如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据  


lijietz post on :2005.05.09 14:43 ::catagories: ( oracle 技术 ) ::reads:(1018) :: Comments (4) :: 引用 (0)