连接oracle数据库及故障解决办法

连接oracle数据库及故障解决办法,第1张

如何配置才能使客户端连到数据库 要使一个客户端机器能连接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 这种表示对于单个数据库是足够的 但是随着由多个数据库构成的分布式数据库的普及 这种命令数据库的方法给数据库的管理造成一定的负担 因为各个数据库的名字可能一样 造成管理上的混乱 为了解决这种情况 引 lishixinzhi/Article/program/Oracle/201311/18161

最近因看到论坛有人问起这方面的东西 将自己的理解加上查阅相关资料整理如下 如果不全或不当的地方 望指正并补全它 数据库名(DB_NAME) 实例名(Instance_name) 以及 *** 作系统环境变量(ORACLE_SID)在ORACLE 数据库中只有数据库名(db_name)和数据库实例名(instance_name) 在ORACLE i i中出现了新的参数 即数据库域名(db_domain) 服务名(service_name) 以及 *** 作系统环境变量(ORACLE_SID) 这些都存在于同一个数据库中的标识 用于区分不同数据库的参数 一 什么是数据库名(db_name) 数据库名是用于区分数据的内部标识 是以二进制方式存储于数据库控制文件中的参数 在数据安装或创建之后将不得修改 数据库安装完成后 该参数被写入数据库参数文件pfile中 格式如下 [code: : aaf ] db_name= orcl #(不允许修改)db_domain=instance_name=orclservice_names=orcontrol_file=( [/code: : aaf ]在每一个运行的ORACLE i数据库中都有一个数据库名(db_name) 如果一个服务器程序中创建了两个数据库 则有两个数据库名 其控制参数据分属在不同的pfile中控制着相关的数据库 二 什么是数据库实例名(instance_name) 数据库实例名则用于和 *** 作系统之间的联系 用于对外部连接时使用 在 *** 作系统中要取得与数据库之间的交互 必须使用数据库实例名 例如 要和某一个数据库server连接 就必须知道其数据库实例名 只知道数据库名是没有用的 与数据库名不同 在数据安装或创建数据库之后 实例名可以被修改 数据库安装完成后 该实例名被写入数据库参数文件pfile中 格式如下 [code: : aaf ]db_name= orcl #(不允许修改)db_domain=instance_name=orcl #(可以修改 可以与db_name相同也可不同)service_names=orcontrol_file=( [/code: : aaf ]数据库名与实例名之间的关系 数据库名与实例名之间的关系一般是一一对应关系 有一个数据库名就有一个实例名 如果在一个服务器中创建两个数据库 则有两个数据库名 两个数据库实例名 用两个标识确定一个数据库 用户和实例相连接 但在 i i的并行服务器结构中 数据库与实例之间不存在一一对应关系 而是一对多关系 (一个数据库对应多个实例 同一时间内用户只一个实例相联系 当某一实例出现故障 其它实例自动服务 以保证数据库安全运行 ) 三 *** 作系统环境变量(ORACLE_SID) 在实际中 对于数据库实例名的描述有时使用实例名(instance_name)参数 有时使用ORACLE_SID参数 这两个都是数据库实例名 它们有什么区别呢?(经常弄混)[code: : aaf ](ORACLE_SID)OS< > ORACLE 数据库 < (Instance_name(实例名))[/code: : aaf ]上图表示实例名instance_name ORACLE_SID与数据库及 *** 作系统之间的关系 虽然这里列出的两个参数都是数据库实例名 但instance_name参数是ORACLE数据库的参数 此参数可以在参数文件中查询到 而ORACLE_SID参数则是 *** 作系统环境变量 *** 作系统环境变量ORACLE_SID用于和 *** 作系统交互 也就是说 在 *** 作系统中要想得到实例名 就必须使用ORACLE_SID 此参数与ORACLE_BASE ORACLE_HOME等用法相同 在数据库安装之后 ORACLE_SID被用于定义数据库参数文件的名称 如 $ORACLE_BASE/admin/DB_NAME/pfile/init$ORACLE_SID ora 定义方法:[code: : aaf ]export ORACLE_SID=orcl[/code: : aaf ]如果在同一服务器中创建了多个数据库 则必然同时存在多个数据库实例 这时可以重复上述定义过程 以选择不同实例 还可以用[code: : aaf ][oracle@Datacent]$ oraenv[/code: : aaf ]来切换不同的ORACLE_SID来通过 *** 作系统来启动不同的实例(instance) lishixinzhi/Article/program/Oracle/201311/18134

1、64位linux 和64位oracle,默认oracle表空间数据文件用的BLOCKSIZE是8k,表空间数据文件最大是32G。\x0d\SQL>show parameter k_cache_size\x0d\查看数据库默认的块大小\x0d\SQL> show parameter db_block_size\x0d\db_block_size integer 8192\x0d\2、为了让一个表空间数据文件存64G,你需要告诉oracle用BLOCKSIZE 是16k\x0d\CREATE TABLESPACE TEST DATAFILE ‘/data1/test_ts1dbf’ SIZE 512M AUTOEXTEND ON NEXT 256M MAXSIZE UNLIMITED BLOCKSIZE 16k;\x0d\提前需要设置db_16k_cache_size\x0d\alter system set db_16k_cache_size=16M scope=both;\x0d\否则会报错ORA-29339:\x0d\tablespace block size 16384 does not match configured block sizes\x0d\3、为了让一个表空间数据文件存128G,你需要告诉oracle用BLOCKSIZE 是32k\x0d\4、32位linux 和32位oracle,默认oracle表空间datafile用的BLOCKSIZE也是8k,表空间数据文件最大也是32G。试了一下64G文件,也没有问题。

oracle的启动和关闭

一、sqlplus方式:

用sqlplus来连接到Oracle

Sqlplus /nolog 是以不连接数据库的方式启动sqlplus

Connect /as sysdba 是以DBA身份连接到oracle

or35gif

启动

or36gif

Startup就可以启动了。

不过oracle启动模式有3种:

l Startup nomount (nomount模式)启动实例不加载数据库。

l Startup mount (mount模式)启动实例加载数据库但不打开数据库

l Startup (open 模式)启动实例加载并打开数据库,就是我们上面所用的命令

Nomount模式中oracle仅为实例创建各种内存结构和服务进程,不会打开任何数据库文件,

所以说:

1) 创建新数据库

2) 重建控制文件

这2种 *** 作都必须在这个模式下进行。

Mount模式中oracle只装载数据库但不打开数据库,所以说:

1) 重命名数据文件

2) 添加、删除和重命名重做日子文件

3) 执行数据库完全恢复 *** 作

4) 改变数据库的归档模式

这4种 *** 作都必须在这个模式下进行

Open模式(就是我们上面的startup不带任何参数的)正常启动。

当然这3种模式之间可以转换:

Alter database mount(nomount模式)—〉alter database open(mount 模式)—〉(open模式)

当然还有其它一些情况,在我们open模式下可以将数据库设置为非受限状态和受限状态

在受限状态下,只有DBA才能访问数据库,所以说:

1) 执行数据导入导出

2) 使用sqlloader提取外部数据

3) 需要暂时拒绝普通用户访问数据库

4) 进行数据库移植或者升级 *** 作

这4种 *** 作都必须在这个状态下进行

在打开数据库时使用startup restrict命令即进入受限状态。

or37gif

使用alter system disable restricted session命令即可以将受限状态改变为非受限状态。

or38gif

使用alter system enable restricted session命令可以将非受限状态变为受限状态

or39gif

使用alter database open read only可以使数据库进入只读状态。

使用alter database open read write 可以使数据库进入读写状态。

当然在某些情况下可能是用上述各种启动方式都无法成功启动数据库,这个时候就要使用startup force命令来强行启动数据库。当然谁都不想碰到这种情况:)

or40gif

c关闭数据库

1)正常关闭 shutdown

2) 立即关闭 shutdown immediate

3) 关闭事务 shutdown transactional

4) 强行关闭 shutdown abort,当然谁都不想碰到这种情况。

二、OEM为例

Oracle Enterprise Management(OEM),

跟第一小节讲的Sqlplus /nolog ,Connect /as sysdba 这2个命令差不多的 *** 作如图:

or29gif

or30gif

or31gif

按照上面的一步步 *** 作就能够连接到数据库。

下面是如何启动和关闭数据库:

or32gif

点击我们前几章创建的ORADB01这个数据库树中的配置选项,这个里面的:

1)已启动 对应 Nomount模式

2)已转载 对应 mount模式

3)打开 对应 open模式

当你点击应有按钮之后就会进入如下对话框

or33gif

1)正常 对应 正常关闭 shutdown

2) 立即 对应 立即关闭 shutdown immediate

3) 事务处理 对应 关闭事务 shutdown transactional

4) 中止 对应 强行关闭 shutdown abort

确定之后出现如下对话框

or34gif

限制对数据库访问 对应 alter system disable restricted session

alter system enable restricted session

只读模式 对应 alter database open read only

alter database open read write

简单吧,sqlplus的一大堆命令到OEM中变成了几个按钮罢了。

3windows控制台

or41gif

这个熟悉吧:

oracle Agent 用于OEM管理结构

oracle>

ORACLE获取DDL的几种常用方法

转自CSDN (原作 brucelau)

一、通过toad、plsql develop等第三方工具进行导出DLL *** 作,用这种办法的好处在于 *** 作简单方便,但需要安装,下面简单介绍一下用这两个工具获得DLL语句的 *** 作。

1、Toad 工具 (可以到>

以上就是关于连接oracle数据库及故障解决办法全部的内容,包括:连接oracle数据库及故障解决办法、数据库名、实例名、ORACLE、oracle单个数据库文件最大是多少等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9480118.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存