首页 » 网站推广 » php里的dbname技巧_Oracle 更改dbid和dbname对象利器|DBNEWID NID分享

php里的dbname技巧_Oracle 更改dbid和dbname对象利器|DBNEWID NID分享

访客 2024-11-23 0

扫一扫用手机浏览

文章目录 [+]

NID 实用程序是在Oracle 10g中引入的。
DBNEWID 是一个数据库实用程序,位于 $ORACLE_HOME/bin 目录中,可以变动操作数据库的内部数据库标识符 (DBID) 和数据库名称 (DBNAME)。
在引入 DBNEWID 实用程序之前,我们曾经手动创建数据库的副本,并通过重新创建掌握文件为其授予新的数据库名称 (DBNAME)。
但是,变动实例的内部数据库标识符 (DBID) 是不可能的。

DBID 是数据库的内部唯一标识符。
由于规复管理器 (RMAN)通过 DBID 区分数据库,因此您无法在同一个 RMAN 存储库中同时注册种子数据库和手动复制的数据库。
DBNEWID 实用程序办理了这个问题。

php里的dbname技巧_Oracle 更改dbid和dbname对象利器|DBNEWID NID分享

NID 实用程序许可我们变动

php里的dbname技巧_Oracle 更改dbid和dbname对象利器|DBNEWID NID分享
(图片来自网络侵删)
只有数据库的 DBID只有数据库的 DBNAME数据库的 DBNAME 和 DBID

变动数据库的 DBID 是一个严明的过程。
当数据库的 DBID 变动时,该数据库的所有先前备份和存档日志将变得不可用。
变动 DBID 后,必须利用 RESETLOGS 选项打开数据库,该选项会重新创建联机重做日志并将其序列重置为 1。
因此,变动 DBID 后应立即备份全体数据库。

在不变动 DBID 的情形下变动 DBNAME 不须要您利用 RESETLOGS 选项打开,因此数据库备份和存档日志不会失落效。
但是,变动 DBNAME 确实会产生影响。
您必须在数据库名称变动后变动 DB_NAME 初始化参数以反响新名称。
此外,您可能须要重新创建 Oracle密码文件. 如果您规复掌握文件的旧备份(在名称变动之前),那么您该当利用数据库名称变动之前的初始化参数文件和密码文件。

NID 实用程序的参数(Oracle 10g 和Oracle 11g 中的参数相同):

$ nid help=y

Keyword

Description

TARGET

Username/Password

DBNAME

New database name

LOGFILE

Output log

REVERT

Revert failed change (YES/NO)?

SETNAME

Set name only (YES/NO)?

APPEND

Append to output log (YES/NO)?

HELP

Displays help messages (YES/NO)?

TARGET输入用户名和密码,把稳,该用户必须具有sysdba的权限。
譬如target=sys/oracle,当然,如果我们是在操作系统本地操作的话,可用反斜杠连接,即target=/REVERT指明一个失落败的DBID操作是否须要回退。
默认是NO。
把稳,如果数据库的DBID修正成功,该操作无法回退。
该回退操作只针对失落败的DBID修正操作。
DBNAME指定新的数据库名。
SETNAME默认是NO,则该数据库将同时修正DBID和DBNAME。
如果指定为YES,则该数据库将只修正DBNAMELOGFILE日志文件,记录操作信息,默认是覆盖上个日志文件。
如果APPEND设为YES的话,则这次操作信息将被追加到上个日志文件中。
APPEND默认是NO。
HELP用来提示DBNEWID的语法规则。
默认为NO一、变动 DBNAME & DBID

1、查询数据库的信息

SQL> select dbid, name from v$database;DBID NAME---------- ---------1744662402 SFMv

2、 备份数据库

备份脚本示例:

[localhost]$cat /oracle/ods_backup/bak0.sh#!/bin/bashexport ORACLE_HOME=/oracle/ods/12201export ORACLE_SID=orclexport DATE=`date +%F`export BACK_DIR='/oracle/ods_backup'mkdir -p $BACK_DIR/$DATE/oracle/ods/12201/bin/rman log=$BACK_DIR/$DATE/rman_backup_$DATE.log target / <<EOFrun{ CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE autobackup format for device type disk to '$BACK_DIR/$DATE/CONTROLFILE.%F'; ALLOCATE CHANNEL disk1 DEVICE TYPE DISK FORMAT '$BACK_DIR/$DATE/full_%d_%T_%s.bak'; ALLOCATE CHANNEL disk2 DEVICE TYPE DISK FORMAT '$BACK_DIR/$DATE/full_%d_%T_%s.bak'; ALLOCATE CHANNEL disk3 DEVICE TYPE DISK FORMAT '$BACK_DIR/$DATE/full_%d_%T_%s.bak'; SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; BACKUP DATABASE SKIP INACCESSIBLE FILESPERSET 10 PLUS ARCHIVELOG FILESPERSET 20 DELETE ALL INPUT; SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; CROSSCHECK BACKUP; CROSSCHECK ARCHIVELOG ALL; DELETE NOPROMPT EXPIRED BACKUP; DELETE NOPROMPT EXPIRED ARCHIVELOG ALL; DELETE NOPROMPT OBSOLETE; RELEASE channel disk1; RELEASE channel disk2; RELEASE channel disk3;}EOFexport EXPIRE_DATE=`date +%F -d '+7 day ago'`rm -rf $BACK_DIR/$EXPIRE_DATEexit

3、在干净关闭后挂载数据库

SQL> SHUTDOWN IMMEDIATESQL> STARTUP MOUNT

4、调用 DBNEWID (NID) 实用程序

调用 DBNEWID (NID) 实用程序,利用具有 SYSDBA 权限的用户从命令行指定 DBNAME。

$ nid TARGET=sys/password DBNAME=new_name LOGFILE =change_dbname.log

DBNEWID 实用程序在考试测验对文件进行 I/O 之前在数据文件和掌握文件的标头中实行验证。
如果验证成功,则 DBNEWID 会提示您确认操作(除非您指定日志文件,在这种情形下它不会提示),变动所有数据文件中的 DBID,然退却撤退出。
数据库处于挂载状态,但尚不可用。

5、更新pfile文件并创建密码文件(如有必要)

此实用程序不会变动 pfile 中的数据库名称,因此请手动变动 pfile 中的数据库名称 (DB_NAME) 并创建密码文件(如有必要)。

挂载数据库SQL> STARTUP MOUNT以 RESETLOGS 模式打开数据库,规复正常利用SQL> ALTER DATABASE OPEN RESETLOGS;SQL> select dbid, name from v$database;DBID NAME---------- ---------1748860243 SFM_DEV

6、进行新的数据库备份

由于您已重置联机重做日志,因此旧的备份和归档日志在当前的数据库中不再可用。

二、Changing only DBNAME

在命令行上调用该实用程序;您必须同时指定 DBNAME 和 SETNAME 参数。

$ nid TARGET=SYS/password DBNAME=newname SETNAME=YES

DBNEWID 在考试测验对文件进行 I/O 之前在掌握文件(不是数据文件)的头中实行验证。
如果验证成功,则 DBNEWID 会提示确认,变动掌握文件中的数据库名称,然退却撤退出。
DBNEWID 成功完成后,数据库仍处于挂载状态但尚不可用。

如果操作成功,更新init文件后启动数据库。

如果操作失落败,要规复变动,请再次运行 DBNEWID 实用程序,指定 REVERT 关键字。

$ nid TARGET=SYS/password REVERT=YES LOGFILE= backout.log三、Changing only DBID

在命令行上调用该实用程序;不要指定 DBNAME。

$ nid TARGET=SYS/password

如果操作成功,挂载数据库并用resetlogs打开。
如果操作失落败,要规复变动,请再次运行 DBNEWID 实用程序,指定 REVERT 关键字。

$ nid TARGET=SYS/password REVERT=YES LOGFILE=backout.log四、小结

以为有帮助的朋友,欢迎收藏、点赞和转发!

相关文章

开封天眼科技之光下的古城守护者

开封,这座历史悠久的古城,承载着中华民族五千年的文明。在科技飞速发展的今天,开封天眼应运而生,成为了古城守护者,为开封的文化传承和...

网站推广 2025-04-05 阅读1 评论0

山西历史与现代交融的旅游胜地

山西,一个充满历史底蕴和自然风光的省份,被誉为“华夏文明的摇篮”。山西凭借其独特的文化魅力和丰富的旅游资源,吸引了越来越多的游客。...

网站推广 2025-04-05 阅读0 评论0