暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 如何更改单实例数据库的 DB_UNIQUE_NAME?

原创 小小亮 2022-10-27
1001

在这篇文章中,我们将讨论如何更改单实例数据库的DB_UNIQUE_NAME 。

首先,让我们看看当前的状态。

[oracle@test ~]$ echo $ORACLE_SID
ORCLCDB
[oracle@test ~]$ sqlplus / as sysdba
...
SQL> show parameter name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cdb_cluster_name                     string
cell_offloadgroup_name               string
db_file_name_convert                 string
db_name                              string      ORCLCDB
db_unique_name                       string      ORCLCDB
global_names                         boolean     FALSE
instance_name                        string      ORCLCDB
lock_name_space                      string
log_file_name_convert                string
pdb_file_name_convert                string
processor_group_name                 string

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
service_names                        string      ORCLCDB

在这种情况下,我们希望从DB_NAME派生的原始DB_UNIQUE_NAME从ORCLCDB更改TESTCDB

然后我们将数据库脱机。

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

我们从 SPFILE 创建一个纯文本参数文件。

SQL> create pfile='/home/oracle/pfile' from spfile;

File created.

SQL> exit

删除所有以旧DB_UNIQUE_NAME 开头的参数,并像这样在 PFILE 中添加或修改参数DB_UNIQUE_NAME

[oracle@test ~]$ vi /home/oracle/pfile
*.audit_file_dest='/u01/app/oracle/admin/ORCLCDB/adump'
*.audit_trail='db'
*.compatible='19.0.0'
*.control_files='/u01/app/oracle/oradata/ORCLCDB/control01.ctl','/u01/app/oracle/fast_recovery_area/ORCLCDB/control02.ctl'
*.db_block_size=8192
*.db_name='ORCLCDB'
*.db_unique_name='TESTCDB'
*.db_recovery_file_dest='/u01/app/oracle/fast_recovery_area'
*.db_recovery_file_dest_size=20g
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=TESTCDBXDB)'
*.enable_pluggable_database=true
*.local_listener='LISTENER_ORCLCDB'
*.log_archive_format='%t_%s_%r.dbf'
*.nls_language='AMERICAN'
*.nls_territory='AMERICA'
*.open_cursors=300
*.pga_aggregate_target=362m
*.processes=1500
*.remote_login_passwordfile='EXCLUSIVE'
*.sga_target=1086m
*.undo_tablespace='UNDOTBS1'

接下来,转到/etc/oratab我们将 SID 替换为文件中的新 SID,以供oraenv稍后查找。

[oracle@test ~]$ cat /etc/oratab
...
#ORCLCDB:/u01/app/oracle/product/19.3.0/dbhome_1:Y
TESTCDB:/u01/app/oracle/product/19.3.0/dbhome_1:Y

我们还使用oraenv更改ORACLE_SID环境变量。

[oracle@test ~]$ . oraenv
ORACLE_SID = [ORCLCDB] ? TESTCDB
The Oracle base remains unchanged with value /u01/app/oracle
[oracle@test ~]$ echo $ORACLE_SID
TESTCDB

您可以永久更改~/.bash_profile中的ORACLE_SID

我们从 PFILE 创建一个新的 SPFILE 以供以后启动。

[oracle@test ~]$ sqlplus / as sysdba
...
SQL> create spfile from pfile='/home/oracle/pfile';

File created.

SQL> startup
ORACLE instance started.
...
Database mounted.
Database opened.

启动后,我们检查数据库唯一名称。

SQL> select name, open_mode from v$database;

NAME      OPEN_MODE
--------- --------------------
ORCLCDB   READ WRITE

SQL> select instance_name from v$instance;

INSTANCE_NAME
----------------
TESTCDB


SQL> show parameter name

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
cdb_cluster_name                     string
cell_offloadgroup_name               string
db_file_name_convert                 string
db_name                              string      ORCLCDB
db_unique_name                       string      TESTCDB
global_names                         boolean     FALSE
instance_name                        string      TESTCDB
lock_name_space                      string
log_file_name_convert                string
pdb_file_name_convert                string
processor_group_name                 string

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
service_names                        string      TESTCDB


我们做到了。

不要忘记修改每个客户端的$ORACLE_HOME/network/admin/tnsnames.ora


原文标题:How to Change DB_UNIQUE_NAME of a Single-Instance Database

原文作者:  Ed Chen

原文链接:https://logic.edchen.org/how-to-change-db_unique_name-of-a-single-instance-database/


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论