当前位置:文档之家› ORACLE SID 实例名 数据库名 讲解

ORACLE SID 实例名 数据库名 讲解

ORACLE SID 实例名 数据库名 讲解
ORACLE SID 实例名 数据库名 讲解

详解:oracle10G 数据库名、实例名、ORACLE_SID

【转载】

数据库名、实例名、数据库域名、全局数据库名、服务名,

这是几个令很多初学者容易混淆的概念。相信很多初学者都与我一样被标题上这些个概念搞得一头雾水。我们现在就来把它们弄个明白。

一、数据库名

什么是数据库名?

数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。格式如下:

DB_NAME=myorcl

...

在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME 的值。但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。

数据库名的作用

数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。

有很多Oracle安装文件目录是与数据库名相关的,如:

winnt: d:\oracle\product\10.1.0\oradata\DB_NAME\...

Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/...

pfile:

winnt: d:\oracle\product\10.1.0\admin\DB_NAME\pfile\ini.ora

Unix: /home/app/oracle/product/10.1.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora

跟踪文件目录:

winnt: /home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/...

另外,在创建数据时,careate database命令中的数据库名也要与参数文件中DB_NAME参数的值一致,否则将产生错误。

同样,修改数据库结构的语句alter database,当然也要指出要修改的数据库的名称。

如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount 方式启动实例,然后以create controlfile命令创建控制文件,当然这个命令中也是指指DB_NAME。

还有在备份或恢复数据库时,都需要用到数据库名。

总之,数据库名很重要,要准确理解它的作用。

查询当前数据名

方法一:select name from v$database;

方法二:show parameter db

方法三:查看参数文件。

修改数据库名

前面建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。那么现在就来说明一下,如何在已创建数据之后,修改数据库名。步骤如下:

2.修改数据库参数文件中的DB_NAME参数的值为新的数据库名。

3.以NOMOUNT方式启动实例,修建控制文件(有关创建控制文件的命令语法,请参考oracle 文档)

二、数据库实例名

什么是数据库实例名?

数据库实例名是用于和操作系统进行联系的标识,就是说数据库和操作系统之间的交互用的是数据库实例名。实例名也被写入参数文件中,该参数为instance_name,在winnt平台中,实例名同时也被写入注册表。

数据库名和实例名可以相同也可以不同。

在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系。这一点在第一篇中已有图例说明。

查询当前数据库实例名

方法一:select instance_name from v$instance;

方法二:show parameter instance

方法三:在参数文件中查询。

数据库实例名与ORACLE_SID

虽然两者都表是oracle实例,但两者是有区别的。instance_name是oracle数据库参数。而ORACLE_SID是操作系统的环境变量。ORACLD_SID用于与操作系统交互,也就是说,从操作系统的角度访问实例名,必须通过ORACLE_SID。在winnt不台,ORACLE_SID还需存在于注册表中。

且ORACLE_SID必须与instance_name的值一致,否则,你将会收到一个错误,在unix平台,是“ORACLE not available”,在winnt平台,是“TNS:协议适配器错误”。

数据库实例名与网络连接

数据库实例名除了与操作系统交互外,还用于网络连接的oracle服务器标识。当你配置oracle 主机连接串的时候,就需要指定实例名。当然8i以后版本的网络组件要求使用的是服务名SERVICE_NAME。这个概念接下来说明。

三、数据库域名

什么是数据库域名?

在分布工数据库系统中,不同版本的数据库服务器之间,不论运行的操作系统是unix或是windows,各服务器之间都可以通过数据库链路进行远程复制,数据库域名主要用于oracle 分布式环境中的复制。举例说明如:

全国交通运政系统的分布式数据库,其中:

福建节点:fj.jtyz

福建厦门节点:xm.fj.jtyz

江西:jx.jtyz

江西上饶:sr.jx.jtyz

这就是数据库域名。

数据库域名在存在于参数文件中,他的参数是db_domain.

查询数据库域名

方法一:select value from v$parameter where name = 'db_domain';

方法二:show parameter domain

方法三:在参数文件中查询。

全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:oradb.fj.jtyz 四、数据库服务名

什么是数据库服务名?

从oracle9i版本开始,引入了一个新的参数,即数据库服务名。参数名是SERVICE_NAME。如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。

查询数据库服务名

方法一:select value from v$parameter where name = 'service_name';

方法二:show parameter service_name

方法三:在参数文件中查询。

数据库服务名与网络连接

从oracle8i开如的oracle网络组件,数据库与客户端的连接主机串使用数据库服务名。之前用的是ORACLE_SID,即数据库实例名

创建Oracle数据库(以Oracle10g为例)

有两种创建数据库的方式,一种是以命令行脚本方式,即手动方式创建;另一种是利用Oracle 提供的数据库配置向导来创建。本篇主要介绍在Unix和Windows下以命令行脚本方式创建Oracle数据库。

一个完整的数据库系统,应包括一个物理结构、一个逻辑结构、一个内存结构和一个进程结构,如果要创建一个新的数据库,则这些结构都必须完整的建立起来。

一、在Unix下创建数据库

1.确定数据库名、数据库实例名和服务名

关于数据库名、数据库实例名和服务名,我之前有专门用一篇来详细介绍。这里就不再说明了。

2.创建参数文件

参数文件很确定了数据库的总体结构。Oracle10g有两种参数文件,一个是文本参数文件,一种是服务器参数文件。在创建数据库时先创建文本参数文件,在数据库创建后,可以由文件参数文件创建服务器参数文件。文本参数文件的取名方式为initORACLE_SID.ora,其中,ORACLE_SID是数据库实例名。其名称及路径为:

/home/app/oracle/product/10.1.0/admin/DB_NAME/pfile/initORACLE_SID.ora

其中,DB_NAME为数据库名。所以,应创建一个以之命名的目录,并将文本参数文件存放在上述目录中。假设新创建的数据库名为MYORACLE,SID与数据库名一致。则上述目录实际为:

/home/app/oracle/product/10.1.0/admin/MYORACLE/pfile/initMYORACLE.ora

1)参数文件的介绍

参数文件决定着数据库的总体结构,用于设置数据库的近260个系统参数。下面分类别说明一下各参数的作用,关于参数的详细使用说明请参考Oracle官方参考文档。

a.数据库标识类参数

DB_NAME: 数据库名,此参数在创建数据前决定,数据库创建后修改时,必须建控制文件DB_DOMAIN: 数据库域名,用于区别同名数据库。数据库名与域名一起构成了全局数据库名INSTANCE_NAME: 数据库实例名,可以与数据库相同

SERVICE_NAMES: 数据库服务名,与全局数据库名相同如果没有域名,则服务名就是数据库

b.日志管理类参数

LOG_ARCHIVE_START: 是否启动自动归档进程ARCH

LOG_ARCHIVE_DEST: 归档日志文件存储目录

LOG_ARCHIVE_FORMAT: 归档日志文件的默认文件存储格式

LOG_ARCHIVE_DUPLEX_DEST: 归档日志文件镜像存储目录(Oracle8以上)

LOG_ARCHIVE_DEST_n: 归档日志文件存储目录(Oracle8i以上)

LOG_ARCHIVE_DEST_STATE_n: 设置参数LOG_ARCHIVE_DEST_n失效或生效

LOG_ARCHIVE_MAX_PROCESSES: 设置自动归档进程的个数

LOG_ARCHIVE_MIN_SUCCEED_DEST: 设置最少的成功归档日志存储目录的个数

LOG_CHECKPOINT_INTERVAL: 根据日志数量设置检验点频率

LOG_CHECKPOINT_TIMEOUT: 根据时间间隔设置检验点频率

c.内存管理参数

DB_BLOCK_SIZE: 标准数据块大小

DB_nK_CACHE_SIZE: 非标准数据块数据缓冲区大小

SHARED_POOL_SIZE: 共享池大小控制参数,单位为字节

DB_CACHE_SIZE: 标准数据块数据缓冲区大小

DB_BLOCK_BUFFERS: 数据缓冲区大小,9i之后已放弃使用

LOG_BUFFER: 日志缓冲区大小

SORT_AREA_SIZE: 排序区大小

LARGE_POOL_SIZE: 大池大小

JAVA_POOL_SIZE: Java池大小

d.最大许可用户数量限制参数

LICENSE_MAX_SESSIONS:数据库可以连接的最大会话数

LICENSE_MAX_USERS:数据库支持的最大用户数

LICENSE_MAX_WARNING:数据库最大警告会数(会话数据达到这个值时,产生新会话时就会产生警告信息)

e.系统跟踪信息管理参数

USER_DUMP_DEST:用户跟踪文件生成的设置

BACKGROUND_DUMP_DEST:后台进程跟踪文件生成的位置

MAX_DUMPFILE_SIZE:跟踪文件的最大尺寸

f.系统性能优化与动态统计参数

SQL_TRACE:设置SQL跟踪

TIMED_STATICS:设置动态统计

AUDIT_TRAIL:启动数据库审计功能

g.其他系统参数

CONTROL_FILES:控制文件名及路径

Undo_MANAGMENT:Undo空间管理方式

ROLLBACK_SEGMENTS:为这个例程分配的回退段名

OPEN_CURSORS:一个用户一次可以打开的游标的最大值

PROCESSES:最大进程数,包括后台进程与服务器进程

IFILE:另一个参数文件的名字

DB_RECOVERY_FILE_DEST:自动数据库备份目录

DB_RECOVERY_FILE_SIZE:数据库备份文件大小

2)参数文件样式

db_name=myoracle

instance_name=myoracle

db_domain=https://www.doczj.com/doc/881262169.html,

service_names=https://www.doczj.com/doc/881262169.html,

control_files=(/home/app/oracle/product/10.1.0/oradata/myoracle/control01.ctl,

/home/app/oracle/product/10.1.0/oradata/myoracle/control02.ctl,

/home/app/oracle/product/10.1.0/oradata/myoracle/control03.ctl)

db_block_size=8192

user_dump_dest=/home/app/oracle/product/10.1.0/admin/myoracle/udump

background_dump_dest=/home/app/oracle/product/10.1.0/admin/myoracle/bdump

core_dump_dest=/home/app/oracle/product/10.1.0/admin/myoracle/cdump

db_recovery_file_dest=/home/app/oracle/product/10.1.0/flash_recover_area

db_recovery_file_size=100G

...

3.设置操作系统参数

$ORACLE_SID=myoracle

$export ORACLE_SID

4.启动实例并创建数据库

在创建数据库之前,首先要以新的数据库参数启动数据库实例,因为这时数据库的控制文件还没有产生,不能MOUNT或OPEN数据库。启动实例时,Oracle只按照内存参数分配SGA 区,启动系统后台进程。

$sqlplus "sys/pass as sysdba"

sql>startup nomount

如果参数文件不在规定的目录中,可以在启动实例时指定参数文件:

sql>startup pfile=/export/home/user/initmyoracle.init nomount

在实例启动后就可以使用CREATE DATABASE命令创建数据。其详细语法请参考Oracle官方SQL参考文档。这里以实例来介绍:

sql>CREATE DATABASE myoracle

MAXINSTANCE 1

MAXLOGHISTORY 216

MAXLOGFILES 50

MAXLOGMEMBERS 5

DATAFILE '/home1/app/oracle/product/10.1.0/oradata/myoracle/system01.dbf' SIZE 500m AUTOEXTEND ON NEXT 100m MAXSIZE UNLIMITED

LOGFILE

GROUP 1('/home1/app/oracle/product/10.1.0/oradata/myoracle/log1a.log',

'/home1/app/oracle/product/10.1.0/oradata/myoracle/log1b.log') SIZE 10m, GROUP 2('/home1/app/oracle/product/10.1.0/oradata/myoracle/log2a.log',

'/home1/app/oracle/product/10.1.0/oradata/myoracle/log2b.log') SIZE 10m, GROUP 3('/home1/app/oracle/product/10.1.0/oradata/myoracle/log3a.log',

'/home1/app/oracle/product/10.1.0/oradata/myoracle/log3b.log') SIZE 10m,

Undo TABLESPACE undotbs DATAFILE

'/home1/app/oracle/product/10.1.0/oradata/myoracle/undotbs01.dbf' size 200m AUTOEXTEND ON NEXT 100m MAXSIZE UNLIMITED

DEFAULT TEMPORARY TALESPACE temp TEMPFILE

'/home1/app/oracle/product/10.1.0/oradata/myoracle/temp01.dbf' size 325m AUTOEXTEND ON NEXT 100m MAXSIZE UNLIMITED

DEFAULT TABLESPACE users DATAFILE

'/home1/app/oracle/product/10.1.0/oradata/myoracle/usertbs01.dbf' size 1000m CHARACTER SET ZHS16GBK;

这里说明一下CREATE DA TABASE语句的各个关键字的含义:

DATAFILE:SYSTEM表空间的数据文件定义

LOGFILE:日志文件组的定义

Undo_TABLESPACE:重做表空间的定义

DEFAULT TEMPORTY TABLESPACE:默认临时表空间的定义

DEFAULT TABLESPACE:默认数据表空间的定义。

5.创建数据字典

在数据库创建结束后,数据库自动处于OPEN状态下,这时所有V$××××类数据字典都可以查询。而其它数据字典,如DBA_DATA_FILES、DBA_TABLESPACES等都不存在,必须通过下列骤为系统创建数据字典。

1)加载常用的数据字典包

sql>@/home/app/oracle/product/10.1.0/db_1/rdbms/catalog

2)加载PL/SQL程序包

sql>@/home/app/oracle/product/10.1.0/db_1/rdbms/admin/catproc

3)加载数据复制支持软件包

sql>@/home/app/oracle/product/10.1.0/db_1/rdbms/admin/catrep

4)加载Java程序包

sql>@/home/app/oracle/product/10.1.0/db_1/javavm/install/initjvm

5)加载系统环境文件

sql>connect system/pass

sql>@/home/app/oracle/product/10.1.0/db_1/sqlplus/admin/pupbld

二、在Windows下创建数据库

Oracle实例在Windows下表现为操作系统服务。在windows下,使用命令行方式创建数据的方法有所不同,差别在于在Windows下,需要先创建数据库服务和实例。

1.确定数据库名、数据库实例名和服务名并创建目录(DBCA创建的脚本不包含建立目录命令,须自己创建)

建立目录命令(下面以db_name=eygle为例):

mkdir D:\oracle\ora90\cfgtoollogs\dbca\eygle

mkdir D:\oracle\ora90\database

mkdir d:\oracle\admin\eygle\adump

mkdir d:\oracle\admin\eygle\bdump

mkdir d:\oracle\admin\eygle\cdump

mkdir d:\oracle\admin\eygle\dpdump

mkdir d:\oracle\admin\eygle\pfile

mkdir d:\oracle\admin\eygle\udump

mkdir d:\oracle\flash_recovery_area

mkdir d:\oracle\oradata

mkdir d:\oracle\oradata\eygle

2.创建参数文件

在Windows下的参数文件名称及路径如下:

d:\oracle\product\10.1.0\admin\DB_NAME\pfile\init.ora(oracle10g)

d:\orant\database\iniORACLE_SID.ora(oracle7,oracle8)

参数据文件内容与前述一致。这里不再说明。

3.选择数据库实例

设置环境变量ORACLE_SID

c:\>set ORACLE_SID=数据库实例名

4.创建数据库实例

在Windows中创建数据库实例的命令为Oradim.exe,是一个可执行文件,可以在操作系统符号下直接运行。直接输入oradim显示此命令的帮助。

c:\>Oradim

下面对Oradim命令的参数进行一个说明

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

-NEW 表示新建一个实例

-EDIT 表示修改一个实例

-DELETE 表示删除一个实例

-SID sid 指定要启动的实例名称

-SRVC service 指定要启动的服务名称

-INTPWD password 以Internal方式连接数据库时的口令字

-MAXUSERS count 该实例可以连接的最大用户数

-USRPWD password 指定内部用户的口令,如是作为Windows管理登录,不用此参数

-PFILE pfile 该实例所使用的参数文件名及路径

-STARTTYPE srvc|inst|srvc,inst 启动选项(srvc:只启动服务,inst:启动实例,服务必须先启动,srvc,inst:服务和实例同时启动)

-SHUTTYPE srvc|linst|srvc,inst 关闭选项(srvc:只关闭服务,实例必须已关闭,inst:只关闭实例,srvc,inst:服务和实例同时关闭)

-STARTMODE a|m 创建实例所使用的模式(a:自动,即windows启动时自动启动m:手动)-SHUTMODE a|i|m 关闭实例时所使用的模式(a:abort异常方式,i:immediate立即方式,n:normal正常方式)

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

例:创建一个数据库实例

c:\>oradim -NEW -SID myoracle -STARTMODE m -PFILE "d:\fangys\initmyoracle.ora"

c:\>oradim -NEW -SRVC OracleServicemyoracle -STARTMODE m -PFILE "d:\fangys\initmyoracle.ora"

例:修改一个数据实例

c:\>oradim -EDIT -SID myoracle -STARTMODE a

c:\>oradim -EDIT -SRVC OracleServicemyoracle -STARTMODE a

例:删除一个实例

c:\>oradim -DELETE -SID myoracle

c:\>oradim -DELETE -SRVC Oracleservicemyoracle

例:启动服务与实例

c:\>oradim -STARTUP -SID myoracle -STARTTYPE srvc,inst

只启动服务

c:\>oradim -STARTUP -SID myoracle -STARTTYPE srvc

启动实例:

c:\>oradim -STARTUP -SID myoracle -STARTTYPE inst

例:关闭服务与实例

c:\>oradim -SHUTDOWN -SID myoracle

c:\>oradim -SHUTDOWN -SID myoracle -SHUTTYPE srvc,inst

5.启动实例并创建数据库

c:\>oradim -NEW -SID myoracle -INTPWD syspass -STARTMODE a -PFILE d:\fangys\initmyoracle.ora

c:\>set ORACLE_SID=myoracle

c:\>sqlplus sys/syspass as sysdba

sql>startup -pfile=d:\fangys\initmyoracle.ora nomount

sql>CREATE DATABASE myoracle

logfile group...

...

6.创建数据字典

sql>@d:\oracle\product\10.1.0\db_1\rdbms\admin\catalog.sql;

sql>@d:\oracle\product\10.1.0\db_1\rdbms\admin\catproc.sql;

sql>@d:\oracle\product\10.1.0\db_1\rdbms\admin\catrep.sql;

sql>@d:\oracle\product\10.1.0\db_1\javavm\install\initjvm.sql;

sql>@d:\oracle\product\10.1.0\db_1\sqlplus\admin\ppbld.sql;

一、启动数据

$sqlplus "sys/pass as sysdba"

sql>startup

二、启动监听器

数据库启动后,如果未启动监听进程,则客户端无法与数据库连接。监听进程的启动方法为:

$lsnrctl start

在widnows中,可以从服务列表中启动监听器。

监听里程配置文件为listener.ora,位于目录/home/app/oracle/product/10.1.0/db1/network/admin/。

此配置文件分为两部分,一部分为监听程序本身的配置,包括协议,地址,端口号等;另一部分为监听程序所连接的数据库的实例信息,包括:实例名,全局数据库名,oracle主目录等。监听器可以利用oracle net config 向导来配置。

要显示监听器的运行状态:$lsnrctl status;

要停止监听器:$lsnrctl stop。

三、数据库的启动过程

分为三个阶段:

1. 启动实例,包括以下操作:

1) 读取参数文件

2) 分配SGA

3) 启动后台进程

2.装载数据库

装载数据库是将数据库与已启动的实例相联系。数据库装载后,数据库保持关闭状态。3.打开数据库

此步骤使用数据库可以进行正常的操作的处理。主要是打开控制文件,数据库文件和日志文件。

四、数据库启动参数

1.NOMOUNT:只启动实例,不装载数据库

sql>startup nomount

2.MOUNT:启动实例,并装载数据,但不打开数据库

sql>startup mount

3.READ ONLY:将数据库置为只读

sql>startup mount

sql>alter database open read only

4.READ WRITE:以可读写方式打开数据,这是默认方式

sql>startup mount

sql>alter database open read write

5.OPEN:打开数据库,这是默认方式

sql>startup mount

sql>alter database open;

6.RESTRICT:以受限方式打开,只有具有RESTRICTED SESSION权限的用户才可以连接数据库sql>startup restrict

7.PFILE:启时指定参数文件

sql>startup pfile=/u02/user/mypfile.ora

8.FORCE:以强制方式启动数据库

sql>startup pfile=/u02/user/mypfile.ora open restrict force

五、数据库的关闭

与启动过程相对应,关闭包括三个过程

1).关闭数据库

2).卸载数据库

3).关闭数据库实例

1.NORMAL关闭方式

NORMAL关闭方式是正常关闭方式,是默认关闭方式。在这种关机方式下,数据库服务器必须等待所有客户端从Oracle中正常退出时,才可以关闭数据库。

SQL>SHUTDOWN NORMAL

2.IMMEDIATE关闭方式

使用这种方式关闭数据库时,系统将连接到数据库的所有用户尚未提交的事务全部回退,中断连接,然后关闭数据库。

SQL>SHUTDOWN IMMEDIATE

3.ABORT关闭方式

ABORT关闭方式为异常方式,使用这种方式关闭数据库时,系统立即将数据库实例关闭,对事务膛数据完整性不作检查。是最快的关机方式。

sql>shutdown abort;

4.TRANSACTIONAL关闭方式

在这种关机方式中,数据库必须等待所有的客户运行的事务结束,提交或回退。sql>shutdown transactional

Oracle数据库的连接结构有三种:

1) 组合用户与服务器结构:在这种连接方式中,客户端与服务器同处一台机器中,对于每一个用户,其库应用程序与服务器程序组合成单个服务器进程。

2) 专用服务器(Dedicated Server)结构:在这种方式中,对于每一个用户,其数据库应用是由用户进程所运行,并有一个专用服务器进程为之服务,执行Oracle服务器代码。

3) 多线程服务器(Multithreaded Server)体系结构:在这种方式中,一个或多个客户应用程序共享一组服务器进程,与专用服务器不同的是,客户和服务器进程不是一对一的关系,而是由调度进程对多个服务器进程进行调度,以服务来自客户应用的连接请求。

专用服务器

专用服务器的工作过程:

1) 客户端通过oracle net向监听器发连接请求

2) 监听器收到请求并将此请求导向服务器,服务器向用户返回一个连接成功信息,并为此用户创建一个专用服务器进程

3) 客户直接与该专用服务器进程进行交互,处理SQL,并且服务器在该会话的PGA中建立一个专用SQL区。

如果客户端要求建立专用服务器连接方式,可以修改客户羰的网络配置文件tnsnames.ora 或修改连接描述串。增加关键字“Server=DEDICATED”,如:

prod=

(DESCRIPTION=

(ADDRESSLIST=

(ADDRESS=

(PROTOCOL=TCP)(HOST=192.168.0.3)(PORT=1521)

(SERVER=DEDICATED)

)

)

(CONNECT_DATA=(SID=PROD)

)

)

还必须修改SQLNET.ORA文件,增加“USE_DEDICATED_SERVER=TRUE”

多线程服务器体系结构

专用服务器结构中,一个服务器进程只为一个客户服务。这样的话,如果有一千个客户,就需要有一千个对应的服务器进程,就会耗费大量的系统资源。为了支持对于可伸缩性的需求,在oracle7中引入了多线程服务器(MTS,也称为共享服务器)。下面说明共享服务器建立连接的过程,以级与建立专用服务器连接过程的不同:

1) 客户通过网络与监听器联系

2) 监听器检测到请求,基于Oracle net结构来确定是否与多线程服务器连接。监听器将客户请求导向相应的调度程序。

3) 监听器通过使客户与调度程序了解对方的网络地址,从面完成了双方的介绍。

4) 一旦客户与调度程序知道如何找到对方,它们就直接通信,不要需要监听器。客户直接将操作请求发送给高度程序。

5) 调度程序将客户请求放在SGA的请求队列中。

6) 下一个可用的共享服务器进程从请求队列中读取请求,进行相应的工作。

7) 共享服务器进程将结果存放在提交相应请求的调度程序的响应队列中。

8) 调度程序从响应队列中读取数据并将结果送组客户。

有几个概念在这里作个补充说明:

1) 监听器(Listener):为一个或多个实例“监听”连接请求,它是oracle客户与服务器的中介。监听器不是Oracle实例的一部分,它的作用是将连接的请求导向相应的实例。

2) 调度程序(dispatcher):在MTS体系结构中,监听器与调度程序联系,调度程序负责调度MTS中的各个共享服务器进程。

多线程服务器的设置参数有:

MTS_SERVICE:多线程服务器名称,一般为数据库名

MTS_DISPATCHERS:初始调度器个数

MTS_MAX_DISPATCHERS:调度器最大个数

MTS_SERVERS:共享服务器个数

MTS_MAX_SERVERS:最大共享服务器个数

多线程服务器的设置是通过对以上各个参数的设置完成的。格式如下:

MTS_SERVICE=RS

MTS_SERVERS=10

MTS_MAX_SERVERS=100

MTS_DISPATCHERS="(PROTOCOL=TCP)(POOL=YES)(MULT=YES)"

MTS_DISPATCHERS="(PROTOCOL=IPX)(POOL=YES)(MULT=YES)"

MTS_DISPATCHERS="(PROTOCOL=IPC)(POOL=YES)(MULT=YES)"

MTS_MAX_DISPATCHERS=100

有关多线程服务器的数据字典如下:

V$MTS

V$DISPATCHER

V$SHARED_SERVER

V$CIRCULT

各字典的详细说明请参考Oracle文档。

第八篇再述oracle数据库体系结构之四:Oracle实例的进程结构

这里所讲的里程是指Unix系统中的进程,在Windows中,Oracle是一个操作系统服务。

Oracle实例由内存区域和后台进程组成。

Oracle实例分为单进程实例(一个进程执行全部的Oracle代码,只允许单个用户存取)和多进程实例(由多个进程执行Oracle代码的不同部分,对于每一个连接的用户都有一个进程,允许多个用户同时使用)。

在多进程结构中,除服务器进程(请注意,此“服务器进程”不是指所有的实例中的进程,见下面的说明)外,还有其他后台进程,包括:Dnnn,DBWR, LGWR,ARCH,PMON,SMON,CKPT,RECO等。在数据库启动后,这些进程常驻操作系统。Oracle 中所有进程的数量之和不能超过参数PROCESS设定的值:

sql>show parameter process

当Oracle客户端应用程序与Oracle实例连接的时候,Oracle会产生一个服务器进程来为这些客户服务,此进程在widnows下表现为线程。此进程的主要作用有:对于用户发出的SQL语句进行语法分析,编译,执行用户的SQL语句,如是数据块不在数据缓冲区时,则从磁盘数据文件将数据读入到SGA的共享数据缓冲区中,将SQL语句的执行结果返回组应用程序。下面的语句用来查询数据库中的用户会话信息。

sql>select substr(s.sid,1,3) sid,substr(s.serial#,1,5) ser,spid,substr(schemaname,1,10)

schema,substr(type,1,3)

typ,substr(decode((consistent_gets+block_gets),0,'None',(100*(consistent_gets+block_gets-physi cal_reads)/consistent_gets+block_gets))),1,4) "%hit",value cpu,substr(block_changes,1,5) bchng from v$process p,v$sesstat t,v$sess_io i,v$session s where i.sid=s.sid and p.addr=paddr(+) and s.sid=t.sid and t.statistic#=12;

结果中:

sid表示会话ID号,

ser表示会话serial#号,serial#与sid组合以唯一表示一个会话,

spid表示操作系统进程号,

schema表示数据库用户名,

typ 表示进程类型,use为用户进程,bac为后台进程

%hit 表示数据缓冲区命中率,

cpu 表示使用cpu的时间,

bchng表示修改了的数据块的个数。

下面介绍各个后台进程。

1. DBWR进程

DBWR(Database Writer)进程将缓冲区中的数据写入数据文件,负责数据缓冲区的管理。

当数据缓冲区中的一个数据被修改后,被标记为“脏”,DBWR进程负责将“脏”数据写入磁盘。DBWR采用LRU算法来替换数据缓冲区中的数据。

DBWR的作用包括:

1)管理数据缓冲区,以便服务器进程总能找到空闲缓冲区

2)将所有修改后的缓冲区中的数据写入数据库文件

3)使用LRU算法将最近使用过的块保留在内存中

4)通过延迟写来优化磁盘i/o.

在下列情况下DBWR要将脏数据写入磁盘数据文件:

1)当一个服务器进程将缓冲数据块移“脏表”,面该脏表达到一定程度进。(该临界长度由参数DB_BLOCK_WRITE_BATCH决定)

2)当一个服务器进程在LRU表中查找DB_BLOCK_MAX_SCAN_CNT缓冲区时,没有查到空闲的缓冲区

3)出现超时

4)检查点发生时

在一个Oracle实例中,允许启动多个DBWR进程,DBWR进程个数由参数DB_WRITE_PROCESSES指定,上限为20,进程名依次自动命名为

BW0,DBW1,DBW2...DBW19。

sql>show parameter processes

2. LGWR进程

LGWR(Log Writer)进程将日志数据从日志缓冲区中写入磁盘日志文件中。

关于LGWR进程的工作时机可以看我写的第一篇《一次事务过程》。

LGWR的写盘条件是:

1) 发生提交,即commit;

2) 日志缓冲区达到总数的1/3时;

3) 超时;

4) DBWR进程需要为检验点清除缓冲区时。

每一个Oracle实例只有一个LGWR进程。

LGWR将日志信息同步的写入到日志文件组的多个日志成员中,如果组中的一个成员文件被删除或不可使用,LGWR将日志信息继续写到该组的其他文件中,不影响数据库的运行。3. SMON进程

SMON(System Monitor),系统监控进程,在实例启动时执行实例恢复,并负责清理不再使用的临时段。

4. PMON进程

PMON(Process Monitor),进程监控里程,在服务器进程出现故障时执行进程恢复,负责清理内存内存和释放该进程所使用的资源。

5. ARCH进程

ARCH(Archive Process,归档进程)在日志存满时将日志信息写到磁盘或磁带,用于介质失败时的恢复。

日志信息首先产生于日志缓冲区,再由日志写入进程LGWR将日志数据写入日志文件组,日志切换时,由归档进程ARCH将日志数据从日志文件组中写入归档日志中。

在一个数据库实例中,归档进程最多可以启动10个,进程名依次自动命名为ARC0,ARC1,ARC2...ARC9,设置方法是:在参数文件中增加参数LOG_ARCHIVE_MAX_PROCESSES。关于如何启用数据库的自动归档,在前面的《物理结构》一篇中已有说明,这里说明一个几个相关的参数:

1) LOG_ARCHIVE_DEST:用于设置归档日志的文件存储目录

2) LOG_ARCHIVE_DUBLEX_DEST:用于设置归档日志文件的镜像存储目录,此参数在oracle 8及以上的版本中支持

3) LOG_ARCHIVE_DEST_n:用于设置更多的镜像目录,其中,1<=n<=10,该参数有以下三个选项:

(1)MANDATORY:表示必须完成此目录的归档,才可以切换。

(2)REOPEN:归档目录或介质失败后,需等多长时间能重新写入日志,默认时间为300秒。

(3)OPTIONAL:不管是否归档完成都进行切换,这是默认方式

举例如下:

LOG_ARCHIVE_DEST_1='LOCATION=/u01/oracle/archive/

MANDATORY

REOPEN=500'

LOG_ARCHIVE_DEST_2='LOCATION=/u02/oracle/archive/

OPTIONAL'

LOG_ARCHIVE_DEST_n只适用于oracle 8i及以上的版本。

4) LOG_ARCHIVE_DEST_STATE_n:用于对归档日志目录进行失效或生效,该参数与LOG_ARCHIVE_DEST_n一一相对应。如:

LOG_ARCHIVE_DEST_STATE_1=DEFER

LOG_ARCHIVE_DEST_STATE_2=ENABLE

此参数可以在线设置:

sql> ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_1=DEFER;

此参数只适用于oracle 10g及以上版本。

6. CKPT进程

CKPT(CheckPoint,检查点)进程出现时,系统对全部数据库文件及控制文件的文件头的同步号进行修改,以保证数据库的同步。

以下两个参数是对CKPT有影响的:

LOG_CHECKPOINT_TIMEOUT:决定产生一个检验点的时间间隔,单位为秋,默认为1800;

LOG_CHECKPOINT_INTERVAL:执行一个检验点需要填充的日志文件块的数目,默认为0,表示不起作用。

系统对于数据库的改变信息用系统改变号SCN表示,SCN也叫检验点号,在日志中用CHECKPOINT_CHANGE#表示,它是数据文件,日志文件,控制文件的同步的同步依据,同时存储在这三个中,在系统改变时,检验点号也会同时改变。

引起CKPT产生的主要时机有:

1)日志切换时

2)达到LOG_CHECKPOINT_TIMEOUT指定的间隔时间

3)达到LOG_CHECKPOINT_INTERVAL指定的日志块数

4)数据库关闭

5)DBA强制产生

6)表空间OFFLINE时

7. RECO进程

RECO(Recover,恢复)进程用于分布式数据库系统,RECO进程自动地解决在分布式数据库中的事务故障。

8. LCKn进程

LCKn(锁进程)用于Oracle并行服务器环境下,用于多个实例间的封锁,该进程最多可以启动10个。

9. Dnnn进程

Dnnn(Despatcher,调度)进程。用于多线程服务器体系结构中。详见下一篇《Oracle连接配置结构》

10. SNP进程

SNP是作业进程,主要用于分布式数据库中,进行数据库之间快照的自动刷新,并同时通达DBMS_JOB程序包自动运行预定的存储过程,SQL,PL/sql程序等。有两个参数用来控制作业进程的计划:

1) JOB_QUEUE_PROCESS:用于设置作业进程个数

2) JOB_QUEUE_INTERVAL:用于设置作业进程被周期性唤醒的时间间隔

后台进程跟踪信息

所有修改数据库结构的命令会自动被后台进程跟踪记录,跟踪信息由oracle后台进程自动存储,跟踪文件的名称为alter_SID。此文件的存储目录由参数BACKGROUND)DUMP_DEST 指定。

可以用工具命令TKPROF来格式化跟踪文件,如:

$tkprof oralogfile1.log

除了跟踪后台进程外,还可以启用参数SQL_TRACE对用户的语句进行跟踪。修改参数文件:

TIMED_STATISTICS=TRUE

USER_DUMP_DEST=目录名

MAX_DUMP_FILE_SIZE=5M

SQL_TRACE=TRUE

或者:

SQL>ALTER SESSION SET SQL_TRACE=TRUE对当前会话进行SQL跟踪。

锁等待问题与KILL SESSION

为了保证数据的一致性,系统提供锁机制。有关锁的概念可以参数《数据库系统概论》一书。要了解当前在等待锁资源的用户:

sql>select https://www.doczj.com/doc/881262169.html,ername,a.sid,a,serial#,b.id1 from v$session,v$lock where a.lockwait=b.kaddr;

要了解锁住其它用户的用户进程:

SQL>SELECT https://www.doczj.com/doc/881262169.html,ERNAME,A.SID,A,SERIAL#,B.ID1 FROM V$SESSION A,V$LOCK B WHERE B.ID1 IN (SELECT DISTINCT E.ID1 FROM V$SESSION D,V$LOCK E WHERE D.LOCKWAIT=E.KADDR) AND A.SID=B.SID AND B.REQUEST=0;

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常用SQL语句大全

ORACLE常用SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:/mssql7backup/MyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not nul l],..) 根据已有的表创建新表: A:select * into table_new from table_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only<仅适用于Oracle> 5、说明:删除表 drop table tablename

6、说明:增加一个列,删除一个列 A:alter table tabname add column col type B:alter table tabname drop column colname 注:DB2DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、添加主键: Alter table tabname add primary key(col) 删除主键: Alter table tabname drop primary key(col) 8、创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、创建视图:create view viewname as select statement 删除视图:drop view viewname 10、几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、几个高级查询运算词 A:UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。 B:EXCEPT 运算符 EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。 C:INTERSECT 运算符 INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。 注:使用运算词的几个查询结果行必须是一致的。 12、使用外连接

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数据库基本知识点

1、数据库基本语句 (1)表结构处理 创建一个表:cteate table 表名(列1 类型,列2 类型); 修改表的名字 alter table 旧表名 rename to 新表名 查看表结构 desc 表名(cmd) 添加一个字段 alter table 表名 add(列类型); 修改字段类型 alter table 表名 modify(列类型); 删除一个字段 alter table 表名 drop column列名; 删除表 drop table 表名 修改列名 alter table 表名 rename column 旧列名 to 新列名; (2)表数据处理 增加数据:insert into 表名 values(所有列的值); insert into 表名(列)values(对应的值); 更新语句:update 表 set 列=新的值,…[where 条件] 删除数据:delete from 表名 where 条件 删除所有数据,不会影响表结构,不会记录日志, 数据不能恢复--》删除很快: truncate table 表名 删除所有数据,包括表结构一并删除: drop table 表名 去除重复的显示:select distinct 列 from 表名 日期类型:to_date(字符串1,字符串2)字符串1是日期的字 符串,字符串2是格式 to_date('1990-1-1','yyyy-mm-dd')-->返回日期的 类型是1990-1-1 (3)查询语句 1)内连接 select a.*,b.* from a inner join b on a.id=b.parent_id

Oracle数据库实例及其相关概念

Oracle数据库实例及其相关概念2010-11-24 00:00 出处:中国IT实验室作者:佚名 完整的Oracle数据库通常由两部分组成:Oracle数据库实例和数据库。 用数据库安全策略防止权限升级攻击 C++虚函数的显式声明 完整的Oracle数据库通常由两部分组成:Oracle数据库实例和数据库。 1)数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等); 2)Oracle数据库实例则是一组Oracle后台进程/线程以及在服务器分配的共享内存区。 在启动Oracle数据库服务器时,实际上是在服务器的内存中创建一个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据文件。Oracle有一个很大的内存快,成为全局区(SGA)。 一、数据库、表空间、数据文件 1.数据库 数据库是数据集合。Oracle是一种数据库管理系统,是一种关系型的数据库管理系统。 通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。也即物理数据、内存、操作系统进程的组合体。 数据库的数据存储在表中。数据的关系由列来定义,即通常我们讲的字段,每个列都有一个列名。数据以行(我们通常称为记录)的方式存储在表中。表之间可以相互关联。以上就是关系模型数据库的一个最简单的描述。

当然,Oracle也是提供对面象对象型的结构数据库的最强大支持,对象既可以与其它对象建立关系,也可以包含其它对象。关于OO型数据库,以后利用专门的篇幅来讨论。一般情况下我们的讨论都基于关系模型。 2.表空间、文件 无论关系结构还是OO结构,Oracle数据库都将其数据存储在文件中。数据库结构提供对数据文件的逻辑映射,允许不同类型的数据分开存储。这些逻辑划分称作表空间。 表空间(tablespace)是数据库的逻辑划分,每个数据库至少有一个表空间(称作SYSTEM表空间)。为了便于管理和提高运行效率,可以使用一些附加表空间来划分用户和应用程序。例如:USER表空间供一般用户使用,RBS表空间供回滚段使用。一个表空间只能属于一个数据库。 每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件只能属于一个表空间。在Oracle7.2以后,数据文件创建可以改变大小。创建新的表空间需要创建新的数据文件。数据文件一旦加入到表空间中,就不能从这个表空间中移走,也不能与其它表空间发生联系。 如果数据库存储在多个表空间中,可以将它们各自的数据文件存放在不同磁盘上来对其进行物理分割。在规划和协调数据库I/O请求的方法中,上述的数据分割是一种很重要的方法。 3.Oracle数据库的存储结构分为逻辑存储结构和物理存储结构: 1)逻辑存储结构:用于描述Oracle内部组织和管理数据的方式; 2)物理存储结构:用于描述Oracle外部即操作系统中组织和管理数据的方式。 二、Oracle数据库实例

Oracle经典案例代码

ORACLE经典案例 ORACLE--E-001)员工信息综合查询 (ORACLE 定义 ORACLE-F-001——ORACLE-F-005的综合练习: 1.用sqlplus连接数据库时,为什么会出Oracle not available错误? 2.找出员工的姓中(last_name)第三个字母是a的员工名字 3.找出员工名字中含有a和e的 4.找出所有有提成的员工,列出名字、工资、提出,显示结果按工资从小到大,提成从小 到大 5.42部门有哪些职位 6.哪些部门不是Sales部 7.显示工资不在1000到1550之间的员工信息:名字、工资,按工资从大到小排序。 8.显示职位为Stock Clerk和Sales Representative,年薪在14400和17400之间的员工 的信息:名字、职位、年薪。 9.解释select id ,commission_pct from s_emp where commission_pct is null和select id , commission_pct from s_emp where commission_pct = null的输出结果。 10.select语句的输出结果为 select * from s_dept; select * from s_emp; select * from s_region; select * from s_customer; …… 当前用户有多少张表,结果集有多少条记录。 11.判断select first_name , dept_id from s_emp where salary > '1450'是否抱错,为 什么?

ORACLE创建实例

ORACLE创建实例是我们最常用的操作之一,下面就为您详细介绍ORACLE创建实例的全过程,希望对您能够有所帮助。 一、ORACLE创建实例过程: 1、安装好ORACLE服务端。 2、ORACLE创建实例,使用ORAHOME目录下的"Configuration and Migration Tools"下的"Database Configuration Assistant"工具。 3、步骤2:选择"创建数据库"。 4、步骤3:选择数据库模板。 5、步骤4:选择"专用服务器模式"。 6、步骤5:设置初始化参数。 7、其它默认,点击"完成"。 创建一个数据库实例,在系统服务里会增加一个服务,名为:"OracleServer"+所创建的数据库实例的SID,该服务需要启动。 二、接着需要配置监听文件,如果没有的话,在OEM中"将数据库添加到数",打开,输入SYSTEM/PASSWORD,会提示没有监听器的。 监听文件路径:ORAHOME/ora92/network/admin/listener.ora 另外监听器日志文件路径是:ORAHOME/ora92/network/log/listener.log 用编辑器打开listener.ora文件,修改设置信息。例如(下面是一个完成的文件内容): # LISTENER.ORA Network Configuration File: D:\oracle\ora92\network\admin\listener.ora # Generated by Oracle configuration tools. LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 86.16.24.88)(PORT = 1521)) ) ) )

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

修改oracle实例名(sid)和数据库名(db_name)

修改oracle实例名(sid)和数据库名(db_name) 有时我们需要修改数据库的sid和dbname,除了使用rman进行备份恢复之外,也可以通过手工方式修改,主要由两个主要过程完成: 1、修改实例名(SID) 2、修改数据库名(dbname) 下面演示将数据库sid和dbname由orcl修改为cnhtm的过程: 1、修改实例名(sid) 1.1、检查原来的数据库实例名(sid) oracle@oracle[/home/oracle]> echo $ORACLE_SID orcl oracle@oracle[/home/oracle]> sqlplus / as sysdba SQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:14:49 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options sys@ORCL> select instance from v$thread; INSTANCE -------------------------------------------------------------------------------- orcl 1.2、关闭数据库 注意不能用shutdown abort,只能是shutdown immediate或shutdown normal

Oracle数据库管理与应用实例教程(刘志成)课后习题及答案

【填空题】 1.默认情况OEM的URL地址是https://sd04:1158/em(其中sd04为机器名) 2.Oracle9i发布于2001,i代表Internet,11G发布于2007,g代表grid(网格) 3.在oracle内存结构中,保存正在执行或可能执行的代码的区是代码区 4.在oracle进程结构中,用于实现进程监控功能的进程是PMON 1.Oracle数据库系统的物理存储结构主要由3类文件组成,分别为数据文件、重做日志文件、控制文件。 2.一个表空间物理上对应一个或多数据文件 3.在oracle的逻辑存储结构中,根据存储数据的类型,可以将段分成为数据段、索引段、回滚段、LOB段和临时段。 1.在设计表时,对于邮政编码最适合的数据类型是CHAR 2.在alter table语句中,如果要删除列,可以通过指定DROP COLUMN关键字来实现。 3.如果需要在表中插入一批已经存在的数据,可以在insert语句中使用SELECT语句。 4创建一个update语句来修改goods表中的数据,并且把每一行的t-id值都改成15,应该使用的SQL语句是UPDATE SCOTT.Goods SET t_ID=’15’ 5.使用DESC命令可以显示表的结构信息 6.两个表的主关键字和外关键字的数据应该对应一致,这是属于引用完整性,通常可以通过主键和外键来实现。 7.UNIQUE约束通过确保在列中不输入重复值保证一列或多列的实体完整性。 1.在select语句中选择满足条件的记录使用where关键字,分组之后进行选择使用having 关键字 2.用来返回特定字段中所有值得总和的聚合函数是SUM 3.编写查询语句时,使用%通配符可以匹配多个字符。 18.集合运算符UNION实现集合的并运算,操作符INTERSECT实现了对集合的交运算,而MINUS则实现了减运算 19.如果要定义只读的视图,可以在创建视图时使用READ ONLY关键字 20.删除视图的PL\SQL语句是DROP VIEW [用户方案.]视图名 21.在使用CREATE INDEX创建索引时,使用BITMAP关键字可以创建位图索引 22.聚集(Cluster)是存储表数据的可选择的方法。一个聚集是一组表,将具有同一公共列值的行存储在一起,并且它们经常一起使用,表中相关的列称为聚集键 23.在为表中某个列定义PRIMARY KEY约束PK_ID后,则系统默认创建的索引名为PK_ID 24.如果表中某列的基数比较低,则应该在该列上创建反向索引 25.如果要获知索引的使用情况,可以通过查询DBA_INDEXES视图,而要获知索引的当前状态,可以查询INDEX_STATS视图。 26. 在Oracle的PL/SQL程序中,除了可以使用Oracle规定的数据类型外,还可以使用%TYPE 类型的变量,由系统根据检索的数据表列的数据类型决定该变量的类型,也可以使用%ROWTYPE 类型的变量用来一次存储从数据表中检索的一行数据。 27. SYSDATE函数可以获得当前系统的日期,SUBSTR(s,start,len)函数可以实现从指定的字符串中取指定长度的字符串。 28. 用来变异存储过程的PL/SQL语句是ALTER PROCEDURE,CREATE FUNCTION语句可以用来创建函数。

ORACLE_BASE、ORACLE_HOME有什么区别

ORACLE_BASE、ORACLE_HOME有什么区别 比如oracle 有两款产品,数据库以及其他的。在装的过程中都会装载ORACLE_BASE目录下。ORACLE_HOME 目录就是数据库的家目录。 例如:如果装了2个版本的oracle,那么ORACLE_BASE可以是一个,但ORACLE_HOME是2个。 ORACLE_BASE下是admin和product ORACLE_HOME下则是ORACLE的命令、连接库、安装助手、listener等等一系列的东东。 这只是ORACLE自己的定义习惯。ORACLE_HOME比ORACLE_BASE目录要更深一些。也就是说:ORACLE_HOME=$ORACLE_BASE/product/version ORACLE_BASE是oracle的根目录,ORACLE_HOME是oracle产品的目录。 简单说,你如果装了2个版本的oracle,那么ORACLE_BASE可以是一个,但ORACLE_HOME是2个 全局数据库名用于区别分布式数据库各个不同机器上的实例。 SID用于区别同一台机器上的不同实例, 即一个用于外部区分。 一个用于内部区分。 关于数据库名(db_name)、实例名(instance_name)、ORACLE_SID -------------------------------------------------------------------------------- https://www.doczj.com/doc/881262169.html,发布日期:2004-9-16 浏览次数: 作者:jrlee 关于数据库名(db_name)、实例名(instance_name)、ORACLE_SID 最近因看到论坛有人问起这方面的东西,将自己的理解加上查阅相关资料整理如下,如果不全或不当的地方,望指正并补全它。 数据库名(DB_NAME)、实例名(Instance_name)、以及操作系统环境变量(ORACLE_SID) 在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。在ORACLE8i、9i中出现了新的参数,即数据库域名(db_domain)、服务名(service_name)、以及操作系统环境变量(ORACLE_SID)。这些都存在于同一个数据库中的标识,用于区分不同数据库的参数。 一、什么是数据库名(db_name)? 数据库名是用于区分数据的内部标识,是以二进制方式存储于数据库控制文件中的参数,在数据安装或

Oracle数据库基础题库【含答案】

1、判断题,正确请写写"T",错误请写写"F", 1、oracle数据库系统中,启动数据库的第一步是启动一个数据库实 例。( T )2、Oracle服务器端的监听程序是驻留在服务器上的单独 进程,专门负责响应客户机的连接请求。( F) 3、oracle数据库中实例和数据库是一一对应的(非ORACLE并行服务, 非集群)。( T) 4、系统全局区SGA 是针对某一服务器进程而保留的内存区域,它是不 可以共享的。( F ) 5、数据库字典视图ALL_***视图只包含当前用户拥有的数据库对象信 息。( F ) 8、数据字典中的内容都被保存在SYSTEM表空间中。( T ) 9、HAVING后面的条件中可以有聚集函数,比如SUM(),AVG()等, WHERE 后面的条件中也可以有聚集函数。( F ) 10、"上海西北京" 可以通过like ‘%上海_’查出来。( F ) 11、表空间是oracle 最大的逻辑组成部分。Oracle数据库由一个或多 个表空间组成。一个表空间由一个或多个数据文件组成,但一个数据文 件只能属于一个表空间。( T ) 12、表空间分为永久表空间和临时表空间两种类型。( T ) 13、truncate是DDL操作,不能 rollback。( T ) 14、如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使 用WHERE语句。( F ) 15、Oracle数据库中字符串和日期必须使用双引号标识。( F ) 16、Oracle数据库中字符串数据是区分大小写的。( T ) 17、Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特 殊操作时候保证操作能正常进行。( F ) 18、为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字 段列表的末尾。( T )  20、在连接操作中,如果左表和右表中不满足连接条件的数据都出现在 结果中,那么这种连接是全外连接。( T ) 21、自然连接是根据两个表中同名的列而进行连接的,当列不同名时, 自然连接将失去意义。( T ) 23、PL/SQL代码块声明区可有可无。( T ) 24、隐式游标与显式游标的不同在于显式游标仅仅访问一行,隐式的可 以访问多行。( F )

Oracle 数据库 常用命令

SPOOL将屏幕所有的输出输出到指定文件 -- spool 文件路径名; spool g:\mysql.sql; --业务操作 --结束输出 spool off; 执行一个SQL脚本文件 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。 --start file_name -- @ file_name start g:\mysql.sql; @ g:\mysql.sql; 对当前的输入进行编辑 edit ed 重新运行上一次运行的sql语句 / 显示一个表的结构 desc table_name ; 清屏 clear screen; 退出 exit; 置当前session是否对修改的数据进行自动提交 --SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n} set autocommit on; 在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句 -- SET ECHO {ON|OFF}; set echo on; 是否显示当前sql语句查询或修改的行数 --SET FEED[BACK] {6|n|ON|OFF}

-- 默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数 set feedback 1; 是否显示列标题 --当set heading off 时,在每页的上面不显示列标题,而是以空白行代替 --SET HEA[DING] {ON|OFF} set heading on; 设置一行可以容纳的字符数 -- 如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示 --SET LIN[ESIZE] {80|n} set linesize 100; 设置页与页之间的分隔 -- SET NEWP[AGE] {1|n|NONE} --当set newpage 0 时,会在每页的开头有一个小的黑方框。 --当set newpage n 时,会在页和页之间隔着n个空行。 --当set newpage none 时,会在页和页之间没有任何间隔 set newpage 1; 设置一页有多少行数 --如果设为0,则所有的输出内容为一页并且不显示列标题 --SET PAGES[IZE] {24|n} set pagesize 20; 是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。 --SET SERVEROUT[PUT] {ON|OFF} set serveroutput on; 是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。 --在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,--设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度 --SET TERM[OUT] {ON|OFF} set termout off; 在dos里连接oracle数据库 CONNECT user_name/passwd@l_jiayou

Oracle数据库链接建立技巧与实例讲解

Oracle数据库链接建立技巧与实例讲解 数据库链接(DATABASE LINK)是在分布式环境下,为了访问远程数据库而创建的数据通信链路。数据库链接隐藏了对远程数据库访问的复杂性。通常,我们把正在登录的数据库称为本地数据库,另外的一个数据库称为远程数据库。有了数据库链接,可以直接通过数据库链接来访问远程数据库的表。常见的形式是访问远程数据库固定用户的链接,即链接到指定的用户,创建这种形式的数据库链接的语句如下: CREATE DATABASE LINK 链接名 CONNECT TO 账户 IDENTIFIED BY 口令 USING 服务名; 创建数据库链接,需要CREATE DATABASE LINK系统权限。 数据库链接一旦建立并测试成功,就可以使用以下形式来访问远程用户的表。 表名@数据库链接名 例:在局域网上创建和使用数据库链接。 步骤1:创建远程数据库的服务名,假定局域网上另一个数据库服务名为MYDB_REMOTE。 步骤2:登录本地数据库SCOTT账户,创建数据库链接: CONNECT SCOTT/TIGER@MYDB CREATE DATABASE LINK abc CONNECT TO scott IDENTIFIED BY tiger USING 'MYDB_REMOTE'; 执行结果为: 数据库链接已创建。 查询远程数据库的数据: SELECT * FROM emp@abc; 结果略。 步骤4:一个分布查询: SELECT ename,dname FROM emp@abc e,dept d WHERE e.deptno=d.deptno; 结果略。

如何区分Oracle的数据库,实例,服务名,SID

什么是数据库,其实很简单,数据库就是存储数据的一种媒介。比如常用的文件就是一种,在Oracle10G中,数据的存储有好几种。第一种是文件形式,也就是在你的磁盘中创建一批文件,然后在这些文件中存储信息。第二种就是磁盘阵列形式,这个是什么意思呢,这个就是说明数据库不是存放为某个文件,而是把一个或者多个磁盘格式化成Oracle的一种格式了,等于整个磁盘就是存放Ora cle数据库的,不能作为别的用途。这样的优点是存储性能高,因为不再借助别的文件格式了,而是把整个磁盘都成为Oracle最适应的文件系统格式。当然还可能有别的形式,比如网络什么的。不过我们最常用的还是文件格式的,在文件格式中,数据库指的就是那些数据文件,控制文件以及REDO文件等等一系列文件。 而什么是Instance呢,Instance其实就是指的操作系统中一系列的进程以及为这些进程所分配的内存块。在Oracle中,我们可以新建一个Oracle的Insta nce,这个时候虽然有了进程还有SGA等一系列的内存快,但是这个时候并没有把数据库文件读取进来。所以只是一个实例,在后来,你可以通过命令手动或者自动地把数据库文件加载进我们的数据库Instance中,这个时候的数据库才可以让我们真正的开始访问操作。 所以说,数据库的应用如果想实现,数据库和数据库Instance是缺一不可的,如果只有数据库的那些文件,那么,只能代表数据在这个文件中,但是我们无法直接进行操作。而如果只有数据库Instance,那么我们虽然可以急性操作,但是也不知道操作哪些数据,操作生成的数据也无法保存等等。所以,当一个Or acle Instance真正Load了一个Oracle Database了以后,数据库才可以被我们使用。

ORACLE数据库日常维护手册(最全+最实用)

ORACLE 日常维护手册 查看数据库版本 SELECT*FROM V$VERSION; 查看数据库语言环境 SELECT USERENV('LANGUAGE')FROM DUAL; 查看ORACLE实例状态 SELECT INSTANCE_NAME,HOST_NAME,STARTUP_TIME,STATUS,DATABASE_STATUS FROM V$INSTANCE; 查看ORACLE监听状态 lsnrctl status 查看数据库归档模式 SELECT NAME,LOG_MODE,OPEN_MODE FROM V$DATABASE; 查看回收站中对象 SELECT OBJECT_NAME,ORIGINAL_NAME,TYPE FROM RECYCLEBIN; 清空回收站中对象 PURGE RECYCLEBIN; 还原回收站中的对象 FLASHBACK TABLE"BIN$GOZUQZ6GS222JZDCCTFLHQ==$0" TO BEFORE DROP RENAME TO TEST;

闪回误删除的表 FLASHBACK TABLE AAA TO BEFORE DROP; 闪回表中记录到某一时间点 ALTER TABLE TEST ENABLE ROW MOVEMENT; FLASHBACK TABLE TEST TO TIMESTAMP TO_TIMESTAMP('2009-10-15 21:17:47','YYYY-MM-DD HH24:MI:SS'); 查看当前会话 SELECT SID,SERIAL#,USERNAME,PROGRAM,MACHINE,STATUS FROM V$SESSION; 查看DDL锁 SELECT* FROM DBA_DDL_LOCKS WHERE OWNER ='FWYANG'; 检查等待事件 SELECT SID, https://www.doczj.com/doc/881262169.html,ERNAME, EVENT, WAIT_CLASS, T1.SQL_TEXT FROM V$SESSION A, V$SQLAREA T1 WHERE WAIT_CLASS <>'Idle' AND A.SQL_ID = T1.SQL_ID; 检查数据文件状态 SELECT FILE_NAME,STATUS FROM DBA_DATA_FILES; 检查表空间使用情况 SELECT UPPER(F.TABLESPACE_NAME) "表空间名", D.TOT_GROOTTE_MB "表空间大小(M)", D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)", TO_CHAR(ROUND((D.TOT_GROOTTE_MB -F.TOTAL_BYTES)/D.TOT_GROOTTE_MB *100, 2), '990.99') "使用比", F.TOTAL_BYTES "空闲空间(M)",

JAVA中通过JDBC(THIN方式)连接ORACLE数据库 程序示例

Java中通过jdbc(thin方式)连接Oracle数据库 package com.jdbc.OracleTest; import java.sql.DriverManager; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class OracleJdbcConnectionTest{ /** *Java中通过jdbc(thin方式)连接Oracle数据库 *by jarin2008年12月13日 * *@param args */ public static void main(String[]args){ try{ //第一步要Jar包:在oracle安装的目录下,盘 符:\oracle\ora92\jdbc\lib\ojdbc14.jar //加载驱动 Class.forName("oracle.jdbc.driver.OracleDriver"); //连接字符串(协议名:jdbc,子协议名:oracle:thin子名 称:@localhost:1521:oracleDB) String url="jdbc:oracle:thin:@localhost:1521:ora92"; try{ //建立连接 Connection conn=DriverManager.getConnection(url, "scott","1234"); //创建Statement或者是PreparedStatement语句 Statement st=conn.createStatement(); String sqlStr="select ename from emp"; //执行查询 ResultSet rs=st.executeQuery(sqlStr); //遍历结果

实验一-ORACLE数据库的安装、配置与基本操作知识讲解

实验一-O R A C L E数据库的安装、配置与基 本操作

实验一(2学时) oracle数据库的安装、配置与基本操作 实验目的 1、掌握使用OUI安装oracle服务器与客户端; 2、掌握服务器与客户端的基本网络配置; 3、熟悉OEM的基本功能; 4、掌握使用OEM查看oracle服务器的组成及环境参数; 5、掌握使用OEM创建表空间、表; 6、掌握使用OEM启动、关闭oracle服务器; 7、熟悉ORACLE在windows操作系统环境下的物理组成及 Oracle默认的OFA体系结构; 8、熟悉SQL*PLUS环境及常用编辑命令; 第一部分指导――――――――――――――――――――――――――――――――――――――― 练习1:使用OUI安装oracle9i服务器与客户端; 问题 熟悉oracle9i OUI,能够通过OUI安装定制用户需要的oracle组件; 分析

Oracle9i OUI是一个基于JAVA的安装软件(三张光盘),用户通过OUI可以选择性地安装oracle服务器+客户端,单纯的客户端,以及OEM高级应用必须的OMS(oracle manager server)。 解决方案 (1)将Oracle9i第一张安装盘放入光驱->双击setup.exe(自动播放也可) 图1-1 安装欢迎界面 (2)下一步文件定位 路径:安装文件的位置及名称 目标: “名称”: oracle系统文件的存放“路径“的逻辑名称

图1-2 文件定位 (3)下一步可用产品 Oracle datebase9.2.0.1.0: oracle数据库服务器端+客户端Oracle9i management integration9.2.0.1.0: OMS Oracle9i client9.2.0.1.0:oracle数据库客户端 图1-3 可用产品 (4)下一步安装类型

ORACLE_SID

详解:oracle10G 数据库名、实例名、ORACLE_SID 【转载】 数据库名、实例名、数据库域名、全局数据库名、服务名, 这是几个令很多初学者容易混淆的概念。相信很多初学者都与我一样被标题上这些个概念搞得一头雾水。我们现在就来把它们弄个明白。 一、数据库名 什么是数据库名? 数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。格式如下: DB_NAME=myorcl ... 在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。假设用户修改了参数文件中的数据库名,即修改DB_NAME 的值。但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。 数据库名的作用 数据库名是在安装数据库、创建新的数据库、创建数据库控制文件、修改数据结构、备份与恢复数据库时都需要使用到的。 有很多Oracle安装文件目录是与数据库名相关的,如: winnt: d:\oracle\product\10.1.0\oradata\DB_NAME\... Unix: /home/app/oracle/product/10.1.0/oradata/DB_NAME/... pfile: winnt: d:\oracle\product\10.1.0\admin\DB_NAME\pfile\ini.ora Unix: /home/app/oracle/product/10.1.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora 跟踪文件目录: winnt: /home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/... 另外,在创建数据时,careate database命令中的数据库名也要与参数文件中DB_NAME参数的值一致,否则将产生错误。 同样,修改数据库结构的语句alter database,当然也要指出要修改的数据库的名称。 如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount 方式启动实例,然后以create controlfile命令创建控制文件,当然这个命令中也是指指DB_NAME。 还有在备份或恢复数据库时,都需要用到数据库名。 总之,数据库名很重要,要准确理解它的作用。 查询当前数据名 方法一:select name from v$database; 方法二:show parameter db 方法三:查看参数文件。 修改数据库名 前面建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名

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