一个数据库和相应的一些名字
oracle相关名字
db_name
db_unique_name
global_name
instance_name
service_name
DB_NAME:建立时候指定,记录在控制文件中,不容易修改,如果修改需要重建控制文件
如何修改数据库的名字
1、重新获得重建控制文件的语句
alter database backup controlfile to trace;
需要利用resetlog的选项像
2、修改名字
CREATE CONTROLFILE REUSE set DATABASE “ORCL123” RESETLOGS ARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 ‘C:\APP\YANWEI\ORADATA\ORCL\REDO01.LOG’ SIZE 50M BLOCKSIZE 512,
GROUP 2 ‘C:\APP\YANWEI\ORADATA\ORCL\REDO02.LOG’ SIZE 50M BLOCKSIZE 512,
GROUP 3 ‘C:\APP\YANWEI\ORADATA\ORCL\REDO03.LOG’ SIZE 50M BLOCKSIZE 512
– STANDBY LOGFILE
DATAFILE
‘C:\APP\YANWEI\ORADATA\ORCL\SYSTEM01.DBF’,
‘C:\APP\YANWEI\ORADATA\ORCL\SYSAUX01.DBF’,
‘C:\APP\YANWEI\ORADATA\ORCL\UNDOTBS01.DBF’,
‘C:\APP\YANWEI\ORADATA\ORCL\USERS01.DBF’,
‘C:\APP\YANWEI\ORADATA\ORCL\EXAMPLE01.DBF’,
‘C:\APP\YANWEI\ORADATA\ORCL\FDA01.DBF’,
‘C:\APP\YANWEI\ORADATA\ORCL\FDA02.DBF’
CHARACTER SET ZHS16GBK
3.正常关闭启动nomount
4.需要修改初始化参数文件
============================================================================
db_unique_name
,用在DG。配置DG,设置别名,一般和数据库名字一致的
修改了之后,service_name就会跟着改变
service_name:oracle监听对外提供的名字
这个也可以单独修改;
查看监听的时候service也跟着改变;准确来说是多一个service来监听修改了service_name,之前实例监听的还存在,名字和db_unique_name一致
========================================================================
instance_name
export ORACLE_SID=orcl2
重启DB之后就发现修改成功
查看监听就发现实例名字也修改了。进程名字也修改了
也可以修改初始化参数的名字来修改实例名
===============================================================
global_name:
当GLOBAL_NAMES参数设置为TRUE时,使用DATABASE LINK时,DATABASE LINK的名称必须与被连接库的GLOBAL_NAME一致。
1、更改global_names 为true;
SQL> alter system set global_names=true;–慎重
2、查看global_names属性
SQL> show parameter global_name;
NAME TYPE VALUE
global_names boolean FALSE
3、修改global_name
SQL> conn sys/sys as sysdba
已连接。
SQL> select * from global_name;
GLOBAL_NAME
ORCL.US.ORACLE.COM
SQL> update props$ set value$ = ‘orcl’ where name = ‘GLOBAL_DB_NAME’;
已更新 1 行。
SQL> select * from global_name;
GLOBAL_NAME
orcl
create database link test_link connect to test identified by test using ‘DMDB’; DMDB为TNSname设置
可以看到,链接仍然可以用。如果在DMDB库上创建链接到XJ库上,可以观察到同样的结果。可以得出一个结论:global_names参数设置为FALSE,影响的是创建数据库链接的那个库对数据库链接的使用。也就是说,如果一个库(实例)的global_names参数设值为TRUE,则该库连接其他库的数据库链接,其名称必须要与被连接的库的global_name相同:
如果在GLOBAL_NAMES设置为TRUE的情况下,如果要建多个数据库链接到同一个库,怎么办呢?因为数据库链接的名称必须与目标库的GLOBAL_NAME相同。可以按如下的方法:
以下是代码片段:
SQL> create database linkdmdb@link1connect to test identified by test using ‘dmdb’;
数据库链接已创建。
SQL> create database linkdmdb@link2connect to test identified by test using ‘dmdb’;
数据库链接已创建。
SQL> select * fromdual@dmdb ;
D
X
SQL> select * fromdual@dmdb@link1 ;
D
X
SQL> select * fromdual@dmdb@link2 ;
D
X
也就是在GLOBAL_NAME后面加上@再加上一个标识。这样就能够创建多个数据库链接到同一目标库上了。