郭一军,网名guoyJoe,尖峰在线培训创始人、Oracle OCM、ITPUB论坛Oracle认证版版主、2013最佳精华贴、Senior DBA、Oracle OCT、 ACOUG MEMBER、CSDN 认证专家、RHCE、在线技术分享的倡导者和实践者。 http://www.jianfengedu.com http://jianfengedu.taobao.com
全部博文(72)
2014年(72)
分类: Oracle
2014-06-19 10:34:15
一丶客户端与服务端建立网络连接过程:
二丶专用连接的网络配置
参考官方文档:Books => NET => Net Services Reference =>
1丶监听器的启用与配置(listener.ora)
(1)动态监听与静态监听
①默认listener动态注册
a.协议必须为TCP
b.端口必须为1521
c.对于监听的名称无要求
② 非默认listener动态注册(端口非1521)
A丶配置listener.ora
LSNR =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =ocm)(PORT = 1522))
)
)
B丶alter system set local_listener=\'(ADDRESS = (PROTOCOL = TCP)(HOST =10.2.60.43)(PORT = 1522))\';
C丶alter systemregister;
--或着在tnsnames.ora中添加如下内容
--LISTENERS_ORADB =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.132)(PORT = 1522))
--alter systemset local_listener=\'LISTENERS_ORADB\'
③ 态监听
A丶 配置listener.ora
LSNR2=
(DESCRIPTION=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=tcp)(HOST=ocm)(PORT=1521))
))
SID_LIST_LSNR2=
(SID_LIST=
(SID_DESC=
(GLOBAL_DBNAME=oca)
(ORACLE_HOME=/u01/app/oracle/product/11.2.0)
(SID_NAME=ocm))
)
B丶 启动监听LSNR2
lsnrctl start lsnr2
(2)动态监听和静态监听的区别
①动态注册的为readly,静态注册的状态为unknow
②动态是由PMON进程将服务注册到监听中:service_names/instance_name,
静态注册是将服务写入listener.ora文件中global_dbname/sid_name
③动态修改不需要重启,静态每次修改都要重启监听
④动态重启不能马上注册服务,静态重启马上注册服务
⑤动态有相关的视图v$service_event/v$service_stats可以查等待事件及物理读逻辑读,而静态监听不能
(3)既然有动态监听为什么还要静态监听呢?原因如下:
①监听器不是最早启动,oracle实例先启动
②监听器重启
③ oracle实例没有open
2丶客户端连接方式
参考官方文档:Books => NET => Net Services Reference =>
(1)简易连接命名(EasyConnect):使用TCP/IP连接字符串
①sqlplus gyj/gyj@192.168.0.100:1521/test --(sqlnet.ora:EZCONNECT)在windows下能看到密码
②sqlplusgyj@192.168.0.100:1521/test --这种方法不行
③sqlpus gyj
口令:gyj@192.168.0.100:1521/test --用这个可以
(2)本地命名(Local Naming):使用本地命名配置,将网络服务名称保存在tnsnames.ora文件中
①sqlplus gyj/gyj@asm (sqlnet.ora:TNSNAMES)--在windows下能看到密码
②sqlplusgyj@asm
口令:gyj
从客户端到服务器端连接配置:
(4)目录命名(Directory Naming):使用符合LDAP的集中式目录服务器
①需要加载了OracleNet名称解析信息的LDAP:
Oracle Internet Directory
Microsoft Active Directory Services
②支持所有OracleNet协义
③支持高级连接选项
④Oracle Net配置文件
② conn hr/hr@orcl
(5)外部命名(External Naming Method):使用支持的非Oracle命名服务
①网络信息服务(NIS)外部命名
②分布计算环境(DCE)单元目录服务(CDS)
LISTENER.ORA和TNSNAMES.ORA
3丶sqlnet.ora
参考官方文档:Books=> NET => Net Services Reference =>
(1)认证方式
(2)连接方式
三丶共享服务器
1丶共享服务器的工作方式
专用服务器进程中,每一个客户连接,都要开启一个专用的服务器进程,来为客户程序完成各种数据库请求。如果现在连接数据库的客户端比较多,而服务器上的内存等硬件资源已经达到了限制。这时,我们就可以考虑使用共享服务器模式,让一个服务器进程,能为多个客户程序提供服务。共享服务器模式的工作方式如下:
2丶共享服务器的配置
gyj@OCM> alter system setshared_server_sessions =10;
System altered.
gyj@OCM> alter system set shared_servers=3;
System altered.
gyj@OCM> alter system setmax_shared_servers=10;
System altered.
gyj@OCM> alter system setdispatchers=\'(PROTOCOL=TCP)(DISPATCHERS=3)\';
System altered.
gyj@OCM> alter system set max_dispatchers=5;
System altered.
oca =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = ocm)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = ocm)
)
)
注意:共享服务模式客户端要连动态监听 ,如连静态监听会报这个报错:
gyj@OCM> conn gyj/gyj@oca;
ERROR:
ORA-12523: TNS:listener could not findinstance appropriate for the client connection
3丶共享服务器相关视图
v$shared_server
v$shared_server_monitor
v$dispatcher
四丶排错流程
1丶 可以用LINUX的Strace命令跟踪监听的整个连接过程。
(1)[oracle@ocm~]$ ps -ef |grep tns
oracle 10169 1 015:17 ? 00:00:00/u01/app/oracle/product/11.2.0/bin/tnslsnr lsnr2 -inherit
(2)strace -rf-o /gyj/lsnr.log -p 10169
(3)gyj@OCM>conn gyj/gyj@ocp
Connected.
(4)gyj@OCM>exit
(5)分析/gyj/lsnr.log跟踪日志
2丶常用的排错命令
ping
tnsping
lsnrctl
netstat -atulnp|grep 1521
listener.ora
tnsnames.ora
sqlnet.ora
show parameter service_names
**********本博客所有内容均为原创,如有转载请注明作者和出处!!!**********
Name: guoyJoe
QQ: 252803295
Email: oracledba_cn@hotmail.com
Blog: http://blog.csdn.net/guoyJoe
ITPUB: http://www.itpub.net/space-uid-28460966.html
OCM:
_____________________________________________________________
加群验证问题:哪些SGA结构是必需的,哪些是可选的?否则拒绝申请!!!
答案在:http://blog.csdn.net/guoyjoe/article/details/8624392
Oracle@Paradise 总群:127149411
Oracle@Paradise No.1群:177089463(已满)
Oracle@Paradise No.2群:121341761
Oracle@Paradise No.3群:140856036