2Q?保在c:\winnt\system32下有ntwdblib.dllQ若没有则安装SQL Server2000(安装cd选择“仅连?#8221;)。此文g是访问SQL Server的DB-LibraryQ?/p>
3Q?ping SQLDB看是否通,若不通则在\winnt\system32\drivers\etc\hosts文g中增加一行,用来解析SQLDB的IP地址Q很单不多说了?/p>
4Q?修改%ORACLE_HOME%\tg4msql\inittg4msql.ora,q是|关q程启动旉要的初始化文件。只需改下面这一行即可:
HS_FDS_CONNECT_INFO=SQLDB.luck #此处的SQLDB是SqlServer数据库的实例名,luck是要讉K的数据库?br /> 5. Listener的配|如?br />
# LISTENER.ORA Network Configuration File: d:\oracle\ora92\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = MICROSOF-E676C1)(PORT = 1521))
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = d:\oracle\ora92)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = luck)
(ORACLE_HOME = d:\oracle\ora92)
(SID_NAME = luck)
)
(SID_DESC=
(SID_NAME=tg4msql)
(ORACLE_HOME=d:\oracle\ora92) #用你?ORACLE_HOME%
(PROGRAM=tg4msql) # 必须指向‘tg4msql’
)
)
/************************/以下为新增加内容
(SID_DESC=
(SID_NAME=tg4msql)
(ORACLE_HOME=d:\oracle\ora92) #用你?ORACLE_HOME%
(PROGRAM=tg4msql) # 必须指向‘tg4msql’
)
/************************/
5. 修改tnsnames.ora
在原来的服务名称下面增加一个服务名Q代码如下:
TG4MSQL =
(DESCRIPTION =
(ADDRESS =
(PROTOCOL = TCP)
(HOST= localhost) #透明|关所在机器地址
(PORT = 1521)
)
(CONNECT_DATA =
(SID = tg4msql) #tg4msql必须要和GATEWAY上listener.ora中的SID一?br />
)
(HS = OK) #q很重要Q告诉Oracle Server要调用异构服务模块来处理
)
6. 修改initora9i.ora(数据库初始化文g)
global_names=trueQ重启数据库?br />
7. create public database link test connect to sa identified by luckserver using 'TG4MSQL';
8. select * from usertable@test;
通过如上步骤可以再oracle中访问SqlServer了?/font>
说明Q?/span>
本ȝ?/span>针对特例Q仅Ҏ务器只存?/span>OS + ORACLE ZQ如果存在其他应用请酌情考虑。写q个也是因ؓq来q种重复性的问题发生的太多所D的?/span>
首先不要q信STS?/span>OCP SG以及某些专家l出的Q何徏议、内存百分比的说法。基本掌握的原则是:
l
l
l
讄之前Q首先要明确2个问?/span>
1Q除?/span>OS和一些其他开销Q能l?/span>ORACLE使用的内存有多大Q?/span>
2Q?/span>Oracle?/span>64 bit q是 32 bit Q?/span>32bit 通常 SGA?/span> 1.7G 的限?/span>(某些OS有特定处理或?/span>WINDOWS上有特定讑֮可以支持?/span>2G以上甚至辑ֈ3.7GQ本人无q方面经?/span>)?/span>
下面是我?/span>Windows2000下的Oracle :
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
PL/SQL Release 8.1.7.0.0 - Production
CORE 8.1.7.0.0 Production
TNS for 32-bit Windows: Version 8.1.7.0.0 - Production
NLSRTL Version 3.4.1.0.0 - Production
SQL>
windows上存?/span>32bit的限Ӟ?/span>AIX?/span>HP-UX {有明确?/span>64 bit OS ?/span>ORACLE的版本,32 bit Oracle可以装在64 bit OS 上,64 bit Oracle不能装在32 bit OS上?/span>
不管Oracle?/span>32 bit q是 64 bit 的,假定应用存在没有很好的?/span>bind var 的情况,也不能设|?/span> shared_pool_size q大Q通常应该控制?/span>100M--200MQ除非是 ORACLE ERP 一cȝ使用了很多存储过E函数、包 Q这L很大的系l,可以考虑增大shared_pool_sizeQ但是如果超q?/span>500M可能是危险的Q达?/span>1G几乎׃造成CPU的严重负担,pȝ甚至瘫痪。所?/span>shared_pool_size 如果过200Mq命中率不高Q那么应该从应用上找原因而不是一味的增加内存Q?/span>shared_pool_size q大主要增加了管理负担和latch 的开销?/span>
log_buffer Q?/span>128K -- 1M 之间通常问题不大Q不应该太大?/span>
large_pool_size Q如果不讄MTSQ通常?/span> RMAN ?/span>OPQ 会用到Q但是在10M --50M 应该差不多了。假如设|?/span> MTSQ则׃ UGA 攑ֈlarge_pool_size 的缘故,q个时候依?/span> session最大数量和 sort_ares_size {参数设|,必须增大large_pool_size 的设|,可以考虑?/span> session * (sort_area_size + 2M)。这里要提醒一点,不是必须使用MTSQ我们都不主张?/span>MTSQ尤其同时在U用h于500的情况下?/span>
java_pool_size : 若不使用javaQ给30M通常够了?/span>
data buffer Q在做了前面的设|后Q凡可以提供l?/span>Oracle的内存,都应该给data buffer = (db_block_size * db_block_buffers) ?/span>9i 中可以是 db_cache_size?/span>
q有2个重要参数我们需要注意:
sort_area_size
hash_area_size
q两个参数在?/span>MTS下都是属?/span>PGA Q不属于SGA。它是ؓ每个session单独分配的,在我们的服务器上除了OS + SGAQ一定要考虑q两部分?/span>
(****) : OS 使用内存+ SGA + session*(sort_area_size + hash_area_size + 2M) < ȝ?/span>RAM 为好 ?/span>
q样归结q来Q假?/span>Oracle?/span> 32 bit ,服务?/span>RAM大于2G Q注意你?/span>PGA的情况,则徏议:
shared_pool_size + data buffer +large_pool_size + java_pool_size < 1.6G
再具体化Q注意满上?/span>(****) 的原则的基础上可以参考如下设|:
如果512M RAM
shared_pool_size = 50M, data buffer = 200M Q?/span>
如果1G RAM
shared_pool_size = 100M , data buffer = 500M Q?/span>
如果2G RAM
shared_pool_size = 150M ,data buffer = 1.2G?/span>
物理内存再大已经跟参数没有关pM ?/span>
举例来说Q?/span>
假定64 bit ORACLE
内存4G
shared_pool_size = 200M , data buffer = 2.5G
内存8G
shared_pool_size = 200M , data buffer = 5G
内存 12G
shared_pool_size = 300M , data buffer = 8G
ȝQ?/span>
以上仅ؓ参考|在设|参数的同时Q?/span>init中?/span> lock_sga Q在不同的^C可能有不同的方式Q?/span>SGA锁定在物理内存中而不被放?/span> SWAP 中,q样Ҏ率有好处。(关于内存的设|,要再q行l致的调_L作用不大Q但可根?/span>statspack信息?/span>v$system_event,v$sysstat,v$sesstat,v$latch {视图信息来考虑微调。)怎样查看oracle当前的连接数呢?只需要用下面的SQL语句查询一下就可以了?br />
select * from v$session where username is not null
select username,count(username) from v$session where username is not null group by username #查看不同用户的连接数
select count(*) from v$session #q接?br />
Select count(*) from v$session where status='ACTIVE' #q发q接?br />
show parameter processes #最大连?br />
alter system set processes = value scope = spfile;重启数据?nbsp; #修改q接
/home/oracle9i/app/oracle9i/dbs/init.ora
/home/oracle9i/app/oracle9i/dbs/spfilexxx.ora ## open_cursor