连通ORACLE
oracle服务端和客户端的典型配置
刘祎洋
2012.4.12
连通ORACLE
Linux安装数据库后,需要配置和启用监听器。
配置全局数据库和监听端口1521(端口可选),数据库默认安装netca,可以通过执行命令
#netca
按照向导提示完成配置,netca是一个GUI工具,需要linux安装支持GUI工具和JDK环境;
也可以通过新增或修改$oracle_home/network/admin/listener.ora达到同样目的。
执行步骤:
#export oracle_home=/安装路径/app/oracle/product/11R2/dbhome_1
#vi $oracle_home/network/admin/listener.ora
新建或替换下面内容。
配置典型配置格式如下:
(SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = /home/oracle/app/oracle/product/11R2/dbhome_1) (PROGRAM = extproc) ) (SID_DESC = (GLOBAL_DBNAME = orcl) (ORACLE_HOME = /home/oracle/app/oracle/product/11R2/dbhome_1) (SID_NAME = orcl) ) )
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST= (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1)) ) (ADDRESS_LIST= (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.120.24)(PORT = 1521)) ) ) ) |
l GLOBAL_DBNAME为安装全局数据库的名称
l SID_NAME为安装全局数据库的ID名称,默认与GLOBAL_DBNAME同
l HOST 为监听主机,可以为Ip或机器名称hostname
l PORT为监听端口,默认为1521
使用监听器命令lsnrctl来启用、关闭和查看监听
Ø 执行命令 lsnrctl stop 关闭监听
Ø 执行命令 lsnrctl start 启用监听
Ø 执行命令 lsnrctl status 查看状态
如果成功则为The command completed successfully。如果不成功,则说明listener.ora文件配置有误。
测试是否可以登录数据库
#sqlplus
>orcl
>orcl
如果要测试sqlplus 用户/密码@服务名方式登录,请参考LINUX客户端配置
配置不正确导致的常见错误,请重新修改配置文件。
ORA-12514:listener does not currently know of service requested in connect
ORA-27101: shared memory realm does not exist
ORA-12541 TNS no listener
其他常见错误
ORA-12560: TNS: 协议适配器错误
答:在客户端执行命令telnet ip 1521,检查是否可以通,如不通请检查网关或包防火墙配置。
如果曾经安装过oracle服务端或客户端,此时报错
请检查环境变量是否配置正确,尝试配置或修改环境变量TNS_ADMIN,ORACLE_HOME, PATH 中的oracle路径为当前的oracle路径,具体请参照官方oracle环境变量配置。
连通ORACLE
Linux客户端要连接到数据库,通常需要配置tnsnames.ora内容:
配置TNS本地网络服务名称和端口1521(端口可选),数据库端默认安装netca,netca是一个GUI的Oracle net service工具,需要linux安装支持GUI工具和JDK环境;输入命令
#netca
按照向导提示完成配置本地网络服务名称。
如果无netca,也可以通过新增或修改$oracle_home/network/admin/tnsnames.ora完成同样配置。
执行步骤:
#export oracle_home=/安装路径/app/oracle/product/11R2/dbhome_1
#vi $oracle_home/network/admin/tnsnames.ora
如无目录则建立目录 network/admin,
增加下面内容。
配置典型配置格式如下:
orclalias= (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.120.24)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) |
l orclalias =为tns连接的服务名称。
l HOST 为监听主机,可以为Ip或机器名称hostname
l PORT为监听端口,默认为1521
l SERVICE_NAME = orcl为服务器的数据库名称
测试是否可以登录数据库
#sqlplus orcl/orcl@orclalias
如果显示连接到..,并进入sql,则说明配置成功。
测试配置。
查看连通状态,可使用命令:
#tnsping orclalias
Tns无法解析错误
答:检查host,port,servername是否配对。
其他错误
答:服务端没有启用监听器其端口,或者监听器配置错误。
连通ORACLE
Windows安装数据库后,需要配置和启动监听器。
配置全局数据库和监听端口1521(端口可选),打开开始菜单,在oracle菜单中选择net configuration assistant或在命令提示窗口下输入命令netca来配置监听器,可以通过执行命令
#netca
图表 1 netca
图表 2 开始菜单
图表 3 管理监听程序配置
按照向导提示完成配置,netca需要配置JDK环境;
也可以通过新增或修改%oracle_home%/network/admin/listener.ora完成同样配置。
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = CLRExtProc) (ORACLE_HOME = F:\app\oracle\product\11.2.0\dbhome_1) (PROGRAM = extproc) (ENVS = "EXTPROC_DLLS=ONLY:F:\app\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll") ) )
LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = RD-LIUYY.ssc.net.cn)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) )
ADR_BASE_LISTENER = F:\app\oracle |
l LISTENER部分包含协议地址列表,每个实例一个入口
l SID_LIST_LISTENER部分标识全局数据库名称、标识监听程序正在服务的每个实例的Oracle软件主目录以及实例或SID。
l SID_LIST描述用于静态数据库注册、保持和以前的版本兼容性以及供Oracle Enterprise Manager使用。
l HOST 为监听主机,可以为Ip或机器名称hostname
l PORT为监听端口,默认为1521
使用监听器命令lsnrctl来启用、关闭和查看监听
Ø D:/> lsnrctl stop 关闭监听
Ø D:/> lsnrctl start 启用监听
Ø D:/> lsnrctl status 查看状态
如果成功则为The command completed successfully。如果不成功,则说明listener.ora文件配置有误。
或在开始菜单cmd中,输入命令services.msc,找到oracle的TNSListener,来启用、关闭和查看监听
或在F:\app\oracle\product\11.2.0\dbhome_1\BIN点击LSNRCTL.EXE,通过程序启用监听器
测试是否可以登录数据库
#sqlplus
>orcl
>orcl
如果要测试sqlplus 用户/密码@服务名方式登录,请参考WINDOWS客户端配置
配置不正确导致错误,重新配置监听器:
ORA-12514:listener does not currently know of service requested in connect
ORA-27101: shared memory realm does not exist
ORA-12541 TNS no listener
如果曾经安装过oracle服务端或客户端,报错。
请检查环境变量是否配置正确,尝试配置或修改环境变量TNS_ADMIN,ORACLE_HOME, PATH 中的oracle路径为当前的oracle路径,具体请参照官方oracle环境变量配置。
并在注册表中,通过查找原数据库目录,并替换为当前数据库路径。
如果仍然不行,请删除TNS_ADMIN,ORACLE_HOME环境变量,重新配置全局数据库Database Configuration Assistant,并重新指定ORACLE_HOME等值。
连通ORACLE
配置TNS本地网络服务名称和端口1521(端口可选),数据库端默认安装netca,netca是一个GUI的Oracle net service工具,需要JDK环境;输入命令
#netca
图表 4 本地网络服务名
按照向导提示完成配置本地网络服务名称。
如果无netca,也可以通过新增或修改%oracle_home%/network/admin/tnsnames.ora完成同样配置。
ORACLR_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) ) (CONNECT_DATA = (SID = CLRExtProc) (PRESENTATION = RO) ) )
ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.12)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) |
配置Instant client 客户端组件
Instant client是Oracle提供的一个简易客户端组件接口,它的特点是精简、解压后无需安装,它没有图形化界面,也不提供交互式命令访问,需要另行下载Instant client sqlplus并放入该目录中,或者安装PL/SQL客户端,配置访问其组件,有时还需要配置环境变量。
进入目录instantclient-basic-nt-11.2.0.2.0后,创建目录network/admin。
在network/admin/中新增文件tnsnames.ora
根据需要配置本地网络服务名称如下:
ORCL = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.12)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl) ) ) … .. |
为了使用方便,可配置系统环境变量,打开环境变量窗口,
新建系统环境变量
oracle_home(可选)
根据具体安装路径,设置其值为
D:/instantclient-basic-nt-11.2.0.2.0/instantclient_11_2
修改path环境变量(可选)
根据具体安装路径,新增一个值并加;
D:/instantclient-basic-nt-11.2.0.2.0/instantclient_11_2;
配置PL/SQL
打开PL/SQL,点击取消,进入不登陆状态,在工具栏上点击Tools->Preference,点击左边列表connection,找到oracle_home,如果配置了环境变量oracle_home,则可以留空,否则配置oracle_home为D:/instantclient-basic-nt-11.2.0.2.0/instantclient_11_2,找到OCI library,配置为D:\instantclient-basic-nt-11.2.0.2.0\instantclient_11_2\oci.dll,点击ok,重启PL/SQL,在登录窗口中选择配置的database名称,输入用户名和密码及角色后即可成功连接。
在windows环境变量中定义了“NLS_DATE_FORMAT =YYYY/MM/DD HH24:MI:SS”后,查询语句就可以直接写为:
select * from tab1 where operdate='2011/08/26'
如果安装splplus,
在命令行模式下输入格式为sqlplus 用户/密码@服务名,进行测试
D:> sqlplus orcl/orcl@ORCL
如果安装pl/sql,可直接打开pl/sql登录。
Sqlplus 不是命令。
答:请将下载的instantclient-sqlplus-nt-11.2.0.2.0.zip解压后放入instantclient-basic-nt-11.2.0.2.0.zip解压后的目录,并设置PATH路径为instantclient-basic-nt-11.2.0.2.0.zip解压后的目录。
Tns无法解析错误
答:检查host,port,servername是否配对。
其他错误
答:服务端没有启用监听器其端口,或者监听器配置错误。