当前位置:文档之家› tuxedo与oracle连接

tuxedo与oracle连接

tuxedo与oracle连接
tuxedo与oracle连接

Tuxedo 9.0 for AIX与Oracle 10 XA连接

系统说明

TUXEDO版本:9.0 安装目录/opt/bea/tuxedo9.0

ORACLE版本:10.2.0.1 安装目录/u01/app/oracle

一、Tuxedo 9 for AIX的安装

1、创建一个用户为Tuxedo,用户组为bea

2、创建/opt/bea为tuxedo的安装目录,

$mkdir /opt/bea

$chown tuxedo.bea /opt/bea

$chmod 770 /opt/bea

#bootinfo -k

64

$ sh tuxedo9_aix53_64.bin -i console

Preparing to install...

WARNING: /tmp does not have enough disk space!

Attempting to use /home/tuxedo for install base and tmp dir.

Extracting the JRE from the installer archive...

Unpacking the JRE...

Extracting the installation resources from the installer archive...

Configuring the installer for this system's environment...

Launching installer...

Preparing CONSOLE Mode Installation...

======================================================== =======================

Choose Locale...

----------------

->1- English

CHOOSE LOCALE BY NUMBER: 1

======================================================== =======================

(created with InstallAnywhere by Zero G)

-------------------------------------------------------------------------------

======================================================== =======================

Introduction

------------

BEA End User Clickwrap 001205

Copyright (c) BEA Systems, Inc.

All Rights Reserved.

DO YOU ACCEPT THE TERMS OF THIS LICENSE AGREEMENT? (Y/N): y

======================================================== =======================

Choose Install Set

------------------

Please choose the Install Set to be installed by this installer.

->1- Full Install

2- Server Install

3- Full Client Install

4- Jolt Client Install

5- ATMI Client Install

6- CORBA Client Install

7- Customize...

ENTER THE NUMBER FOR THE INSTALL SET, OR PRESS TO ACCEPT THE DEFAULT : 1

======================================================== =======================

Choose BEA Home

---------------

1- Create new BEA Home

2- Use existing BEA Home

Enter a number: 2

1- /opt/bea

Existing BEA Home directory: 1

======================================================== =======================

Choose Product Directory

------------------------

1- Modify Current Selection (/opt/bea/tuxedo9.0)

2- Use Current Selection (/opt/bea/tuxedo9.0)

Enter a number: 2

======================================================== =======================

Pre-Installation Summary

------------------------

Please Review the Following Before Continuing:

Product Name:

Tuxedo 9.0

Install Folder:

/opt/bea/tuxedo9.0

Link Folder:

/home/tuxedo

Disk Space Information (for Installation Target):

Required: 386,803,702 bytes

Available: 2,625,392,640 bytes

PRESS TO CONTINUE:

======================================================== =======================

Ready To Install

----------------

InstallAnywhere is now ready to install Tuxedo 9.0 onto your system at the

following location:

/opt/bea/tuxedo9.0

PRESS TO INSTALL:

======================================================== =======================

Installing...

-------------

[==================|==================|================== |==================]

[------------------|------------------|------------------|------------------]

======================================================== =======================

Configure tlisten Service

-------------------------

Password: tuxedo

Verify Password: tuxedo

Password Accepted! Press "Enter" to continue.

======================================================== =======================

SSL Installation Choice.

------------------------

Would you like to install SSL Support?

->1- Yes

2- No

ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS TO ACCEPT THE DEFAULT: : 2

======================================================== =======================

License Installation Choice

---------------------------

Would you like to install your license now?

->1- Yes

2- No

ENTER THE NUMBER FOR YOUR CHOICE, OR PRESS TO ACCEPT THE DEFAULT: : 2

======================================================== =======================

Installation Complete

---------------------

Congratulations. Tuxedo 9.0 has been successfully installed to:

/opt/bea/tuxedo9.0

PRESS TO EXIT THE INSTALLER:

安装完毕,需要把license文件重命名为lic.txt copy到$TUXDIR/udataobj/

二、TUxedo 9 连接Oracle 10g配置

前提是在Tuxedo 9 上安装Oracle 10g client还有安装C编译器(不一定要用Visual Age C/C++ 7,这里我用的是pro c),设置Tuxedo用户能够通过sqlplus连接oracle数据库

1、ORACLE的的配置

sqlplus system@testcrm

SQL> @$ORACLE_HOME\rdbms\admin\xaview.sql

SQL>grant select on v$xatrans$ to public with grant option;

SQL>grant select on v$pending_xatrans$ to public with grant option;

SQL>grant select EMP to Scott

SQL>GRANT SELECT ON DBA_PENDING_TRANSACTIONS TO Scott;

注:scott默认为lock,需要用alter user scott account unlock,解锁。

3,选择好License文件的位置,安装到次结束。

下面的配置直到运行一个简单的Simpapp很重要!

1,我们准备测试/home/tuxedo/tuxedo10/samples/atmi/simpapp下面的例子,所以我们把这里文件拷贝到,例如: /home/tuxedo/tuxedo10/SimpApp

2、设置Tuxedo用户的.profile文件

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

unset USERNAME

export TUXDIR=/home/tuxedo/tuxedo10

export APPDIR=/home/tuxedo/simpapp

export TUXCONFIG=/home/tuxedo/simpapp/tuxconfig

export WEBJAVADIR=$TUXDIR/udataobj/webgui/java

export LIBPATH=.:/usr/lib:/lib:$TUXDIR/lib

export SHLIB_PATH=$LIBPATH

export LD_LIBRARY_PATH=$LIBPATH

export PATH=$APPDIR:$TUXDIR/bin:/bin:$PATH

export ORACLE_BASE=/oracle10g/product

export ORACLE_HOME=/oracle10g/orahome

export ORACLE_SID=orcl

export NLS_LANG=AMERICAN_AMERICA.ZHS16CGB231280

export PATH=$PATH:$ORACLE_HOME/bin:$HOME/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/usr/lib:/usr/local/lib

3、修改$TUXDIR\udataobj目录下的RM文件

把以Oracle_XA:xaosw:开头的一行用#注释掉,并加入一行:

Oracle_XA:xaosw:-L${ORACLE_HOME}/lib ${ORACLE_HOME}/precomp/lib/cobsqlintf.o -lclntsh

注意空格

3、在TUXEDO用户下创建TMS文件:TMS_ORA10g,TUXEDO通过TMS_ORA10g与ORACLE数据库采用XA协议进行通讯

buildtms -o $TUXDIR/TMS_ORA10g -r Oracle_XA

4、配置UBBCONFIG

#ghts Reserved.

#ident "@(#) samples/atmi/simpapp/ubbsimple $Revision: 1.5 $"

#Skeleton UBBCONFIG file for the TUXEDO Simple Application.

#Replace the items with the appropriate values.

*RESOURCES

IPCKEY 123456

DOMAINID simpapp

MASTER simple

MAXACCESSERS 100

MAXSERVERS 50

MAXSERVICES 100

MODEL SHM

LDBAL N

*MACHINES

"Server" LMID=simple

APPDIR="/home/tuxedo/simpapp"

TUXCONFIG="/home/tuxedo/simpapp/tuxconfig "

TUXDIR="/home/tuxedo/tuxedo10"

TLOGDEVICE = "/home/tuxedo/simpapp/TLOG"

TLOGNAME=TLOG

TLOGSIZE=10

*GROUPS

GROUP1 LMID=simple GRPNO=1

OPENINFO="ORACLE_XA:Oracle_XA+Acc=P/system/dooneroot+SqlNet=ORCL+SesTm=10 0+LogDir=.+MaxCur=5"

TMSNAME="TMS_ORA10g" TMSCOUNT=2

*SERVERS

DEFAULT:

CLOPT="-A"

test SRVGRP=GROUP1 SRVID=1

*SERVICES

注意OPENINFO中P/scott/scott+sqlNet=ORCL需要根据实际情况自定义,还有机器名“server”,必须与uname -n显示的机器名一致

使用

$tmloadcf -y ubbsimple 生产TUXCONFIG文件

5、用TMADMIN创建TLOG文件,TUXEDO用一个文件TLOG记录对数据库操作的日志。用于协调分布式数据库的提交与回滚。

$tmadmin

>crdl -b 500 -z /home/tuxedo/simpapp/TLOG

>crlog -m simple

>q

6、重命名下列文件,因为下列文件名与ORACLE带的文件名有冲突

TUXEDO安装路径$TUXDIR/include目录下的下面文件

把sqlca.h 改名为 sqlca.h.bak

把sqlcode.h 改名为sqlcode.h.bak

把sqlda.h 改名为 sqlda.h.bak

五、编译服务端程序

1.运行cmd,到/home/tuxedo/simpapp目录下

2.用buildserver编译成可执行文件,注意-r 后带的Oracle_XA 与RM文件中的一致。

$ buildserver –o simpserv –f simpserv.c –s TOUPPER

3.编译客户端程序

$ buildclient -o simpcl -f simpcl.c

8、用tmboot –y 启动TUXEDO

应能看到所有的SERVER都启动成功。这时,我们的服务端程序会自动与ORACLE数据库建立连接,并一直保持这个连接,

直到TUXEDO系统或ORACLE数据库关闭。我们的程序中看不到与数据库连接的语句,因为现在与数据库的连接由TUXEDO自动管理。

如果TMS_ORA10g启动失败会在当前目录生成一个*.trc文件,记录失败的原因,同时TUXEDO的ULOG文件中也会有一些错误信息。可参考这些错误信息进行错误分析。

$ tmboot -y

Booting all admin and server processes in /opt/bea/tuxedo9.0/test/tuxconfig

INFO: BEA Tuxedo, Version 9.0, 64-bit, Patch Level 002

INFO: Serial #: 454493271161-2143645176821, Expiration NONE, Maxusers 5

INFO: Licensed to: Shenzhen Edensoft Information

Booting admin processes ...

exec BBL -A :

process id=409822 ... Started.

Booting server processes ...

exec TMS_ORA10g -A :

process id=282686 ... Started.

exec TMS_ORA10g -A :

process id=401624 ... Started.

exec test -A :

process id=397522 ... Started.

4 processes started.

9、运行客户端程序

运行后应能看到服务端返回的结果。

ORACLE表连接方式的分析与优化-tony

数据仓库环境ORACLE 表连接方式的分析与优化a 摘要:针对在数据仓库环境下,由于超大数据量的处理而产生的效率问题,本文深入分析了ORACLE表的几种连接方式、特点、适用范围,以及对于如何使用和优化做了详细的探讨。 关键字:数据仓库 ORACLE 表连接 一引言 数据仓库技术是目前已知的比较成熟和被广泛采用的解决方案,用于整和电信运营企业内部所有分散的原始业务数据,并通过便捷有效的数据访问手段,可以支持企业内部不同部门,不同需求,不同层次的用户随时获得自己所需的信息。数据仓库系统需要能够及时地追踪和分析大量的历史数据,并能够及时做出分析和预测,因此实时性是一个非常重要的指标。ORACLE由于可靠性、高性能等方面的特点,在电信行业大部分的数据仓库系统中担当了后台数据库的角色。由于电信行业的特点,处理的数据量十分庞大,处理的时间长。尤其是对于大表之间的关联操作,有的大表的记录数达到数亿条,处理时间更是漫长,这成为影响数据库运行效率的主要因素。因此,对于数据库的性能优化相当重要。性能优化是个很大的课题,需要综合考虑,从服务器、磁盘、网络、ORACLE实例、ORACLE SQL等多方面着手。本文着重分析ORACLE SQL优化中对于系统性能影响极大的表连接方式、特点、适用范围,并对如何使用和优化做了详细的探讨。· 二表的连接 表的连接是指在一个SQL语句中通过表与表之间的关联,从一个或多个表检索出相关的数据。连接是通过SQL语句中FROM从句的多个表名,以及WHERE从句里定义的表之间的连接条件来实现的。如果一个SQL语句的关联表超过两个,那么连接的顺序如何呢?ORACLE首先连接其中的两个表,产生一个结果集;然后将产生的结果集与下一个表再进行关联;继续这个过程,直到所有的表都连接完成;最后产生所需的数据。下面都以两个表的连接为例create table user_info(user_name char(10),user_id char(10));

ORACLE数据库与实例的关系

ORACLE数据库与实例的关系 1 数据库名 1.1 数据库名的概念 数据库名(db_name)就是一个数据库的标识,就像人的身份证号一样。如果一台机 器上装了多个数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。 数据库名在$Oracle_HOME/admin/db_name/pfile/init.ora(或 $ORACLE_BASE/admin/db_name/pfile/init.ora或$ORACLE_HOME/dbs/SPFILE<实 例名>.ORA)文件中 ########################################### # Database Identification ########################################### db_domain="" db_name=orcl 在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是 以二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。 1.2 数据库名的作用 数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的(注意这些时候不能使用sid,还有alter database时都是使用数据库名)。 有很多Oracle安装文件目录是与数据库名相关的,如: winnt: F:\oracle\product\10.2.0\oradata\DB_NAME\...

ORACLE SQLPLUS 常用命令及解释

Oracle SQLPlus常用命令及解释 1.@ 执行位于指定脚本中的SQLPlus语句。可以从本地文件系统或Web服务器中调用脚本。可以为脚本中的变量传递值。在iSQL*Plus中只能从Web服务器中调用脚本。 2.@@ 执行位于指定脚本中的SQL*Plus语句。这个命令和@(“at”符号)命令功能差不多。在执行嵌套的命令文件时它很有用,因为它会在与调用它的命令文件相同的路径或url中查找指定的命令文件。在iSQL*Plus中只支持url形式。 3./ 执行保存在SQL缓冲区中的最近执行的SQL命令或PL/SQL块。在SQL*Plus命令行中,可在命令提示符或行号提示符使用斜线(/)。也可在iSQL*Plus的输入区中使用斜线(/)。斜线不会列出要执行的命令。 4.ACCEPT 可以修改既有变量,也可定义一个新变量并等待用户输入初始值,读取一行输入并保存到给出的用户变量中。ACCEPT在iSQL*Plus中不可用。 5.APPEND 把指定文本添加到SQL缓冲区中当前行的后面。如果text的最前面包含一个空格可在APPEND和text间输入两个空格。如果text的最后是一个分号,可在命令结尾输入两个分号(SQL*Plus会把单个的分号解释为一个命令结束符)。APPEND 在iSQL*Plus中不可用。 6.ARCHIVE LOG 查看和管理归档信息。启动或停止自动归档联机重做日志,手工(显示地)归档指定的重做日志,或者显示重做日志文件的信息。 7.ATTRIBUTE 为对象类型列的给定属性指定其显示特性,或者列出单个属性或所有属性的当前显示特性。 8.BREAK 分开重复列。指定报表中格式发生更改的位置和要执行的格式化动作(例如,在列值每次发生变化时跳过一行)。只输入BREAK而不包含任何子句可列出当前的BREAK定义。 9.BTITLE 在每个报表页的底部放置一个标题并对其格式化,或者列出当前BTITLE定义。

Oracle -Update 多表关联

一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新。而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据。我们先来讨论根据其他表数据更新你要更新的表 一、MS SQL Server 多表关联更新 sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来。虽然只能对一个表进行更新,但是通过将要更新的表与其它的数据源连接起来,就可以在update的表达式中引用要更新的表以外的其它数据。 一般形式: update A SET 字段1=B表字段表达式, 字段2=B表字段表达式 from B WHERE 逻辑表达式 例如: UPDATE dbo.Table2 SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB FROM dbo.Table2 INNER JOIN dbo.Table1 ON (dbo.Table2.ColA = dbo.Table1.ColA); 实际更新的操作是在要更新的表上进行的,而不是在from子句所形成的新的结果集上进行的 二、Oracle 多表关联更新 Oracle没有update from语法,可以通过两种实现方式: 1、利用子查询: update A SET 字段1=(select 字段表达 式 from B WHERE ...), 字段2=(select 字段表达式 from B WHERE ...) WHERE 逻辑表达式 UPDATE多个字段两种写法:

写法一: UPDATE table_1 a SET col_x1 = (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m), col_x2= (SELECT b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m) WHERE EXISTS(SELECT * FROM table_2 b WHERE b.col_n = a.col_m) 或 UPDATE table_1 a SET col_x1 = (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m), col_x2= (SELECT b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m) WHERE a.col_m=(SELECT b.col_n FROM table_2 b WHERE b.col_n = a.col_m) 写法二: UPDATE table_1 a SET(col_x1, col_x2)= (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m) WHERE EXISTS(SELECT * FROM table_2 b WHERE b.col_n = a.col_m); 或 UPDATE table_1 a SET(col_x1, col_x2)= (SELECT b.col_y1, b.col_y2 FROM table_2 b WHERE b.col_n = a.col_m) WHERE a.col_m=(SELECT b.col_n FROM table_2 b WHERE b.col_n = a.col_m)注意: 1. 对于子查询的值只能是一个唯一值,不能是多值。 2. 子查询在绝大多数情况下,最后面的where EXISTS子句是重要的,否则将得到错误的结果。且where EXISTS子句可用另一方法代替,如上。最后的子句是对a表被更新记录的限制,如无此句,对于a表中某记录,如在b表中关

oracle绑定变量及举例

1.什么是绑定变量,及举例 什么是绑定变量,问什么要进行绑定变量? Sql语句的执行要经过解析、执行、提取等几个阶段,其中解析最消耗资源,解析的过程中要进行语法、语义和权限的检查,如果这些检查都通过了,则进行执行,执行完成之后将sql语句的执行计划存储在共享池中,如果下一次有相同的sql语句要执行,则不需要解析,直接按照已经存在的执行计划进行执行,就可以节省资源 当多个sql语句执行的时候大多数情况下是条件相同,只是条件里面的值不同。 例如:A 用户:select * from t where ID=1 B 用户:select * from t where ID=2 绑定变量就是将条件谓词中不同的值保存在一个中间变量中,Oracle对用户每次发起的sql语句做hash运算时,都产生相同的hash 值, 使用相同的执行计划,作为一个sql语句来执行。 Select * from t where ID=:X 下面是绑定变量和非绑定变量的性能比较 1)绑定变量执行 alter session set sql_trace=true; begin for x in 1..10000 loop execute immediate 'select * from t where object_name=:x' using x; end loop; end; alter session set sql_trace=false;

trace文件中的执行计划和统计信息 SQL ID: gdp68zfsdqrbc Plan Hash: 1601196873 select * from t where object_name=:x call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 0 0 0 Execute 10000 0.15 0.17 0 0 0 0 Fetch 0 0.00 0.00 0 0 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 10001 0.15 0.17 0 0 0 0 Misses in library cache during parse: 0 Optimizer mode: ALL_ROWS Parsing user id: 5 (SYSTEM) (recursive depth: 1) Rows Row Source Operation ------- --------------------------------------------------- 0 TABLE ACCESS FULL T (cr=0 pr=0 pw=0 time=0 us cost=301 size=196 card=2)

Oracle+表连接方式(内连接-外连接-自连接)+详解

Oracle 表之间的连接分为三种: 1. 内连接(自然连接) 2. 外连接 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 3. 自连接(同一张表内的连接) SQL的标准语法: select table1.column,table2.column from table1 [inner | left | right | full ] join table2 on table1.column1 = table2.column2; inner join 表示内连接; left join表示左外连接; right join表示右外连接; full join表示完全外连接; on子句用于指定连接条件。 注意: 如果使用from子句指定内、外连接,则必须要使用on子句指定连接条件; 如果使用(+)操作符指定外连接,则必须使用where子句指定连接条件。 一.内连接(Inner Join/Join) 1.1 Inner Join Inner join逻辑运算符返回满足第一个(顶端)输入与第二个(底端)输入联接的每一行。这个和用select查询多表是一样的效果,所以内连接用的很少。 还有一点要说明的就是Join 默认就是inner join。所以我们在写内连接的时候可以省略inner 这个关键字。1.2 下面举例来说明内连接: 1.2.1 先创建2张测试表并插入数据: SQL> select * from dave; ID NAME ---------- ---------- 1 dave 2 bl 1 bl 2 dave SQL> select * from bl; ID NAME ---------- ---------- 1 dave 2 bl 1.2.3 用内链接进行查询: SQL> Select a.id,https://www.doczj.com/doc/3214807196.html,,https://www.doczj.com/doc/3214807196.html, from dave a inner join bl b on a.id=b.id; -- 标准写法 ID NAME NAME ---------- ---------- ---------- 1 dave dave 2 bl bl 1 bl dave 2 dave bl

windows环境下配置连接oracle数据库的方法及步骤

配置oracle连接 怎么在windows环境下配置连接oracle数据库? 步骤如下: 一、安装PL/SQL: 1、获取PL/SQL安装包;(PL/SQL是连接oracle的客户端) 2、安装PL/SQL; (1)双击PL/SQL安装程序,安装PL/SQL; (2)选择“I Agree”进行安装;

(3)选择安装路径(一般选择默认路径);点击【Next】按钮; (4)默认选择,点击【Next】按钮; (5)默认选择,点击【Finish】按钮,开始安装;

(6)安装进度显示 (7)窗口提示“PL/SQL Developer installed successfully”,安装完成,点击【Close】按钮。

二、配置连接 1、获取oci.dll文件(该文件是用来连接数据库的文件),将该文件及其所在的文件夹放置在一个不含有中文的路径下(如:F:\instantclient); 2、双击打开PL/SQL客户端,点击【Cancel】按钮; 3、跳转到PL/SQL页面,如下图所示。选择【Tool】—>Preferences; 4、按下图进行选择,在“Oracle Home(enpty is autodetect)”栏中选择oci.dll文件所在的目录;在“OCI library(enpty is autodetect)”栏中选择oci.dll文件

5、点击【OK】按钮即可完成 6、退出PL/SQL页面,重新登录。双击PL/SQL客户端,在Oracle Logon窗口中填写数据库的用户名、密码、数据库名和连接方式;点击【OK】按钮即可查询数据库。 完毕!谢谢!

Oracle数据库编程(笔试)

Oracle数据库编程 测试题(笔试)成都朗沃信息技术有限公司

本试题为闭卷笔试考试时间:120分钟答题说明:不定项选择题有一个、两个或两个以上正确选项,漏选、多选、错选均不得分 一、不定项选择题(共40题,每小题2.5分,总分100分) 1.数据库发展方向有:()。 A. SQL开发人员 B.数据库管理员 C. 网络工程师 D. 售前工程师 2.组成PL/SQL程序的最基本的单元是()。 A. 存储过程 B.函数 C. 触发器 D. 匿名块 3.下面哪些是单词是Oracle的关键字()。 A. V ar B. Declare C. End D. User 4.下面关于PL/SQL说法正确的是()。 A. PL/SQL必须编译才能执行 B. SQL不需要编译就能执行 C. 相同的SQL语句只会编译一次 D. PL/SQL中的SQL部分是交给SQL引擎处理的 5.关于Oracle体系架构说法正确的是()。 A. Oracle分为实例和进程两部分。 B. Oracle分为实例和数据库两部分。 C. SGA大小会直接影响到SQL执行的速度。 D. PGA大小会直接影响到SQL执行的速度。 E.以上答案都不正确。 6.下面哪些缓冲区是与性能直接相关的()。 A. 日志缓冲区 B.程序全局区 C. 数据缓冲区 D. SQL共享池 7.实例与数据库的区别是()。 A. 实例就是管理数据库的各种进程。 B.一个实例只能管理一个数据库。 C. 一个数据库可能由多个实例同时管理。 D. 一个数据库只有一个实例管理,叫单实例数据库。一个数据库同时由多个实例管理,叫 多实例数据库。 8.Oracle没有下面哪种数据库类型()。 A. Date B. Smalldatetime C. Boolean D. V archar 9.关于视图,说法正确的有() A. 视图本质就是查询 B.可以通过视图增删改查数据 2

oracle两表查询练习附答案

Sutdent表的定义 字段名字段描述数据类型主键外键非空唯一自增Id学号INT(10)是否是是是Name姓名VARCHAR(20)否否是否否Sex性别VARCHAR(4)否否否否否Birth出生年份YEAR否否否否否Department院系VARCHAR(20)否否是否否Address家庭住址VARCHAR(50)否否否否否 Score表的定义 字段名字段描述数据类型主键外键非空唯一自增Id编号INT(10)是否是是是Stu_id学号INT(10)否否是否否C_name课程名VARCHAR(20)否否否否否Grade分数INT(10)否否否否否 1.创建student和score表 create table student( id number(10)not null primary key, name varchar2(20)not null, sex varchar2(4), birth number, department varchar2(20)not null, address varchar2(50) ); create table score( id number(10)not null primary key, stu_id number(10)not null, c_name varchar2(20), grade number(10) ); 2.为student表和score表增加记录 向student表插入记录的INSERT语句如下: Insert into student values(100101,'张三','男',23,'计算机系','北京市朝阳区'); Insert into student values(100102,'李四','男',21,'英语系','北京市海淀区'); Insert into student values(100103,'王五','女',19,'建工系','北京市昌平区'); Insert into student values(100104,'孙六','女',21,'化学系','北京市苏州桥'); Insert into student values(100105,'齐七','男',23,'英语系','北京市海淀区'); 向score表插入记录的INSERT语句如下: Insert into score values(001,100101,'计算机基础',89); Insert into score values(002,100101,'英语',93); Insert into score values(003,100101,'数学',87);

oracleDBA笔试经典试题

普通类 一、选择题(单选题) 1、在下列哪一种情况下用户不能被删除( )。 A. 不拥有任何模式对象的用户 B. 当前正处于连接状态的用户 C. 拥有只读表的用户 D. 所有的用户都可以任何时刻删除 2、分析以下的SQL 命令: SELECT manufacturer_id FROM inventory WHERE manufacturer_id LIKE '%N\%P\%O%' ESCAPE '\'; 命令执行的返回结果是() A、所有包含'NPO'的纪录 B 、所有包含'N\P\O'的纪录 C 、所有包含'N%P%O'的纪录 D 、所有包含'%N\P\O%'的纪录 3、游标的哪一种属性指示fetch语句是否从活动集中返回行,如未能返回行,则此属性的值为true ? A、%FOUND B、%NOTFOUND C、%ROWCOUNT D、%ISOPEN 4、下列哪个集合操作符返回两个查询所选择的所有不同的行。 A、Union B、Union all C、Union only D、Intersect 5、如何删除sales表中产品类型为toys的profits列的列值? A、UPDATE sales SET profits = NULL WHERE product_type = 'TOYS' B、DELETE profits FROM sales WHERE product_type = 'TOYS' C、DELETE FROM sales WHERE product_type = 'TOYS' D、DELETE FROM sales 6、参数maxtrans指定每个( D )上允许的最大并发的事务数。 A、table B、segment C、extent D. block

配置Oracle数据库连接串

配置Oracle数据库连接串 1、点击:开始—>程序—>Oracle - OraHome81—>Network Administration—>Net8 Configuration Assistant 启动 Net8 Configuration Assistant如下图: (图ORCL_01) 2、选择本地网络服务名配置,点击下一步。 (图ORCL_02) 3、选择添加,点击下一步

(图ORCL_03) 4、选择Oracle8i数据库或服务,点击下一步 (图ORCL_04) 5、在上图中输入全局数据库名,(勿必与安装ORACLE服务器时输入的全局数据库名一致。如:ORCL)点击下一步。 (图ORCL_05)

6、选择TCP协议,点击下一步。 (图ORCL_06) 7、填入实际数据库服务器的主机名(请使用IP地址),如主机名为:192.168.0.1, 选择请使用标准端口号1521, 点击下一步。 (图ORCL_07) 8、选择:是,进行测试,点击下一步。

(图ORCL_08) 9、在上图中如果提示测试不成功,请点击后退按钮,检查在图ORCL_04中输入的全书数据库名是否正确,检查图ORCL_05中选择的是否是TCP协议,检查图ORCL_06中输入的主机名(IP地址)是否正确。 如果上图中提示测试成功,则点击下一步。(请确保测试成功) (图ORCL_09) 10、在上图中输入网络服务名为:Ecom1.3 (请确保输入为Ecom1.3) 点击下一步。

(图ORCL_10)11、在上图中选择否,点击下一步。 (图ORCL_11)12、点击下一步。

SQL、Oracle多表连接查询(内,外,交叉连接)

多表连接查询(内,外,交叉连接)连接查询实际上是通过各个表之间共同列的关联性来查询数据的,它是关系数据库查询最主要的特征. select 表1.字段名1,表2.字段名2,... from 表1,表2 where 连接条件 SQL-92标准所定义的FROM子句的连接语法格式为: FROM 表名join_type表名 [ON (连接条件)] 连接操作中的ON (连接条件) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。 连接查询分类: 1.自连接查询,对同一个表进行连接操作(可以理解为两个不同表的内连接,有时可与嵌套查询等价) 2.内连接查询,<又分为:自然连接、等值连接、不等值连接三种> 3.外连接查询,<又分为:左外连接、右外连接、全外连接三种> 4.交叉连接查询,也作无条件查询。 5.联合查询 一.自连接查询: 一个表自己与自己建立连接称为自连接或自身连接。 进行自连接就如同两个分开的表一样,可以把一个表的某一行与同一表中的另一行连接起来。例: 查询选学“101”课程的成绩高于“9505201”号学生成绩的所有学生记录, 并按成绩从高到低排列。 select x.* from sclassx,sclass y where https://www.doczj.com/doc/3214807196.html,o=''101'' and x.degree>y.degree and y.sno=''9505201'' and https://www.doczj.com/doc/3214807196.html,o=''101'' order by x.degreedesc 二. 内连接查询 内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。 1、等值连接: 所谓等值连接,是指表之间通过“等于”关系连接起来,产生一个临时表, 然后对该临时表进行处理后生成最终结果。其查询结果中列出被连接表中的所有列,包括其中的重复列。 SELECT * FROM authors AS a INNER JOIN publishers AS p ON a.city=p.city

Oracle数据库的绑定变量特性及应用

Oracle 数据库的绑定变量特性及应用 在开发一个数据库系统前,有谁对Oracle 系统了解很多,尤其是它的 特性,好象很少吧;对初学者来讲,这更是不可能的事情;仅仅简单掌握了SQL的写法,就开始了数据库的开发,其结果只能是开发一个没有效率,也没有可扩展的系统; 因此,我写这个主题也是希望让大家更多地掌握Oracle数据库的特性,从而在架构一个新系统时,能考虑系统的可扩展,可伸缩性,也兼顾系统的效率和稳定; 使用绑定变量是Oracle数据库的特性之一;于是大家要问,为什么使用,怎样使用,它的使用限制条件是什么?我会按照这样的想法去解答大家的疑问,我也会以举例子的方式来回答这些问题; 1.为什么使用绑定变量? 这是解决Oracle应用程序可伸缩性的一个关键环节;而Oracle的共享池就决定了开发人员必须使用绑定变量;如果想要Oracle 运行减慢,甚至完全终止,那就可以不用绑定变量; 这里举例说明上述问题; 为了查询一个员工代号是123,你可以这样查询: select * from emp where empno=’123’; 你也可以这样查询: select * from emp where empno=:empno; 象我们往常一样,你查询员工’123’一次以后,有可能再也不用;接着你有可能查询员工’456’,然后查询’789’等等;如果查询使用象第一个查询语句,你每次查询都是一个新的查询(我们叫它硬编码的查询方法);因此,Oracle每次必须分析,解析,安全检查, 优化等等; 第二个查询语句提供了绑定变量:empno,它的值在查询执行时提供,查询经过一次编译后,查询方案存储在共享池中,可以用来检索和重用;在性能和伸缩性方面,这两者的差异是巨大的,甚至是惊人的;通俗点讲,就不是一个级别; 第一个查询使用的频率越高,所消耗的系统硬件资源越大,从而降低了用户的使用数量;它也会把优化好的其它查询语句从共享池中踢出;就象一个老鼠坏了一锅汤似的,系统的整体性能降低; 而执行绑定变量,提交相同对象的完全相同的查询的用户(这句话,大家听起来比较难理解,随后我会给出详细的解释),一次性使用就可重复使用,其效率不言耳语; 打个形象的比喻来说,第一个查询就象一次性使用的筷子,而第二个查询象是铁筷子,只要洗干净,张三李四都能用,合理有效地使用了资源; 下面举例子去详细论证上述的问题,不使用绑定变量为生病状况: 这是一个未使用的绑定变量(吃药前): set echo on;(把执行结果显示出来) alter system flush shared_pool;

Oracle数据库远程连接设置的四种方法

Oracle数据库远程连接设置的四种方法 Oracle数据库的远程连接可以通过多种方式来实现,本文我们主要介绍四种远程连接的方法和注意事项,并通过示例来说明,接下来我们就开始介绍。 第一种情况: 若oracle服务器装在本机上,那就不多说了,连接只是用户名和密码的问题了。不过要注意环境变 量%ORACLE_HOME%/network/admin/是否设置。 第二种情况: 本机未安装oracle服务器,也未安装oracle客户端。但是安装了pl sql development、toad sql development、sql navigator等管理数据库的工具。在虚拟机或者另一台电脑上安装了oracle服务器,也就是虚拟机或者另一台电脑此时作为服务器。 这种情况下,本人以pl sql development远程连接ORACLE服务端数据库为例: 1、在安装oracle服务器的机器上搜索下列文件: ?oci.dll ?ocijdbc10.dll ?ociw32.dll ?orannzsbb10.dll ?oraocci10.dll ?oraociei10.dll ?sqlnet.ora ?tnsnames.ora ?classes12.jar ?ojdbc14.jar 把这些找到的文件复制放到一个文件夹,如 oraclient,将此文件夹复制到客户端机器上。如放置路径为 D:oraclient。 2、配置tnsnames.ora,修改其中的数据库连接串。 1.oracledata = 2. 3.(DESCRIPTION = 4. 5.(ADDRESS_LIST = 6. 7.(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.58)(PORT = 1521)) 8. 9.(CONNECT_DATA =

Oracle 表三种连接方式使用介绍(sql优化)

1. NESTED LOOP 对于被连接的数据子集较小的情况,nested loop连接是个较好的选择。nested loop就是扫描一个表,每读到一条记录,就根据索引去另一个表里面查找,没有索引一般就不会是nested loops。一般在nested loop中,驱动表满足条件结果集不大,被驱动表的连接字段要有索引,这样就走nstedloop。如果驱动表返回记录太多,就不适合nested loops了。如果连接字段没有索引,则适合走hash join,因为不需要索引。 可用ordered提示来改变CBO默认的驱动表,可用USE_NL(table_name1 table_name2)提示来强制使用nested loop。 要点如下: 1)对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择 2)使用USE_NL(table_name1 table_name2)可是强制CBO 执行嵌套循环连接 3)Nested loop一般用在连接的表中有索引,并且索引选择性较好的时候 4)OIN的顺序很重要,驱动表的记录集一定要小,返回结果集的响应时间是最快的。 5)Nested loops 工作方式是从一张表中读取数据,访问另一张表(通常是索引)来做匹配,nested loops适用的场合是当一个关联表比较小的时候,效率会更高。 2. HASH JOIN hash join是CBO 做大数据集连接时的常用方式。优化器扫描小表(数据源),利用连接键(也就是根据连接字段计算hash 值)在内存中建立hash表,然后扫描大表,每读到一条记录就探测hash表一次,找出与hash表匹配的行。 当小表可以全部放入内存中,其成本接近全表扫描两个表的成本之和。如果表很大不能完全放入内存,这时优化器会将它分割成若干不同的分区,不能放入内存的部分就把该分区写入磁盘的临时段,此时要有较大的临时段从而尽量提高I/O 的性能。临时段中的分区都需要换进内存做hash join。这时候成本接近于全表扫描小表+分区数*全表扫描大表的代价和。 至于两个表都进行分区,其好处是可以使用parallel query,就是多个进程同时对不同的分区进行join,然后再合并。但是复杂。 使用hash join时,HASH_AREA_SIZE初始化参数必须足够的大,如果是9i,Oracle建议使用SQL工作区自动管理,设置WORKAREA_SIZE_POLICY 为AUTO,然后调整PGA_AGGREGATE_TARGET即可。 以下条件下hash join可能有优势: 1)两个巨大的表之间的连接。 2)在一个巨大的表和一个小表之间的连接。 要点如下: 1)散列连接是CBO 做大数据集连接时的常用方式. 2)也可以用USE_HASH(table_name1 table_name2)提示来强制使用散列连接 3)Hash join在两个表的数据量差别很大的时候. 4)Hash join的工作方式是将一个表(通常是小一点的那个表)做hash运算并存储到hash列表中,从另一个表中抽取记录,做hash运算,到hash 列表中找到相应的值,做匹配。 可用ordered提示来改变CBO默认的驱动表,可用USE_HASH(table_name1 table_name2)提示来强制使用hash join。 3. SORT MERGE JOIN a)对连接的每个表做table access full;

oracle大型数据库简答题题库

共享和专用操作模式的工作过程有什么区别? 在专用服务器操作模式中,Oracle为每个连接到数据库实例的用户进程启动一个专门的服务进程,其用户进程数与服务器进程数的比例为1:1因为在用户进程空闲期间,对应的服务器进程始终存在,数据库的效率比较低。共享服务器操作模式可以实现只运行少量的服务器进程,由少量的服务器进程为大量用户提供服务。在此模式下,数据库实例启动的同时也将启动一定数量的服务进程,在调度进程Dnnn 的调度下位任意数量的用户进程提供服务。 简述oracle的初始化参数文件? 答:在传统上,Oracle在启动实例时将读取本地的一个文本文件,并利用从中获取初始化参数对实例和数据库进行设置,这个文本文件称为初始化参数文件(简称为PFILE)。 简述如何修改初始化参数文件? 答:如果要对初始化参数进行修改,必须先关闭数据库,然后在初始化参数文件中进行编辑,再重新启动数据库使修改生效。 简述启动数据库时的状态。 答:开启数据库分成4种状态。SHUTDOWN状态:数据库是关闭的。NOMOUNT状态:Instance被开启的状态,会去读取初始化参数文件。MOUNT状态:会去读取控制文件。数据库被装载。OPEN状态:读取数据文件、在线重做日志文件等,数据库开启。 简述数据库的各种关闭方式。 答:(1)正常关闭(SHUTDOWN NORMAL):不允许新的USER连进来。(2)事务关闭(SHUTDOWN TRANSACTIONAL):等待所有未提交的事务完成后再关闭数据库(3)立即关闭(SHUTDOWN IMMEDIATE):任何未提交的事务均被回退。(4)终止关闭(SHUTDOWN ABORT):立即终止当前正在执行的SQL语句,任何未提交的事务 页脚内容1

oracledatabase11g,plsql编程实战笔记

Chap1 DML语句是select 、insert、update、delete和merge DDL语句是create、alter、drop、rename、truncate、comment DCL语句是grant、revoke TCL语句是commit、rollback和savepoint sql16个基本命令——参考书《OCA认证考试指南(IZ0-)》清华大学 《oracle database sql language reference 11g》有非遵循格式字符串依赖于格式掩码 chap2 2.1.3 关于语句中有多个单引号时处理: 1、 select'It''s a bird,no plan can''t be 'as pharse from dual; 此处两个单引号即为一个单引号 2、只能用q 再加’(语句)’ select q'(It's a bird,no plan can't be)'as pharse from dual; 均输出 PHARSE ---------------------------- It's a bird,no plan can't be 2.1.4 定义变量与申明变量的区别: 定义变量即为变量分配名称并指定数据类型;申明变量首先需要定义变量,然后为其赋值。(赋值也称为初始化) 替代变量前面要加&前缀且若替代变量为字符型时要加两个单引号如’&a’ declare lv_whom varchar2(20);/*lv-whom为申明变量,a为替代变量,a没有变量类型*/ begin lv_whom := '&a'; end; 或者 declare lv_whom varchar2(20); begin lv_whom := &a; end;但是要在输入框中字符加两个单引号 替代变量用define申明,且定义时不可以指定类型,默认为char型 ①Define x=emp; Select * from &x; /*调用要用&,此处不加单引号,解析后即为emp表*/

Java连接oracle数据库方法

Java连接oracle数据库 一、普通的连接数据库 1、注册驱动 Class.forName(“oracle.jdbc.driver.OracleDriver”); 2、获取连接 Connection conn=null; conn= DriverManager.getConnection(“jdbc:oracle:thin:@127.0.0.1:1521:XE”,user,pa ssword); 3、建立statement Statement stat=conn.createStatement(); 4、执行SQL语句 stat.execute(“SQL语句”); 5、处理结果集 ResultSet rs=null; rs=stat.executeQuery(“SQL语句”); While(rs.next()){ System.out.println(“id:”+rs.getInt(“id”)+”last_name”+getString(“l ast_name”)); } 6、关闭连接 Rs.close(); Stat.close(); Conn.close();

二、加载properties文件连接数据库并使用PreparedStatement --------------------首先准备xxx.properties文件---------------------user=xxxxx password=xxxxxx driver=oracle.jdbc.driver.DriverOracle url=jdbc:oracle:thin:@127.0.0.1:1521:XE -------------------------------------------------------------------------------- 1、创建properties实例对象 Properties prop=new Properties(); 2、加载xxx.properties文件 prop.load(new FileInputStream(“xxx.properties文件路径”)); 3、获取xxx.properties文件中的属性 Class.forName(prop.getString(“driver”)); conn=DriverManager.getConnetion(prop.getString(“url”,prop)); 4、创建PreparedStatement实例对象并执行语句 String sql=“select*from table_name where id=?And last_name=?”; PreparedStatement ps=conn.preparedStatement(sql); ps.setInt(1,4); ps.setString(2,”nihao”);

ORACLE 多表关联 UPDATE 语句

为了方便起见,建立了以下简单模型,和构造了部分测试数据: 在某个业务受理子系统BSS中, SQL 代码 1.--客户资料表 2.create table customers 3.( 4.customer_id number(8) not null, -- 客户标示 5.city_name varchar2(10) not null, -- 所在城市 6.customer_type char(2) not null, -- 客户类型 7.... 8.) 9.create unique index PK_customers on customers (customer_id) 由于某些原因,客户所在城市这个信息并不什么准确,但是在 客户服务部的CRM子系统中,通过主动服务获取了部分客户20%的所在城市等准确信息,于是你将该部分信息提取至一张临时表中: SQL 代码

1) 最简单的形式 SQL 代码 2) 两表(多表)关联update -- 仅在where字句中的连接SQL 代码 3) 两表(多表)关联update -- 被修改值由另一个表运算而来SQL 代码

注意在这个语句中, =(select b.city_name,b.customer_type from tmp_cust_city b where b.customer_id=a.customer_id ) 与 (select 1 from tmp_cust_city b where b.customer_id=a.customer_id) 是两个独立的子查询,查看执行计划可知,对b表/索引扫描了2篇;如果舍弃where条件,则默认对A表进行全表 更新,但由于 SQL 代码

相关主题
文本预览
相关文档 最新文档