该文是我连接oracle的总结 特别适合于程序开发人员与oracle菜鸟 如何配置才能使客户端连到数据库 要使一个客户端机器能连接oracle数据库 需要在客户端机器上安装oracle的客户端软件 唯一的例外就是java连接数据库的时候 可以用jdbc thin模式 不用装oracle的客户端软件 加入你在机器上装了oracle数据库 就不需要在单独在该机器上安装oracle客户端了 因为装oracle数据库的时候会自动安装oracle客户端 用过sql server数据库然后又用oracle的新手可能会有这样的疑问 问什么我用sql server的时候不用装sql server的客户端呢?原因很简单 sql server也是microsoft的 它在 *** 作系统中集成了sql server客户端 如果microsoft与oracle有协议 将oracle客户端也集成到 *** 作系统中 那我们也就不用在客户端机器装oracle客户端软机就可访问数据库了 不过 这好像是不可能实现的事情 也有的人会问 为什么在sql server中没有侦听端口一说 而在oracle中要配置侦听端口?其实sql server中也有侦听端口 只不过microsoft将侦听端口固定为 不允许你随便改动 这样给你一个错觉感觉sql server中没有侦听端口 咳 microsoft把太多的东西都封装到黑盒子里 方便使用的同时也带来的需要副作用 而oracle中的侦听端口直接在配置文件中 允许随便改动 只不过无论怎样改动 要与oracle服务器端设置的侦听端口一致 好 言归正传 我们如何做才能使客户端机器连接到oracle数据库呢? A. 安装相关软件 B. 进行适当的配置 A.在适当的位置安装适当的软件 在客户端机器 .在客户端机器上安装ORACLE的Oracle Net通讯软件 它包含在oracle的客户端软件中 .正确配置了sqlnet ora文件 NAMES DIRECTORY_PATH = (TNSNAMES … ) NAMES DEFAULT_DOMAIN=DB_DOMAIN 一般情况下我们不用NAMES DEFAULT_DOMAIN参数 如果想不用该参数用#注释掉或将该参数删除即可 对于NAMES DIRECTORY_PATH参数采用缺省值即可 对于NAMES DEFAULT_DOMAIN参数有时需要注释掉 在下面有详细解释 .正确配置了tnsname ora文件 在服务器端机器 .保证listener已经启动 .保证数据库已经启动 如果数据库没有启动 用 Oracle i: dos>sqlplus / as sysdba sqlplus> startup Oracle i: dos>svrmgrl svrmgrl>connect internal svrmgrl>startup 命令启动数据库 如果listener没有启动 用 lsnrctl start [listener name] lsnrctl status [listener name] 命令启动listener B.进行适当的配置 如何正确配置tnsname ora文件 可以在客户端机器上使用oracle Net Configuration Assistant或oracle Net Manager图形配置工具对客户端进行配置 该配置工具实际上修改tnsnames ora文件 所以我们可以直接修改tnsnames ora文件 下面以直接修改tnsnames ora文件为例 该文件的位置为 …\neork\admin\tnsnames ora (for windows) …/neork/admin/tnsnames ora (for unix) 此处 假设服务器名为testserver 服务名为 使用的侦听端口为 则tnsnams ora文件中的一个test网络服务名(数据库别名)为 test = (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT= )) ) (CONNECT_DATA=(SERVICE_NAME=) ) ) 红色的内容为需要根据实际情况修改的内容 现解释如下 PROTOCOL 客户端与服务器端通讯的协议 一般为TCP 该内容一般不用改 HOST 数据库侦听所在的机器的机器名或IP地址 数据库侦听一般与数据库在同一个机器上 所以当我说数据库侦听所在的机器一般也是指数据库所在的机器 在UNIX或WINDOWS下 可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名 或通过ipconfig(for WINDOWS) or ifconfig(for UNIX)命令得到IP地址 需要注意的是 不管用机器名或IP地址 在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名 否则需要在hosts文件中加入数据库侦听所在的机器的机器名的解析 PORT 数据库侦听正在侦听的端口 可以察看服务器端的listener ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctl status [listener name]命令察看 此处Port的值一定要与数据库侦听正在侦听的端口一样 SERVICE_NAME 在服务器端 用system用户登陆后 sqlplus> show parameter service_name命令察看 如何利用配置的网络服务名连接到数据库 用sqlplus程序通过test网络服务名进行测试 如sqlplus system/manager@test 如果不能连接到数据库 则在tnsname ora文件中的test网络服务名(net service)后面加上Oracle数据库的DB_Domain参数值 通过用sqlplus> show parameter db_domain命令察看 此处db_domain参数值为 将其加到网络服务名后面 修改后的tnsname ora中关于该网络服务名的内容为 = (DESCRIPTION= (ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT= )) ) (CONNECT_DATA=(SERVICE_NAME=) ) ) 用sqlplus程序通过网络服务名测试 如sqlplus system/manager 关于为什们在网络服务名后面加db_domain参数 需要了解sqlplus连接数据库的原理 我在后面解决 常见故障中给出了详细的说明 如果上面的招数还不奏效的话 只好用一下乾坤大挪移了 将客户端的网络服务名部分 = (DESCRIPTION= (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT= )) ) (CONNECT_DATA=(SERVICE_NAME=) ) ) 拷贝到服务器的tnsnames ora文件中 然后再服务器端用sqlplus system/manager连接到数据库 如果能连接成功 说明你的客户端与服务器端的网络有问题 如果连接不成功 用前面的部分检查网络服务名部分部分是否正确 如果确信网络服务名部分正确而且所有的客户端都连不上数据库则可能为系统TCP/IP或Oracle系统有问题 建议重新安装数据库 常见故障解决办法 TNS (ORA ) TNS:could not resolve service name 该错误表示用于连接的网络服务名在tnsnames ora文件中不存在 如上面的tnsnames ora中的网络服务名只有test 假如用户在连接时用sqlplus system/manager@test 则就会给出TNS 错误 要注意的是 有时即使在tnsnames ora文件中有相应的网络服务名 可是用该网络服务名连接时还会出错 出现这种情况的典型配置如下(在客户端的机器上) sqlnet ora文件 NAMES DIRECTORY_PATH = (TNSNAMES … ) NAMES DEFAULT_DOMAIN = tnsnames ora文件: test = (DESCRIPTION= (ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=testserver)(PORT= )) ) (CONNECT_DATA=(SERVICE_NAME=) ) ) sqlplus运行基本机理 在用户输入sqlplus system/manager@test后 sqlplus程序会自动到sqlnet ora文件中找NAMES DEFAULT_DOMAIN参数 假如该参数存在 则将该参数中的值取出 加到网络服务名的后面 即此例中你的输入由sqlplus system/manager@test自动变为sqlplus system/man 然后再到tnsnames ora文件中找网络服务名 这当然找不到了 因为该文件中只有test网络服务名 所以报错 解决的办法就是将sqlnet ora文件中的NAMES DEFAULT_DOMAIN参数注释掉即可 如#NAMES DEFAULT_DOMAIN = 假如NAMES DEFAULT_DOMAIN参数不存在 则sqlplus程序会直接到tnsnames ora文件中找test网络服务名 然后取出其中的host port tcp service_name 利用这些信息将连接请求发送到正确的数据库服务器上 另外原则上tnsnames ora中的配置不区分大小写 但是我的确遇到区分大小写的情况 所以最好将使用的网络服务与tnsnames ora中配置的完全一样 ORA : TNS:listener could not resolve SERVICE_NAME given in connect Descriptor 该错误表示能在tnsnames ora中找到网络服务名 但是在tnsnames ora中指定的SERVICE_NAME与服务器端的SERVICE_NAME不一致 解决的办法是修改tnsnames ora中的SERVICE_NAME 易混淆术语介绍 Db_name 对一个数据库(Oracle database)的唯一标识 该数据库为第一章讲到的Oracle database 这种表示对于单个数据库是足够的 但是随着由多个数据库构成的分布式数据库的普及 这种命令数据库的方法给数据库的管理造成一定的负担 因为各个数据库的名字可能一样 造成管理上的混乱 为了解决这种情况 引入了Db_domain参数 这样在数据库的标识是由Db_name和Db_domain两个参数共同决定的 避免了因为数据库重名而造成管理上的混乱 这类似于互连网上的机器名的管理 我们将Db_name和Db_domain两个参数用 连接起来 表示一个数据库 并将该数据库的名称称为Global_name 即它扩展了Db_name Db_name参数只能由字母 数字 _ # $ 组成 而且最多 个字符 Db_domain 定义一个数据库所在的域 该域的命名同互联网的 域 没有任何关系 只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的 当然为了管理方便 可以将其等于互联网的域 Global_name 对一个数据库(Oracle database)的唯一标识 oracle建议用此种方法命令数据库 该值是在创建数据库是决定的 缺省值为Db_name Db_domain 在以后对参数文件中Db_name与Db_domain参数的任何修改不影响Global_name的值 如果要修改Global_name 只能用ALTER DATABASE RENAME GLOBAL_NAME TO <db_name db_domain>命令进行修改 然后修改相应参数 Service_name 该参数是oracle i新引进的 在 i以前 我们用SID来表示标识数据库的一个实例 但是在Oracle的并行环境中 一个数据库对应多个实例 这样就需要多个网络服务名 设置繁琐 为了方便并行环境中的设置 引进了Service_name参数 该参数对应一个数据库 而不是一个实例 而且该参数有许多其它的好处 该参数的缺省值为Db_name Db_domain 即等于Global_name 一个数据库可以对应多个Service_name 以便实现更灵活的配置 该参数与SID没有直接关系 即不必Service name 必须与SID一样 Net service name 网络服务名 又可以称为数据库别名(database alias) 是客户端程序访问数据库时所需要 屏蔽了客户端如何连接到服务器端的细节 实现了数据库的位置透明的特性 lishixinzhi/Article/program/Oracle/201311/17463
数据库损坏,修复的书本名称有《SQLServer2012数据库恢复实战》,《MySQL数据库故障排除与恢复》,《Oracle数据库故障排除与恢复》。
1、《SQLServer2012数据库恢复实战》:该书从实践出发,介绍了SQLServer2012数据库损坏的原因、分类、诊断和修复方法,详细讲解了如何使用备份和日志来恢复数据库,以及如何使用工具来修复损坏的数据库。
2、《MySQL数据库故障排除与恢复》:该书详细介绍了MySQL数据库的故障排除和恢复,包括如何诊断和修复各种常见的数据库问题,如数据丢失、损坏和不一致等。
3、《Oracle数据库故障排除与恢复》:该书从Oracle数据库的体系结构出发,介绍了如何诊断和修复各种常见的Oracle数据库问题,包括数据块损坏、表空间故障等。
近段时间很多网友提出监听配置相关问题 客户终端(Client)无法连接服务器端(Server) 本文现对监听配置作一简单介绍 并提出一些客户终端无法连接服务器端的解决思路 愿对广大网友与读者有一些帮助 一 监听器(LISTENER) 监听器是Oracle基于服务器端的一种网络服务 主要用于监听客户端向数据库服务器端提出的连接请求 既然是基于服务器端的服务 那么它也只存在于数据库服务器端 进行监听器的设置也是在数据库服务器端完成的 二 本地服务名(Tnsname) Oracle客户端与服务器端的连接是通过客户端发出连接请求 由服务器端监听器对客户端连接请求进行合法检查 如果连接请求有效 则进行连接 否则拒绝该连接 本地服务名是Oracle客户端网络配置的一种 另外还有Oracle名字服务器(Oracle Names Server)等 Oracle常用的客户端配置就是采用的本地服务名 本文中介绍的也主要是基于本地服务名的配置 三 Oracle 网络连接配置方法 配 置Oracle服务器端与客户端都可以在其自带的图形化Oracle网络管理器(Oracle Net Manager)里完成(强烈建议在这个图形化的工具下完成Oracle服务端或客户端的配置) 在Windows下 点击 开始/程序/Oracle OraHome /Configuration and Migration Tools/Net Manager 启动Oracle网络管理器工具 在Linux/Unix下 利用netmgr命令来启动图形化Oracle网络管理器 如 $ netmgr Windows下启动Net Manager图形窗口如下图示 图(一) Oracle监听器配置(LISTENER) 如 图(一)示 选中树形目录中监听程序项 再点击左上侧 + 按钮添加监听程序 点击监听程序目录 默认新加的监听器名称是LISTENER(该名称也可以 由任意合法字符命名) 选中该名称 选中窗口右侧栏下拉选项中的 监听位置 点击添加地址按钮 在出现的网络地址栏的协议下拉选项中选中 TCP/IP 主机文本框中输入主机名称或IP地址(如果主机即用作服务端也作为客户端 输入两项之一均有效 如果主机作为服务端并需要通过网络连 接 建议输入IP地址) 端口文本框中输入数字端口 默认是 也可以自定义任意有效数字端口 配置好的监听位置如下图示 图(二) 选 中窗口右侧栏下拉选项中的 数据库服务 点击添加数据库按钮 在出现的数据库栏中输入全局数据库名 如myoracle 注意这里的全局数据库名与数据 库SID有所区别 全局数据库名实际通过域名来控制在同一网段内数据库全局命名的唯一性 就如Windows下的域名控制器 如这里可以输入 myoracle Oracle主目录可以不填写 输入SID 如myoracle 完整的数据库服务配置如下图示 图(三) 保 存以上配置 默认即可在Oracle安装目录下找到监听配置文件 (Windows下如D:\oracle\ora \neork\admin\listener ora Linux/Unix下$ ORACLE_HOME/neork/admin/listerer ora) 至此 Oracle服务端监听器配置已经完成 本地服务名配置(Tnsnames) 本 地服务名是基于Oracle客户端的网络配置 所以 如果客户端需要连接数据库服务器进行 *** 作 则需要配置该客户端 其依附对象可以是任意一台欲连接数据 库服务器进行 *** 作的PC机 也可以是数据库服务器自身 如前面所介绍 可以利用Oracle自带的图形化管理工具Net Manager来完成Oracle客户端的配置 选中如图(一)中的服务命名 再点击左上侧 + 按钮 d出如下图示对话框 图(四) 输入Net服务名 如myoracle 点击下一步 进入下图示对话框 图(五) 选中TCP/IP(Internet协议) 点击下一步 如下图示 图(六) 输入主机名与端口号 注意这里的主机名与端口号必须与数据库服务器端监听器配置的主机名和端口号相同 点击下一步 如下图示 图(七) 选 中(Oracle i或更高版本)服务名 输入服务名 这里的服务名实际上就是数据库服务器端监听器配置中的全局数据库名 前者与后者必须相同 连接类型 通常选专用服务器 这要视数据库服务器的配置而定 如果配置的共享数据库服务器 这里的连接类型就要选共享服务器 否则建议选专用服务器(关于专用服务器 的介绍请参阅相关文档) 配置好后点击下一步 如下图示 图(八) 如 果数据库服务器端相关服务启动了 可以点击测试按钮进行连接测试 Oracle默认是通过scott/tiger用户进行测试连接 由于scott用户是 Oracle自带的示例用户 对于正式的业务数据库或专业测试数据库可能没有配置这个用户 所以需要更改成有效的用户登录才可能测试成功 如果这里测试连 接不成功 也不要紧 先点完成按钮结束配置 回 到Oracle网络管理器(Oracle Net Manager)主窗口 保存配置 默认即可在Oracle安装目录下找到本地服务名配置文件 (Windows下如D:\oracle\ora \neork\admin\tnsnames ora Linux/Unix下$ ORACLE_HOME/neork/admin/ tnsnames ora) 配置完成的本地服务名如下图示 图(九) 树形目录下的服务命名可以通过编辑菜单里的重命名菜单更改成任意合法字符组成的服务名称 注意服务名称前不能有空格字符 否则可能无法连接数据库服务器 连接数据库服务器 ( ) 启动服务器端监听器与数据库服务 Linux/Unix下 启动监听器 $ lsnrctl start 关闭监听器 $ lsnrctl stop 查看监听状态 $ lsnrctl status 启动数据库 $ sqlplus /nolog SQL>conn sys@myoracle as sysdba 这里的myoracle是前面配置的客户端本地服务名 或 SQL>conn / as sysdba SQL>startup Windows下 启动监听器 C:\lsnrctl start 启动Oracle实例服务 C:\oradim –startup –sid myoracle 关闭Oracle实例服务 C:\oradim –shutdown –sid myoracle 以上服务必须同时启动 客户端才能连接数据库 由于默认配置的监听器名称是Listener 上述命令可以正常启动监听器 如果监听器名称是其它名称 如aListener 则需要用下列方式才能启动 Linux/Unix下 $ lsnrctl start aListener Windows下 C:\lsnrctl start aListener ( ) 测试连接数据库服务器 测试的方法多种多样 可以在上面配置本地服务名时进行测试 也可以是第三方客户端工具 如PL/SQL Developer 最方便的是用Oracle自带的sqlplus工具 以下利用sqlplus进行测试 C:\sqlplus /nolog SQL>conn zgh@myoracle 已连接 四 客户端连接服务器端常见问题排除方法 要排除客户端与服务器端的连接问题 首先检查客户端配置是否正确(客户端配置必须与数据库服务器端监听配置一致) 再根据错误提示解决 下面列出几种常见的连接问题 ORA : TNS: 没有监听器 显而易见 服务器端的监听器没有启动 另外检查客户端IP地址或端口填写是否正确 启动监听器 $ lsnrctl start 或 C:\lsnrctl start ORA : TNS: 监听程序无法启动专用服务器进程 对于Windows而言 没有启动Oracle实例服务 启动实例服务 C:\oradim –startup sid myoracle ORA : TNS: *** 作超时 出现这个问题的原因很多 但主要跟网络有关 解决这个问题 首先检查客户端与服务端的网络是否畅通 如果网络连通 则检查两端的防火墙是否阻挡了连接 ORA : TNS: 无法处理服务名 检 查输入的服务名与配置的服务名是否一致 另外注意生成的本地服务名文件(Windows下如D:\oracle\ora \neork\admin \tnsnames ora Linux/Unix下$ORACLE_HOME/neork/admin/tnsnames ora)里每项服务的首 行服务名称前不能有空格 ORA : TNS: 监听进程不能解析在连接描述符中给出的 SERVICE_NAME 打开Net Manager 选中服务名称 检查服务标识栏里的服务名输入是否正确 该服务名必须与服务器端监听器配置的全局数据库名一致 Windows下启动监听服务提示找不到路径 用 命令或在服务窗口中启动监听提示找不到路径 或监听服务启动异常 打开注册表 进入HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/OracleOraHome TNSListener项 查看ImagePath字符串项是否存在 如果没 有 设定值为D:\oracle\ora \BIN\TNSLSNR 不同的安装路径设定值做相应的更改 这种方法同样适用于Oracle实例服务 同 上 找到如同HKEY_LOCAL_MACHINE/SYSTEM/Current ControlSet/Services/Oracle ServiceMYORACLE项 查看ImagePath字符串项是否存在 如果没有 则新建 设定值为d:\oracle\ora \ binORACLE EXE MYORACLE 以上是Oracle客户端连接服务器端常见的一些问题 当然不能囊括所有的连接异常 解决问题的关键在于方法与思路 而不是每种问题都有固定的答案 lishixinzhi/Article/program/Oracle/201311/17900
aess提供了压缩和修复数据库功能,可尝试用该功能修复,以aess2010为例方法如下:
1、启动aess2010,点击数据库工具选项卡--压缩和修复数据库命令;
2、浏览窗口选定要修复的数据库,点击打开;
3、输入修复后数据库的名称,点击保存;
4、打开修复后的数据库,查看修复效果。
以上就是关于连接oracle的总结(关于tnsname和监听)全部的内容,包括:连接oracle的总结(关于tnsname和监听)、数据库损坏,如何修复的书本名称、Oracle数据库监听配置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)