连通ORACLE
oracle服务端和客户端的典型配置
刘祎洋
2012.4.12
连通ORACLE
Linux服务端配置
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客户端配置
Linux客户端要连接到数据库,通常需要配置tnsnames.ora内容:
配置TNS本地网络服务名称
配置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服务端配置
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
windows客户端配置
配置TNS本地网络服务名称
配置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是否配对。
其他错误
答:服务端没有启用监听器其端口,或者监听器配置错误。