欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle12C如何更改dbname?

程序员文章站 2022-03-23 20:34:38
oracle 12.2.0.1 版本:先生成控制文件trace: alter database backup controlfile to trace; oradebug se...

oracle 12.2.0.1 版本:先生成控制文件trace:

alter database backup controlfile to trace;

oradebug setmypid;

oradebug tracefile_name;

根据trace文件获得得创建控制文件的脚本。

先建立一个initATPuat.ora文件:

create pfile='/ATPapp/oraATP/home/initATPuat.ora' from spfile;

修改initATPuat.ora中的ATP改成ATPuat,同时将os oracle用户下的.bash_profile中的ORACLE_SID改成ATPuat.

并以pfile启动到nomount状态

进入到asmcmd下,将原control文件删除。

SQL> show parameter db_create

NAME TYPE VALUE

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

db_create_file_dest string +ATPDG1

db_create_online_log_dest_1 string

db_create_online_log_dest_2 string

db_create_online_log_dest_3 string

db_create_online_log_dest_4 string

db_create_online_log_dest_5 string

只有db_create_file_dest有值,那么ORACLE会在db_create_file_dest目录创建两份控制文件

重新整理更改db name后的控制文件如下:

CREATE CONTROLFILE set DATABASE "ATPUAT" RESETLOGS NOARCHIVELOG

MAXLOGFILES 16

MAXLOGMEMBERS 3

MAXDATAFILES 1024

MAXINSTANCES 8

MAXLOGHISTORY 292

LOGFILE

GROUP 1 (

'+ATPDG1/ATP/ONLINELOG/group_1.259.965469981',

'+ATPDG1/ATP/ONLINELOG/group_1.260.965469981'

) SIZE 200M BLOCKSIZE 512,

GROUP 2 (

'+ATPDG1/ATP/ONLINELOG/group_2.261.965469983',

'+ATPDG1/ATP/ONLINELOG/group_2.262.965469983'

) SIZE 200M BLOCKSIZE 512,

GROUP 3 (

'+ATPDG1/ATP/ONLINELOG/group_3.263.965469985',

'+ATPDG1/ATP/ONLINELOG/group_3.264.965469985'

) SIZE 200M BLOCKSIZE 512

-- STANDBY LOGFILE

DATAFILE

'+ATPDG1/ATP/DATAFILE/system.265.965469987',

'+ATPDG1/ATP/62C80FC16441609AE053B05A100A2C8B/DATAFILE/system.266.965469991',

'+ATPDG1/ATP/DATAFILE/sysaux.267.965469997',

'+ATPDG1/ATP/62C80FC16441609AE053B05A100A2C8B/DATAFILE/sysaux.268.965469999',

'+ATPDG1/ATP/DATAFILE/undotbs1.269.965470001',

'+ATPDG1/ATP/62C80FC16441609AE053B05A100A2C8B/DATAFILE/undotbs1.270.965470001',

'+ATPDG1/ATP/DATAFILE/users.273.965470023',

'+ATPDG1/ATP/62C93F2857BF4ECDE053B05A100ABBE6/DATAFILE/system.275.965475081',

'+ATPDG1/ATP/62C93F2857BF4ECDE053B05A100ABBE6/DATAFILE/sysaux.277.965475081',

'+ATPDG1/ATP/62C93F2857BF4ECDE053B05A100ABBE6/DATAFILE/undotbs1.276.965475081',

'+ATPDG1/ATP/62C93F2857BF4ECDE053B05A100ABBE6/DATAFILE/users.279.965475137',

'+ATPDG1/ATP/62C93F2857BF4ECDE053B05A100ABBE6/DATAFILE/dbo_webiplined.280.965554337',

'+ATPDG1/ATP/62C93F2857BF4ECDE053B05A100ABBE6/DATAFILE/dbo_webiplinex.281.965554411',

'+ATPDG1/ATP/62C93F2857BF4ECDE053B05A100ABBE6/DATAFILE/gpatd.282.965555729',

'+ATPDG1/ATP/62C93F2857BF4ECDE053B05A100ABBE6/DATAFILE/gpatx.283.965555849'

CHARACTER SET AL32UTF8;;

报错如下:

CREATE CONTROLFILE set DATABASE "ATPUAT" RESETLOGS NOARCHIVELOG

*

ERROR at line 1:

ORA-01503: CREATE CONTROLFILE failed

ORA-00200: control file could not be created

ORA-00202: control file: '+ATPDG1/ATP/CONTROLFILE/current.257.965469981'

ORA-17502: ksfdcre:4 Failed to create file

+ATPDG1/ATP/CONTROLFILE/current.257.965469981

ORA-15046: ASM file name '+ATPDG1/ATP/CONTROLFILE/current.257.965469981' is

not in single-file creation form

关闭DB,并将initATPuat.ora文件中下面行标识掉:

#*.control_files='+ATPDG1/ATP/CONTROLFILE/current.257.965469981','+ATPDG1/ATP/CONTROLFILE/current.258.965469981'

启动db到nomount状态,并重新建立控制文件成功;

将spfile建回ASM磁盘组:

create spfile='+ATPdg1' from memory;

将$ORACLE_HOME/dbs下的原spfile文件改名,建立并修改initmdpuat.ora内容指向ASM磁盘的spfile:

cd $ORACLE_HOME/dbs

vi initATPuat.ora

spfile='+ATPdg1/ATPuat/PARAMETERFILE/spfile.284.965569549'

执行:alter database open resetlogs

select name,open_mode from v$pdbs;

确认cdb为read only状态,而pdb为mount状态,再打开pdp:

alter session set container=ATPuap;

startup

为了让下一次pdb跟随cdb一次性启动,需要在cdb下执行:

alter pluggable database pdb名 save state

最后注册如下信息:

更改OCR中的db_unique_name为ATPuat,操作如下:

1.停库和从ocr中移除库

srvctl remove database -d ATP

2 cluster级别添加database资源

srvctl add database -d ATPuat -n ATPuat -o /ATPapp/orapat/12.2.0

3 修改ocr中db与asm磁盘组的依赖关系

srvctl modify database -d ATPuat -a "ATPDG1"

4重新注册service(需要的话)

su - oracpl

srvctl add service -d nhcpl -s bmpl -r bpmpl1 -a bpmpl2 -P basic -e select -m basic

srvctl add service -d nhcpl -s bdmr -r bpmpl2 -a bpmpl1 -P basic -e select -m basic

启动 service

srvctl start service -d nhcpl -s bmpl

srvctl start service -d nhcpl -s bdmr