练习 4-1 配置Oracle Net
在本练习中, 将使用图形化工具和命令行工具来建立一个完整的Oracle Net 环境. 由此, 读者可看出在Windows 和 Linux 系统中的区别.
1. 创建Oracle Net配置文件使用的目录, 并设置指向此位置的TNS_ADMIN变量. 目录的位置无关紧要, 只要Oracle 用户有权执行创建、读取和写入即可。
在Linux系统中:
mkdir /u01/oracle/net
export TNS_ADMIN=/u01/oracle/net
确保从现在开始,都从设置了变量的绘画中执行所有工作.
在Windows系统中:
mkdir d:\oracle\net
创建注册表项TNS_ADMIN, 并将其设置为Oracle Home分支的注册表中的字符串变量. 这通常是: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDb11g_home1
2. 通过从操作系统提示符中运行TNSPING命令来检查是否读取了变量:
tnsping orcl
由于TNS_ADMIN目录中不存在任何文件, 因此将返回错误"TNS-03505:Failed to resolve name". 在Windows系统中, 需要启动一个新命令提示符,从注册表找到TNS_ADMIN新值.
3. 启动Net Manager. 在Linux系统中, 从操作系统提示符中运行netmgr. 在Windows系统中, 从"开始"菜单启动它. Net Manager 窗口最上面的行将显示Oracle Net 文件的位置. 如果这不是新目录, 则TNS_ADMIN变量设置的不正确.
4. 创建新侦听器:战卡导航树的Local分支, 突出显示Listeners项,然后单击"+"图标.
5. 输入侦听器名"NEWLIST",然后单击OK按钮.
6. 单击Add Address 按钮.
7. 对于Address 1, 选择"TCP/IP" 作为协议, 并输入"127.0.0.1" 作为主机, "2521" 作为端口. 图4-11 显示了结果.
8. 创建信服务名: 突出显示导航树中的Service Naming项, 然后单击"+"图标.
9. 输入"NEW" 作为新服务名, 然后单击Next按钮.
10. 选择"TCP/IP"作为协议, 然后单击Next按钮.
11. 输入"127.0.0.1"作为主机名, "2521"作为端口, 然后单击Next按钮.
12. 输入"SERV1" 作为服务名,然后单击Next按钮.
13. 单击Finish按钮, 如果尝试进行测试,此时将失败, 图4-12显示了结果.
14. 通过单击File 和Save Network Configuration 菜单项保存配置. 这将在TNS_ADMIN目录中创建listener.ora文件和tnsnames.ora文件.
15. 使用编辑器检查这两个文件.
LISTENER.ORA文件如下:
NEWlIST=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=2521))
)
TNSNAMES.ora文件如下:
NEW =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=2521))
)
(CONNECT_DATA=
(SERVICE_NAME=SERV1)
)
)
16. 从操作系统提示符中使用 lsnrctl start newlist
17. 在操作系统提示符中使用tnsping new 测试连接字符串.
18. 使用sqlplus / as sysdba, 经操作系统身份验证连接到数据库, 忽略任何侦听器.
19. 为正在运行的实例设置service_names参数和local_listener参数(仅限于内存, 不在参数文件中设置), 冰箱新侦听器注册新服务名:
alter system set service_names=serv1 scope-memory;
alter system set local_listener=new scope=memory;
alter system register;
20. 在操作系统提示符下, 使用lsnrctl service newlist, 确认已向新侦听器注册了新服务.
21. 通过使用以下代码登录,确认新网络环境已生效:
sqlplus system/oracle@new
练习 4-2 设置共享的服务器环境
本练习是 练习[4-1]中步骤21的延续,用户需要配置共享服务器, 并证实其可以运行.
1. 设置dispatchers参数和shared_servers参数,并注册到侦听器, 命令如下.
alter system set dispatchers='(protocol=tcp)(dispatchers=2)' scope=memory;
alter system set shared_servers=4 scope=memory;
alter system register;
2. 通过查询视图V$PROCESS,确认调度程序和共享服务器已经启动. 查找名为 S000,S001,S002,S003,D000和D001的进程.
select program from v$process order by program;
3. 在操作系统提示符窗口,确认调度程序已经注册到侦听器.
lsnrctl services newlist
4. 通过侦听器进行连接, 并确认通过共享服务器机制执行了连接.
connect system/oracle@new ;
select d.name,s.name from v$dispatcher d, v$shared_server s , v$circuit c
where d.paddr= c.dispatcher and s.paddr=c.server;
此查询将显示会话连接到的调度程序, 以及执行查询的共享服务器进程.
5. 还原到最初的配置以清理环境
alter system set local_listener='' scope=memory;
alter system set service_names='' scope=memory;
alter system set dispatchers='' scope=memory;
alter system set shared_servers=0 scope=memory;
alter system register;
在操作系统提示符窗口, 使用 lsnrctl stop newlist 停止侦听器.
取消设置TNS_ADMIN变量, 在Linux系统中,采用 export TNS_ADMIN=''; 在Windows系统中,删除TNS_ADMIN注册表项.