Oracle

通過 rman 遠端登錄為一個實例而不是另一個實例

  • June 6, 2018

我在兩台伺服器上安裝了 Oracle 12c。在伺服器上UAT,我有一個RMCAT託管 RMAN 恢復目錄的實例。在伺服器上EXT,我有兩個實例,extdev02並且extuat01. 我可以在伺服器上使用以下命令UAT連接到我的RMCAT目錄和目標extdev02,但是當我嘗試連接到extuat01它時會給出一個ORA-01017

UAT> rman target= sys/tiger@extdev02  catalog= rmuser/tigerman@rmcat

Recovery Manager: Release 12.1.0.2.0 - Production on Wed May 30 22:59:26 2018

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

connected to target database: EXTDEV02 (DBID=4287636681)
connected to recovery catalog database

RMAN> exit


Recovery Manager complete.

UAT> rman target= sys/tiger@extuat01  catalog= rmuser/tigerman@rmcat

Recovery Manager: Release 12.1.0.2.0 - Production on Wed May 30 22:59:42 2018

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04005: error from target database:
ORA-01017: invalid username/password; logon denied

tnsping我從UAT伺服器到兩個實例都得到了 OK 的結果EXT,並且我可以從伺服器連接到非 dba 使用者UAT到兩個實例。orapw我在EXT伺服器實例上使用重新創建了 Oracle 密碼文件EXTUAT01,但沒有幫助。

實例名稱是extdev02and extuat01on server EXT。這是我在該伺服器上的密碼文件:

/u01/app/oracle/product/12.1.0.2/db_1/dbs> ls -o orapw*
-rw-r-----. 1 oracle 18432 Jun  1 00:07 orapwextuat01
/u01/app/oracle/product/12.1.0.2/db_0/dbs> ls -o orapw*
-rw-r-----. 1 oracle  7680 Feb  6 20:22 orapwextdev02

請注意,它們位於兩個不同的 ORACLE_HOME 目錄中。的值適用remote_login_passwordfileEXCLUSIVE兩個實例

已解決的問題

託管 RMAN 目錄實例的伺服器 UATRMCAT幾天前重新啟動以添加記憶體,現在我可以連接了!如果我有一台 Wayback 機器,我會回去看看嘗試重新啟動 UAT 主機上的偵聽器是否會有所幫助;無論如何,它有效。感謝您的建議;我只是為了後代而提出答案。

已回複評論

  • 不是 Grid 也不是 RAC 也不是 Dataguard 實例環境。
  • 從 v$pwfile_users 中選擇:

extdev02:

AtlasExt:SYS@extdev02> select * from v$pwfile_users;

USERNAME  SYSDBA  SYSOPER SYSASM  SYSBACKUP  SYSDG   SYSKM   CON_ID
--------- ------- ------- ------- ---------- ------- ------  ------
SYS       TRUE    TRUE    FALSE   FALSE      FALSE   FALSE   0

extuat01(注意:我執行 orapw 指定 sysbackup 無濟於事)

AtlasExt:SYS@extuat01> select * from v$pwfile_users;

USERNAME  SYSDBA  SYSOPER SYSASM  SYSBACKUP  SYSDG  SYSKM    CON_ID
--------- ------- ------- ------- ---------- ------ -------- ------
SYS       TRUE    TRUE    FALSE   FALSE      FALSE  FALSE    0
SYSBACKUP FALSE   FALSE   FALSE   TRUE       FALSE  FALSE    0
  • 無法extuat01通過 SQL*Plus從 UAT 連接到 EXT 實例;但重啟後我是:

來自 UAT 的 extdev02:

AtlasUAT:SYS@extdev02> select host_name, instance_name from v$instance;

HOST_NAME                 INSTANCE_NAME
------------------------- ----------------
plsekatlasexta01          extdev02

來自 UAT 的 extuat01:

18:25:07 AtlasUAT:SYS@extuat01> select host_name, instance_name from v$instance;

HOST_NAME                 INSTANCE_NAME
------------------------- ----------------
plsekatlasexta01          extuat01
  • 已驗證 extuat01 和 extdev01 程序執行在同一個主目錄之外:

找到 pmon PID:

plsekatlasexta01> ps -fu oracle  | grep pmon | grep -v grep
oracle    1976     1  0 Jun01 ?        00:00:43 ora_pmon_extuat01
oracle   32373     1  0 May16 ?        00:02:45 ora_pmon_extdev02
plsekatlasexta01> cat /proc/1976/environ | tr '\000' '\n' | grep -E 'ORACLE_(HOME|SID)'
ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_1
ORACLE_SID=extuat01
plsekatlasexta01> cat /proc/32373/environ | tr '\000' '\n' | grep -E 'ORACLE_(HOME|SID)'
ORACLE_HOME=/u01/app/oracle/product/12.1.0.2/db_0
ORACLE_SID=extdev02

託管 RMAN 目錄實例的伺服器 UATRMCAT幾天前重新啟動以添加記憶體,現在我可以連接到 EXT 伺服器上的兩個數據庫實例。

我不記得我是否嘗試在 UAT 主機上的 TNS 偵聽器不工作時重新載入/重新啟動它,但現在伺服器重新啟動它現在可以工作了;我假設重新啟動讓監聽器工作。感謝大家的有用評論。

引用自:https://dba.stackexchange.com/questions/208301