2015-09-08 62 views
0

我的目標是讓我的容器數據庫進入掛載模式,執行系統alter語句以啓用閃回功能。Oracle關閉後立即拋出ORA-12514

Configuring Your Database for Flashback Transaction

環境:OS 8.1運64位,甲骨文12C(12.1.0.2.0)64位

我覈實,我的兩個監聽器和數據庫服務正在運行。

SQLPLUS的LISTENER.LOG

Tue Sep 08 13:31:42 2015 System parameter file is C:\OracleServer\product\12.1.0\dbhome_1\network\admin\listener.ora Log messages written to C:\OracleServer\diag\tnslsnr\NA-D02979\listener\alert\log.xml Trace information written to C:\OracleServer\diag\tnslsnr\NA-D02979\listener\trace\ora_9672_20416.trc Trace level is currently 0

Started with pid=9672 Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.1.105.118)(PORT=1521))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.\pipe\EXTPROC1521ipc))) Listener completed notification to CRS on start

TIMESTAMP * CONNECT DATA [* PROTOCOL INFO] * EVENT [* SID] * RETURN CODE Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=NA-D02979.vgnet.volgrp.com)(PORT=5500))(Security=(my_wallet_directory=C:\ORACLESERVER\admin\CDB1\xdb_wallet))(Presentation=HTTP)(Session=RAW)) Dynamic address is already listened on (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521))) 08-SEP-2015 13:32:25 * service_register * cdb1 * 0 08-SEP-2015 13:33:22 * service_update * cdb1 * 0

結果

C:\Users\jeff>sqlplus sys/**********@CDB1 as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Tue Sep 8 13:44:18 2015

Copyright (c) 1982, 2014, Oracle. All rights reserved.

Connected to: Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

Warning: You are no longer connected to ORACLE.

SQL> startup mount

SP2-0640: Not connected

SQL> ^C

C:\Users\jeff>sqlplus> sys/**********@CDB1 as sysdba

SQL*Plus: Release 12.1.0.2.0 Production on Tue Sep 8 13:46:24 2015

Copyright (c) 1982, 2014, Oracle. All rights reserved.

ERROR: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor

Enter user-name:

當我連接到我的容器DB作爲SYSDBA,我可以執行shutdown immediate命令,但只要數據庫卸載後,監聽器不再知道數據庫,我無法發出「啓動裝入」命令。

LISTENER.ORA

SID_LIST_LISTENER = (SID_LIST =

(SID_DESC = 

    (SID_NAME = CLRExtProc) 

    (ORACLE_HOME = C:\OracleServer\product\12.1.0\dbhome_1) 

    (PROGRAM = extproc) 

    (ENVS = "EXTPROC_DLLS=ONLY:C:\OracleServer\product\12.1.0\dbhome_1\bin\oraclr12.dll") 

) 

(SID_DESC =

(GLOBAL_DBNAME = CDB1) 

(ORACLE_HOME = C:\app\oracle\product\11.2.0\dbhome_1) 

(SID_NAME = CDB1) 

) ) 

LISTENER = (DESCRIPTION_LIST = (DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.105.118)(PORT = 1521)) 
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 

) ) 

TNSNAMES.ORA

LISTENER_CDB1 =

(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) 

CDB1 =

(DESCRIPTION = 

    (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.105.118)(PORT = 1521)) 

    (CONNECT_DATA = 

    (SERVER = DEDICATED) 

    (SERVICE_NAME = CDB1.vgnet.volgrp.com) 

    ) 

) 

ORACLR_CONNECTION_DATA =

(DESCRIPTION = 

    (ADDRESS_LIST = 

    (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 

    ) 

    (CONNECT_DATA = 

    (SID = CLRExtProc) 

    (PRESENTATION = RO) 

    ) 

) 

我已經定義了一個靜態SID給我的容器數據庫。

第二輪投票結果

從下面的結果,我也跟着亞歷克斯池的回答都記錄在案。我和數據庫在同一臺機器上。我已將ORACLE_SID設置爲cdb1,然後每次嘗試連接時,都會收到ORA-12560:TNS:協議適配器錯誤。爲什麼當我嘗試基於SID進行連接時,偵聽器仍然會拋出TNS錯誤?

C:\Users\jeff>%ORACLE_SID% 
'cdb1' is not recognized as an internal or external command, 
operable program or batch file. 

C:\Users\jeff>sqlplus sys/********** as sysdba 

SQL*Plus: Release 12.1.0.2.0 Production on Wed Sep 9 08:05:25 2015 

Copyright (c) 1982, 2014, Oracle. All rights reserved. 

ERROR: 
ORA-12560: TNS:protocol adapter error 

Enter user-name: ^C 
C:\Users\jeff>sqlplus/as sysdba 

SQL*Plus: Release 12.1.0.2.0 Production on Wed Sep 9 08:05:36 2015 

Copyright (c) 1982, 2014, Oracle. All rights reserved. 

ERROR: 
ORA-12560: TNS:protocol adapter error 

Enter user-name: ^C 
C:\Users\jeff>sqlplus /nolog 

SQL*Plus: Release 12.1.0.2.0 Production on Wed Sep 9 08:05:50 2015 

Copyright (c) 1982, 2014, Oracle. All rights reserved. 

SQL> connect/as sysdba 
ERROR: 
ORA-12560: TNS:protocol adapter error 

SQL> 

回答

3

的聽衆不再知道該服務因爲數據庫已關閉期間註銷本身。它仍然知道SID,儘管這不是很有用。你可以在關機前後lsnrctl status看到區別。

你說你已經定義了一個靜態的SID,這是真實的(假設你指的是SID_LIST_LISTENER項),但您使用的@CDB1 TNS別名,這是在你的tnsnames.ora違抗使用的服務名稱連接,而不是SID。你可能會有一些與別名和SID相同的值,但它們之間沒有直接的聯繫。你可以調用別名的東西完全不同(儘管讓它們相同是很常見的)。

如果你從相同的方塊連接,設置ORACLE_SIDCDB1和本地連接而不是通過SQL * Net的,只有:

sqlplus sys/********** as sysdba 

甚至

sqlplus/as sysdba 

或者

sqlplus /nolog 
connect/as sysdba 
+1

我已經完成您所描述的步驟,但仍然得到監聽器的錯誤。我已將測試結果添加到我的問題中。 –

+1

@JeffP。 - 如果你像這樣連接,那麼你不會通過TNS或聽衆。除非您設置了TWO_TASK以及/而不是ORACLE_SID。 (呃,或在Windows上...我認爲TWO_TASK的等價物是本地的?) –

+0

@JeffP。 - 在您的環境中設置了「%LOCAL%」?我並沒有完全注意到你在12c上的任何意義,[但這仍然適用於容器數據庫](http://docs.oracle.com/database/121/ADMIN/cdb_admin.htm#ADMIN13608)。 –

-1

$ export TWO_TASK =

的sqlplus/NOLOG

康恩SYS /通以SYSDBA

+0

請加詳細解釋 - http://stackoverflow.com/help/how-to-answer –