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

合集下载

ORACLERAC更改实例名

ORACLERAC更改实例名

ORACLERAC更改实例名规划后的实例名 fqzdbipfqzdb01 192.168.2.33fqzdb02 192.168.2.342.1.1 扫描磁盘(下⾯的操作没有特别提⽰,默认为两个节点都操作)在两个节点上使⽤root⽤户执⾏cfgmg命令识别同步过来的存储磁盘Method error (/usr/lib/methods/cfgpkcs11 -l pkcs11 ):0514-040 Error initializing a device into the kernel.---------报错可忽略扫描完成后,系统/dev⽬录下会⽣成hdisk2......hdisk33磁盘2.1.2 磁盘修改权限修改磁盘的权限⾄660,属组修改为Oracle⽤户组,打开no_reserve属性root⽤户在/dev⽬录下执⾏:chdev -l hdisk2 -a reserve_policy=no_reservechdev -l hdisk3 -a reserve_policy=no_reservechdev -l hdisk4 -a reserve_policy=no_reservechdev -l hdisk5 -a reserve_policy=no_reservechmod 660 rhdisk2chmod 660 rhdisk3chmod 660 rhdisk4chmod 660 rhdisk5chown grid:oinstall rhdisk2chown grid:oinstall rhdisk3chown grid:oinstall rhdisk4chown grid:oinstall rhdisk52.1.3 Mount Disk Group使⽤grid⽤户在两个节点上执⾏[root@prodb01a /]# su - grid[grid@prodb01a /home/grid]> sqlplus / as sysasmSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 11:54:51 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Real Application Clusters and Automatic Storage Management optionsSQL> select name,state from v$asm_diskgroup;NAME STATE------------------------------ -----------DG_fqz_CRS MOUNTEDFQZDATADG DISMOUNTEDSQL> alter diskgroup FQZDATADG mount force;Diskgroup altered.2.1.4 启动数据库Oracle⽤户执⾏export ORACLE_SID=prodbsqlplus / as sysdbaSQL> startup pfile='/home/oracle/pfile.ora'2.2 修改相关名称实施步骤(本套数据库修改名称定为 prodb )2.2.1 数据库启动⾄mount状态RAC需要⾸先将cluster_database置为false后重启数据库⾄mount状态[oracle@prodb01a /home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 11:05:48 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP, Advanced Analytics and Real Application Testing options[oracle@prodb01a /home/oracle]> sqlplus / as sysdbaSQL> startup mountORACLE instance started.Total System Global Area 4.2950E+10 bytesFixed Size 7727872 bytesVariable Size 1.3959E+10 bytesDatabase Buffers 2.8857E+10 bytesRedo Buffers 126488576 bytesDatabase mounted.SQL> quit2.2.2 修改Dbname、DbidOracle⽤户在1节点上使⽤nid命令执⾏[oracle@prodb01a /home/oracle]> nid target=/ dbname=prodbDBNEWID: Release 12.1.0.2.0 - Production on Thu Feb 14 11:11:00 2019Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.Connected to database PRODB (DBID=3182511783)Connected to server version 12.1.0Control Files in database:Change database ID and database name PRODB to prodb? (Y/[N]) => y ...........................Database name changed to prodbModify parameter file and generate a new password file before restarting.Database ID for database prodb changed to 3926312005.All previous backups and archived redo logs for this database are unusable.Database has been shutdown, open database with RESETLOGS option.Succesfully changed database name and ID.DBNEWID - Completed succesfully.2.2.3 重启数据库[oracle@prodb01a /home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 11:12:20 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to an idle instance.SQL> create pfile=’/home/oracle/pfile.ora’ from spfile=’+PRODBDATA2/PRODBST/spfilePRODB.ora’; SQL>exit[oracle@prodb01a /home/oracle]> vi pfile.ora修改db_name='prodb'去掉db_unique_name参数SQL> startup mount pfile=’/home/oracle/pfile.ora’ORACLE instance started.Total System Global Area 4.2950E+10 bytesFixed Size 7727872 bytesVariable Size 1.3959E+10 bytesDatabase Buffers 2.8857E+10 bytesRedo Buffers 126488576 bytesDatabase mounted.SQL> alter database open resetlogs;Database altered.SQL> show parameter db_nameNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_name string prodb2.2.4 修改pfile中的实例名1节点实例名prodb12节点实例名PRODB修改参数⽂件(直接使⽤1节点已修改好的参数⽂件/home/oracle/pfile.ora,因此⽆需执⾏此步骤)[oracle@prodb01a /home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 11:12:20 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to an idle instance.SQL> shut immediateSQL>exit[oracle@prodb01a /home/oracle]> vi pfile.ora修改如下选项*.db_name='prodb'*.db_recovery_file_dest=''prodb1.instance_number=1PRODB.instance_number=2prodb1.undo_tablespace='UNDOTBS1'PRODB.undo_tablespace='UNDOTBS2'File created.2.2.5 修改Disk Droup Name将diskgroup name:BKSERVERDATA 修改为FQZDATADGGrid两个节点执⾏:[grid@prodb02a /home/grid]> sqlplus / as sysasmSQL*Plus: Release 12.1.0.2.0 Production on Thu Feb 14 14:47:50 2019Copyright (c) 1982, 2014, Oracle. All rights reserved.Connected to:Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit ProductionWith the Real Application Clusters and Automatic Storage Management optionsSQL> alter diskgroup PRODBDATA2 dismount;Diskgroup altered.Grid⽤户在1节点执⾏:[grid@prodb01a/home/oracle] renamedg phase=both dgname=PRODBDATA2 newdgname=FQZDATADG verbose=true 移除原Disk Group[grid@prodb01a/home/oracle] srvctl remove diskgroup -g PRODBDATA2 -f重建控制⽂件并修改其中数据⽂件、⽇志⽂件路径[oracle@prodb01a/home/oracle] vi pfile.ora修改cluster_database=falseSQL> startup mount pfile=‘/home/oracle/pfile.ora’;SQL> alter database backup controlfile to trace as ‘/home/oracle/con.trl’SQL>shut immediateSQL>startup nomount pfile=’/home/oracle/pfile.ora’;粘贴con.trl⽂件中内容并编辑新的磁盘组名,在sqlplus中运⾏SQL>CREATE CONTROLFILE REUSE DATABASE "prodb" RESETLOGS FORCE LOGGING NOARCHIVELOG MAXLOGFILES 320MAXLOGMEMBERS 5MAXDATAFILES 2000MAXINSTANCES 32MAXLOGHISTORY 2337LOGFILEGROUP 1 '+FQZDATADG/prodb/ONLINELOG/group_1.508.1000913293' SIZE 500M BLOCKSIZE 512, GROUP 2 '+FQZDATADG/prodb/ONLINELOG/group_2.509.1000913293' SIZE 500M BLOCKSIZE 512, GROUP 5 '+FQZDATADG/prodb/ONLINELOG/group_5.512.1000913295' SIZE 500M BLOCKSIZE 512, GROUP 6 '+FQZDATADG/prodb/ONLINELOG/group_6.513.1000913295' SIZE 500M BLOCKSIZE 512, GROUP 7 '+FQZDATADG/prodb/ONLINELOG/group_7.514.1000913295' SIZE 500M BLOCKSIZE 512, GROUP 8 '+FQZDATADG/prodb/ONLINELOG/group_8.515.1000913295' SIZE 500M BLOCKSIZE 512-- STANDBY LOGFILEDATAFILE'+FQZDATADG/PRODBst/datafile/system.350.998332449','+FQZDATADG/PRODBst/datafile/sysaux.358.998332809','+FQZDATADG/PRODBst/datafile/undotbs1.303.998331203','+FQZDATADG/PRODBst/datafile/undotbs2.370.998333315','+FQZDATADG/PRODBst/datafile/users.258.998330009','+FQZDATADG/PRODBst/datafile/tbs_acctchk.477.998335675',CHARACTER SET ZHS16GBK;SQL>alter database open resetlogs;[oracle@prodb01a/home/oracle] vi pfile.ora修改cluster_database=trueSQL>create spfile=’+FQZDATADG/prodb/spfileprodb.ora’ from pfile='/home/oracle/pfile.ora';SQL> shut immediateORA-01507: database not mountedORACLE instance shut down.2.2.6 重新注册数据库信息Oracle⽤户在⼀个节点上执⾏srvctl add database -d prodb -o /oracle/app/oracle/12.1.0 -p ’+FQZDATADG/prodb/spfileprodb.ora’srvctl add instance -d prodb -i prodb1 -n srvctl add instance -d prodb -i PRODB -n 启动数据库[Oracle@prodbdb01a/home/oracle] srvctl start database -d prodb⾄此完成prodb数据库迁移切换⼯作。

oracle修改实例名orcl的方法

oracle修改实例名orcl的方法

oracle修改实例名orcl的方法Oracle是一款非常流行的关系型数据库管理系统。

在Oracle中,实例是一个特殊的进程和内存结构,用于管理数据库的访问和连接。

实例名是唯一的,它用于标识Oracle数据库实例的名称。

在某些情况下,您可能需要修改Oracle实例的名称。

本文将介绍如何以Oracle修改实例名orcl的方法。

第一步:关闭Oracle实例在修改Oracle实例名之前,您需要先关闭Oracle实例。

您可以使用以下命令关闭Oracle实例:$ sqlplus / as sysdbaSQL> shutdown immediate;这将立即关闭Oracle实例。

请注意,如果您的Oracle实例正在运行,则必须先关闭它才能修改实例名称。

第二步:备份Oracle实例在修改Oracle实例名称之前,建议您备份Oracle实例。

这将确保您可以在出现问题时恢复您的数据库。

您可以使用以下命令备份Oracle实例:$ cp -r $ORACLE_HOME/dbs $ORACLE_HOME/dbs_backup这将备份Oracle实例的数据库文件。

第三步:修改Oracle实例名要修改Oracle实例名称,您需要编辑Oracle实例的配置文件。

您可以使用以下命令编辑Oracle实例的配置文件:$ vi $ORACLE_HOME/network/admin/listener.ora在此文件中,您需要查找以下行:SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = orcl)(SID_NAME = orcl)))将GLOBAL_DBNAME和SID_NAME更改为您想要的名称。

例如,如果您想将Oracle实例名称更改为mydb,则可以将这些行更改为以下内容:SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(GLOBAL_DBNAME = mydb)(SID_NAME = mydb)))请注意,您需要将所有实例名称更改为相同的名称。

Oracle数据库例名SID的修改方法步骤

Oracle数据库例名SID的修改方法步骤

求知若饥,虚心若愚。

Oracle数据库例名SID的修改方法步骤Oracle数据库例名SID的修改方法步骤有时候我们需要修改Oracle数据库的实例名SID,下面是在Centos 6.5下修改ORACLE10.2的实例名的实例教程,感爱好学习的伴侣可以看下。

修改Oracle实例名系统环境:CentOS 6.5ORACLE版本:10.21、检查原来的数据库实例名$ echo $ORACLE_SIDorcl$ sqlplus / as sysdbaselect instance from v$thread;INSTANCE--------------------------------------------------------------------------------orcl2、关闭数据库shutdown immediate;exit;3、修改oracle用户的ORACLE_SID环境变量,如由orcl修改第1页/共3页学而不舍,金石可镂。

为linuxidc$ vi /home/oracle/.bash_profileexport ORACLE_SID=linuxidc$ source /home/oracle/.bash_profile4、修改/etc/oratab文件,将sid名由orcl修改为linuxidc $ vi /etc/oratablinuxidc:/u01/app/oracle/11.2/db_1:Y5、进入到$ORACLE_HOME/dbs名目将全部文件名中包含原来的sid的'修改为对应的新sid的$ cd $ORACLE_HOME/dbs$ mv hc_zf.dat hc_linuxidc.dat$ mv lkZF lklinuxidc$ mv orapwzf orapwlinuxidc$ mv spfilezf.ora spfilelinuxidc.ora6、重建口令文件由于口令文件改名后不能在新实例中使用,所以重建$ orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=123456 entries=5 force=y7、启动数据库$ sqlplus / as sysdbastartup8、检查数据库实例名第2页/共3页求知若饥,虚心若愚。

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 11g 更改sid和dbname

oracle 11g 更改sid和dbname

o racle 11g 更改sid和dbname分两个阶段描述,第一阶段改sid,第二阶段改dbname下面描述详细步骤首先要更改sid1、登录数据库查看先前的sid,总共三步[oracle@localhost ~]$ sqlplus "/as sysdba"SQL*Plus: Release 11.2.0.1.0 Production on Fri Aug 9 05:53:08 2013 Copyright (c) 1982, 2009, Oracle. A ll rights reserved.Connected to an idle instance.SQL> startupORACLE instance started.Total System Global Area 539848704 bytesFixed Size 1337748 bytesVariable Size 360711788 bytesDatabase Buffers 171966464 bytesRedo Buffers 5832704 bytesDatabase mounted.Database opened.SQL> select instance from v$thread ;INSTANCE-------------------------------------------------------------------------------- orcl2、关闭数据库[sql] view plaincopyprint?SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> exitDisconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options3、编辑/etc/oratab文件,把所有orcl换成oat[oracle@localhost ~]$ vim /etc/oratab4、更改oracle用户的 .bash_profile文件[oracle@localhost ~]$ vim .bash_profile5、使改好的.bash_profile文件生效:%s/oral/oat/g[oracle@localhost ~]$ . .bash_profile7、查看系统环境变量[oracle@localhost ~]$ env |grep ORACLEORACLE_SID=oatORACLE_BASE=/u01/appORACLE_HOME=/u01/app/oracle效果一生成。

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

数据库名、实例名、数据库域名、全局数据库名、服务名
winnt: /home/app/oracle/product/10.1.0/admin/DB_NAME/bdump/...
另外,在创建数据时,careate database命令中的数据库名也要与参数文件中DB_NAME参数的值一致,否则将产生错误。
同样,修改数据库结构的语句alter database, 当然也要指出要修改的数据库的名称。
方法二:show parameter domain
方法三:在参数文件中查询。
全局数据库名
全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:oradb.fj.jtyz
四、数据库服务名
什么是数据库服务名?
从oracle9i版本开始,引入了一个新的参数,即数据库服务名。参数名是SERVICE_NAME。
如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。
查询数据库服务名
方法一:select value from v$parameter where name = 'service_name';
方法二:show parameter service_name
方法三:在参数文件中查询。
如果控制文件损坏或丢失,数据库将不能加载,这时要重新创建控制文件,方法是以nomount方式启动实例,然后以create controlfile命令创建控制文件,当然这个命令中也是指指DB_NAME。
还有在备份或恢复数据库时,都需要用到数据库名。
总之,数据库名很重要,要准确理解它的作用。
查询ቤተ መጻሕፍቲ ባይዱ前数据名
服务摘要..
服务 "" 包含 1 个例程。

解析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名字,这个标识链接描述符。

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):用于与数据库实例名相对应。

Oracle实例名(SID)服务名(Service_Name)有什么区别

Oracle实例名(SID)服务名(Service_Name)有什么区别

Oracle实例名(SID)服务名(Service_Name)有什么区别
SID
sid是⽤来标识这个数据库内部每个实例的名字。

⼀个实例只能对应⼀个数据库,但是⼀个数据库可以由多个实例对应。

使⽤SID来表⽰标识数据库的⼀个实例
SERVER_NAME
server_name参数是由oracle8i开始引进的。

在8i以前,在Oracle的并⾏环境中,⼀个数据库对应多个实例,这样就需要多个⽹络服务名,设置繁琐。

为了⽅便并⾏环境中的设置,引进了Service_name参数,该参数对应⼀个数据库,⽽不是⼀个实例,⽽且该参数有许多其它的好处。

该参数的缺省值为Db_name. Db_domain,即等于Global_name。

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

该参数与SID没有直接关系,即不必Service name 必须与SID⼀样,⽽sid是数据库实例的名字,每个实例各不相同
JDBC连接配置
1. 使⽤service_name,配置⽅式:jdbc:oracle:thin:@//<host>:<port>/<service_name>
2. 使⽤SID,配置⽅式:jdbc:oracle:thin:@<host>:<port>/<SID> 或者 jdbc:oracle:thin:@<host>:<port>:<SID>。

[最新]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:协议适配器错误”。

oracle19c静默创建实例

oracle19c静默创建实例

oracle19c静默创建实例如何静默创建Oracle 19c实例在实施Oracle数据库管理和维护的过程中,创建数据库实例是一个非常重要的步骤。

然而,通常情况下,数据库管理员需要手动输入一系列的配置信息,使得整个过程比较繁琐。

为了简化这个过程,用户可以选择使用静默创建实例的方式,即在不需要交互式输入信息的情况下,自动完成实例的创建。

本文将一步一步地介绍如何静默创建Oracle 19c实例。

在开始之前,确保你已经安装了Oracle 19c数据库软件,并设置了环境变量。

此外,你还需要准备好以下几个配置文件:1. init<dbname>.ora 文件:此文件包含了实例的参数设置。

你可以根据自己的需要进行修改和配置。

2. create_database.sql 文件:此文件包含了创建数据库的SQL语句。

你可以在其中定义表空间、用户、角色等信息。

3. response 文件:此文件包含了安装过程中需要的响应。

你可以在其中定义数据库名称、密码等信息。

现在,我们开始一步一步地进行静默创建实例的过程。

步骤1:创建响应文件在一个空白文本编辑器中,创建一个名为response的文件,并在其中添加以下内容:oracle.assistants.install.db.config.starterdb.password.ALL=(your_pa ssword)oracle.assistants.install.db.config.starterdb.SID=(your_SID) oracle.assistants.install.db.config.starterdb.memoryOption=true oracle.assistants.install.db.config.starterdb.memoryLimit=2048 oracle.assistants.install.db.config.starterdb.installExampleSchemas =falseoracle.assistants.install.db.config.starterdb.enableRecovery=false oracle.assistants.install.db.config.starterdb.databaseType=OLTP oracle.assistants.install.db.config.starterdb.automatedBackup.enab le=false将(your_password)替换为实际的数据库密码,将(your_SID)替换为实际的数据库实例名。

修改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 ,就可以⽤了。

oracle DB_NAME、INSTANCE_NAME、ORACLE_SID

oracle DB_NAME、INSTANCE_NAME、ORACLE_SID

概述DB_NAME与INSTANCE_NAMEDB_NAME 数据库名称,也就是数据库的名字标示。

这里,数据库里可能有多个实例,比如RAC里的多节点,这多个节点是不同的实例,但是却有相同的名字,他们的DB_NAME 是相同的,但是Instance_name是不同的。

DB_NAME会保持在数据文件头里,所以更改DB_NAME不能仅仅修改parameter,还需要用nid来进行更改,并且更改后还需要手工做些工作,使其生效,一般情况下不建议修改。

DB_NAME与DB_UNIQUE_NAMEDB_UNIQUE_NAME这在另一个HA的应用,Dataguard会经常提及的,和DB_NAME不一样的作用,在DG里,要求物理DG,主从库都有一样的DB_NAME,虽然他们和RAC 不一样,并不是同一个库。

这里是数据库的唯一名字。

但是他们的DB_UNIQUE_NAME是不一样的,用以进行不同的标示。

DB_UNQUIE_NAME的会影响到Service_names,也会影响到动态监听的时候的service_name。

DB_NAMEdb_name是数据库的名字,oracle本身可能是比较有用的,对我们而言没有什么太多的用处,db_name记录在controlfile,datafile_header,redo中。

在建库时,db_name被限制为最长8个字符。

db_name还有一个非常重要的作用就是动态注册监听,不管是否指定了service_name,或者说service_name的值是什么,pmon都会使用db_name动态注册监听的。

ORACLE_SIDsid为在host上用sid来标示实例的共享内存的,尽管v$instance中字段instance_name看起来是实例名,但是实际上存储的是sid,在win下sid不能重复,在unix/linux下只要不同版本的oracle安装在不同的oracle_home下就可以创建相同sid的实例,但是win下不可以,主要是受到windows服务的限制,在服务中不能存在服务名相同的oracle服务(OracleServiceSID)。

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。

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

修改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_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 - Production With the Partitioning, OLAP and Data Mining optionssys@ORCL> select instance from v$thread;INSTANCE--------------------------------------------------------------------------------orcl1.2、关闭数据库注意不能用shutdown abort,只能是shutdown immediate或shutdown normal1.3、修改oracle用户的ORACLE_SID环境变量,如由orcl修改为cnhtm1.4、修改/etc/oratab文件,将sid名由旧的修改为新的,如从orcl修改为cnhtm1.5、进入到$ORACLE_HOME/dbs目录将所有文件名中包含原来的sid的修改为对应的新sid的如我对如下文件修改为其后对应的文件1.6、使新修改的ORACLE_SID环境变量生效1.7、重建口令文件因为口令文件改名后不能在新实例中使用,所以重建1.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变成cnhtm2、修改数据库名(dbname)虽然已经修改过了实例名(sid),但是数据库的名称(dbname还是原来的名称orcl)可以通过如下步骤修改数据库名(dbname)2.1、首先切换一下在线日志,使数据库做checkpoint2.2、生成重建控制文件的脚本2.3、关闭数据库,需要干净关闭,不能shutdown abort2.4、进入$ORACLE_BASE/admin/<sid>/udump目录中,找到最新生成的trc文件,这就是重建控制文件的脚本2.5、将找到的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',2.7、修改数据文件、在线日志文件名如果上一步修改了ccf.sql文件中的datafile和logfile段的文件名,这里要将这些文件名重命令为与其一致。

因为我的实验环境使用了ASM,在Oracle 10.2中ASM中不能重命名和复制文件,我采用了创建别名的方式,操作如下:oracle@oracle[/oracle/admin/cnhtm/udump]> export ORACLE_SID=+ASM oracle@oracle[/oracle/admin/cnhtm/udump]> sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 12:08:52 2009Copyright (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 optionsidle> alter diskgroup data add directory '+data/CNHTM';Diskgroup altered.idle> alter diskgroup data add directory '+data/CNHTM/DATAFILE';Diskgroup altered.idle> alter diskgroup data add alias2 '+data/CNHTM/DATAFILE/EXAMPLE01.DBF'3 for4 '+data/ORCL/DATAFILE/EXAMPLE.261.705922745';Diskgroup altered.......idle> alter diskgroup data add alias2 '+data/CNHTM/DATAFILE/USERS01.DBF'3 for4 '+data/ORCL/DATAFILE/USERS.266.705922777';Diskgroup altered.idle> alter diskgroup data add directory '+data/CNHTM/ONLINELOG'; Diskgroup altered.......idle> alter diskgroup data add alias2 '+data/CNHTM/ONLINELOG/group_4.LOG'3 for4 '+data/ORCL/ONLINELOG/group_7.273.705923695';Diskgroup altered.2.8、如果归档日志目录名中包含sid,那么修改归档目录名我的测试环境,归档目录使用的是flash_recovery_area,所以需要将这个目录中的ORCL目录重命名为CNHTM2.9、使用spfile生成pfile注意这里没有启动数据库,只是链接到idle状态oracle@oracle[/home/oracle]> export ORACLE_SID=cnhtmoracle@oracle[/home/oracle]> sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Sun Dec 20 11:49:20 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved.Connected to an idle instance.idle> create pfile='?/dbs/initcnhtm.ora' from spfile;File created.idle> exit2.10、进入$ORACLE_HOME/dbs目录2.11、编辑initcnhtm.ora文件搜索所有的orcl,重命令为cnhtm,搜索所有的ORCL,重命名为CNHTM2.12、删除控制文件将原来的控制文件删除或重命名控制文件的位置名称可以通过查看2.11步骤中的*.control_files来确定如果控制文件在ASM中,可以进入asmcmd命令,然后用rm命令删除2.13、进入$ORACLE_BASE/admin目录将orcl目录重命名为cnhtm2.14、使用修改过的pfile生成spfile2.15、调用2.6步骤修改好的ccf.sql2.16、检查数据库状态idle> conn / as sysdbaConnected.sys@CNHTM>select open_mode from v$database; OPEN_MODE----------READ WRITEsys@CNHTM> show parameter nameNAME TYPE VALUE------------------------------------ ----------- ------------------------------db_file_name_convert stringdb_name string cnhtmdb_unique_name string cnhtmglobal_names boolean FALSEinstance_name string cnhtmlock_name_space stringlog_file_name_convert stringservice_names string cnhtm发现数据库名(db_name)已经修改为cnhtm。

相关文档
最新文档