实例名(查看Oracle 实例名:一步一步教程)
一、oracle的实例名与ORACLE_SID关系和区别。
oracle的实例名与ORACLE_SID就是说数据库和操作系统之间的交互用的是数据库实例名。有以下不同:
1、列入的参数设置不一样:
oracle的实例名:instance_name是oracle数据库参数。
ORACLE_SID:ORACLE_SID是操作系统的环境变量。
2、交互性上不一样:
oracle的实例名:ORACLD_SID用于与操作系统交互,也就是说,从操作系统的角度访问实例名,必须通过ORACLE_SID。在winnt下,ORACLE_SID还需存在于注册表中。
ORACLE_SID:ORACLE_SID必须与instance_name的值一致。
扩展资料:
oracle的文件结构:
数据库的物理存储结构是由一些多种物理文件组成,主要有数据文件、控制文件、重做日志文件、归档日志文件、参数文件、口令文件、警告文件等。
控制文件:存储实例、数据文件及日志文件等信息的二进制文件。alter system set control_files=‘路径’。V$CONTROLFILE。
数据文件:存储数据,以.dbf做后缀。一句话:一个表空间对多个数据文件,一个数据文件只对一个表空间。dba_data_files/v$datafile。
日志文件:即Redo Log Files和Archivelog Files。记录数据库修改信息。ALTER SYSTEM SWITCH LOGFILE;。V$LOG。
参数文件:记录基本参数。spfile和pfile。
警告文件:show parameter background_dump_dest---使用共享服务器连接。
跟踪文件:show parameter user_dump_dest---使用专用服务器连接。
参考资料来源:百度百科-Oracle数据库
参考资料来源:百度百科-Oracle
二、如何区分Oracle的数据库,实例,服务名,SID
一
数据库(database):物理操作系统文件或磁盘(disk)的集合。使用Oracle 10g的自动存储管理(Automatic Storage Management,ASM)或RAW分区时,数据库可能不作为操作系统中单独的文件,但定义仍然不变。
二
实例(instance):一组Oracle后台进程/线程以及一个共享内存区,这些内存由同一个计算机上运行的线程/进程所共享。
三
service_names是对外的服务名,是服务器端使用的,一个库可以设置多个对外服
务名,以实现不同的目的
四
sid用于实例区分各个数据库,service name用于外部链接。
三、oracle数据库实例名如何修改
1.准备
原数据库的实例名为linuxdb,控制文件、数据文件、联机日志文件存放在/home/oracle/ora9/oradata/linuxdb目录,将所有的文件拷贝到另外一个目录/home/oracle/ora9/oradata/dbtest。
再将linuxdb的初始化文件也复制一份出来,执行如下的sql:
Create pfile='/home/oracle/ora9/oracle/dbs/pfiledbtest.ora' from spfile='/home/oracle/ora9/oracle/dbs/spfilelinuxdb.ora';
我们将修改实例名为dbtest。
下面我们开始一步一步地进行处理。
2.加载初始化文件
打开pfiledbtest.ora文件,修改对应的dump属性的路径名,实例名字,控制文件路径等。
然后执行如下命令:
[oracle@localhost oracle]$ export ORACLE_SID=dbtest
[oracle@localhost oracle]$ sqlplus"/ as sysdba"
SQL*Plus: Release 9.2.0.4.0- Production on Mon Aug 17 16:57:36 2009
Copyright(c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to an idle instance.
SQL> startup pfile='/home/oracle/ora9/oracle/dbs/pfiledbtest.ora' nomount
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
SQL>
这样加载初始化文件就成功了。
下面接着进行,加载控制文件。
3.加载控制文件
先执行如下命令。
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-00205: error in identifying controlfile, check alert log for more info
好像是控制文件的路径不对,修改初始文件再次加载。
SQL> alter database mount;
alter database mount
*
ERROR at line 1:
ORA-01103: database name'LINUXDB' in controlfile is not'DBTEST'
根据错误信息提示,是实例名字不一致,但是控制文件是二进制的,用vi打开之后没法编辑,只能通过用重建控制文件可以解决。
在/home/oracle/ora9/oradata/dbtest目录下删除老的三个控制文件。然后开始重建控制文件。
SQL> CREATE CONTROLFILE SET DATABASE"DBTEST" RESETLOGS FORCE LOGGING NOARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1'/home/oracle/ora9/oradata/dbtest/redo01.log' SIZE 50M,
9 GROUP 2'/home/oracle/ora9/oradata/dbtest/redo02.log' SIZE 50M,
10 GROUP 3'/home/oracle/ora9/oradata/dbtest/redo03.log' SIZE 50M
11 DATAFILE
12'/home/oracle/ora9/oradata/dbtest/cwmlite01.dbf',
13'/home/oracle/ora9/oradata/dbtest/devbase_20090408.dbf',
14'/home/oracle/ora9/oradata/dbtest/drsys01.dbf',
15'/home/oracle/ora9/oradata/dbtest/example01.dbf',
16'/home/oracle/ora9/oradata/dbtest/indx01.dbf',
17'/home/oracle/ora9/oradata/dbtest/odm01.dbf',
18'/home/oracle/ora9/oradata/dbtest/system01.dbf',
19'/home/oracle/ora9/oradata/dbtest/tools01.dbf',
20'/home/oracle/ora9/oradata/dbtest/undotbs01.dbf',
21'/home/oracle/ora9/oradata/dbtest/users01.dbf',
22'/home/oracle/ora9/oradata/dbtest/xdb01.dbf'
23 CHARACTER SET ZHS16GBK;
CREATE CONTROLFILE SET DATABASE"DBTEST" RESETLOGS FORCE LOGGING NOARCHIVELOG
*
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-01990: error opening password file'/home/oracle/ora9/oracle/dbs/orapw'
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
根据错误提示,是缺少密码验证文件,用下面的命令创建密码文件。
$cd$ORACLE_HOME/dbs
orapwd password=chenli file=orapwdbtest
SQL> CREATE CONTROLFILE SET DATABASE'dbtest' RESETLOGS FORCE LOGGING NOARCHIVELOG
2 MAXLOGFILES 16
3 MAXLOGMEMBERS 3
4 MAXDATAFILES 100
5 MAXINSTANCES 8
6 MAXLOGHISTORY 292
7 LOGFILE
8 GROUP 1'/home/oracle/ora9/oradata/dbtest/redo01.log' SIZE 50M,
9 GROUP 2'/home/oracle/ora9/oradata/dbtest/redo02.log' SIZE 50M,
10 GROUP 3'/home/oracle/ora9/oradata/dbtest/redo03.log' SIZE 50M
11 DATAFILE
12'/home/oracle/ora9/oradata/dbtest/cwmlite01.dbf',
13'/home/oracle/ora9/oradata/dbtest/devbase_20090408.dbf',
14'/home/oracle/ora9/oradata/dbtest/drsys01.dbf',
15'/home/oracle/ora9/oradata/dbtest/example01.dbf',
16'/home/oracle/ora9/oradata/dbtest/indx01.dbf',
17'/home/oracle/ora9/oradata/dbtest/odm01.dbf',
18'/home/oracle/ora9/oradata/dbtest/system01.dbf',
19'/home/oracle/ora9/oradata/dbtest/tools01.dbf',
20'/home/oracle/ora9/oradata/dbtest/undotbs01.dbf',
21'/home/oracle/ora9/oradata/dbtest/users01.dbf',
22'/home/oracle/ora9/oradata/dbtest/xdb01.dbf'
23 CHARACTER SET ZHS16GBK;
Control file created.
现在创建成功了。
创建控制文件成功了,下面重新启动数据库。
SQL> startup nomount
ORACLE instance started.
Total System Global Area 236000356 bytes
Fixed Size 451684 bytes
Variable Size 201326592 bytes
Database Buffers 33554432 bytes
Redo Buffers 667648 bytes
SQL> alter database mount;
Database altered.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open RESETLOGS;
Database altered.
查看表中的记录,正确的。
修改实例名成功。
4.总结
由上面的操作可以看到,在数据库维护中,最重要的是数据文件,初始化文件可以从别的实例拷贝过来,然后修改。控制文件可以重新创建,只要数据文件正确,就可以重建初始化文件和控制文件之后,恢复数据库。
遇到的错误:
ERROR at line 1:
ORA-01503: CREATE CONTROLFILE failed
ORA-00200: controlfile could not be created
ORA-00202: controlfile:'/home/ora/ora9/oradata/dbtest/control01.ctl'
ORA-27040: skgfrcre: create error, unable to create file
Linux Error: 2: No such file or directory
请查看初始化文件中,控制文件的路径是正确,控制文件的路径上的目录是否有权限创建文件,如果这些问题都解决了,那么应该能成功创建控制文件。