2013年8月8日 星期四

Oracle 11g- 使用dblink

在我現在的電腦中我有兩個Instance ORCL 與 ORCL2 ,如何做我能夠在ORCL的DB 中去存取ORCL2呢?


其實DB LINK是個很好用的東西,如果你不想要讓其他人直接去操作 ORCL2 ,或是你不想要
浪費時間在把ORCL2的資料移動到ORCL DB中,我認為DB LINK都可以幫助你

Step 1. 建立本機中的Tnsnames.ora,建立一個net service name讓你可以正常連到ORCL2 
DB中

Step2.在ORCL中輸入以下指令


SQL> create public database link Porcl2  <<Porcl2 只是一個字串
  2  connect to hr identified by hr  <<連線使用的帳號密碼 (ORCL2)
  3  using 'orcl2';    <<使用連線的 net service name  

Database link created.



Step 3.驗證

SQL> select count(*) from hr.uuu@Porcl2;            

  COUNT(*)
----------
     72410

這是在還沒連結前在ORCL2中建立的一個Table 看起來是對的


這是在ORCL2刪掉802筆資料後從ORCL這邊查詢,確定筆數也正確,這就是說一旦commit後
也可以馬上得到回應
SQL> select count(*) from hr.uuu@Porcl2;

  COUNT(*)
----------
     71568

注意事項:

a.透過dblink僅可以進行DML,但不能進行DDL

b.若包含Remote database異動的交易發生問題,RECO將負責進行rollback.


Step 4.Synonym隱藏database link字串

雖然使用db link很好用但是在操作的過程中總是覺得怪怪的,又或者是你不想讓使用者發現現在所連的這個表格是從外部的DB來的接下來就要利用Synonym來隱藏dblink字串

SQL> create synonym new_uuu for hr.uuu@Porcl2;

Synonym created.

SQL> select count(*) from new_uuu;

  COUNT(*)
----------
     71568


如果要刪除同義字的話可以用drop synonym new_uuu










Oracle 11g-關於Listener.ora / Sqlnet.ora / Tnsnames.ora


事實上,當我們在做Oracle的配至時往往監聽器設定的資訊跟Instance都是一樣的,這也讓我有時候會突然腦筋打結


平常我們在遠端主機不是都這樣打嗎? sqlplus hr/oracle@orcl ,然後趴啦一聲你就連接上了
你不覺得這樣很奇怪嗎?到底我是怎樣連接上的?



Oracle主要有三個配置文件
1.listener.ora
2.sqlnet.ora
3.tnsnames.ora

預設這些檔案都是放在$ORACLE_HOME\network\admin目錄下,如果有使用Grid的話目標位置會在Grid\network\admin目錄下
  


重點:三個文件的作用和使用方式

1.[sqlnet.ora] <-- 簡單的講就是決定連線的方法選擇  
 
   (可使用的連線方式有 EZCONNECT 、TNSNAMES、HOSTNAME、LDAP、NIS)

最常用的大概就是 EZCONNECT 、TNSNAMES這兩種堪稱是最經典的方式

關於


=================================================================
/u01/app/oracle/product/11.2.0/grid/network/admin
[oracle@oracledb admin]$ cat sqlnet.ora
# sqlnet.ora Network Configuration File: /u01/app/oracle/product/11.2.0/grid/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
 <<可以設定多種連線方式它將會依序幫你做解析

ADR_BASE = /u01/app/oracle
=================================================================

在用戶端的話你必須要定義使用的方法這樣才會依據你輸入的command不同而決定你將使用哪種方式連線

舉例:

A.使用EZCONNECT條件
   
 1.sqlnet.ora必須要有設定NAMES.DIRECTORY_PATH= (EZCONNECT)
 2.輸入時必須要有IP 、PORT以及service name

   EX:sqlplus system/oracle@192.168.56.2:1521/orcl
                                         


B.使用TNSNAMES條件

 1.sqlnet.ora必須要有設定NAMES.DIRECTORY_PATH= (TNSNAMES)
 2.本機要搭配 TNSNAMES.ora設定檔

 EX: sqlplus system/oracle@myoracle




假設我的sqlnet.ora中使用  NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT,HOSTNAME)三種方式

當我執行 sqlplus system/oracle@myoracle
當你執行後客戶端就會首先在tnsnames.ora文件中找myorcle的記錄.如果沒有相應的記錄則嘗試下一個是否為EZCONNECT旦發現一整個格式太扯落差又太大就會在往下一下HOSTNAME走把myoracle當作一個主機名稱,通過網路途徑進行解析它 的IP地址然後在去連接這個IP,在這裡還要考慮到SERVER端是否有設定GLOBAL_DBNAME=myoracle



2.[TNSNAMES.ora] <-- 簡單的講就是選擇對應的解析資訊

如果你懂DNS的話其原理就有點類似,我說白話一點好了,你知道 QR-Code這種東西吧?(啥...不知道...那你先查一下好了) 不是用手掃描器這樣一掃就連到要去的網站
所以QR-CODE 記載了目的地的(主機名稱或IP) 、協定(Protocol)連接的PORT跟哪一個網頁(SID)

**但要聽清楚了TNSNAMES.ora 是用戶端在用的,SERVER端用的是監聽器,你會說不是在 SERVER端的 /network/admin/下也有TNSNAMES.ora嗎? 
沒錯~因為你也會在SEREVR端下去連接DB吧...所以這時你也是用戶端啦****

=================================================================
[oracle@oracledb admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.


myoracle =  <<這是net service name
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1521))
<<定義連線的協定、主機名稱與連接的Port

    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl2) <<定義你的SID 
    )
  )


因為礙於習慣以往我們在做練習時很喜歡都設成一樣的,但我這也會讓我們有一些腦筋打結orcl是跟誰有關而導致有時後搞不清楚狀況

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

=================================================================


3.[Listener.ora] <<簡單的說是SERVER端l監聽器

如果沒有設定listener.ora,就像郵差拿著掛號信要送到你家去簽收但是死也找不到電鈴可以叫你下來領掛號一樣


[oracle@oracledb admin]$ cat listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/grid/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)  

<<sid.domain在沒domain name的情況下就跟SID NAME是相同的
其中GLOBAL_DBNAME不是必需的除非使用HOSTNAME做數據庫連接,舉個範例假設我有5台DB每台DB我都叫orcl的話那這樣要怎樣連??
但如果是  orcl.aaa.com.tw  orcl.bbb.com.tw、orcl.ccc.com.tw、orcl.ddd.com.tw、orcl.eee.com.tw
這樣你有清楚差別了嗎??


      (SID_NAME = orcl) <<SID NAME

      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1) <<主目錄路徑
    )
  )


TRACE_LEVEL_LISTENER2 = OFF

LOGGING_LISTENER = OFF

LISTENER =

<<監聽器名稱(一台數據庫可以有不止一個監聽器,每個監聽器可以聽很多個Port)

  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 1521))
    )
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      )
    )
    (DESCRIPTION =
      (ADDRESS_LIST =
        (ADDRESS = (PROTOCOL = TCP)(HOST = oracledb)(PORT = 12345))
      )
    )
  )

在Listener的監聽器中負責監聽想要連線到目的地HOST與PORT,所以你可以看到
Port 1521與Port 12345都是可以被使用的


ADR_BASE_LISTENER = /u01/app/oracle
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER = ON
TRACE_LEVEL_LISTENER = OFF
=================================================================



2013年7月29日 星期一

Oracle 11g-Transport Tablespace


事實上Transport Tablespace根本就是expdp 與 impdp 的方法之一,差別在實際的data仍放在datafile中,試想如果我要匯出的tablespace中的其中一個table有1百萬筆資料時,你覺得是expdpd含資料快還是直接複製datafile快??


Transport Tablespace的注意事項
Oracle8/8i=>兩個database必須有相同oracle版本,OS平台,block size,characterset
Oracle9i=>兩個database必須有相同oracle版本,OS平台,characterset.block size可以不相同
                  (可以有1個standard block,4個non-standard block同時存在)
Oracle10g/11g=>兩個database必須有相同oracle版本,characterset.block size與os平台可以不相同

如果你了解了,請參閱下方步驟...




2013年7月26日 星期五

Oracle 11g-手動 Duplicate database (異機使用RMAN備份檔)

說起來本章算是半人工狀態進行 Duplicate 資料庫到其他台,為什說是半人工狀態呢?
因為整個過程人工的部分都在做環境設定,直到最後仍需要RAMN所產生的備份檔進行還原
接下來我會先模擬一個情境狀態接下來在一步一步說明該如何操作!!

情境:


A同事說: 我需要一個平台測試我的SQL或是內容...但我不想搞壞現有的DB
B同事說: 我需要安裝一個Patch但我也不想搞壞現有的DB
C同事說: 我想要練習一下DB管理,但我也能搞壞現有的DB
老闆說: 我希望公司就算沒有錢做Cluster的機器.....但還是希望這台壞掉以後能有一台加減頂一
               下.....不管怎樣你自己想個辦法解決一下


所以說....用手上現有空閒的硬體複製一個一模一樣的DB就可以暫時解決這個問題
Duplicate database時最好兩邊的版本都是一樣的比較不會有問題

來吧~ 看看怎樣進行下一步



Oracle 11g-安裝Oracle database software


如果你還沒安裝  Grid Infrastructure 的話請參閱延伸閱讀
[Oracle 11g-安裝Grid Infrastructure ]

接下來我們要來正式的跨出Oracle DB 的第一步,安裝Oracle database software
請跟著我一起做吧~



2013年7月25日 星期四

Oracle 11g-使用dbca 建立個樣版資料庫

Oracle 11g-使用dbca 建立個樣版資料庫


事實上,使用樣版來複製資料庫真的是一個很好用的方法,有時候要測試一些有的沒的,又不想搞壞原本的DB時,那就來創建幾個DB吧....


Oracle 11g-使用樣版資料庫建立新的資料庫

Oracle 11g-使用樣版資料庫建立新的資料庫

俗話說的好有進就有出,做了樣版資料庫不拿出來做幾個測試用的怎可以呢???
就讓我們開始建立資料庫吧

如果您還不知道怎樣做樣版資料庫請參閱 :[Oracle 11g-使用dbca 建立個樣版資料庫]



Oracle 11g-使用EM(Enterprise Manager) 進行Clone Database

Oracle 11g-使用EM(Enterprise Manager) 進行Clone Database
這真的是個神兵利器...圖形介面改善了以往都只能靠command line運作的不方便
有了這個你可以混合使用你一定會覺得很開心的

來吧 讓我們來用EM Clone Database




Oracle 11g-安裝Grid Infrastructure

終於來到安裝Grid Infrastructure ,事實上我在這裡吃了不少閉門羹,原因都是因為ASM DISK
不管如何....Grid Infrastructure 是10g開始就提供的功能,請大家跟著我一起安裝起來吧

Grid Infrastructure 軟體可由Oracle 官方網站下載: Free

安裝條件: 請務必在OS command 下將ASM DISK準備好如果還沒準備好的話請參閱
  [Oracle-建立ASM DISK] 一文

安裝步驟如下:


Oracle 11g-建立ASM DISK

如果你才剛安裝好Linux的話,也還沒安裝Grid Infrastructure 跟 database software的話
 ASMDISK配置是你絕對不能錯過的~


2013年7月24日 星期三

Oracle 11g-遇到ORA-03113: end-of-file on communication channel

我的這台VM OS 中一共有 2個Instance 2個DB(orcl 與 orcl2) ,orcl2 是用來放RMAN catalog用的
今天想說把它開起來讓orcl連過去做一下備份,但是一直連不過去都會出現錯誤


[oracle@oracledb admin]$ rman target / catalog vpc1/oracle@192.168.56.2:1521/orcl2
Recovery Manager: Release 11.2.0.1.0 - Production on Wed Jul 24 22:32:59 2013
Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
connected to target database: ORCL (DBID=1346113250)
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-00554: initialization of internal recovery manager package failed
RMAN-04004: error from recovery catalog database: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor


一開始以為是Listener的問題,檢查了一下也沒啥異狀,接著去看了一下orcl2順便重啟了一下DB結果出現一個錯誤

[oracle@oracledb /]$ sqlplus "/as sysdba"
SQL*Plus: Release 11.2.0.1.0 Production on Wed Jul 24 22:48:58 2013
Copyright (c) 1982, 2009, Oracle.  All rights reserved.
Connected to an idle instance.

SQL> startup
ORACLE instance started.
Total System Global Area  523108352 bytes
Fixed Size    1337632 bytes
Variable Size  423626464 bytes
Database Buffers   92274688 bytes
Redo Buffers    5869568 bytes
Database mounted.
ORA-03113: end-of-file on communication channel
Process ID: 16039
Session ID: 136 Serial number: 5


看了一下alert log 出現錯誤的原因是

(事實上整個內容還蠻多的我就只貼最後一段就好)

Errors in file /u01/app/oracle/diag/rdbms/orcl2/orcl2/trace/orcl2_ora_17012.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 48234496 bytes disk space from 4039114752 limit
ARCH: Error 19809 Creating archive log file to '+FRA'
ARCH: Archival stopped, error occurred. Will continue retrying
ORACLE Instance orcl2 - Archival Error
ORA-16038: log 2 sequence# 89 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 2 thread 1: '+DATA/orcl2/onlinelog/group_2.273.818334511'
ORA-00312: online log 2 thread 1: '+FRA/orcl2/onlinelog/group_2.263.818334523'
Errors in file /u01/app/oracle/diag/rdbms/orcl2/orcl2/trace/orcl2_arc2_17066.trc:
ORA-16038: log 2 sequence# 89 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 2 thread 1: '+DATA/orcl2/onlinelog/group_2.273.818334511'
ORA-00312: online log 2 thread 1: '+FRA/orcl2/onlinelog/group_2.263.818334523'
Errors in file /u01/app/oracle/diag/rdbms/orcl2/orcl2/trace/orcl2_ora_17012.trc:
ORA-16038: log 1 sequence# 88 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 1 thread 1: '+DATA/orcl2/onlinelog/group_1.272.818334495'
ORA-00312: online log 1 thread 1: '+FRA/orcl2/onlinelog/group_1.262.818334505'
USER (ospid: 17012): terminating the instance due to error 16038

Instance terminated by USER, pid = 17012




看起來應該是logfile sequence#88  89沒辦法 archived的關係,所以DB在recover的時候出現意外導致DB開不起來

    GROUP# STATUS  TYPE    MEMBER  IS_
---------- ------- ------- ---------------------------------------------------------------------- ---
3   ONLINE  +DATA/orcl2/onlinelog/group_3.274.818334529  NO
3   ONLINE  +FRA/orcl2/onlinelog/group_3.264.818334539  YES
2   ONLINE  +DATA/orcl2/onlinelog/group_2.273.818334511  NO
2   ONLINE  +FRA/orcl2/onlinelog/group_2.263.818334523  YES
1   ONLINE  +DATA/orcl2/onlinelog/group_1.272.818334495  NO

1   ONLINE  +FRA/orcl2/onlinelog/group_1.262.818334505  YES


    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE  MEMBERS ARC STATUS       FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
1    1      91   52428800   512 2 NO  CURRENT     3217365 24-JUL-13 2.8147E+14
2    1      89   52428800   512 2 NO  INACTIVE     3170929 21-JUL-13    3187976 21-JUL-13
3    1      90   52428800   512 2 YES INACTIVE     3187976 21-JUL-13    3217365 24-JUL-13



查了一下解決方法,找出比較可能的方式所以我執行了clear unarchived logfile 事著看看能不能修復,運氣不錯....只清除了group1就好了!!


SQL> ALTER DATABASE CLEAR UNARCHIVED LOGFILE GROUP 1;

Database altered.

SQL> shutdown immediate;
ORA-01109: database not open
Database dismounted.
startORACLE instance shut down.
     
SQL> startup
ORACLE instance started.

Total System Global Area  523108352 bytes
Fixed Size    1337632 bytes
Variable Size  423626464 bytes
Database Buffers   92274688 bytes
Redo Buffers    5869568 bytes
Database mounted.
Database opened.

SQL>


會發生這個問題我猜有可能是我的手殘因為不想要天天都開機等很久所以我有時候會用休眠的方式,沒想到用了這麼久都沒事今天卻.......所以趕快紀錄一下




**** 如果您也喜歡本篇內容的話,請幫忙點選一下下方的廣告,做為對小弟的鼓勵****

****當然如果我的內容不好也請您給予寶貴建議以做為檢討的基礎****


Oracle 11g-安裝Oracle 用Linux OS 及設定


每個人總是有第一次的,我記得我在學Oracle的時候光是安裝這作業系統就不知道重裝了幾次
裝到我都快哭了!  趕快來看看怎麼裝吧~~~

2013年7月23日 星期二

Oracle 11g-複製資料庫的方法-前導

今天要研究的是如何複製一個資料庫,通常會用到這種複製資料庫的情境不外乎是要建立第2套Instance或是資料庫,而建立第2套Instance 或是資料庫的話原因就有很多種了,我想最主要的原因之一應該可以歸納成 為了驗證或測試而產生的假PROD 資料庫,很多時候公司的DB有點異常為了排除問題但又不想要把PROD搞掛,所以複製資料庫是一個蠻常見的問題



在這裡介紹幾種方式,並讓你知道如何操作

方法1:  使用dbca 建立一個全新的資料庫  
優點: 簡單、容易操作,人生的第一個database就是從這邊出現的
缺點: 從無到有所有設定都要重來
適用對象: 同機/異機


方法2:  使用dbca 產生一個樣版,並透過樣版進行資料庫建置
優點: 簡單、容易操作    使用來源:使用現有樣版進行無限制產生資料庫,另外樣版可以只產生結
         構或是結構+資料
缺點: 必須先有樣版才可以進行
適用對象: 同機/異機


方法3:  使用EM進行Clone 
優點: 簡單、容易操作    使用來源: RMAN 下的backup file 或現有的database
缺點: 需要使用RMAN進行現有資料庫備份,如果想要產生大量的instance跟資料庫
適用對象: 同機

方法4:手動產生
優點: 很適合異機還原

缺點: 時間要夠多,所有檔案都必須要對應
適用對象: 同機 (路徑相同的話直接還原就好) /異機(路徑不相同的話必須要把controlfile的資訊都改過,DBID也要修改)


當然我想在其他達人的眼中複製資料庫搞不好還有其他方法,這只是我想的到的幾種方法提供參考。接下來我會把相關的操作方式PO在下面



方法1:  使用dbca 建立一個全新的資料庫   
             操作方式同[Oracle-使用樣版資料庫建立新的資料庫] 僅Step 3 選項不太一樣

方法2:  使用dbca 產生一個樣版,並透過樣版進行資料庫建置 
   [Oracle 11g-使用dbca 建立個樣版資料庫]  >   [Oracle-使用樣版資料庫建立新的資料庫]


方法3:  使用EM進行Clone


方法4: 手動 Duplicate Database   (努力中)



**** 如果您也喜歡本篇內容的話,請幫忙點選一下下方的廣告,做為對小弟的鼓勵****

****當然如果我的內容不好也請您給予建議以做為檢討的基礎****

 

2013年7月19日 星期五

Oracle-如何重新安裝Oracle 11g EM


最近有些練習需要開啟Oracle 11g的EM (Enterprise manager)來搭配command line , 所以懶的開開關關 ,所以都用休眠的方式比較快點

最近發現EM怪怪的,首頁的統計圖表都不見看了一下EM 說 agent有點問題,但我也沒特別去理它想說其他功能能使用就好了

今天早上,EM升天了....瀏覽器都開不起來,我想說可能是太久沒重開機的關係 (但事實上無用仍然開不起來) ,啟動都會failed掉,事實上就算去看了它提供給我的路徑下我也不知道要看哪些log .....太多且不知道哪個才是真的有幫助的(如果哪位前被知道的話請指點一下)

以下就是我每次啟動都會一直異常的樣子:

[oracle@oracledb install]$ emctl stop dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0 
Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.
https://oracledb:5500/em/console/aboutApplication
Stopping Oracle Enterprise Manager 11g Database Control ... 
 ...  Stopped. 
[oracle@oracledb install]$ emctl start dbconsole
Oracle Enterprise Manager 11g Database Control Release 11.2.0.1.0 
Copyright (c) 1996, 2009 Oracle Corporation.  All rights reserved.
https://oracledb:5500/em/console/aboutApplication
Starting Oracle Enterprise Manager 11g Database Control ............................................................................................. failed. 
------------------------------------------------------------------
Logs are generated in directory /u01/app/oracle/product/11.2.0/dbhome_1/oracledb_orcl2/sysman/log 
[oracle@oracledb install]$ 



網路上找了一些方法,但似乎沒甚麼幫助.....
最後只想到要不如重裝EM好了但網上也有一堆五花八門的重裝方式,試了幾個都失敗
最後整合了一下用最簡單的方式來移除及重裝

1.首先先停掉你的EM   SQL> emctl stop dbconsole
2.重置密碼  SQL> alter user sys identified by xxx;   <<(事實上可以不用做這步驟,除非你也忘了密碼)

3.卸載EM 資料庫 > 建立 > 設定

emca -repos drop
emca -repos create
emca -config dbcontrol db

執行以上命令,先卸載EM,並重新安裝。

以下是執行過程

(3-1 )

SQL> emca -repos drop


輸入以下資訊:
資料庫 SID: (請輸入你自己的SID別跟著我呀)
監聽程式埠號: 1521
SYS 用戶的密碼: (請輸入你自己的密碼別跟著我呀)
SYSMAN 用戶的密碼 (請輸入你自己的密碼別跟著我呀)
是否繼續? [yes(Y)/no(N)]: Y

接著要等一小段時間他會卸載掉........

SQL>emca -repos create 

資料庫 SID: (請輸入你自己的SID別跟著我呀)
監聽程式埠號: 1521
SYS 用戶的密碼: (請輸入你自己的密碼別跟著我呀)
SYSMAN 用戶的密碼 (請輸入你自己的密碼別跟著我呀)
是否繼續? [yes(Y)/no(N)]: Y

(基本上整個過程輸入的都差不多)

3-3  emca -config dbcontrol db

SQL>emca -config dbcontrol db


Database SID: orcl2
Database Control is already configured for the database orcl2
You have chosen to configure Database Control for managing the database orcl2
This will remove the existing configuration and the default settings and perform a fresh configuration
Do you wish to continue? [yes(Y)/no(N)]: Y
Listener port number: 1521
Listener ORACLE_HOME [ /u01/app/oracle/product/11.2.0/grid ]: 
Password for SYS user:  
Password for DBSNMP user:  
Password for SYSMAN user:  
Email address for notifications (optional): 
Outgoing Mail (SMTP) server for notifications (optional): 
-----------------------------------------------------------------

You have specified the following settings

Database ORACLE_HOME ................ /u01/app/oracle/product/11.2.0/dbhome_1

Local hostname ................ oracledb
Listener ORACLE_HOME ................ /u01/app/oracle/product/11.2.0/grid
Listener port number ................ 1521
Database SID ................ orcl2
Email address for notifications ............... 
Outgoing Mail (SMTP) server for notifications ............... 


網路上的朋友說,通常EM會掛掉有幾種可能原因:  

1. 更改網路
2.更改電腦名稱
3.更改IP

但我一樣也沒遇到就掛掉了.....Orz  請大家參考參考吧





2013年7月15日 星期一

Oracle-意外搞砸SPFILE內容的Ccontrolfile路徑事件

一開始打要更改parameter中的 tape_asynch_io參數但是每次我只要一改就會一直出錯說找不倒spfile 


SQL> show parameter spfile

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
spfile


2.想說SPFILE應該是有甚麼問題好加在數天之前曾經匯出過PFILE所以用了上次備份出來的pfile直接匯回spfile

SQL> create spfile form pfile  (預設位置為 /home/oracle) 或是使用
SQL> create spfile form pfile='檔案路徑'

3.關閉instance在重啟

SQL> shutdown immediate;
SQL> startup       
ORACLE instance started.

Total System Global Area  523108352 bytes
Fixed Size      1337632 bytes
Variable Size    427820768 bytes
Database Buffers    88080384 bytes
Redo Buffers      5869568 bytes
ORA-00205: error in identifying control file, check alert log for more info


3.看起來好想是開起來了但是居然出現ORA-00205 Control file的異常錯誤
(但蠻怪的這樣系統開的起來???)


4.不管怎樣先檢查了一下Spfile有額內容

SQL> show parameter spfile

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
spfile         string  /u01/app/oracle/product/11.2.0 /dbhome_1/dbs/spfileorcl.ora <<這次有東西了


5.順便檢查了一下Controlfile也有內容但是我想了一下這個匯入的PFILE應該是上次做Controlfile遺失練習的時候恢復了不一樣的Controlfile (不同時間的controlfile 也做過resetlogs)
所以跟之前匯出的pfile controlfile檔名不太一樣

   
SQL> show parameter control

NAME         TYPE  VALUE
------------------------------------ ----------- ------------------------------
control_files        string  +DATA/orcl/controlfile/current.310.819326913,                        
                                   +FRA/orcl/controlfile/current.256.818332519


6.本想用AutoBACKUP直接還原最新的Controlfile 與Spfile結果好巧不巧在今天一早我就把所有備份殺光光了.....Orz (這故事告訴我們沒事不要把所有備份檔都殺光)


7.直接先去找實體檔案在哪,知道路徑後用手動的方式先去修改PFILE正確的Controlfile路徑與檔名 (共計兩個一個在+DATA 一個在+FRA)


8.開啟instance到nomount下,執行

SQL> alter system set control_files = '+DATA/orcl/controlfile/current.332.820661737','+FRA/orcl/controlfile/current.449.820661741' scope=spfile;

System altered.

9.Shutdown and restartup 後修復完成

SQL> shutdown immediate;

SQL> startup ;

ORACLE instance started.

Total System Global Area  523108352 bytes
Fixed Size      1337632 bytes
Variable Size    427820768 bytes
Database Buffers    88080384 bytes
Redo Buffers      5869568 bytes
Database mounted.
Database opened.



孩子~ 沒事的話記得留一份最新的Controlfile /SPFILE /還有datafile  !!!




============================================================
SPFILE的匯出與匯入

做create pfile from spfile=' spfile 檔名';
做create spfile from pfile='  pfile 檔名';

2013年6月21日 星期五

Cisco Aironet -SSID 設定


目前本範例為XX公司要建立一個區分IT、一般員工與外來客戶的的無線網路環境
因此在實施前有些主準備工作要做

1.L3 Switch 需要先劃分三個VLAN出來 分別是10(for IT)、20(for Empolyee)、99(for Guest)
(在此就不多敘述L3 VLAN 如何建立)


2.本次使用GUI 方式建立Aironet 上如何設定


3.連線到Aironet GUI 介面


4.如果有需要修改BVI1 Interface可在EXPRESS SET-UP中修改,順便設定一下2.4G 的AP是 Access Point狀態


5.在NETWORK INTERFACES>Radio0-802.11N 2.4GHz >Seetings 下把一些基本相關設定給確認一下


6.

Oracle-解決IE無法開啟Oracle EM問題(憑證錯誤)

回國後, 重新去聽了Oracle 11g的課, 課程中提到了Enterprise Manager,簡稱 EM,因為恆逸的電腦被我玩壞了所以我想在自己電腦上灌一個EM.....

連結方式為 https://(your em 's IP ):1158/em,
如果不知道PORT或是位置的話可從 $ORACLE_HOME/install/readme.txt 找到正確的連接位置
另外別忘了在command line 上 emctl start dbconsole 啟動EM service

但好笑的是....

但不知道為什麼使用 IE 就是會顯示找不到網頁,一直跟我說憑證有問題。但我用 Google Chrome 連就很正常,一整火都抓起來了。 (我印象中以前就沒問題阿---Orz)





調整過各種設定,甚至是從 IE 10 一路降版到8 也沒辦法起死回生......
最後在討論版上才發現可能的原因就是加密長度的問題。

微軟提高了 IE 的安全性,將憑證金鑰長度基本提高至 1024bit,而 Oracle EM 預設的憑證金鑰長度是 512bit,這就是為什麼我一直連不上去很噢的原始問題

 解決方法如下: 。

方法一:
 移除IE KB2661254,重新開機,完成。

方法二:
 1.適用Windows Vista、7、Server 2008,(必須以系統管理員身份執行下列指令)。

 cmd> certutil -setreg chain\MinRSAPubKeyBitLength 512
 
該指令可允許金鑰長度小於1024bit

2.重新開機,完成

 移除此參數可還原封鎖長度小於 1024bit 的金鑰。
 cmd> > certutil -delreg chain\MinRSAPubKeyBitLength

方法三:

 適用 Windows XP、Windows 8、Server 2012,修改下列登錄值
 HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\OID\EncodingType 0\CertDLLCreateCertificateChainEngine\Config
 MinRsaPubKeyBitLength:DWORD 值:512(十進位)


我個人是直接用方法2就OK了....
終於....我進來了 嗚嗚嗚嗚