oracle数据库db_name,instance_name,ORACLE_SID,db_domain,global_name,service_name,net_service_name

合集下载

Oracle的几个概念数据库名,全局数据库名,SID,实例,命名空间,schema

Oracle的几个概念数据库名,全局数据库名,SID,实例,命名空间,schema
实例发送请求,oracle实例负责向数据库获取数据。Oracle实例 = 内存结构+后台进程,所以Oracle实例是临时性的;可以通过startup nomount去启动实例,但是注意这时Oracle数据
库并没有启动,需要用open去启动数据库;一个实例只能对应一个数据库,一个数据库可以用多个实例;命名空间,有点复杂。命名空间定义了一组对象类型,在命名空间里,对象的名
Oracle9i 数据库的全域数据库名称;在您更改 DB_NAME 与 DB_DOMAIN 这两个起始参数后必须将 Oracle9i 数据库重新激活才会生效。此外,控制档也必须重新建立。 关于 DB_NAME
起始参数DB_NAME必须是文字字符串,且不能超过 8 个字符。在建立数据库的过程中,DB_NAME设定值会记录在资料文件、控制文件、以及重置日志文件之中。如果您激活 Oracle9i
的视图,至少,在一个schema中是不可能出现这种现象的;下面的对象类型有各自的命名空间:? Indexes? Constraints? Clusters? Database triggers? Private database links?
Dimensions所以你可以创建一个叫做myObject1的索引,即使在相同的schema中;不受Schema局限的对象类型(Non schema objects)有它们自己的命名空间,如下:? User roles?
而「网域名称」则是设定于 DB_DOMAIN 参数。这两个参数合并之后就可以在网际网络上唯一识别每一个 Oracle9i 数据库。举例来说,假设我们欲建立的 Oracle9i 数据库之全域数据库
名称为 ,那么可在起始参数档内设定下列两参数:DB_NAME = mydbDB_DOMAIN = Tips: 您可以执行 ALTER DATABASE RENAME GLOBAL_NAME 指令更改

oracle下的数据库实例、表空间、用户及其表的区分

oracle下的数据库实例、表空间、用户及其表的区分

oracle下的数据库实例、表空间、⽤户及其表的区分完整的Oracle数据库通常由两部分组成:Oracle数据库和数据库实例。

1) 数据库是⼀系列物理⽂件的集合(数据⽂件,控制⽂件,联机⽇志,参数⽂件等);2) Oracle数据库实例则是⼀组Oracle后台进程/线程以及在服务器分配的共享内存区。

在启动Oracle数据库服务器时,实际上是在服务器的内存中创建⼀个Oracle实例(即在服务器内存中分配共享内存并创建相关的后台内存),然后由这个Oracle数据库实例来访问和控制磁盘中的数据⽂件。

Oracle有⼀个很⼤的内存快,成为全局区(SGA)。

⼀、数据库、表空间、数据⽂件1、数据库数据库是数据集合。

Oracle是⼀种数据库管理系统,是⼀种关系型的数据库管理系统。

通常情况了我们称的“数据库”,并不仅指物理的数据集合,他包含物理数据、数据库管理系统。

也即物理数据、内存、操作系统进程的组合体。

我们在安装Oracle数据库时,会让我们选择安装启动数据库(即默认的全局数据库)如下图:全局数据库名:就是⼀个数据库的标识,在安装时就要想好,以后⼀般不修改,修改起来也⿇烦,因为数据库⼀旦安装,数据库名就写进了控制⽂件,数据库表,很多地⽅都会⽤到这个数据库名。

启动数据库:也叫全局数据库,是数据库系统的⼊⼝,它会内置⼀些⾼级权限的⽤户如SYS,SYSTEM等。

我们⽤这些⾼级权限账号登陆就可以在数据库实例中创建表空间,⽤户,表了。

查询当前数据库名:select name from v$database;2、数据库实例⽤Oracle官⽅描述:实例是访问Oracle数据库所需的⼀部分计算机内存和辅助处理后台进程,是由进程和这些进程所使⽤的内存(SGA)所构成⼀个集合。

其实就是⽤来访问和使⽤数据库的⼀块进程,它只存在于内存中。

就像Java中new出来的实例对象⼀样。

我们访问Oracle都是访问⼀个实例,但这个实例如果关联了数据库⽂件,就是可以访问的,如果没有,就会得到实例不可⽤的错误。

Oracle数据库名、实例名、Oracle_SID

Oracle数据库名、实例名、Oracle_SID

Oracle数据库名、实例名、Oracle_SID本⽂参考⾃,纯属读书笔记,加深记忆在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。

在ORACLE8i、9i中出现了新的参数,即数据库域名(db_domain)、服务名(service_name)、以及操作系统环境变量(ORACLE_SID)。

这些都存在于同⼀个数据库中的标识,⽤于区分不同数据库的参数。

1、数据库名数据库名是⽤于区分数据的标识,是以⼆进制形式存储于数据库控制⽂件中的参数,在数据库安装或者创建之后不得修改,在数据库创建之后,该参数将被写⼊到数据库控制参数⽂件pfile中,其基本格式如下:.........db_name="orcl" #(不允许修改)db_domain=instance_name=orclservice_names=control_file=(........................注:每⼀个运⾏Oracle 8i及以上的数据库都有⼀个数据库名。

但如果服务器程序创建了两个数据库,那么就会有两个数据库名,它们分别存储与不同的数据库控制参数⽂件pfile中,分别控制着对应的数据库。

2、数据库实例名数据库实例名是⽤于和操作系统之间的联系,⽤于对外部连接时使⽤。

在操作系统中,要取得于数据库之间的联系必须通过实例名。

⽐如:要和某⼀个数据库Server进⾏连接,必须通过实例名,只知道数据库名是没⽤的,与数据库名不同的是,数据库实例名在数据库的安装或者创建之后,是可以被修改的。

数据库在安装之后,对应的实例名会被写⼊到数据库控制参数⽂件pfile(格式如下代码块)中,可以通过修改这个⽂件,来修改Oracle数据库的实例名,当然,数据库名是不能修改的!db_name="orcl" #(数据库名:不允许修改)db_domain=instance_name=orcl #(数据库实例名:可以修改,可以与db_name相同也可不同)service_names=control_file=(........................3、数据库名和实例名之间的关系a、数据库名于实例名之间的关系⼀般是⼀⼀对应,有⼀个数据库名,就有⼀个实例名。

ORACLE数据库与实例的关系

ORACLE数据库与实例的关系

ORACL‎E数据库与‎实例的关系‎1 数据库名1.1 数据库名的‎概念数据库名(db_na‎m e)就是一个数‎据库的标识‎,就像人的身‎份证号一样‎。

如果一台机‎器上装了多‎个数据库,那么每一个‎数据库都有‎一个数据库‎名。

在数据库安‎装或创建完‎成之后,参数DB_‎‎NAME被‎写入参数文‎件之中。

数据库名在‎$O racl‎e_HOME‎/admin‎/db_na‎m e/pfile‎/init.ora(或$ORACL‎E_BAS‎E/admin‎/db_na‎m e/pfile‎/init.ora或$ORACL‎E_HOM‎E/dbs/SPFIL‎E<实例名>.ORA)文件中############################################ Datab‎a se Ident‎i fica‎t ion###########################################db_do‎m ain=""db_na‎m e=orcl在创建数据‎库时就应考‎虑好数据库‎名,并且在创建‎完数据库之‎后,数据库名不‎宜修改,即使要修改‎也会很麻烦‎。

因为,数据库名还‎被写入控制‎文件中,控制文件是以二进‎制型式存储‎的,用户无法修‎改控制文件‎的内容。

假设用户修‎改了参数文‎件中的数据‎库名,即修改DB‎‎_NAME‎的值。

但是在Or‎‎acle启‎动时,由于参数文件中的DB‎‎_NAME‎与控制文件‎中的数据库‎名不一致,导致数据库‎启动失败,将返回OR‎‎A-01103‎错误。

1.2 数据库名的‎作用数据库名是‎在安装数据‎库、创建新的数‎据库、创建数据库‎控制文件、修改数据结‎构、备份与恢复‎数据库时都‎需要使用到‎的(注意这些时‎候不能使用‎s i d,还有alt‎‎e r datab‎a se时都‎是使用数据‎库名)。

有很多Or‎‎acle安‎装文件目录‎是与数据库‎名相关的,如:winnt‎: F:\oracl‎e\produ‎c t\10.2.0\orada‎t a\DB_NA‎M E\...又如参数文‎件p fil‎‎e:winnt‎: F:\oracl‎e\produ‎c t\10.2.0\admin‎\DB_NA‎M E\pfile‎\init.ora.54200‎88572‎9如果控制文‎件损坏或丢‎失,数据库将不‎能加载,这时要重新‎创建控制文‎件,方法是以n‎‎omoun‎t方式启动‎实例,然后以cr‎‎eate contr‎o lfil‎e命令创建‎控制文件,当然这个命‎令中也要指‎明D B_N‎‎A ME。

oracle更改数据库名的方法

oracle更改数据库名的方法

oracle更改数据库名的⽅法如何修改数据库名(db_name)及实例名(Instance_name or Service_name)Nid是Oracle从9iR2开始提供的⼯具,可以⽤来更改数据库名称,⽽⽆需通过之前重建控制⽂件等繁琐⽅式。

nid是⾃带的⼯具,在oracle_home/bin⽬录中.以下⽅法假设登陆到数据库本机做。

⽬的:在本例中,假设原来的数据库名为orcl,要改成dborcl,原实例名(service_name,instance_name)orcl,要改成dborcl. 步骤概述:1.检查当前的参数情况2.shutdown数据库,然后mount数据库3.运⾏nid命令4.更改参数⽂件pfile.ora(db_name,instance_name)5.检测更改情况6.如果是windows平台,要修改服务7.修改监听服务C:\Documents and Settings\Administrator>sqlplus "/as sysdba"SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 10⽉ 22 11:56:33 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.连接到:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionsSQL> select * from v$version;BANNER----------------------------------------------------------------Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProdPL/SQL Release 10.2.0.1.0 - ProductionCORE 10.2.0.1.0 ProductionTNS for 32-bit Windows: Version 10.2.0.1.0 - ProductionNLSRTL Version 10.2.0.1.0 - Production1. 查看更改前的相应名称SQL> show parameter nameNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_file_name_convert stringdb_name string orcldb_unique_name string orclglobal_names boolean FALSEinstance_name string orcllock_name_space stringlog_file_name_convert stringservice_names string orcl2. --先shutdown数据库SQL> shutdown immediate数据库已经关闭。

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.oraUnix: /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参数的值一致,否则将产生错误。

Oracle数据库体系结构

Oracle数据库体系结构

Oracle数据库体系结构⼀、oracle数据库体系结构基本组成:Oracle server:⼀般情况下是⼀个instance和⼀个database组成⼀般:1个instance只能对应⼀个数据库。

特殊:1个数据库可以有多个instance(RAC)⼀台服务器上同时可装多套版本的数据库软件,每个数据库软件可建多个数据库,但是每个数据库只对应⼀个instance,也可以理解成每个数据库只有⼀个SID 。

利⽤DBCA建出的每个库都是相对独⽴的,在同⼀服务器上如果创建多库必须将环境变量的参数⽂件做区分,并且在对实例切换时需如下操作:connect ⽤户名/密码@实例的服务名1.1 oracle服务器和实例1.1.1实例由内存区和后台进程组成①内存区:数据库⾼速缓存、重做⽇志缓存、共享池、流池以及其它可选内存区(如Java池),这些池也称为数据库的内存结构②后台进程:包括系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、⽇志写进程(LGWR)、检验点进程(CKPT)、其它进程(SMON,如归档进程、RECO进程等)③注:要访问数据库必须先启动实例,实例启动时先分配内存区,然后再启动后台进程,后台进程执⾏库数据的输⼊、输出以及监控其它Oracle进程。

在数据库启动过程中有五个进程是必须启动的,它们是系统监控进程(SMON)、进程监控(PMON)、数据库写进程(DBWR)、⽇志写进程(LGWR)、检验点进程(CKPT),否则实例⽆法创建。

1.1.2服务器Oracle服务器由数据库实例和数据⽂件组成,也就是我们常说的数据库管理系统。

数据库服务器除了维护实例和数据库⽂件之外,还在⽤户建⽴与服务器的连接时启动服务器进程并分配PGA1.2 oracle数据库逻辑结构表空间:据库的基本逻辑结构,是⼀系列数据⽂件的集合;段:不同类型数据在数据库中占⽤的空间,有许多区组合⽽成;区:由连续的块组成,⽬的是为数据⼀次性预留⼀个较⼤的空间,oracle为存储空间进⾏分配回收都是以区为单位的;块:最⼩的存储单位,在创建数据库时指定,不能修改。

oracle三个重要参数文件:pfile和spfile和init.ora

oracle三个重要参数文件:pfile和spfile和init.ora

oracle三个重要参数⽂件:pfile和spfile和init.oraOracle中的参数⽂件是⼀个包含⼀系列参数以及参数对应值的操作系统⽂件。

它们是在数据库实例启动第⼀个阶段时候加载的,决定了数据库的物理结构、内存、数据库的限制及系统⼤量的默认值、数据库的各种物理属性、指定数据库控制⽂件名和路径等信息,1、pfile: 初始化参数⽂件(Initialization Parameters Files)pfile是啥呢,pfile的全名就是parameter file,参数⽂件。

pfile是⼀个可编辑的⽂本⽂件,主要内容就是数据库的配置参数,包括内存配置、数据库名、sessions、processes等。

pfile默认路径(windows):/u01/app/oracle/product/11.2.0/db1_s/dbs/initSID.oraOracle 9i之前,ORACLE⼀直采⽤pfile⽅式存储初始化参数,pfile 默认的名称为“init+实例sid.ora”⽂件路径:/u01/app/oracle/product/11.2.0/db1_s/dbs这是⼀个⽂本⽂件,可以⽤任何⽂本编辑⼯具打开。

我们可以直接使⽤指定pfile⽂件启动第⼀阶段数据库sql>startup pfile=/u01/app/oracle/product/11.2.0/db1_s/dbs/init.ora.10152018183435 //通过这个指定这个参数⽂件就可以启动这个数据库了2、spfile:服务器参数⽂件(Server Parameter Files)从Oracle 9i开始,Oracle引⼊了Spfile⽂件,spfile 默认的名称为“spfile+例程名.ora”⽂件路径:/u01/app/oracle/product/11.2.0/db_1/dbs/spfile以后,数据库默认就是读取spfile的配置启动和初始化参数,加载参数到内存中以⼆进制⽂本形式存在,不能⽤vi编辑器对其中参数进⾏修改,只能通过SQL命令在线修改。

oracle数据库基本概念

oracle数据库基本概念

Oracle数据库是一种关系数据库管理系统(RDBMS)。

以下是Oracle数据库的一些基本概念:
1.数据库(Database):物理上表现为数据文件、日志文件和控制文件等,逻辑上以表空
间形式存在。

必须先创建数据库,才能使用Oracle。

2.全局数据库名(Global Database Name):用于区分一个数据库的标识,在安装数据库、
创建数据库、创建控制文件、修改数据库结构、利用RMAN备份时都需要使用。

它由数据库名称和域名构成,使得数据库的命名在整个网络环境中唯一。

3.数据库实例(Database Instance):每个启动的数据库都对应一个数据库实例,由这个
实例来访问数据库中的数据。

4.表空间(Tablespace):一个Oracle数据库能够有一个或多个表空间,而一个表空间则
对应着一个或多个物理的数据库文件,但一个数据库文件只能与一个表空间相联系。

表空间是Oracle数据库恢复的最小单位,容纳着许多数据库实体,如视图、索引、聚簇、回退段和临时段等。

5.关系数据库(Relational Database):按照二维表结构方式组织的数据集合,每个表体
现了集合理论中定义的数学概念——关系。

这些基本概念有助于理解Oracle数据库的结构和运作方式。

解析Oracle数据库中的对象集合schema

解析Oracle数据库中的对象集合schema

解析Oracle数据库中的对象集合schema搭建⼀个oracle,下⾯会有很多schema,每个schema下的数据都不影响。

感觉和mysql的库的概念很像,现在⽤的数据库管理系统其实也是这么划分的,mysql⽤的ip+port+库标识,oracle⽤ip+port+schema标识,平时还总听到⼀个实例的概念,我的理解就是实例就是⼀系列相关进程,代表了⼀个数据库服务。

⽬前线上为了节省资源,常常把机器分成多个实例,⽤不同的端⼝号标识,每个实例上有多个schema。

旭哥跟我说的很形象,oracle⼀个实例上有对应多个库。

mysql⼀个库上应多个实例。

mysql的建库很灵活。

websql中⼀⾏数据中,name为mgmt_view,displayName为mgmt_view@dev_crm,jdbc为jdbc:oracle:thin:@10.232.31.XXX:1521:newcrm,jdbcusername为dev_ddl,DSName为dev_crm,DBName为newcrm(和jdbaURL上的⼀致),DBuser为mgmt_view,TNSName为dev_crm(应该是ora⽂件上的配置)。

name为stat,displayName为stat@dev_dbc ,jdbc为jdbc:oracle:thin:@10.232.31.XXX:1521:dev-dbc,jdbcusername为dev_ddl,DSName为dev-dbc,DBName为dev-dbc(和jdbaURL上的⼀致),DBuser为stat,TNSName为dev_dbc(应该是ora⽂件上的配置),我本地的ora⽂件有如下配置:LOCALTEST =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = )(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = localtest)))这⾥⾯有个serviceName,还有的地⽅是SID,另外最开始还有个LOCALTEST名字,这个标识链接描述符。

Service Name和SID的区别

Service Name和SID的区别

/uid-23072872-id-35661.html数据库名(DB_NAME)、实例名(Instance_name)、以及操作系统环境变量(ORACLE_SID)在ORACLE7、8数据库中只有数据库名(db_name)和数据库实例名(instance_name)。

在ORACLE8i、9i中出现了新的参数,即数据库域名(db_domain)、服务名(service_name)、以及操作系统环境变量(ORACLE_SID)。

这些都存在于同一个数据库中的标识,用于区分不同数据库的参数。

一、什么是数据库名(db_name)?数据库名是用于区分数据的内部标识,是以二进制方式存储于数据库控制文件中的参数,在数据安装或创建之后将不得修改。

数据库安装完成后,该参数被写入数据库参数文件pfile中,格式如下:.........db_name="orcl" #(不允许修改)db_domain=instance_name=orclservice_names=control_file=(........................在每一个运行的ORACLE8i数据库中都有一个数据库名(db_name),如果一个服务器程序中创建了两个数据库,则有两个数据库名。

其控制参数据分属在不同的pfile中控制着相关的数据库。

二、什么是数据库实例名(instance_name)数据库实例名则用于和操作系统之间的联系,用于对外部连接时使用。

在操作系统中要取得与数据库之间的交互,必须使用数据库实例名。

例如,要和某一个数据库server连接,就必须知道其数据库实例名,只知道数据库名是没有用的,与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改。

数据库安装完成后,该实例名被写入数据库参数文件pfile中,格式如下:db_name="orcl" #(不允许修改)db_domain=instance_name=orcl #(可以修改,可以与db_name相同也可不同)service_names=control_file=(........................数据库名与实例名之间的关系数据库名与实例名之间的关系一般是一一对应关系,有一个数据库名就有一个实例名,如果在一个服务器中创建两个数据库,则有两个数据库名,两个数据库实例名,用这两个标识(数据库名和实例名)确定一个数据库,用户和实例相连接。

[最新]Linux修改数据库的sid和dbname查看oracle实例

[最新]Linux修改数据库的sid和dbname查看oracle实例

有时我们需要修改数据库的sid和dbname,除了使用rman进行备份恢复之外,也可以通过手工方式修改,主要由两个主要过程完成:1、修改实例名(SID)2、修改数据库名(dbname)下面演示将数据库sid和dbname由orcl修改为cnhtm的过程:1、修改实例名(sid)1.1、检查原来的数据库实例名(sid)oracle@oracle[/home/oracle]> echo $ORACLE_SIDorcloracle@oracle[/home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:14:49 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionssys@ORCL> select instance from v$thread;INSTANCE--------------------------------------------------------------------------------orcl1.2、关闭数据库注意不能用shutdown abort,只能是shutdown immediate或shutdown normalsys@ORCL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.sys@ORCL> exitDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options1.3、修改oracle用户的ORACLE_SID环境变量,如由orcl修改为cnhtmoracle@oracle[/home/oracle]> cat ~/.bash_profile|grep -i sidORACLE_SID=cnhtmexport ORACLE_BASE ORACLE_HOME ORACLE_SID PATH1.4、修改/etc/oratab文件,将sid名由旧的修改为新的,如从orcl修改为cnhtmoracle@oracle[/home/oracle]> cat /etc/oratab......cnhtm:/oracle/app/10.1:Y+ASM:/oracle/app/10.1:Y1.5、进入到$ORACLE_HOME/dbs目录将所有文件名中包含原来的sid的修改为对应的新sid的如我对如下文件修改为其后对应的文件hc_orcl.dat->hc_cnhtm.datlkORCL->lkCNHTMorapworcl->orapwcnhtmsnapcf_orcl.f->snapcf_cnhtm.fspfileorcl.ora->spfilecnhtm.ora1.6、使新修改的ORACLE_SID环境变量生效oracle@oracle[/oracle/app/10.1/dbs]> . ~/.bash_profileoracle@oracle[/oracle/app/10.1/dbs]> echo $ORACLE_SIDcnhtm1.7、重建口令文件因为口令文件改名后不能在新实例中使用,所以重建oracle@oracle[/oracle/app/10.1/dbs]> orapwdfile=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle entries=5 force=y oracle@oracle[/oracle/app/10.1/dbs]> ls -lrt orapw*-rw-r----- 1 oracle oinstall 2048 Dec 20 11:27 orapwcnhtm1.8、启动数据库oracle@oracle[/oracle/app/10.1/dbs]> sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:29:53 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to an idle instance.idle> startupORACLE instance started.Total System Global Area 167772160 bytesFixed Size 1218292 bytesVariable Size 62916876 bytesDatabase Buffers 96468992 bytesRedo Buffers 7168000 bytesDatabase mounted.Database opened.1.9、检查数据库实例名通过如下语句检查数据库实例名,发现实例名已经由orcl变成cnhtmidle> select instance from v$thread;INSTANCE--------------------------------------------------------------------------------cnhtm2、修改数据库名(dbname)虽然已经修改过了实例名(sid),但是数据库的名称(dbname还是原来的名称orcl)idle> conn / as sysdbaConnected.sys@ORCL> show parameter nameNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_file_name_convert stringdb_name string orcldb_unique_name string orclglobal_names boolean FALSEinstance_name string cnhtmlock_name_space stringlog_file_name_convert stringservice_names string orcl可以通过如下步骤修改数据库名(dbname)2.1、首先切换一下在线日志,使数据库做checkpointsys@ORCL> alter system archive log current;System altered.2.2、生成重建控制文件的脚本sys@ORCL> alter database backup controlfile to trace resetlogs;Database altered.2.3、关闭数据库,需要干净关闭,不能shutdown abortsys@ORCL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.sys@ORCL> exitDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options2.4、进入$ORACLE_BASE/admin/<sid>/udump目录中,找到最新生成的trc文件,这就是重建控制文件的脚本oracle@oracle[/oracle/admin/orcl/udump]> ls -lrttotal 2608-rw-r----- 1 oracle oinstall 577 Nov 7 13:37 orcl_ora_12020.trc......-rw-r----- 1 oracle oinstall 4407 Dec 20 11:36 cnhtm_ora_7789.trc2.5、将找到的trc文件复制一份,并命名为ccf.sqloracle@oracle[/oracle/admin/orcl/udump]> cp cnhtm_ora_7789.trc ccf.sql2.6、修改ccf.sql查找STARTUP NOMOUNT语句,将这一行上面的所有行都删除查找所有以--开始的行,把这些行删除查找所有的orcl修改为cnhtm,所有的ORCL修改为CNHTM找到CREATE CONTROLFILE REUSE DATABASE...语句,将其中的REUSE修改为SET 找到RECOVER DATABASE USING BACKUP CONTROLFILE语句,将其用双横线(--)注释掉如果有精力,可以修改这个脚本中的datafile和logfile部分使用新的文件名称,其实这部分不修改也可以,我为了测试的目的进行了修改,修改后要记得去重命名数据文件和log文件,将对应的数据文件和log文件与这里的名称相对应我修改后的ccf.sql文件内容如下STARTUP NOMOUNTCREATE CONTROLFILE set DATABASE "cnhtm" RESETLOGS ARCHIVELOG MAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 '+DATA/cnhtm/onlinelog/group_1.LOG' SIZE 100M,GROUP 2 '+DATA/cnhtm/onlinelog/group_2.LOG' SIZE 100M,GROUP 3 '+DATA/cnhtm/onlinelog/group_3.LOG' SIZE 100M,GROUP 4 '+DATA/cnhtm/onlinelog/group_4.LOG' SIZE 100MDATAFILE'+DATA/cnhtm/datafile/system01.DBF','+DATA/cnhtm/datafile/undotbs101.DBF','+DATA/cnhtm/datafile/sysaux01.DBF','+DATA/cnhtm/datafile/users01.DBF','+DATA/cnhtm/datafile/example01.DBF','+DATA/cnhtm/datafile/tbs_lmt01.DBF','+DATA/cnhtm/datafile/tbs_lmt_201.DBF','+DATA/cnhtm/datafile/tbs_lmt_301.DBF'CHARACTER SET ZHS16GBK;--RECOVER DATABASE USING BACKUP CONTROLFILE;ALTER DATABASE OPEN RESETLOGS;ALTER TABLESPACE TEMP ADD TEMPFILE'+DATA/cnhtm/tempfile/temp.269.705923003'SIZE 104857600 REUSE AUTOEXTEND ON NEXT 104857600 MAXSIZE 32767M;2.7、修改数据文件、在线日志文件名如果上一步修改了ccf.sql文件中的datafile和logfile段的文件名,这里要将这些文件名重命令为与其一致。

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

oracle数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名
详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名
数据库名、实例名、数据库域名、全局数据库名、服务名 ,
这是几个令很多初学者容易混淆的概念。相信很多初学者都与我一样被标题上这些个概念搞得一头雾水。我们现在就来把它们弄个明白。
一、数据库名
什么是数据库名?
数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。格式如下:
如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。
查询数据库服务名
方法一:select value from v$parameter where name = 'service_name';
方法二:show parameter service_name
方法三:在参数文件中查询。
1.关闭数据库。
2.修改数据库参数文件中的DB_NAME参数的值为新的数据库名。
3.以NOMOUNT方式启动实例,修建控制文件(有关创建控制文件的命令语法,请参考oracle文档)
二、数据库实例名
什么是数据库实例名?
数据库实例名是用于和操作系统进行联系的标识,就是说数据库和操作系统之间的交互用的是数据库实例名。实例名也被写入参数文件中,该参数为instance_name,在winnt平台中,实例名同时也被写入注册表。
且ORACLE_SID必须与instance_name的值一致,否则,你将会收到一个错误,在unix平台,是“ORACLE not available”,在winnt平台,是“TNS:协议适配器错误”。

修改ORACLE实例名

修改ORACLE实例名

修改ORACLE实例名修改数据库的SID举例说明,我的数据库的SID叫testdb,现在要改成oral.更改ORACLE数据库的sid,涉及到的⽤东西⽐较多,但是⼤概来说就以下六步.1、停⽌所有的Oracle服务。

2、修改initSID.ora⽂件,修改instance_name为新的SID3、修改注册表的ORACLE_SID4、修改listener.ora中的SID_NAME5、oradim删除原来SID的服务,添加新SID的服务6、orapwd⽣成新SID的⼝令下⾯我详细的解释⼀下.1、停⽌所有的Oracle服务。

这个没有什么好解释的,根据你的oracle 安装的不同包括数据库的服务,监听器等等.2、修改initSID.ora⽂件,修改instance_name为新的SID找到你的初始化参数⽂件,⾥⾯有下⾯的⼀下参数.db_name = "testdb"instance_name = testdblservice_names = testdb改成db_name = "testdb"instance_name = oralservice_names = oral注意,db_name不要改,因为我们的数据库还是叫testdb,但是它的服务也就是sid,改成oral,否则会报错.修改之后,保存好这个⽂件3、修改注册表的ORACLE_SID在注册表的local machine 下⾯的software下⾯,找到oracle 的hom0主键,下⾯有个参数,叫做ORACLE_SID,改成oral 记住,只改这⼀个.其他的不⽤改了,⽐⽅说服务.等等,否则会报错.4、修改listener.ora中的SID_NAMESID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = E:\oracle\ora81)(PROGRAM = extproc))(SID_DESC =(GLOBAL_DBNAME = testdb)(ORACLE_HOME = E:\oracle\ora81)(SID_NAME = oral)))把⾥⾯的SID_NAME 给成oral,如上⾯的例⼦所表⽰.5、oradim删除原来SID的服务,添加新SID的服务这步⽐较复杂,涉及到oradim命令的⽤法.下⾯我简单的介绍⼀下它的⽤法创建例程:-NEW -SID sid | -SRVC 服务 [-INTPWD ⼝令] [-MAXUSERS 数量] [-STARTMODE a|m] [-PFILE ⽂件] [-TIMEOUT秒]编辑例程:-EDIT -SID sid [-NEWSID sid] [-INTPWD ⼝令] [-STARTMODE auto|manual] [-PFILE ⽂件名] [-SHUTMODE a|i|n][-SHUTTYPE srvc|inst|srvc,inst] [-TIMEOUT 秒]删除例程:-DELETE -SID sid | -SRVC 服务名称启动服务和例程:-STARTUP -SID sid [-USRPWD ⼝令] [-STARTTYPE srvc|inst|srvc,inst] [-PFILE ⽂件名]关闭服务和例程:-SHUTDOWN -SID sid [-USRPWD ⼝令] [-SHUTTYPE srvc|inst|srvc,inst] [-SHUTMODE a | i | n]查询帮助:-? | -h | -help-SID sid指定要启动的实例名称-SRVC 服务指定要启动的服务名称-USRPWD ⼝令指定内部⽤户的⼝令,如果作为NT管理员登录,不⽤此参数-PFILE ⽂件名为实例指明初始化参数⽂件,如果参数⽂件在Oracle的默认位置,则不需要此命令-STARTTYPE srvc|inst|srvc,inst表⽰要启动什么srvc————只启动服务inst————启动实例,服务必须已经启动并开始⼯作了srvc,inst —服务和实例都启动-SHUTTYPE srvc|inst|srvc,inst表⽰要终⽌什么,参数选项同上-STARTMODE a|m表⽰启动实例所使⽤的模式a————auto⽅式(⾃动)m————manual⽅式(⼿动)-SHUTMODE a|i|n表⽰终⽌实例所使⽤的关闭模式a————abort⽅式i————immediate⽅式n————normal⽅式例⼦:在服务⾥⽣成⼀个新的实例管理服务,启动⽅式为⼿⼯oradim -NEW -SID test -STARTMODE manual -PFILE "D:\Oracle\admin\test\pfile\inittest.oraoradim -NEW -SRVC OracleServicetest -STARTMODE manual -PFILE "D:\Oracle\admin\test\pfile\inittest.ora 注:有效的服务名为 “OracleService” 后跟“ SID”-SID test 与 -SRVC OracleServicetest 等价删除此实例或服务oradim -DELETE -SID testoradim -DELETE -SRVC OracleServicetest编辑此实例,启动⽅式改为⼿动oradim -EDIT -SID test -STARTMODE manual编辑此实例,启动⽅式改为⾃动oradim -EDIT -SID test -STARTMODE auto启动testoradim -STARTUP -SID testoradim -STARTUP -SID test -STARTTYPE srvc,inst只启动test服务oradim -STARTUP -SID test -STARTTYPE srvc只启动test实例oradim -STARTUP -SID test -STARTTYPE inst关闭testoradim -SHUTDOWN -SID testoradim -SHUTDOWN -SID test -SHUTTYPE srvc,inst在testdb中我们使⽤oradim –DELETE –SID testdb删除了testdb 实例然后oradim –NEW –SID oral添加新的实例注意,这个命令,可以写到控制⽂件和注册表的服务⾥⾯,我更改后,可以看到在服务⾥⾯,服务名称已经改过来了. 但是这个时候还是不可以登录到oracle.提⽰为权限不⾜.6、orapwd⽣成新SID的⼝令具体的orapwd,我想⼤家都知道了,要创建⼀个密码⽂件就要⽤它,⾄于为什么我们需要重新创建密码⽂件,我还不是很清楚,等我弄清楚了之后,我会把更新我的⽂档.需要注意的是,⽣成的密码⽂件,⼀定要保存到orale home\database下⾯⽽且密码⽂件的名字⼀定要PWDsid.ora具体的为什么我还不是很清楚.好了.现在你可以通知你的客户端,把他们的tnsname.ora中的SZ =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.47.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = oral)))service_name 都改成oral ,就可以⽤了。

Linux修改数据库的sid和dbname 查看oracle 实例

Linux修改数据库的sid和dbname 查看oracle 实例

有时我们需要修改数据库的sid和dbname,除了使用rman进行备份恢复之外,也可以通过手工方式修改,主要由两个主要过程完成:1、修改实例名(SID)2、修改数据库名(dbname)下面演示将数据库sid和dbname由orcl修改为cnhtm的过程:1、修改实例名(sid)1.1、检查原来的数据库实例名(sid)oracle@oracle[/home/oracle]> echo $ORACLE_SIDorcloracle@oracle[/home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:14:49 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining optionssys@ORCL> select instance from v$thread;INSTANCE--------------------------------------------------------------------------------orcl1.2、关闭数据库注意不能用shutdown abort,只能是shutdown immediate或shutdown normalsys@ORCL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.sys@ORCL> exitDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options1.3、修改oracle用户的ORACLE_SID环境变量,如由orcl修改为cnhtmoracle@oracle[/home/oracle]> cat ~/.bash_profile|grep -i sidORACLE_SID=cnhtmexport ORACLE_BASE ORACLE_HOME ORACLE_SID PATH1.4、修改/etc/oratab文件,将sid名由旧的修改为新的,如从orcl修改为cnhtm oracle@oracle[/home/oracle]> cat /etc/oratab......cnhtm:/oracle/app/10.1:Y+ASM:/oracle/app/10.1:Y1.5、进入到$ORACLE_HOME/dbs目录将所有文件名中包含原来的sid的修改为对应的新sid的如我对如下文件修改为其后对应的文件hc_orcl.dat->hc_cnhtm.datlkORCL->lkCNHTMorapworcl->orapwcnhtmsnapcf_orcl.f->snapcf_cnhtm.fspfileorcl.ora->spfilecnhtm.ora1.6、使新修改的ORACLE_SID环境变量生效oracle@oracle[/oracle/app/10.1/dbs]> . ~/.bash_profileoracle@oracle[/oracle/app/10.1/dbs]> echo $ORACLE_SIDcnhtm1.7、重建口令文件因为口令文件改名后不能在新实例中使用,所以重建oracle@oracle[/oracle/app/10.1/dbs]> orapwdfile=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=oracle entries=5 force=y oracle@oracle[/oracle/app/10.1/dbs]> ls -lrt orapw*-rw-r----- 1 oracle oinstall 2048 Dec 20 11:27 orapwcnhtm1.8、启动数据库oracle@oracle[/oracle/app/10.1/dbs]> sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:29:53 2009Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to an idle instance.idle> startupORACLE instance started.Total System Global Area 167772160 bytesFixed Size 1218292 bytesVariable Size 62916876 bytesDatabase Buffers 96468992 bytesRedo Buffers 7168000 bytesDatabase mounted.Database opened.1.9、检查数据库实例名通过如下语句检查数据库实例名,发现实例名已经由orcl变成cnhtmidle> select instance from v$thread;INSTANCE--------------------------------------------------------------------------------cnhtm2、修改数据库名(dbname)虽然已经修改过了实例名(sid),但是数据库的名称(dbname还是原来的名称orcl)idle> conn / as sysdbaConnected.sys@ORCL> show parameter nameNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_file_name_convert stringdb_name string orcldb_unique_name string orclglobal_names boolean FALSEinstance_name string cnhtmlock_name_space stringlog_file_name_convert stringservice_names string orcl可以通过如下步骤修改数据库名(dbname)2.1、首先切换一下在线日志,使数据库做checkpointsys@ORCL> alter system archive log current;System altered.2.2、生成重建控制文件的脚本sys@ORCL> alter database backup controlfile to trace resetlogs;Database altered.2.3、关闭数据库,需要干净关闭,不能shutdown abortsys@ORCL> shutdown immediateDatabase closed.Database dismounted.ORACLE instance shut down.sys@ORCL> exitDisconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - ProductionWith the Partitioning, OLAP and Data Mining options2.4、进入$ORACLE_BASE/admin/<sid>/udump目录中,找到最新生成的trc文件,这就是重建控制文件的脚本oracle@oracle[/oracle/admin/orcl/udump]> ls -lrttotal 2608-rw-r----- 1 oracle oinstall 577 Nov 7 13:37 orcl_ora_12020.trc......-rw-r----- 1 oracle oinstall 4407 Dec 20 11:36 cnhtm_ora_7789.trc2.5、将找到的trc文件复制一份,并命名为ccf.sqloracle@oracle[/oracle/admin/orcl/udump]> cp cnhtm_ora_7789.trc ccf.sql2.6、修改ccf.sql查找STARTUP NOMOUNT语句,将这一行上面的所有行都删除查找所有以--开始的行,把这些行删除查找所有的orcl修改为cnhtm,所有的ORCL修改为CNHTM找到CREATE CONTROLFILE REUSE DATABASE...语句,将其中的REUSE修改为SET 找到RECOVER DATABASE USING BACKUP CONTROLFILE语句,将其用双横线(--)注释掉如果有精力,可以修改这个脚本中的datafile和logfile部分使用新的文件名称,其实这部分不修改也可以,我为了测试的目的进行了修改,修改后要记得去重命名数据文件和log文件,将对应的数据文件和log文件与这里的名称相对应我修改后的ccf.sql文件内容如下STARTUP NOMOUNTCREATE CONTROLFILE set DATABASE "cnhtm" RESETLOGS ARCHIVELOG MAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292LOGFILEGROUP 1 '+DATA/cnhtm/onlinelog/group_1.LOG' SIZE 100M,GROUP 2 '+DATA/cnhtm/onlinelog/group_2.LOG' SIZE 100M,GROUP 3 '+DATA/cnhtm/onlinelog/group_3.LOG' SIZE 100M,GROUP 4 '+DATA/cnhtm/onlinelog/group_4.LOG' SIZE 100MDATAFILE'+DATA/cnhtm/datafile/system01.DBF','+DATA/cnhtm/datafile/undotbs101.DBF','+DATA/cnhtm/datafile/sysaux01.DBF','+DATA/cnhtm/datafile/users01.DBF','+DATA/cnhtm/datafile/example01.DBF','+DATA/cnhtm/datafile/tbs_lmt01.DBF','+DATA/cnhtm/datafile/tbs_lmt_201.DBF','+DATA/cnhtm/datafile/tbs_lmt_301.DBF'CHARACTER SET ZHS16GBK;--RECOVER DATABASE USING BACKUP CONTROLFILE;ALTER DATABASE OPEN RESETLOGS;ALTER TABLESPACE TEMP ADD TEMPFILE'+DATA/cnhtm/tempfile/temp.269.705923003'SIZE 104857600 REUSE AUTOEXTEND ON NEXT 104857600 MAXSIZE 32767M;2.7、修改数据文件、在线日志文件名如果上一步修改了ccf.sql文件中的datafile和logfile段的文件名,这里要将这些文件名重命令为与其一致。

实现单机上一个数据库上同时跑两个实例

实现单机上一个数据库上同时跑两个实例

实现单机上一个数据库上同时跑两个实例一、要求:两个实例名(INSTANCE_NAME)不同,数据库名(DB_NAME)相同二、OS:WIN200SERVER三、数据库:ORACLE9201源数据库名(DB_NAME):STUDY 源数据库实例名:study 克隆数据库名:STUDY 克隆数据库实例名:test四、具体实施步骤:1、关闭源数据库考备数据文件、控制文件、参数文件以及建立bdump,udmp等相应文件夹。

SQL> shutdown immediate数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL>d:\oracle\admin\test\bdumpd:\oracle\admin\test\pfiled:\oracle\admin\test\created:\oracle\admin\test\cdumpd:\oracle\admin\test\udump数据文件存放:D:\oracle\oradata\test\2、修改克隆数据库参数文件:大部分参数据与源数据库相同,主要修改的参数为:Instance_name=testControlfiles=(‘d:\oracle\oradata\test\control01.tcl’, ‘d:\oracle\oradata\test\control01.tcl’,‘d:\oracle\oradata\test\control01.tcl’)background_dump_dest='d:\oracle\admin\test\bdump'core_dump_dest='d:\oracle\admin\test\cdump'user_dump_dest='d:\oracle\admin\test\udump'需要添加参数:lock_name_space=test (说明: 指定分布式锁管理器(DLM) 用来生成锁名称的命名空间。

Oracle 数据库日常巡检

Oracle 数据库日常巡检

Oracle 数据库日常巡检阅读目录1. 检查数据库基本状况2. 检查Oracle相关资源的使用情况3. 检查Oracle数据库备份结果4. 检查Oracle数据库性能5. 检查数据库cpu、I/O、内存性能6. 检查数据库安全性7. 其他检查回到顶部1. 检查数据库基本状况包含:检查Oracle实例状态,检查Oracle服务进程,检查Oracle监听进程,共三个部分。

1.1. 检查Oracle实例状态select instance_name,host_name,startup_time,status,database_status from v$instance;其中“STATUS”表示Oracle当前的实例状态,必须为“OPEN”;“DATABASE_STATUS”表示Oracle当前数据库的状态,必须为“ACTIVE”。

1.2. 检查Oracle在线日志状态select group#,status,type,member from v$logfile;输出结果应该有3条以上(包含3条)记录,“STATUS”应该为非“INVALID”,非“DELETED”。

注:“STATUS”显示为空表示正常。

1.3. 检查Oracle表空间的状态select tablespace_name,status from dba_tablespaces;输出结果中STATUS应该都为ONLINE。

1.4. 检查Oracle所有数据文件状态select name,status from v$datafile;输出结果中“STATUS”应该都为“ONLINE”。

或者:select file_name,status from dba_data_files;输出结果中“STATUS”应该都为“AVAILABLE”。

1.5. 检查无效对象select owner,object_name,object_type from dba_objects where status!='VALID' and owner!='SYS' and owner!='SYSTEM';如果有记录返回,则说明存在无效对象。

oracle连接实例

oracle连接实例

Oracle连接实例什么是Oracle连接实例?Oracle连接实例是指在使用Oracle数据库时,客户端程序通过网络与数据库服务器进行通信来访问数据库中的数据。

连接实例包括了数据库的标识信息、数据库参数配置、内存结构、后台进程等。

通过连接实例,客户端可以发送SQL语句到数据库服务器并获取返回结果。

连接实例的组成部分连接实例由以下几个主要组成部分构成:1.标识信息(Instance Identifier):标识信息是连接实例的唯一标识,它由数据库实例名(Instance Name)和数据库域名(Database Domain)组成。

通过标识信息,客户端可以找到正确的数据库实例进行连接。

2.数据库参数配置(Parameter Configurations):数据库参数配置包括了数据库的运行参数和系统参数。

运行参数决定了数据库在运行过程中的行为,如内存的分配、并发连接数的限制等;系统参数则是数据库的全局配置参数,如内存管理策略、安全配置等。

客户端连接到数据库实例后,可以通过动态修改数据库参数来调整数据库的行为。

3.内存结构(Memory Structures):内存结构是数据库实例在内存中的分配空间。

它包括SGA(System Global Area)和PGA(Program Global Area)两部分。

SGA包含了共享的内存区域,如缓冲区、重做日志缓冲区等,用于提高数据库的性能;PGA是指每个会话独享的私有内存区域,用于存储会话级的数据。

4.后台进程(Background Processes):后台进程是在数据库实例启动时由Oracle自动创建的一些运行在后台的进程。

后台进程负责完成各种任务,如维护数据库的一致性、执行后台作业、将数据写入磁盘等。

常见的后台进程包括PSPn、PMON、SMON、CKPT、LGWR、DBWR等。

连接实例的建立过程在客户端连接到Oracle数据库实例的过程中,涉及到以下几个重要的步骤:1.请求连接:客户端向Oracle数据库服务器发送连接请求。

ORACLE_SID,INSTANCE_NAME,DB_NAME区别

ORACLE_SID,INSTANCE_NAME,DB_NAME区别

下面几个名词我们经常会用到:ORACLE_SID,INSTANCE_NAME,DB_NAME那他们三者有什么区别呢?对于我们常用的单节点环境,他们的名字一般是一样的。

但他们的具体含义是什么呢?今天做自动化测试需要重建实例,正好手动创建实例时,来验证下。

因为理论性跟术语性太强,便借助了老盖等人的一些话,并去掉呵呵等感情词。

一、ORACLE_SID首先,我们从创建数据库实例说起,先使用DBCA创建实例,在下面这个页面,我们停一下:这需要我们输出两个名字,即一个DB_NAME,一个ORACLE_SID。

不过我们输入的时候,一般是只在第一个空格输入,会发现第二个跟随第一个,最终的结果是一模一样的。

那我们直接输出第二个空格呢?我们发现,这是不跟随的。

这里先不解释为什么,我们继续操作,直到最后一步:我们取消掉创建Database,选中最下面的选项,Finish。

这样,我们得到的便是创建数据库的脚本了,我们可以直接用脚本自己来执行创建数据库。

我们到这个目录去看下:创建动作是由这个test.sh脚本发起的。

我们看下它里面有什么:这让我们看清了创建一个实例的三个大步骤:1、创建目录2、设置ORACLE_SID环境变量3、通过调用sqlplus,运行脚本来创建数据库不过如果在windows环境下,还有一个步骤是使用oradim这个工具来创建初始化实例,linux平台用不到。

言归正传,我们先来准备下启动用到的参数文件,复制原始文件:我们尝试直接启动实例,修改inittest.ora中的db_name='TEST',audit_file_dest=audit_file_dest='$ORACLE_BASE/admin/test/adump',db_recovery_file_dest='$ORACLE_BASE/flash_recovery_area',diagnostic_dest='$ORACLE_BASE',即替换所有的<ORACLE_BASE>为$ORACLE_BASE。

oracle数据库名和实例名

oracle数据库名和实例名

第三章数据库名、实例名、服务名数据库名:db_name 数据库实例名:instance_name 操作系统环境变量:oracle_sid 数据库服务名:service_names数据库域名:db_domain 全局数据库名:global_db_name在oracle7、oracle8数据库中只有数据库名以及实例名,在oracle8i、oracle9i中出现了数据库域名、服务名以及全局数据库名。

数据库名(db_name):用于区分一个数据的内部标识,是oracle 的内部标记,是以二进制方式存储于数据库控制文件的参数。

数据库名的作用:数据库名是数据库的内部管理标记,在安装数据库、创建新的的数据库、创建数据库控制文件、修改数据库结构、使用数据库备份与恢复工具进行数据库备份时都需要使用数据名。

数据库安装完成后,数据库名称存储在参数文件(pfile,spfile)中,同时以二进制方式存储在控制文件中,两者必须匹配。

如果两者不匹配,数据库在启动时提示ORA-01103号错误。

■对数据名称的查询:1、查询参数文件db_name的数值2、select name from v$database3、SQL>show parameter db_name■修改数据库名(修改复杂,建议不要修改)1、修改参数文件的数据库名称。

2.重建数据库的控制文件。

数据库实例名(instance_name):用于和操作系统之间的联系。

操作系统与数据库之间的交互则必须使用数据库实例名。

数据库安装完成后,数据库实例名称存储在参数文件中,同时存储在注册表中。

数据库名与实例名一般是一一对应的关系,即:有一个数据库名就有一个实例名,而在oracle9i的并行服务器结构中是一对多的关系,即:一个数据库对应多个实例。

■对数据名称的查询:1、查询参数文件instance_name的数值2、select instance_name from v$instance3、SQL>show parameter instance_name操作系统环境变量(oracle_sid):用于与数据库实例名相对应。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

db_name,instance_name,ORACLE_SID,db_domain,global_name,service_name,net_service_nam e2009-07-29 10:07一、数据库名1.数据库名的概念数据库名(db_name)就是一个数据库的标识,就像人的身份证号一样。

如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。

在数据库安装或创建完成之后,参数DB_NAME被写入参数文件之中。

格式如下:############################################ Database Identification###########################################db_domain=""db_name=orcl在创建数据库时就应考虑好数据库名,并且在创建完数据库之后,数据库名不宜修改,即使要修改也会很麻烦。

因为,数据库名还被写入控制文件中,控制文件是以二进制型式存储的,用户无法修改控制文件的内容。

假设用户修改了参数文件中的数据库名,即修改DB_NAME的值。

但是在Oracle启动时,由于参数文件中的DB_NAME与控制文件中的数据库名不一致,导致数据库启动失败,将返回ORA-01103错误。

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

有很多Oracle安装文件目录是与数据库名相关的,如:winnt: F:\oracle\product\10.2.0\oradata\DB_NAME\...Unix: /home/app/oracle/product/10.2.0/oradata/DB_NAME/...又如参数文件pfile:winnt: F:\oracle\product\10.2.0\admin\DB_NAME\pfile\init.ora.54200885729Unix: /home/app/oracle/product/10.2.0/admin/DB_NAME/pfile/init$ORACLE_SID.ora如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount方式启动实例,然后以create controlfile命令创建控制文件,当然这个命令中也要指明DB_NAME。

3.修改数据库名建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。

现在就来说明一下,如何在已创建数据之后,修改数据库名。

步骤如下:(1)关闭数据库。

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

(3)以NOMOUNT方式启动实例,修建控制文件(有关创建控制文件的命令语法,请参考oracle文档)4.查询当前数据库名方法一: select name from v$database;方法二:show parameter db方法三:查看参数文件二、数据库实例名1.数据库实例名的概念先来解释以下,实例是什么东西。

实例是访问Oracle数据库所需的一部分计算机内存和辅助处理后台进程,是由进程和这些进程所使用的内存(SGA)所构成一个集合,它根本不需要一个与其相关联的数据库,没有任何数据文件也可以启动实例。

下面是Oralce的启动过程:sqlplus / as sysdbasql>startup nomount #启动了一个实例,现在SGA分配了,进程在运行,除数据库所有的东西都启动了sql>alter database mount #利用控制文件(init.ora文件中指定)定位重作文件、数据文件、临时文件sql>alter database open #数据库可供任何人通过这个实例访问。

所以可以这么理解:大家访问Oracle都是访问一个实例,但这个实例如果关联了数据库文件,就是可以访问的,如果没有,就会得到实例不可用的错误。

实例名指的是用于响应某个数据库操作的数据库管理系统的名称。

她同时也叫SID。

实例名是由参数instance_name决定的。

如果这个参数不被指定(即instance_name没有被指定为任何值),那么实例的名字由该用户的环境变量ORACLE_SID(注意这里是大写)决定。

在windows平台下,则是注册表中oracle_sid值决定。

2.实例和数据库实例和数据库之间的区别如下:(1)实例是临时的,它只在相关的进程和内存集合存在时存在;数据库是永久的,只要文件存在它就存在(2)一个实例在其生存期内可安装和打开单个数据库;数据库可以被很多实例安装和打开,或者一个接一个的实例安装和打开,或者由多个实例同时安装和打开(RAC) 顺便提一下RAC,简单来说RAC就是多个实例同时打开一个数据库文件的系统,在结构上是多台机器,每天机器运行一个实例,每个实例都打开同一个数据库(这个是用磁盘共享技术实现的),这些实例之间需要同步高速缓存,这样保证多个实例是完全一致的,不会相互冲突乃至覆盖。

数据库实例名(instance_name)用于对外部连接。

在操作系统中要取得与数据库的联系,必须使用数据库实例名。

例如,要去连接一个数据库服务器,就必须知道其数据库实例名,只知道数据库名是没有用的。

与数据库名不同,在数据安装或创建数据库之后,实例名可以被修改。

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

在一般情况下,数据库名和实例名是一对一的关系,但如果在oracle并行服务器架构(即oracle实时应用集群)中,数据库名和实例名是一对多的关系(一个数据库对应多个实例,同一时间内用户只一个实例相联系,当某一实例出现故障,其它实例自动服务,以保证数据库安全运行) 。

3.查询当前数据库实例名方法一:select instance_name from v$instance;方法二:show parameter instance三、ORACLE_SID在实际中,对于数据库实例的标识有时使用实例名,有时使用ORACLE_SID,它们有什么区别呢?(ORACLE_SID)OS<----------------> ORACLE 数据库<--------(instance_name(实例名))上图表示实例名instance_name、ORACLE_SID与数据库及操作系统之间的关系,虽然这里列出的两个参数都是数据库实例名,但instance_name参数是ORACLE数据库的参数,此参数可以在参数文件中查询到;而ORACLE_SID参数则是操作系统环境变量,与ORACLE_BASE、ORACLE_HOME等用法相同,用于和操作系统交互。

也就是说,在操作系统中要想得到实例名,就必须使用ORACLE_SID。

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

四、数据库域名与全局数据库名1.概念与联系使用数据库名(da_name)对一个数据库进行唯一标识,这种表示对于单个数据库是足够的,但是随着由多个数据库构成的分布式数据库的普及,这种命令数据库的方法给数据库的管理造成一定的负担,因为各个数据库的名字可能一样,造成管理上的混乱。

为了解决这种情况,引入了db_domain参数,这样在数据库的标识是由db_name和db_domain两个参数共同决定的,避免了因为数据库重名而造成管理上的混乱。

这类似于互连网上的机器名的管理。

我们将db_name和db_domain两个参数用‘.’连接起来,表示一个数据库,并将该数据库的名称称为global_name,即它扩展了db_name。

db_name参数只能由字母、数字、’_’、’#’、’$’组成,而且最多8个字符。

数据库域名(db_domain):定义一个数据库所在的域,该域的命名同互联网的’域’没有任何关系,只是数据库管理员为了更好的管理分布式数据库而根据实际情况决定的。

当然为了管理方便,可以将其等于互联网的域。

全局数据库名(global_name):对一个数据库(Oracle database)的唯一标识,oracle建议用此种方法标识数据库。

该值是在创建数据库时决定的,缺省值为db_name. db_domain。

在以后对参数文件中db_name与db_domain参数的任何修改不影响global_name的值,如果要修改Global_name,只能用alter database rename global_name to <db_name.db_domain>命令进行修改,然后修改相应参数。

2.查询数据库域名select * from global_name; (global_name,在建立数据库连接时是非常有用的)方法一:select value from v$parameter where name = 'db_domain';方法二:show parameter domain方法三:在参数文件中查询3.例子全国交通GIS系统的分布式数据库,其中:吉林节点:jl.jtgis吉林长春节点:cc.jl.jtgis河北节点:hb.jtgis河北石家庄节点:sjz.hb.jtgis这些就是数据库域名,数据库域名在存在于参数文件中,她的参数是db_domain.全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:orcl.jl.jtgis五、数据库服务名该参数是oracle8i新引进的。

在8i以前,我们用SID来表示数据库的一个实例,但是在Oracle的并行环境中,一个数据库对应多个实例,这样就需要多网络服务名,设置繁琐。

为了方便并行环境中的设置,引进了service_name参数。

该参数对应一个数据库,而不是一个实例,而且该参数有许多其它的好处。

该参数的缺省值为db_name.db_domain,即等于global_name.如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。

一个数据库可以对应多个service_name,以便实现更灵活的配置。

该参数与SID没有直接关系,即service_name 不必与SID一样。

从Oracle8i开始的oracle网络组件,数据库与客户端连接的主机字符串使用的是数据库服务名。

之前用的是SID,即数据库实例名。

查询数据库服务名方法一:select value from v$parameter where name = 'service_name';方法二:show parameter service_name六、网络服务名网络服务名(net_service_name),又可以称为数据库别名(database alias)。

相关文档
最新文档