首页 > 数据库 >ORACLE修改ORACLE_SID总结

ORACLE修改ORACLE_SID总结

时间:2023-04-18 12:12:05浏览次数:47  
标签:总结 instance 修改 SID ORACLE HOME ora

在某些特殊情况下,需要修改当前Oracle数据库实例中的ORACLE_SID。下面简单的总结一下如何修改$ORACLE_SID的步骤。默认情况下,INSTANCE_NAME参数和ORACLE_SID的值是相同的,但是它们也可以不同。另外,如果参数文件(pfile或spfile)中没有指定instance_name的值,那么它的值跟ORACLE_SID的值一致。我们这里只修改ORACLE_SID的值。另外,关于DB_NAME与ORACLE_SID的关系,我们这里暂且不表,本文只讨论如何修改ORACLE_SID的值。

1查看数据库的信息

查看环境变量

$ echo $ORACLE_SID

SQL查询:

select instance_name, status from v$instance;

select instance from v$thread;

#注意,系统视图v$instance中的instance_name的值为ORACLE_SID的值,不是参数文件中instance_name的值。

SQL> select instance_name, status from v$instance;

INSTANCE_NAME    STATUS
---------------- ------------
gsp                  OPEN

1 row selected.

SQL> select instance from v$thread;

INSTANCE
-------------------------------------
gsp

1 row selected.

#查看参数文件中参数instance_name

SQL> show parameter instance_name

NAME                         TYPE        VALUE
------------------------ ----------- ------------------------------
instance_name               string      gsp
SQL>

检查判断数据库实例从pfile还是spfile启动。

SQL> show parameter spfile;
SQL> show parameter pfile;

2:关闭数据库监听

$ps -ef | grep lsnr | grep -v grep

#根据上面脚本获取具体的监听名称(默认可能为LISTENER),关闭监听

$lsnrctl stop xxx 

3:关闭数据库实例

SQL> shutdown immediate;

--注意,这里只能用SHUTDOWN NORMAL或者SHUTDOWN IMMEDIATE关闭数据库实例. 不要使用SHUTDOWN ABORT命令关闭实例。

4: 修改环境变量设置。

4.1 修改/etc/oratab文件

gsp:/opt/oracle19c/product:N

修改为

kerry:/opt/oracle19c/product:N

4.2 修改一些环境变量设置

不同平台的操作系统,可能需要修改的文件可能不一样。例如Unix平台,可能需要修改参数文件.profile,而Linux平台可能是.bash_profile文件,根据具体情况调整。

这里测试环境为Linux平台,当前环境中,在.bash_profile配置ORACLE的变量,我只需修改.bash_profile等参数文件

$ more ~/.bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

export ORACLE_HOME=/opt/oracle19c/product
export PATH=$HOME/.local/bin:$HOME/bin:$ORACLE_HOME/bin:$PATH
export ORACLE_BASE=/opt/oracle19c
export ORACLE_SID=gsp
#export TMOUT=7200
export TNS_ADMIN=$ORACLE_HOME/network/admin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/lib
export LIBPATH=$ORACLE_HOME/lib:$ORACLE_HOME/network/lib:/lib:/usr/lib:/usr/local/lib

如上所示,将export ORACLE_SID=gsp 改为export ORACLE_SID=kerry

$ source ~/.bash_profile
$ echo $ORACLE_SID
kerry
$ env |grep ORACLE
ORACLE_SID=kerry
ORACLE_BASE=/opt/oracle19c
ORACLE_HOME=/opt/oracle19c/product

5 重命名参数文件

如果数据库实例从PFILE启动,那么可以直接修改参数文件init< sid>.ora的sid名字,如果数据库实例从SPFILE启动,可以直接修改参数文件spfile< sid>.ora名字,但是建议先生成PFILE然后从PFILE启动。因为如果时直接修改spfile< sid>.ora中< sid>的名字,启动数据库后,你生成SPFILE对应的PFILE就会发现,里面有许多原来ORACLE_SID的内容,如果是pfile就可以手工清理,如果是spfile,需要先生成pfile,手工清理旧ORACLE_SID的值,然后反向生成spfile,当然这些值不清理也没有关系,数据库实例启动时,根据$ORACLE_SID来读取。

$ cd $ORACLE_HOME/dbs
$ ls -lrt *gsp*
-rw-r----- 1 oracle oinstall     2048 Feb  6 15:57 orapwdgsp
-rw-r----- 1 oracle oinstall 18759680 Mar 15 08:38 snapcf_gsp.f
-rw-rw---- 1 oracle oinstall     1544 Mar 30 11:07 hc_gsp.data
-rw-r--r-- 1 oracle oinstall     1569 Mar 30 11:30 initgsp.ora
-rw-r----- 1 oracle oinstall     4608 Apr  4 14:00 spfilegsp.ora

snapcf_gsp.f是控制文件的快照,直接忽略。可以不用处理。 hc_gsp.dat(hc_<ORACLE_SID>.dat)文件用于实例的健康检查, 它包含了用于监视实例健康状态的信息,当实例关闭时可以用该文件确定实例因为什么原因而关闭。每次实例启动时重建该文件。如果用一个空白文件替换该文件,会得到ORA-7445错误。因为每次实例启动的时候会重建,所以不用管之前的hc_gsp.data文件,甚至可以删除。

重命名参数文件

$ cp spfilegsp.ora spfilekerry.ora
$ mv spfilegsp.ora spfilegsp.ora.20230418
$ cp initgsp.ora initkerry.ora
$ mv initgsp.ora initgsp.ora.20230418

重新生成密码文件/或者重命名密码文件

检查是否存在密码文件,重命名密码文件或者使用orapwd重建密码文件

重命名密码文件

$mv orapwgsp  orapwkerry

重建密码文件

$ orapwd file=orapwdkerry password=KerrY#qw1245  entries=5 force=y;

$ orapwd file=./orapwkerry
KerrY#qw1245

6 修改监听文件

$ORACLE_HOME/network/admin/listener.ora 修改监听中的SID_NAME等参数的值。

修改监听配置文件后启动监听。

7 启动Oracle实例

8 其他修改

数据库的其它参数,例如db_name,service_name,这些可修改亦可以不修改。根据你的需求视情况而定。这里不做展开。修改db_name打算在下一篇文章展开介绍。

另外,有些目录可以不改名,也可以改名。例如$ORACLE_BASE/diag/rdbms/< sid>/< sid>. 不修改名称,会根据$ORACLE_SID自动生成一个新的目录名称。

标签:总结,instance,修改,SID,ORACLE,HOME,ora
From: https://www.cnblogs.com/kerrycode/p/17329112.html

相关文章

  • Oracle审计篇——细粒度审计
    Oracle的标准审计默认级别是DB,这个级别不会记下具体sql语句是什么,如果需要记下需要开到DB,extended,但是改这个参数需要重启数据库生效,影响业务。SQL>showparameteraudit_trailNAMETYPEVALUE-------------------------------------......
  • 如何查看Oracle加密代码
    例如我们想看看dbms_pdb.cleanup_task这个函数的内容是什么,直接看会发现只能看到声明,代码是加密的可以把加密后的代码粘出来解密https://www.codecrete.net/UnwrapIt/解密后找到cleanup_task对应部分查了下PRAGMAINTERFACE(C,KPDBCLEANUPTASK);意思是调用C语言的内部代码,更深一层......
  • oracle 为sql寻找更好的执行计划并绑定
    这种方法只适合sql本身有更好的执行计划,不能绑定自己构造的执行计划(比如加hint),并且每次只能针对一个sql_id,如果慢sql未使用绑定变量导致有很多类似sql最好从索引、sql改写等方面优化。首先找到慢sql的sql_id,查看其各执行计划平均执行时间--可用v$active_session_history,dba_hist_a......
  • Oracle授予普通用户kill session权限
    开发A在测试环境操作时有时会遇到阻塞问题,需要找DBA帮忙查看阻塞会话及killsession,后来觉得太麻烦想要个kill会话的权限,查了下Oracle授予普通用户killsession权限的方法。1.授予altersystem权限官方文档查到,killsession需要ALTERSYSTEM权限,但是这个权限非常大,不能直接给GRANT......
  • kettle工具如何使用service_name连接oracle
    开发反馈使用kettle工具连pdb连不上,报错如下: Causedby:org.pentaho.di.core.exception.KettleDatabaseException:Errorconnectingtodatabase:(usingclassoracle.jdbc.driver.OracleDriver)Listenerrefusedtheconnectionwiththefollowingerror:ORA-12505,TNS:l......
  • Oracle 恢复之using backup controlfile 和 until cancel
    Oracle恢复数据库时有几个常用但非常相似的命令,整理下它们各自的作用及适用场景。recoverdatabaserecoverdatabaseuntilcancelrecoverdatabaseusingbackupcontrolfilerecoverdatabaseusingbackupcontrolfileuntilcancelrecoverdatabaseuntilcancelusingbackupc......
  • Oracle 利用在线重定义进行分区表转换
    例如原始非分区表为createtableTESTUSER.LOG_TEST("id"CHAR(36)primarykey,"created_at"DATE)一、选择重定义方法   Bykey,选择主键或者所有字段有NOTNULL约束的唯一键用于在线重定义操作。使用这种方法,在线重定义之前和之后表应该有相同的主键字段(默......
  • Oracle Dataguard安装先决条件与注意事项
    业务方要求把一个单实例DB做成dg,由于之前是业务方自己安装管理的,过去检查一番,发现这个库软件居然不是企业版的。整理了几篇相关的官方文档链接给业务方,反馈Oracle标准版不支持dg。顺便也根据官方文档(19c)整理一份checklist,方便以后使用。一、硬件与OS要求1.主库与所有从库安装版本......
  • oracle、达梦数据库、MySQL数据创建表与字段注释
    /**1.oracle注释*//*表本身注释*/commentontable表名is'注释信息';/*字段注释*/commentoncolumn表名.字段名is'注释信息';/*实例如下:*/commentontableUSERis'用户表';commentoncolumnUSER.IDis'主键ID';/**2.MySQL注释*//*表本身注释*/altertable表名co......
  • Oracle等待事件(二)—— free buffer wait 常见原因及对应解决方法
    首先看看官方文档中的描述Thiswaiteventindicatesthataserverprocesswasunabletofindafreebufferandhaspostedthedatabasewritertomakefreebuffersbywritingoutdirtybuffers.Adirtybufferisabufferwhosecontentshavebeenmodified.Dirtyb......