数据库函数如何返回一个值

数据库函数如何返回一个值,第1张

实现结果:在一个数据库中某个用户下编写一个存储过程,在存储过程中使用dblink连接另一个数据库,从此数据库中的一个用户下取数,然后插入当前的数据库中的一个表中。

实现方法步骤:

1

创建存储过程

2

在存储过程中先创建database

link

3

创建成功

4

从另一个数据库取出数据插入到当前数据库中

5

任务完成

创建dblink的方法:

1

create

public

database

link

dblink

connect

to

totalplant

identified

by

totalplant

using

'(description

=

(address_list

=

(address

=

(protocol

=

tcp)(host

=

localhost)(port

=

1521))

)

(connect_data

=

(service_name

=

prdgdc)

)

)';

语法解释:create

public

database

link

dblink名字(自己随便起)

connect

to

用户名

identified

by

密码

using

'(description

=

(address_list

=

(address

=

(protocol

=

tcp)(host

=

要连接的数据库所在服务器的ip地址)(port

=

1521))

)

(connect_data

=

(service_name

=

要连接的数据库的在本地的服务名(即要连接的数据库的sid))

)

)';

2

如果创建private的dblink

create

database

link

dblink

connect

to

totalplant

identified

by

totalplant

using

'(description

=

(address_list

=

(address

=

(protocol

=

tcp)(host

=

localhost)(port

=

1521))

)

(connect_data

=

(service_name

=

prdgdc)

)

)';

试试:

'q1

select  from 学生 where year(出生日期)<1994

'q2

update 学生 set 奖学金=奖学金+500 where 奖学金<2000

祝你成功!

按照端口号的大小分类,可分为如下几类 :

(1)公认端口(WellKnownPorts):从0到1023,它们紧密绑定(binding)于一些服务。通常这些端口的通讯明确表明了某种服务的协议。例如:80端口实际上总是>

(2)注册端口(RegisteredPorts):从1024到49151。它们松散地绑定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同样用于许多其它目的。例如:许多系统处理动态端口从1024左右开始。

(3)动态和/或私有端口(Dynamicand/orPrivatePorts):从49152到65535。理论上,不应为服务分配这些端口。实际上,机器通常从1024起分配动态端口。但也有例外:SUN的RPC端口从32768开始。

扩展资料

各种服务常用端口号:

1,>

2,SOCKS代理协议服务器常用端口号:1080

3,FTP(文件传输)协议代理服务器常用端口号:21

4,Telnet(远程登录)协议代理服务器常用端口号:23

5,>

6,>

7,Telnet(不安全的文本传送),默认端口号为23/tcp(木马Tiny Telnet Server所开放的端口)

8,FTP,默认的端口号为21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口)

9,TFTP(Trivial File Transfer Protocol),默认端口号为69/udp

10,SSH(安全登录)、SCP(文件传输)、端口号重定向,默认的端口号为22/tcp

11,SMTP Simple Mail Transfer Protocol(E-mail),默认端口号为25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口)

12,POP3 Post Office Protocol(E-mail),默认端口号为110/tcp

13,Webshpere应用程序,默认端口号为9080

14,webshpere管理工具,默认端口号9090

15,JBOSS,默认端口号为8080

16,TOMCAT,默认端口号为8080

17,WIN2003远程登录,默认端口号为3389

18,Symantec AV/Filter for MSE,默认端口号为 8081

19,Oracle 数据库,默认的端口号为1521

20,ORACLE EMCTL,默认的端口号为1158

21,Oracle XDB(XML 数据库),默认的端口号为8080

22,Oracle XDB FTP服务,默认的端口号为2100

23,MS SQLSERVER数据库server,默认的端口号为1433/tcp 1433/udp

24,MS SQLSERVER数据库monitor,默认的端口号为1434/tcp 1434/udp

Oracle数据库无响应故障处理方式

Oracle数据库无响应故障,简单地讲就是数据库实例不能响应客户端发起的请求,客户端提交一个SQL后,就一直处于等待数据库实例返回结果的状态。更严重的现象是客户端根本不能连接到数据库,发起一个连接请求后,一直处于等待状态。Oracle数据库无响应故障怎么处理呢下面跟我一起来学习Oracle数据库无响应故障的处理方法吧!

无响应的故障现象一般有以下几种:

1Oracle的进程在等待某个资源或事件

这种现象一般可以从V$SESSION_WAT、V$LATCH、V$LATCHHOLDER等动态视图中检查进程正在等待的资源或事件,而被等待的资源或事件,一直都不能被获取,甚至是很长时间都不可获得。如果这个正在等待的进程持有了其他的资源,则会引起其他的进程等待,这样就很可能引起实例中大范围的会话发生等待。由于进程在等待资源或事件时,通常都处于SLEEP状态,消耗的CPU资源非常少(在等待latch时要稍微多消耗一些CPU资源),所以从OS来看,CPU的消耗并不高,甚至是非常低。

这种因为等待而引起的个别进程Hang,相对比较容易处理。

2 OracleProcess Spins

所谓Spin,就是指Oracle进程中的代码在执行某个过程时,陷入了循环。在V$SESSION视图中,往往可以看到Hang住的会话,一直处于“ACTIVE”状态。对于这样的会话,用“alter system kill session ‘sid,serial#’”命令也不能完全断开会话,会话只能被标记为“killed”,会话会继续消耗大量的CPU。进程Spins由于是在做循环,CPU的消耗非常大,从OS上明显可以看到这样的进程,通常会消耗整个CPU的资源。

而对于这样的Hang住的会话,处理起来相对比较复杂,并且为了从根本上解决问题,需要超过DBA日常维护所需要的技能。

从故障范围来看,无响应故障可以分为以下几种情况:

1 单个或部分会话(进程)Hang住

这种情况属于小范围的故障,业务影响相对较小,一般来说只会影响业务系统的个别模块。在一个多应用系统的数据库上面,如果Hang住的会话比较多,则影响的可能是其中的一个应用系统。这里有一个例外,如果Hang住的进程是系统后台进程,如pmon、smon等,则影响的范围就非常大了,最终甚至会影响整个数据库及所有应用系统。还有值得注意的是,即使是少部分会话Hang住,也要及时处理,否则极有可能会扩散到整个系统。

2 单个数据库实例Hang住

这种情况造成的影响非常大。在这个实例上的所有应用系统均受到严重影响,并且在找到根源并最终解决问题之前,数据库实例往往须要重启。

3 OPS或RAC中的多个实例或所有实例都Hang住

在这种情况下,即使是OPS或RAC,都已经没办法提供高可用特性了。使用这个数据库的所有应用系统将不能继续提供服务,这种情况往往须要重启。

无响应故障成因分析

Oracle数据库无响应,一般主要由以下几种原因引起:

1 数据库主机负载过高,严重超过主机承受能力

比如应用设计不当,数据库性能低下,活动会话数的大量增加,导致数据库主机的负载迅速增加,数据库不能正常 *** 作,并最终Hang住;主机物理内存严重不足,引起大量的换页,特别是在SGA中的内存被大量换出到虚拟内存时,数据库实例往往就会Hang住。

2 日常维护不当、不正确的 *** 作引起数据库Hang住

比如归档日志的存储空间满,导致数据库不能归档,引起数据库Hang住;在一个大并发的繁忙的系

统上,对DML *** 作比较多的大表进行move、增加外键约束等 *** 作也可能使系统在短时间内负载大幅升高,并引起数据库系统Hang住;不正确的资源计划(Resource Plan)配置,使进程得不到足够的CPU等。

3 Oracle数据库的Bug

几乎每个版本都存在着会导致数据库系统Hang住的Bug,这些Bug会在一些特定的条件下触发,特别是在RAC数据库中,引起数据库Hang住的Bug比较多。

4 其他方面的一些原因

比如在RAC数据库中,如果一个节点退出或加入到RAC的过程中,当进行Resource Reconfiguration时,会使系统冻结一段时间,也有可能使系统Hang住。

以上所描述的几种常见的会导致Oracle数据库实例Hang住的原因中,大部分的情况是可以避免的,只要维护得当,一般不会出现这种故障。对于Oracle数据库Bug所导致的数据库无响应故障,由于是在特定的情况下才会触发,所以如果能够尽量对数据库打上最新版本的补丁,并且熟悉当前版本中会导致系统Hang住的Bug以及触发条件,就能够最大限度地避免这种故障的发生,提高系统的可用性。

那么,在数据库Hang住的情况下,如何去分析并发现导致问题的根源一方面,由于系统Hang住会导致业务系统不可用,为了能够尽快地恢复业务,须快速地判断问题所在,然后Kill掉引起故障的会话和进程,或者数据库实例不得不重启以迅速恢复业务;但另一方面,如果只是重启数据库或Kill会话和进程来解决问题,在很多情况下是治标不治本的办法,在以后故障随时可能会出现。如何在二者之间进行抉择呢对于数据库Hang故障的处理,首先是尽可能地收集到系统Hang住时的状态数据,然后尽快地恢复业务,恢复业务后分析收集到的数据,找到数据库系统Hang住的真正原因,然后再进行相应的处理。下一节将详细描述数据库系统Hang住后的处理流程。

无响应故障处理流程

对于Oracle无响应故障的处理,我们可以按下图所示的流程进行。

值得注意的是,上图并不是一个完整的Oracle数据库故障处理流程图,只是处理Oralce数据库无响应这一类特定的故障的流程,只列出了针对这一特定类型故障处理时的关键处理点。不过既然是故障,所以这类故障的处理流程与其他故障的处理流程,有着非常相似的地方。

下面是整个流程的详细说明:

1 在出现数据库无响应故障后,首先确认系统的影响范围,如上节所描述的',是部分业务系统或模块还是所有的业务系统都受影响,是不是整个实例或多个实例都无响应。同时应询问系统维护和开发人员,受影响的系统在出现故障前是否有过变动,包括主机硬件、 *** 作系统、网络、数据库以及应用等。有时一个细小的变动就可能导致出现数据库Hang住这样严重的故障。曾经遇到一个库,应用只是修改了一个SELECT语句就导致了数据库Hang住。

2 为了避免由于网络、数据库监听或客户端因素影响分析,建议都登录到主机上进行 *** 作。

3 如果主机不能登录(为了避免干扰流程主线,这里不讨论如网络问题这样也会导致不能连接的故障),尝试关闭出现问题的业务系统,甚至是所有的业务系统。如果关闭了所有的业务系统之后,仍然不能连接,则只有考虑重新启动数据库主机。在数据库主机重新启动后,使用 *** 作系统工具或OSW等长期监控 *** 作系统的资源使用,同时监控Oracle数据库的性能和等待等。

4 登录上主机后,先用top、topas等命令简单观察一下系统。看看系统的CPU使用、物理内存和虚拟内存的使用、IO使用等情况。

5 使用SQLPLUS连接数据库,如果不能连接,则只能从 *** 作系统上观察系统中是否有异常的现象,比如占用CPU过高的进程。使用gdb、dbx等debugger工具对数据库进行system state dump;使用strace、truss等工具检查异常进程的系统调用;使用pstack、procstack等工具察看异常进程的call stack等。

6 使用SQLPLUS连接上数据库后,进行hanganalyze、system state dump等 *** 作;或检查等待事件、异常会话等正在执行的SQL等待。

7 找到故障产生的原因,如果暂时找不到原因,尽量收集数据。

8确良如果应用急须恢复,可通过Kill会话、重启数据库实例等方式,先恢复应用。

9 根据最终诊断结果,对数据库升级打补丁,或者修改应用等方式从根本上解决问题。

怎样避免数据库出现无响应故障

作为Oracle数据库DBA,除了处理故障之外,更重要的是如何预防故障的发生。根据前面对数据库无响应故障的成因分析,在日常的维护工作中,须做到以下几点:

1 进行正确的维护 *** 作

很多的数据库无响应故障都是由于不正确的维护 *** 作引起的。应避免在业务高峰期做大的维护 *** 作,比如像move、加主外键约束等会长时间锁表的 *** 作。如果的确需要,尽量使用正确的 *** 作方法。比如用ONLINE方式重建索引;建主键、唯一键约束时先建索引,然后在建约束时指定新建的索引,等等。也就是保证系统的并发性、可伸缩性,避免系统串行 *** 作的出现。

2 优化应用设计,优化数据库性能

为避免性能问题导致在业务高峰期数据库不能及时有效处理来自业务的请求,甚至于完全Hang住。对于数据库中存在串行访问的部分进行优化,比如latch、enqueue,还包括不合理的sequence设计等。特别是在RAC数据库中,严重串行访问等待往往更容易引起严重的性能问题。优化应用设计,使数据库具有更好的可伸缩性和并行处理能力,能够有效地避免性能问题引起的数据库Hang住。

3 利用监控系统随时监控系统负载

遇到系统负载过高,内存不足,OS中虚拟内存换页很频繁等情况时,及时采取措施;监控Oracle数据库的核心进程,如pmon、smon等,看是否有异常,如过高的CPU消耗。出现异常应立即处理;监控归档空间和日志切换;监控数据库中的等待事件,比如是否有大量的enqueue、log file switch (archiving needed)、resmgr:become active等待事件等。

4 为数据库打上补丁

很多的无响应故障是由于Oracle的Bug引起的,数据库DBA应关注当前版本中有哪些Bug会导致数据库Hang住,尽量为数据库打上解决这些Bug的补丁。

;

路径设置好没。

无法与数据源建立连接。

这是一个一般性错误,在报表服务器无法打开到为报表提供数据的外部数据源的连接时发生。此错误和另外一条错误消息一起出现,后者指明了错误的根本原因。与一起出现的可能还有以下错误。

用户“UserName”登录失败该用户无权访问该数据源。如果使用的是SQLServer数据库,请验证该用户是否具有有效的数据库用户登录名。有关如何创建数据库用户或SQLServer登录名的详细信息,请参阅如何创建数据库用户和如何创建SQLServer登录名。

用户“NTAUTHORITY\ANONYMOUSLOGON”登录失败跨多个计算机连接传递凭据时会发生此错误。如果使用Windows身份验证,并且未启用Kerberos5协议,则在跨多个计算机连接传递凭据时将会出现此错误。若要解除此错误,请考虑使用已存储凭据或提示的凭据。有关如何处理此问题的详细信息,请参阅指定凭据和连接信息。

建立与服务器的连接时出错。当连接到SQLServer2005时,此故障可能是因为SQLServer在默认设置下不允许进行远程连接而引发的。(提供程序:命名管道提供程序,错误:40-无法打开与SQLServer的连接)此错误由承载报表服务器数据库的数据库引擎实例返回。多数情况下,此错误是由于SQLServer服务停止而发生的。或者,如果您使用具有高级服务的SQLServerExpressEdition或命名实例,则如果报表服务器URL或报表服务器数据库的连接字符串不正确,就会发生此错误。若要解决这些问题,请执行以下 *** 作:

验证SQLServer(MSSQLSERVER)是否已启动。在承载数据库引擎实例的计算机上,依次单击“开始”、“管理工具”、“服务”,并滚动到SQLServer(MSSQLSERVER)。如果它未启动,则右键单击该服务,选择“属性”,在“启动类型”中选择“自动”,单击“应用”、“启动”,然后单击“确定”。

验证报表服务器URL和报表服务器数据库连接字符串是否正确。如果ReportingServices或数据库引擎是作为命名实例安装的,则在安装过程中创建的默认连接字符串将包含实例名称。例如,如果在名为DEVSRV01的服务器上安装了具有高级服务的SQLServerExpressEdition的默认实例,则报表管理器URL为DEVSRV01\Reports$SQLEXPRESS。此外,连接字符串中的数据库服务器名称将类似于DEVSRV01\SQLEXPRESS。有关SQLServerExpress的URL和数据源连接字符串的详细信息,请参阅具有高级服务的SQLServer2005ExpressEdition中的ReportingServices。若要验证报表服务器数据库的连接字符串,请启动ReportingServices配置工具并查看“数据库安装”页。

无法建立连接。请确保该服务器正在运行。此错误由ADOMDNET提供程序返回。有多种原因可导致发生此错误。如果您将该服务器指定为localhost,请尝试指定服务器名称。如果无法为新连接分配内存,也会发生此错误。有关详细信息,请参阅知识库文章912017。

如果此错误还包含“无法识别这种主机”,则说明AnalysisServices服务器不可用或拒绝连接。如果AnalysisServices服务器是作为命名实例安装在远程计算机上的,您最好运行SQLServerBrowser服务来获取该实例使用的端口号。

(ReportServicesSOAP代理源)如果在报表模型生成过程中出现此错误,并且其他信息部分还包含“SQLServer不存在或访问被拒绝”,则可能是出现了下列情况:

数据源的连接字符串包含localhost。

已对SQLServer服务禁用TCP/IP。

若要解决此错误,您可以将连接字符串修改为使用服务器名称,也可针对服务启用TCP/IP。请执行下列步骤启用TCP/IP:

启动SQLServer配置管理器。

展开SQLServer2005网络配置。

选择“MSSQLSERVER协议”。

右键单击TCP/IP,并选择“启用”。

选择“SQLServer2005服务”。

右键单击SQLServer(MSSQLSERVER),并选择“重新启动”。

以上就是关于数据库函数如何返回一个值全部的内容,包括:数据库函数如何返回一个值、Access数据库问题查询问题,求助。、各个端口都代表什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存