安装oracle数据库步骤从零开始教你安装Oracle数据库如何安装oracle数据库




安装oracle数据库步骤从零开始教你安装Oracle数据库如何安装oracle数据库

2022-07-21 2:25:00 网络知识 官方管理员


Oracle数据库的安装和使用

  • 1、数据库安装
    • 1.1下载
    • 1.2安装
  • 2、配置数据库
    • 2.1创建表空间
    • 2.2创建用户
    • 2.3配置监听
    • 2.4配置本地服务名(Tnsnames)
    • 网络配置与访问方式完全解析
        • 连接的时候输入的TNSNAME
    • 连接过程
    • 几种连接方式
    • 连接用到的几种验证形式
        • 1.lsnrctlstatus查看服务器端listener进程的状态
        • 2.tnsping查看客户端sqlnet.ora和tnsname.ora文件的配置正确与否,及对应的服务器的listener进程的状态。
        • 3.查看instance是否已经启动
    • 2.5oracle连接问题
        • 1.ORA-12541:TNS:没有监听器
        • 2.ORA-12500:TNS:监听程序无法启动专用服务器进程
        • 3.ORA-12535:TNS:操作超时
        • 4.ORA-12154:TNS:无法处理服务名
        • 5.ORA-12514:TNS:监听进程不能解析在连接描述符中给出的SERVICE_NAME
        • 6.ORA-12518TNS:监听程序无法分发客户机连接
        • 7.Windows下启动监听服务提示找不到路径
        • 8.TNS-12537,TNS-12560,TNS-00507LinuxError:29:IllegalseekerrorWhenStartingtheListener
        • 9.ORA-12505,TNS:listenerdoesnotcurrentlyknowofSIDgiveninconnectdescriptorTheConnectiondescriptorusedbytheclientwas:192.168.1.1:1521:bbcd
        • 10.Ora-12514:TNS:监听程序当前无法识别链接描述符中请求的服务
        • 11.ORA-12528:TNS:listener:allappropriateinstancesareblockingnewconnections
        • 12.ORA-01034:ORACLEnotavailable和ORA-27101:sharedmemoryrealmdoesnotexist
        • 13.ORA-12520TNS:Listenercountnotfindavailablehandlerforrequestedtypeofserver
        • 14.TNS-12542:TNS:addressalreadyinuse
        • 15.Windows下启动监听服务提示找不到路径
        • 16.ORA-12638:身份证明检索失败
  • 3.备份还原数据库
    • 3.1备份数据库
      • exp导出
      • 使用导出expdp工具
    • 3.2还原数据库
      • imp导入
      • 导入非完整数据库dmp文件(部分表)
      • 使用导入impdb工具

1、数据库安装

1.1下载

安装oracle数据库步骤(从零开始教你安装Oracle数据库)(1)


根据自己的操作系统位数,到oracle官网下载(以oracle11g为例)
之后把两个压缩包解压到同一个文件夹内(需要注意的是,这个文件夹路径名称中最好不要出现中文、空格等不规则字符。)
注意:下载的是OracleDataBase数据库服务器!!不要下错了,下载成client客户端!!

1.2安装

打开相应的解压路径,找到安装文件“setup.exe”,双击进行安装,如下图所示:

安装oracle数据库步骤(从零开始教你安装Oracle数据库)(2)


取消下图中的“我希望通过MyOracleSupport接受安全更新(W)”,点击下一步

安装oracle数据库步骤(从零开始教你安装Oracle数据库)(3)

安装oracle数据库步骤(从零开始教你安装Oracle数据库)(4)


下面需要注意,如果是笔记本的话选择“桌面类”,服务器就选择“服务器类”

安装oracle数据库步骤(从零开始教你安装Oracle数据库)(5)


自定义oracle及目录(安装路径)及密码。

安装oracle数据库步骤(从零开始教你安装Oracle数据库)(6)

安装oracle数据库步骤(从零开始教你安装Oracle数据库)(7)


先决条件检查。安装程序会检查软硬件系统是否满足,安装此Oracle版本的最低要求。直接下一步就OK了。

安装oracle数据库步骤(从零开始教你安装Oracle数据库)(8)


概要安装前的一些相关选择配置信息。可以保存成文件或不保存文件直接点完成即可。

安装oracle数据库步骤(从零开始教你安装Oracle数据库)(9)


数据库管理软件文件及dbms文件安装完后,会自动创建安装一个实例数据库默认前面的orcl名称的数据库。

安装oracle数据库步骤(从零开始教你安装Oracle数据库)(10)


最后完成oracle安装。

2、配置数据库

2.1创建表空间

Win+R输入cmd进入命令行,输入下面,以sysdba登录进去:

sqlplus/nologconnect/assysdbastartup

注意:在conn/assysdba过程中遇到报ORA-01301:insufficientprivileges错误
解决办法:出现这种问题的原因,有两个原因,一是在oracle的用户组中没有本机系统;二是操作系统的本地验证不允许。

  • 将当前登录用户添加到ora_dba组中。
  • 在sql.net文件中修改语句为
SQLNET.AUTHENTICATION_SERVICE=(NTS)

安装oracle数据库步骤(从零开始教你安装Oracle数据库)(11)


创建表空间

createtablespaceTBS_CHOVA_DATAdatafile'E:\Oracle\oradata\TBS_CHOVA_DATA.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtemporarytablespaceTBS_CHOVA_TEMPtempfile'E:\Oracle\oradata\TBS_CHOVA_TEMP.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtablespaceTBS_CHOVA_IDXdatafile'E:\Oracle\oradata\TBS_CHOVA_IDX.dbf'size200Mautoextendonnext100maxsizeunlimited;

注意:文件名前面的路径需要真实存在,没有这个路径的话,需要自己手动创建这个路径

2.2创建用户

建立用户,分配权限。第一个smis是用户名,第二个smis是密码。

createusersmisidentifiedbysmisdefaulttablespaceTBS_CHOVA_DATAtemporarytablespaceTBS_CHOVA_TEMP;grantconnect,resourcetosmis;grantdbatosmis;

2.3配置监听

监听器是Oracle基于服务器端的一种网络服务,主要用于监听客户端向数据库服务器端提出的连接请求。既然是基于服务器端的服务,那么它也只存在于数据库服务器端,进行监听器的设置也是在数据库服务器端完成的。

  • 打开oracle程序下的NetManager
  • 选择监听程序,LISTENER,监听位置处,添加地址,主机填写自己电脑的IP地址,端口1521
  • 选中窗口右侧栏下拉选项中的“数据库服务”,点击添加数据库按钮。在出现的数据库栏中输入全局数据库名。注意这里的全局数据库名与数据库SID有所区别,全局数据库名实际通过域名来控制在同一网段内数据库全局命名的唯一性,就如Windows下的域名控制器。Oracle主目录可以不填写,输入SID。

2.4配置本地服务名(Tnsnames)

  • 本地服务名是基于Oracle客户端的网络配置,所以,如果客户端需要连接数据库服务器进行操作,则需要配置该客户端,其依附对象可以是任意一台欲连接数据库服务器进行操作的PC机,也可以是数据库服务器自身。如前面所介绍,可以利用Oracle自带的图形化管理工具NetManager来完成Oracle客户端的配置。选中服务命名,再点击左上侧“+”按钮,弹出如下图示对话框:
  • 输入Net服务名,如myoracle,点击下一步,进入下图示对话框:
  • 选中TCP/IP(Internet协议),点击下一步,如下图示:
  • 输入主机名与端口号。注意这里的主机名与端口号必须与数据库服务器端监听器配置的主机名和端口号相同。点击下一步,如下图示:
  • 选中(Oracle8i或更高版本)服务名,输入服务名。这里的服务名实际上就是数据库服务器端监听器配置中的全局数据库名,前者与后者必须相同。连接类型通常选专用服务器,这要视数据库服务器的配置而定,如果配置的共享数据库服务器,这里的连接类型就要选共享服务器,否则建议选专用服务器(关于专用服务器的介绍请参阅相关文档)。配置好后点击下一步,如下图示:
  • 如果数据库服务器端相关服务启动了,可以点击测试按钮进行连接测试。Oracle默认是通过scott/tiger用户进行测试连接,由于scott用户是Oracle自带的示例用户,对于正式的业务数据库或专业测试数据库可能没有配置这个用户,所以需要更改成有效的用户登录才可能测试成功。如果这里测试连接不成功,也不要紧,先点完成按钮结束配置。回到Oracle网络管理器(OracleNetManager)主窗口,保存配置,默认即可在Oracle安装目录下找到本地服务名配置文件(Windows下如D:/oracle/ora92/network/admin/tnsnames.ora,Linux/Unix下$ORACLE_HOME/network/admin/tnsnames.ora)。配置完成的本地服务名如下图示:
  • 树形目录下的服务命名可以通过编辑菜单里的重命名菜单更改成任意合法字符组成的服务名称,注意服务名称前不能有空格字符,否则可能无法连接数据库服务器。

网络配置与访问方式完全解析

三个配置文件listener.ora、sqlnet.ora、tnsnames.ora,都是放在目录:

ORACLE_HOME\network\admin
  1. sqlnet.ora-----作用类似于linux或者其他unix的nsswitch.conf文件,通过这个文件来决定怎么样找一个连接中出现的连接字符串。
    例如我们客户端输入
sqlplussys/oracle@orcl

假如我的sqlnet.ora是下面这个样子

SQLNET.AUTHENTICATION_SERVICES=(NTS)NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME)

那么,客户端就会首先在tnsnames.ora文件中找orcl的记录.如果没有相应的记录则尝试把orcl当作一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip上GLOBAL_DBNAME=orcl这个实例,当然我这里orcl并不是一个主机名。
如果我是这个样子

NAMES.DIRECTORY_PATH=(TNSNAMES)

那么客户端就只会从tnsnames.ora查找orcl的记录,括号中还有其他选项,如LDAP等并不常用。
2.Tnsnames.ora------这个文件类似于unix的hosts文件,提供的tnsname到主机名或者ip的对应,只有当sqlnet.ora中类似

NAMES.DIRECTORY_PATH=(TNSNAMES)

这样,也就是客户端解析连接字符串的顺序中有TNSNAMES是,才会尝试使用这个文件。
PROTOCOL:客户端与服务器端通讯的协议,一般为TCP,该内容一般不用改。
HOST:数据库侦听所在的机器的机器名或IP地址,数据库侦听一般与数据库在同一个机器上,所以当我说数据库侦听所在的机器一般也是指数据库所在的机器。在UNIX或WINDOWS下,可以通过在数据库侦听所在的机器的命令提示符下使用hostname命令得到机器名,或通过ipconfig(forWINDOWS)orifconfig(forUNIX)命令得到IP地址。需要注意的是,不管用机器名或IP地址,在客户端一定要用ping命令ping通数据库侦听所在的机器的机器名,否则需要在hosts文件中加入数据库侦听所在的机器的机器名的解析。
PORT:数据库侦听正在侦听的端口,可以察看服务器端的listener.ora文件或在数据库侦听所在的机器的命令提示符下通过lnsrctlstatus[listenername]命令察看。此处Port的值一定要与数据库侦听正在侦听的端口一样。
SERVICE_NAME:在服务器端,用system用户登陆后,sqlplus>showparameterservice_name命令察看。
ORCL:对应的本机,SALES对应的另外一个IP地址,里边还定义了使用主用服务器还是共享服务器模式进行连接。

连接的时候输入的TNSNAME

ORCL=(DESCRIPTION=(ADDRESS_LIST=#下面是这个TNSNAME对应的主机,端口,协议(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=#使用专用服务器模式去连接需要跟服务器的模式匹配,如果没有就根据服务器的模式自动调节(SERVER=DEDICATED)#对应service_name,SQLPLUS>;showparameterservice_name;进行查看(SERVICE_NAME=orcl)))#下面这个类似SALES=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=dg1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=sales)))

注意:如果数据库服务器用MTS,客户端程序需要用databaselink时最好明确指明客户端用dedicated直连方式,不然会遇到很多跟分布式环境有关的ORACLEBUG。一般情况下数据库服务器用直接的连接会好一些,除非你的实时数据库连接数接近1000。
3.listener.ora------listener监听器进程的配置文件
关于listener进程就不多说了,接受远程对数据库的接入申请并转交给oracle的服务器进程。所以如果不是使用的远程的连接,并且不需要使用OEM时,listener进程就不是必需的,同样的如果关闭listener进程并不会影响已经存在的数据库连接。
***Listener.ora***文件的例子

SQLNET.AUTHENTICATION_SERVICE=(NTS)0

上面的例子是一个最简单的例子,但也是最普遍的。一个listener进程为一个instance(SID)提供服务。
监听器的操作命令

SQLNET.AUTHENTICATION_SERVICE=(NTS)1

其他诸如stop,status等。具体敲完一个lsnrctl后看帮助。
上面说到的三个文件都可以通过图形的配置工具来完成配置

SQLNET.AUTHENTICATION_SERVICE=(NTS)2

本人比较习惯netmgr,
profile配置的是sqlnet.ora也就是名称解析的方式
servicename配置的是tnsnames.ora文件
listeners配置的是listener.ora文件,即监听器进程
具体的配置可以尝试一下然后来看一下配置文件。
这样一来总体结构就有了不同的连接方式。

连接过程

当你输入

sqlplussys/oracle@orcl

1.查询sqlnet.ora看看名称的解析方式,发现是TNSNAME
2.则查询tnsnames.ora文件,从里边找orcl的记录,并且找到主机名,端口和service_name
3.如果listener进程没有问题的话,建立与listener进程的连接。
4.根据不同的服务器模式如专用服务器模式或者共享服务器模式,listener采取接下去的动作。默认是专用服务器模式,没有问题的话客户端就连接上了数据库的serverprocess。
5.这时候网络连接已经建立,listener进程的历史使命也就完成了。
##

几种连接方式

简便命名连接:
默认已启用,不需要进行客户机配置,仅支持TC/IP(无SSL),不支持高级连接,如:连接时故障转移,源路由,负载平衡。连接方式如:

SQLNET.AUTHENTICATION_SERVICE=(NTS)4

其中db.us.oracle.com为主机名当然也可以用IP代替,1521为连接端口,dba10g为服务名—可通过showparameterservice查看。
本地命名:
需要客户机名称解析文件tnsname.ora,支持所有的OracleNet协议,支持高级连接选项。连接方式如:connecthr/hr@orcl,其中orcl为数据库实例名
目录命名:
需要加载了OracleNet名称解析的LDAP:OracleInternetDirectory和MicrosoftActiveDirectoryServices。支持所有的OracleNet协议,支持高级连接选项。连接方式如:connecthr/hr@orcl
外部命名:
使用支持的非Oracle命名服务,包括:网络信息服务(NIS)外部命名,分布式计算环境(DCE)单元目录服务(CDS)

连接用到的几种验证形式

SQLNET.AUTHENTICATION_SERVICE=(NTS)5

这是典型的操作系统认证,不需要listener进程

SQLNET.AUTHENTICATION_SERVICE=(NTS)6

这种连接方式只能连接本机数据库,同样不需要listener进程

sqlplussys/oracle@orcl

这种方式需要listener进程处于可用状态。最普遍的通过网络连接。
以上验证方式使用sys用户或者其他通过密码文件验证的用户都不需要数据库处于可用状态,操作系统认证也不需要数据库可用,数据库用户认证放是由于采用数据库认证,所以数据库必需处于open状态。
作为普通用户进行登录

[oracle@dg1admin]$SQLNET.AUTHENTICATION_SERVICE=(NTS)6SQL*Plus:Release10.2.0.1.0-ProductiononSunFeb1316:18:332011Copyright(c)1982,2005,Oracle.Allrightsreserved.ERROR:ORA-01034:ORACLEnotavailableORA-27101:sharedmemoryrealmdoesnotexistLinuxError:2:Nosuchfileordirectory
SQLNET.AUTHENTICATION_SERVICE=(NTS)9

三个可选值:
NONE
默认值,指示Oracle系统不使用密码文件,通过操作系统进行身份验证的特权用户拥有SYSORA和SYSOPER权限。
EXCLUSIVE
1.表示只有一个数据库实例可以使用密码文件
2.允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户
SHARED
1.表示可以有多个数据库实例可以使用密码文件
2.不允许将SYSORA和SYSOPER权限赋值给SYS以外的其它用户
所以,如果要以操作系统身份登录,Remote_Login_Passwordfile应该设置为NONE
关于域名(主机名)解析

createtablespaceTBS_CHOVA_DATAdatafile'E:\Oracle\oradata\TBS_CHOVA_DATA.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtemporarytablespaceTBS_CHOVA_TEMPtempfile'E:\Oracle\oradata\TBS_CHOVA_TEMP.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtablespaceTBS_CHOVA_IDXdatafile'E:\Oracle\oradata\TBS_CHOVA_IDX.dbf'size200Mautoextendonnext100maxsizeunlimited;0

客户端需要写入数据库服务器IP地址和主机名的对应关系。

createtablespaceTBS_CHOVA_DATAdatafile'E:\Oracle\oradata\TBS_CHOVA_DATA.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtemporarytablespaceTBS_CHOVA_TEMPtempfile'E:\Oracle\oradata\TBS_CHOVA_TEMP.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtablespaceTBS_CHOVA_IDXdatafile'E:\Oracle\oradata\TBS_CHOVA_IDX.dbf'size200Mautoextendonnext100maxsizeunlimited;1

有些时候我们配置好第一步后,tnsping数据库服务器别名显示是成功的,
但是sqlplususername/password@servicename不同,jdbcthinlink也不通的时候,
一定不要忘了在客户端做这一步,原因可能是DNS服务器里没有设置这个服务器IP地址和主机名的对应关系。
如果同时有私有IP和Internet上公有IP,私有IP写在前面,公有IP写在后面。
编辑前最好留一个备份,增加一行时也最好用复制粘贴,避免编辑hosts时空格或者tab字符错误。
UNIX下ORACLE多数据库的环境,OS客户端需要配置下面两个环境变量

createtablespaceTBS_CHOVA_DATAdatafile'E:\Oracle\oradata\TBS_CHOVA_DATA.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtemporarytablespaceTBS_CHOVA_TEMPtempfile'E:\Oracle\oradata\TBS_CHOVA_TEMP.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtablespaceTBS_CHOVA_IDXdatafile'E:\Oracle\oradata\TBS_CHOVA_IDX.dbf'size200Mautoextendonnext100maxsizeunlimited;2

来指定默认的目标数据库

**平时排错可能会用到的:**

1.lsnrctlstatus查看服务器端listener进程的状态

createtablespaceTBS_CHOVA_DATAdatafile'E:\Oracle\oradata\TBS_CHOVA_DATA.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtemporarytablespaceTBS_CHOVA_TEMPtempfile'E:\Oracle\oradata\TBS_CHOVA_TEMP.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtablespaceTBS_CHOVA_IDXdatafile'E:\Oracle\oradata\TBS_CHOVA_IDX.dbf'size200Mautoextendonnext100maxsizeunlimited;3

2.tnsping查看客户端sqlnet.ora和tnsname.ora文件的配置正确与否,及对应的服务器的listener进程的状态。

createtablespaceTBS_CHOVA_DATAdatafile'E:\Oracle\oradata\TBS_CHOVA_DATA.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtemporarytablespaceTBS_CHOVA_TEMPtempfile'E:\Oracle\oradata\TBS_CHOVA_TEMP.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtablespaceTBS_CHOVA_IDXdatafile'E:\Oracle\oradata\TBS_CHOVA_IDX.dbf'size200Mautoextendonnext100maxsizeunlimited;4

3.查看instance是否已经启动

createtablespaceTBS_CHOVA_DATAdatafile'E:\Oracle\oradata\TBS_CHOVA_DATA.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtemporarytablespaceTBS_CHOVA_TEMPtempfile'E:\Oracle\oradata\TBS_CHOVA_TEMP.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtablespaceTBS_CHOVA_IDXdatafile'E:\Oracle\oradata\TBS_CHOVA_IDX.dbf'size200Mautoextendonnext100maxsizeunlimited;5

查看数据库是打开还是mount状态。

createtablespaceTBS_CHOVA_DATAdatafile'E:\Oracle\oradata\TBS_CHOVA_DATA.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtemporarytablespaceTBS_CHOVA_TEMPtempfile'E:\Oracle\oradata\TBS_CHOVA_TEMP.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtablespaceTBS_CHOVA_IDXdatafile'E:\Oracle\oradata\TBS_CHOVA_IDX.dbf'size200Mautoextendonnext100maxsizeunlimited;6

使用hostname访问数据库而不是tnsname的例子
使用tnsname访问数据库是默认的方式,但是也带来点问题,那就是客户端都是需要配置tnsnames.ora文件的。如果你的数据库服务器地址发生改变,就需要重新编辑客户端这个文件。通过hostname访问数据库就没有了这个麻烦。
查看数据库名

createtablespaceTBS_CHOVA_DATAdatafile'E:\Oracle\oradata\TBS_CHOVA_DATA.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtemporarytablespaceTBS_CHOVA_TEMPtempfile'E:\Oracle\oradata\TBS_CHOVA_TEMP.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtablespaceTBS_CHOVA_IDXdatafile'E:\Oracle\oradata\TBS_CHOVA_IDX.dbf'size200Mautoextendonnext100maxsizeunlimited;7

需要修改服务器端listener.ora

  • 监听器的配置文件listener.ora
  • 使用hostnaming则不再需要tnsname.ora文件做本地解析
  • listener.oraNetworkConfigurationFile:
createtablespaceTBS_CHOVA_DATAdatafile'E:\Oracle\oradata\TBS_CHOVA_DATA.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtemporarytablespaceTBS_CHOVA_TEMPtempfile'E:\Oracle\oradata\TBS_CHOVA_TEMP.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtablespaceTBS_CHOVA_IDXdatafile'E:\Oracle\oradata\TBS_CHOVA_IDX.dbf'size200Mautoextendonnext100maxsizeunlimited;8
createtablespaceTBS_CHOVA_DATAdatafile'E:\Oracle\oradata\TBS_CHOVA_DATA.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtemporarytablespaceTBS_CHOVA_TEMPtempfile'E:\Oracle\oradata\TBS_CHOVA_TEMP.dbf'size1000Mautoextendonnext100maxsizeunlimited;createtablespaceTBS_CHOVA_IDXdatafile'E:\Oracle\oradata\TBS_CHOVA_IDX.dbf'size200Mautoextendonnext100maxsizeunlimited;9

客户端sqlnet.ora如果确认不会使用TNSNAME访问的话,可以去掉TNSNAMES

createusersmisidentifiedbysmisdefaulttablespaceTBS_CHOVA_DATAtemporarytablespaceTBS_CHOVA_TEMP;grantconnect,resourcetosmis;grantdbatosmis;0
createusersmisidentifiedbysmisdefaulttablespaceTBS_CHOVA_DATAtemporarytablespaceTBS_CHOVA_TEMP;grantconnect,resourcetosmis;grantdbatosmis;1

Tnsnames.ora文件不需要配置,删除也无所谓。
下面就是网络和操作系统的配置问题了,怎么样能够解析我的主机名的问题了
可以通过下面的方式连接

sqlplussys/oracle@orcl

这样的话,会连接orcl这台服务器,并且listener来确定你所要连接的service_name

2.5oracle连接问题

要排除客户端与服务器端的连接问题,首先检查客户端配置是否正确(客户端配置必须与数据库服务器端监听配置一致),再根据错误提示解决。下面列出几种常见的连接问题:

1.ORA-12541:TNS:没有监听器

显而易见,服务器端的监听器没有启动,另外检查客户端IP地址或端口填写是否正确。启动监听器:

createusersmisidentifiedbysmisdefaulttablespaceTBS_CHOVA_DATAtemporarytablespaceTBS_CHOVA_TEMP;grantconnect,resourcetosmis;grantdbatosmis;3

2.ORA-12500:TNS:监听程序无法启动专用服务器进程

对于Windows而言,没有启动Oracle实例服务。启动实例服务:

createusersmisidentifiedbysmisdefaulttablespaceTBS_CHOVA_DATAtemporarytablespaceTBS_CHOVA_TEMP;grantconnect,resourcetosmis;grantdbatosmis;4

3.ORA-12535:TNS:操作超时

出现这个问题的原因很多,但主要跟网络有关。解决这个问题,首先检查客户端与服务端的网络是否畅通,如果网络连通,则检查两端的防火墙是否阻挡了连接。

4.ORA-12154:TNS:无法处理服务名

检查输入的服务名与配置的服务名是否一致。另外注意生成的本地服务名文件(Windows下如

createusersmisidentifiedbysmisdefaulttablespaceTBS_CHOVA_DATAtemporarytablespaceTBS_CHOVA_TEMP;grantconnect,resourcetosmis;grantdbatosmis;5

里每项服务的首行服务名称前不能有空格。

5.ORA-12514:TNS:监听进程不能解析在连接描述符中给出的SERVICE_NAME

打开NetManager,选中服务名称,检查服务标识栏里的服务名输入是否正确。该服务名必须与服务器端监听器配置的全局数据库名一致。同时检查sqlnet.ora,例如如果想要采用简便连接方式连接就需要在NAMES.DIRECTORY_PATH参数中添加EZCONNECT。

6.ORA-12518TNS:监听程序无法分发客户机连接

出现该报错有两个原因:在共享模式下是由于调度进程(dispatchers)太少,在独占模式下是由于进程数(processes)超过了数据库默认的最大进程数。解决步骤:
1、showparameterprocess查看数据库允许最大进程数
2、selectcount(*)fromv$session;查看当前系统进程数
如果进程数不够,可通过扩大PGA来增大进程数:

createusersmisidentifiedbysmisdefaulttablespaceTBS_CHOVA_DATAtemporarytablespaceTBS_CHOVA_TEMP;grantconnect,resourcetosmis;grantdbatosmis;6

3、showparameterdispatchers查看调度进程数量
如果调度进程太少,则可执行:

createusersmisidentifiedbysmisdefaulttablespaceTBS_CHOVA_DATAtemporarytablespaceTBS_CHOVA_TEMP;grantconnect,resourcetosmis;grantdbatosmis;7

7.Windows下启动监听服务提示找不到路径

用命令或在服务窗口中启动监听提示找不到路径,或监听服务启动异常。打开注册表,进入

createusersmisidentifiedbysmisdefaulttablespaceTBS_CHOVA_DATAtemporarytablespaceTBS_CHOVA_TEMP;grantconnect,resourcetosmis;grantdbatosmis;8

查看ImagePath字符串项是否存在,如果没有,设定值为D:oracleora92BINTNSLSNR,不同的安装路径设定值做相应的更改。这种方法同样适用于Oracle实例服务,同上,找到如同

createusersmisidentifiedbysmisdefaulttablespaceTBS_CHOVA_DATAtemporarytablespaceTBS_CHOVA_TEMP;grantconnect,resourcetosmis;grantdbatosmis;9

查看ImagePath字符串项是否存在,如果没有,则新建,设定值为d:oracleora92binORACLE.EXEMYORACLE。以上是Oracle客户端连接服务器端常见的一些问题,当然不能囊括所有的连接异常。解决问题的关键在于方法与思路,而不是每种问题都有固定的答案。

8.TNS-12537,TNS-12560,TNS-00507LinuxError:29:IllegalseekerrorWhenStartingtheListener

在linux,Unix底下如果/etc/hosts文件配置不正确会出现如下报错

createusersmisidentifiedbysmisdefaulttablespaceTBS_CHOVA_DATAtemporarytablespaceTBS_CHOVA_TEMP;grantconnect,resourcetosmis;grantdbatosmis;3LSNRCTLforHPUX:Version10.1.0.4.0-Productionon01-JUL-200510:16:59Copyright(c)1991,2004,Oracle.Allrightsreserved.Starting/db02/product/10.1/bin/tnslsnr:pleasewait...TNS-12537:TNS:connectionclosedTNS-12560:TNS:protoadaptererrorTNS-00507:ConnectionclosedHPUXError:29:Illegalseek

解决方式:
检查该用户是否有/etc/hosts文件的访问权限,检查/etc/hosts文件下是否包含

ORACLE_HOME\network\admin1

9.ORA-12505,TNS:listenerdoesnotcurrentlyknowofSIDgiveninconnectdescriptorTheConnectiondescriptorusedbytheclientwas:192.168.1.1:1521:bbcd

这个问题一般发生在利用JDBC连接数据库时,这里需要注意,上面的bbcd的位置应该填写sid_name,一般JDBC的配置格式为

ORACLE_HOME\network\admin2

10.Ora-12514:TNS:监听程序当前无法识别链接描述符中请求的服务

该问题是由于缺少监听器的SID_LIST描述项引起的,采用netca进行配置的时候经常会遇到该问题,listener.ora示例如下

ORACLE_HOME\network\admin3

11.ORA-12528:TNS:listener:allappropriateinstancesareblockingnewconnections

ORA-12528:监听中的服务使用了动态服务,系统启动后,数据库没有正常的MOUNT,因此在动态模式下,就会出现这个问题,用静态的就不会有这个问题,因此上面的方法就是把监听设置为静态,或者在tnsnames.ora中追加(UR=A)。
lisnter.ora增加如下内容

ORACLE_HOME\network\admin4

12.ORA-01034:ORACLEnotavailable和ORA-27101:sharedmemoryrealmdoesnotexist

检查tnsping是否能正常工作,检查lsnrctlstatus是否正常。检查local_listener参数(pmon只会动态注册port等于1521的监听,否则pmon不能动态注册listener,要想让pmon动态注册listener,需要设置local_listener参数),通过如下方式设置

ORACLE_HOME\network\admin5

13.ORA-12520TNS:Listenercountnotfindavailablehandlerforrequestedtypeofserver

有以下3种可能
1、检查数据库是否是专用服务器,但是在tnsname.ora配置中设置了连接方式为shared,这种情况下

ORACLE_HOME\network\admin6

2、是由于process不够引起的:

ORACLE_HOME\network\admin7

调大processes参数即可
3、local_listener设置不当,设置方式参见上文。

14.TNS-12542:TNS:addressalreadyinuse

ORACLE_HOME\network\admin8

检查/etc/hosts的配置,是否有多个ip指向同一主机名的情况
参考至:http://lzysystem.iteye.com/blog/424569
http://blogold.chinaunix.net/u2/82873/showart_1830733.html
http://gggwfn1982.blog.163.com/blog/static/15000427201041192213787/
http://guolr.iteye.com/blog/549692
http://blog.sina.com.cn/s/blog_4cd0d3a701000a6j.html
http://pengxianfeng.i.sohu.com/blog/view/84726397.htm
http://blog.sina.com.cn/s/blog_517cae3c01015dwu.html
http://luoping.blog.51cto.com/534596/1062670
http://xiekeli.blogbus.com/logs/93619549.html
http://www.linuxidc.com/Linux/2012-11/73694.htm

15.Windows下启动监听服务提示找不到路径

用命令或在服务窗口中启动监听提示找不到路径,或监听服务启动异常。打开注册表,进入

createusersmisidentifiedbysmisdefaulttablespaceTBS_CHOVA_DATAtemporarytablespaceTBS_CHOVA_TEMP;grantconnect,resourcetosmis;grantdbatosmis;8

查看ImagePath字符串项是否存在,如果没有,设定值为

sqlplussys/oracle@orcl0

不同的安装路径设定值做相应的更改。这种方法同样适用于Oracle实例服务,同上,找到如同

createusersmisidentifiedbysmisdefaulttablespaceTBS_CHOVA_DATAtemporarytablespaceTBS_CHOVA_TEMP;grantconnect,resourcetosmis;grantdbatosmis;9

查看ImagePath字符串项是否存在,如果没有,则新建,设定值为

sqlplussys/oracle@orcl2

以上是Oracle客户端连接服务器端常见的一些问题,当然不能囊括所有的连接异常。解决问题的关键在于方法与思路,而不是每种问题都有固定的答案。

16.ORA-12638:身份证明检索失败

sqlplussys/oracle@orcl3

就可以了.

3.备份还原数据库

3.1备份数据库

exp导出

ORACLE11g新特性,当表没有数据时,不分配segment,以节省空间,所以exp导出的时候,不导出这些表。针对这个问题,首先执行下面的sql:

sqlplussys/oracle@orcl4

复制上面语句生成的结果,再执行这些即可。
在命令行执行下面即可导出数据库

sqlplussys/oracle@orcl5

使用导出expdp工具

首先指定转储文件和日志文件所在的目录directory–lmm_db_bak

sqlplus/nologconnect/assysdbastartupcreateorreplacedirectorylmm_db_bakas'D:/lmm_db_bak';grantread,writeondirectorylmm_db_baktopublic;
  • 查看
sqlplussys/oracle@orcl7
  • 导出
sqlplussys/oracle@orcl8
  • 导出部分表使用include
sqlplussys/oracle@orcl8include=table:\"like\'CT%\'\"

注:这种方式可以直接导出那些空表

3.2还原数据库

imp导入

如果是还原完整的oracle数据库,可以先删除当前用户,再创建用户,导入数据库

  • 删除用户
SQLNET.AUTHENTICATION_SERVICES=(NTS)NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME)0
  • 创建用户
SQLNET.AUTHENTICATION_SERVICES=(NTS)NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME)1

在命令行执行下面即可导入数据库

SQLNET.AUTHENTICATION_SERVICES=(NTS)NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME)2

导入非完整数据库dmp文件(部分表)

如果自己原本数据库和dmp中存在同样的表,那么导入dmp文件是不会导入已经有的同名表的。需要提前删除自己本来库里的同名表。

使用导入impdb工具

SQLNET.AUTHENTICATION_SERVICES=(NTS)NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME)3
SQLNET.AUTHENTICATION_SERVICES=(NTS)NAMES.DIRECTORY_PATH=(TNSNAMES,HOSTNAME)4

发表评论:

最近发表
网站分类
标签列表