系統環境:

系統環境先放在前面,是為了後面說明概念時,可以加以標示註解,以便更加瞭解 RMAN 的各個環節。

1. Oracle DB 11g  on Windows:記錄 RMAN 所有備份的記錄,在 RMAN 稱為 RMAN Repository (RMAN 恢復目錄資料庫)。

ORACLE_SID:RMANDB
執行記錄 recovery catalog 的帳號/密碼:RMAN_USER/RMAN_PWD

2. Taget Database (要備份的目標資料庫):

Oracle DB 12c on Linux:正式資料庫,日常的交易要作備份。

ORACLE_SID:orcl
執行備份的帳號/密碼:sys/oracle

 

3. 兩者的 tnsnames.ora 均要有雙方連線的資訊:

# tnsnames.ora Network Configuration File: /u01/app/oracle/product/12.1.0/db_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

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

RMANDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = rmandb.domain)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = rmandb.domain)
    )
  )


 

RMAN 概念:

Oracle Database 的備份,一般建議是利用 RMAN 來作業,一來可以由系統自行管理,二來也可以省掉自已下一堆的指令。在建立 RMAN 的機制前,下面幾個概念要有:

1. Target Database:(目標資料庫):本實例為 ORACLE_SID:orcl

就是需要RMAN對其進行備份與恢復的資料庫,RMAN 可以備份資料檔案,控制檔,歸檔日誌,spfile.(注意:RMAN不能用於備份連線日誌、初始化參數檔:pfile 和命令檔)

2. recovery catalog(恢復目錄)

用來保存備份與恢復資訊的一個資料庫,不建議建在目標資料庫上。RMAN 利用恢復目錄記載的資訊去判斷如何執行需要的備份恢復操作。

如果不採用恢復目錄(nocatalog),備份資訊可以存在於目標資料庫的 control file 中。如果存放在目標資料庫的 control file 中,控制項檔會不斷增長,不能保存 RMAN 的Script. CONTROL_FILE_RECORD_KEEP_TIME (default=7):控制項檔中 RMAN 資訊保存的最短時間。

使用恢復目錄(catalog)的優勢: 可以存儲腳本,並記載較長時間的備份恢復操作。


3. RMAN Repository(RMAN 恢復目錄資料庫): 本實例為 ORACLE_SID:rmandb

存放 recovery catalog(恢復目錄)的資料庫。建議為 recovery catalog(恢復目錄)資料庫創建一個單獨的資料庫。

 

設置 RMAN ( Configuration RMAN )實作:

Step 01: 在資料庫 ORACLE_SID:orcl 建立 RMAN 所需的環境

1.) 連上資料庫:rmandb

C:\>sqlplus /nolog

SQL> connect / as sysdba

 

2.) 建立 tablespace:RMAN_TS

CREATE TABLESPACE RMAN_TS
    DATAFILE 'C:\oradb11g\oradata\rmandb\RMAN_DATA.DBF' SIZE 100M
 AUTOEXTEND ON NEXT 10240K MAXSIZE UNLIMITED
    EXTENT MANAGEMENT LOCAL AUTOALLOCATE
    LOGGING
    ONLINE
    SEGMENT SPACE MANAGEMENT AUTO;

 

3.) 建立執行記錄 recovery catalog 的帳號:RMAN_USER,並給 CONNECT,RESOURCE,RECOVERY_CATALOG_OWNER 這三個權限

CREATE USER RMAN_USER IDENTIFIED BY RMAN_PWD
DEFAULT TABLESPACE RMAN_TS
    TEMPORARY TABLESPACE TEMP
    ACCOUNT UNLOCK ;
    
GRANT CONNECT,RESOURCE,RECOVERY_CATALOG_OWNER TO RMAN_USER;

註:Oracle Database 11g 以後,帳號/密碼 有分大小寫,(To Enable/ Disable set SEC_CASE_SENSITIVE_LOGON to TRUE/ FALSE ,預設:TRUE ) 若要關閉需用指令 alter system set sec_case_sensitive_logon=false scope=both;

4.) 利用帳號:RMAN_USER 來建立 recovery catalog(恢復目錄)

C:\>rman catalog RMAN_USER/RMAN_PWD@rmandb

RMAN> create catalog;

recovery catalog created

 

Step 02: 連到目標資料庫  Connect to the target database

1.a ) 若是在 ORACLE_SID:rmandb 資料庫主機上作業

C:\>rman catalog RMAN_USER/RMAN_PWD@rmandb

RMAN> connect target sys/oracle@orcl

己連線到目標資料庫: ORCL (DBID=1357434876)

 

1.b ) 若是在 ORACLE_SID: orcl (目標資料庫)資料庫主機上作業

[oracle@oradb12clinux ~]$ echo $ORACLE_SID
orcl
[oracle@oradb12clinux ~]$ rman catalog RMAN_USER/RMAN_PWD@rmandb

RMAN> connect target;
connected to target database: ORCL (DBID=1357434876)

 

Step 03: 註冊目標資料庫 Register the database

RMAN> register database;

database registered in recovery catalog
starting full resync of recovery catalog
full resync complete

 

Step04: 驗證是否有註冊成功

RMAN> list incarnation of database;

List of Database Incarnations
DB Key  Inc Key   DB Name   DB ID                STATUS      Reset SCN   Reset Time
-------    -------      --------      ----------------      ------------  --------------  ----------
1           2            ORCL        1357434876       CURRENT  1720082     24-OCT-13

PS: 也可以用SQL:select * from rc_database;

 

RMAN 備份實作:

0.) 先將 ORACLE_SID: orcl 改為 archive log mode

$ sqlplus / as sysdba

#查看現在資料庫的備份狀況
SQL> archive log list;
Database log mode           No Archive Mode
Automatic archival           Disabled
Archive destination           USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     30
Current log sequence           32

#查看 archive log 預設備份的目錄
SQL> show parameter DB_RECOVERY_FILE_DEST

NAME                                       TYPE           VALUE
------------------------------------ -----------     ------------------------------
db_recovery_file_dest            string           /u01/app/oracle/fast_recovery_area
db_recovery_file_dest_size    big integer  4800M

#為了方便觀察, 改變備份目錄, 並關閉資料庫

SQL> alter system set db_recovery_file_dest='/u01/arclog' scope=both;
SQL> shutdown immediate;

# 設定資料庫的模式為 archive log mode
SQL> startup mount;
SQL> alter database archivelog;
SQL> alter database open;

SQL> archive log list;
Database log mode           Archive Mode
Automatic archival             Enabled
Archive destination           USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     30
Next log sequence to archive   32
Current log sequence           32

#強制產生 archive log file
SQL> alter system switch logfile;
System altered.

#到 OS 去查看是否有 archive log file 產生
$ pwd
/u01/arclog/ORCL/archivelog/2013_11_07
$ ls -l
-rw-r-----. 1 oracle oinstall 25397248 Nov  7 13:44 o1_mf_1_32_97pb5qnt_.arc

註: log_archive_format 的參數設定請參考: http://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams103.htm

1.) 建立一個全備份的 script (Script 會存在RC_STORED_SCRIPT及RC_STORED_SCRIPT_LINE的table中): fullbackup


$ rman catalog RMAN_USER/RMAN_PWD@rmandb
RMAN> connect target;
connected to target database: ORCL (DBID=1357434876)

# 先將之前的 script 刪除 (若有的話)
RMAN> delete script fullbackup;
deleted script: fullbackup

# 建立一個資料庫全備份的 script (含control file & spfile)
RMAN> create script fullbackup {
allocate channel d1 type disk;
backup
incremental level 0
format '/u01/backdb/%d_%s_%p'
filesperset 5
(database include current controlfile);
sql 'alter system archive log current';
release channel d1;}

 

2.) 查看 RMAN 的備份 script

RMAN> connect target;
connected to target database: ORCL (DBID=1357434876)

RMAN> print script fullbackup;

$ sqlplus RMAN_USER/RMAN_PWD@rmandb


SQL> select * from RC_STORED_SCRIPT;
SQL> SQL> select * from RC_STORED_SCRIPT_LINE;

 

 3.) 執行備份 script

RMAN>  run {execute script fullbackup;}

executing script: fullbackup

allocated channel: d1
channel d1: SID=416 device type=DISK

Starting backup at 07-NOV-13
channel d1: starting incremental level 0 datafile backup set
channel d1: specifying datafile(s) in backup set
input datafile file number=00003 name=/u01/app/oracle/oradata/orcl/sysaux01.dbf
input datafile file number=00001 name=/u01/app/oracle/oradata/orcl/system01.dbf
input datafile file number=00004 name=/u01/app/oracle/oradata/orcl/undotbs01.dbf
input datafile file number=00006 name=/u01/app/oracle/oradata/orcl/users01.dbf
channel d1: starting piece 1 at 07-NOV-13
channel d1: finished piece 1 at 07-NOV-13
piece handle=/u01/backdb/ORCL_7_1 tag=TAG20131107T145348 comment=NONE => 此為RMAN備份的檔名:/u01/backdb/ORCL_7_1
channel d1: backup set complete, elapsed time: 00:00:45
channel d1: starting incremental level 0 datafile backup set
channel d1: specifying datafile(s) in backup set
input datafile file number=00009 name=/u01/app/oracle/oradata/orcl/pdborcl/sysaux01.dbf
input datafile file number=00011 name=/u01/app/oracle/oradata/orcl/pdborcl/example01.dbf
input datafile file number=00008 name=/u01/app/oracle/oradata/orcl/pdborcl/system01.dbf
input datafile file number=00010 name=/u01/app/oracle/oradata/orcl/pdborcl/SAMPLE_SCHEMA_users01.dbf
channel d1: starting piece 1 at 07-NOV-13
channel d1: finished piece 1 at 07-NOV-13
piece handle=/u01/backdb/ORCL_8_1 tag=TAG20131107T145348 comment=NONE => 此為RMAN備份的檔名:/u01/backdb/ORCL_8_1
channel d1: backup set complete, elapsed time: 00:00:35
channel d1: starting incremental level 0 datafile backup set
channel d1: specifying datafile(s) in backup set
input datafile file number=00007 name=/u01/app/oracle/oradata/orcl/pdbseed/sysaux01.dbf
input datafile file number=00005 name=/u01/app/oracle/oradata/orcl/pdbseed/system01.dbf
channel d1: starting piece 1 at 07-NOV-13
channel d1: finished piece 1 at 07-NOV-13
piece handle=/u01/backdb/ORCL_9_1 tag=TAG20131107T145348 comment=NONE => 此為RMAN備份的檔名:/u01/backdb/ORCL_9_1
channel d1: backup set complete, elapsed time: 00:00:25
channel d1: starting incremental level 0 datafile backup set
channel d1: specifying datafile(s) in backup set
including current control file in backup set
channel d1: starting piece 1 at 07-NOV-13
channel d1: finished piece 1 at 07-NOV-13
piece handle=/u01/backdb/ORCL_10_1 tag=TAG20131107T145348 comment=NONE
channel d1: backup set complete, elapsed time: 00:00:01
Finished backup at 07-NOV-13

Starting Control File and SPFILE Autobackup at 07-NOV-13
piece handle=/u01/arclog/ORCL/autobackup/2013_11_07/o1_mf_s_830876136_97pgc919_.bkp comment=NONE
=> 此為RMAN 備份 Control File and SPFILE file :/u01/arclog/ORCL/autobackup/2013_11_07/o1_mf_s_830876136_97pgc919_.bkp
Finished Control File and SPFILE Autobackup at 07-NOV-13

sql statement: alter system archive log current

released channel: d1

 

基本上 Oracle Database 資料庫在 RMAN 的備份,ORACLE_SID: orcl (目標資料庫)應該是處於 Archive log mode 才可以線上備份。以上是 Oracle RMAN 的基本概念與資料庫全備份實作

 

附註:

若您是使用 Oracle XE 版本的資料庫,應該會出現下列的訊息,代表資料庫 ORACLE_SID:xe 是11g,但目標資料庫 ORACLE_SID:orcl 是 12c ,package RMAN_XE.DBMS_RCVCAT 不相容。所以不能用 oracle XE 版本的資料庫來作。

在資料庫 ORACLE_SID:xe 是11g 看到的訊息:

database registered in recovery catalog
starting full resync of recovery catalog
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03008: error while performing automatic resync of recovery catalog
RMAN-20036: invalid record order

 

在資料庫 ORACLE_SID:orcl 是 12c 看到的訊息:

PL/SQL package RMAN_XE.DBMS_RCVCAT version 11.02.00.02 in RCVCAT database is too old
PL/SQL package RMAN_XE.DBMS_RCVCAT version 11.02.00.02 in RCVCAT database is too old
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of list command at 11/01/2013 14:38:44
RMAN-06429: RCVCAT database is not compatible with this version of RMAN

 

就算用指令UPGRADE CATALOG; 來升級 catalog,雖然會成功,也不能使用

RMAN> UPGRADE CATALOG;

recovery catalog owner is RMAN_XE
enter UPGRADE CATALOG command again to confirm catalog upgrade

RMAN> UPGRADE CATALOG;

recovery catalog upgraded to version 11.02.00.02
DBMS_RCVMAN package upgraded to version 11.02.00.02
DBMS_RCVCAT package upgraded to version 11.02.00.02

 

 

 

參考:

http://fecbob.pixnet.net/blog/post/38195291-oracle-rman%E7%9A%84%E5%9F%BA%E6%9C%AC%E6%A6%82%E5%BF%B5

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

Oracle Database 設定檔中,這個設定檔:listener.ora  是要在主機端啟動的服務設定檔;而 tnsnames.ora & sqlnet.ora 則是在使用者諯的設定檔,主要是連到主機端資料庫的連線設定。關於比較詳細的說明如下:


sqlnet.ora:

作用類似於 linux 或者其他 unix 的 nsswitch.conf 文件,Oracle Database 利用這個設定檔來決定連接資料庫系統的連線方式順序 

例如使用者端輸入:sqlplus sys/oracle@orcl

且使用者端的 sqlnet.ora 是下面這個樣子

SQLNET.AUTHENTICATION_SERVICES= (NTS)
NAMES.DIRECTORY_PATH= (TNSNAMES,HOSTNAME, EZCONNECT)

 

那麼,使用者端就會首先在 tnsnames.ora 文件中找 orcl 的記錄.如果沒有相應的記錄則嘗試把 orcl 當作一個主機名,通過網路的途徑去解析它的 ip 地址然後去連接這個 ip 上GLOBAL_DBNAME=orcl 這個實例,當然我這裡orcl並不是一個主機名,如果我是這個樣子 NAMES.DIRECTORY_PATH= (TNSNAMES),那麼使用者端就只會從 tnsnames.ora 查找 orc l的記錄,括號中還有其他選項,如LDAP等並不常用。


tnsnames.ora:

這個文件類似於 unix 的 hosts 文件,tnsnames.ora 是設定連線簡稱(alias)對應於主機名或者ip address 的解析,只有當 sqlnet.ora中有 NAMES.DIRECTORY_PATH= (TNSNAMES) 的設定,也就是使用者端解析連接字符串的順序中有 TNSNAMES ,才會嘗試使用這個文件。

#下面的設定是連線到遠端:192.168.1.1 的資料庫

ORCL =
  (DESCRIPTION =
  (ADDRESS_LIST =  
  #下面是這個 TNSNAME 對應的資料庫主機,端口,協定  
   (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))  
  )  
  (CONNECT_DATA =

  #使用專用服務器模式去連接需要跟服務器的模式匹配,如果沒有就根據服務器的模式  

  #自動調節
  (SERVER = DEDICATED) 

  #對應service_name,SQLPLUS>show parameter service_name;

  #進行查看  
  (SERVICE_NAME = orcl)  
   )  
  )

 

#下面設定是連到本機的資料庫

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = localhost )(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

 


listener.ora:

listener 監聽器服務的配置文件:是接受使用者端對數據庫的連接進入申請,並轉交給 oracle database 的服務。LISTENER 監聽器的名字,一台數據庫可以有不止一個監聽器,Listener.ora 例子如下:

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
    )
  )

DEFAULT_SERVICE_LISTENER = (XE)



監聽器的操作命令:lsnrctl、tnsping

$ORACLE_HOME/bin/lsnrctl start,其他諸如 stop,status 等。可以進入 lsnrctl 後,輸入 help 看其它的參數說明來作偵錯,也可以利用基本的指令 tnsping orcl 來作基本偵錯。  

上面說到的三個文件都可以通過圖形的配置工具 $ORACLE_HOME/netca & $ORACLE_HOME/netmgr 來完成配置,但以 netmgr 較為方便。

 

幾種連接用到的命令形式:

  • 1.) sqlplus / as sysdba 這是典型的操作系統認證,不需要listener進程
  • 2.) sqlplus system/oracle 這種連接方式只能連接本機數據庫,同樣不需要listener進程
  • 3.) sqlplus sysrem/oracle@orcl 這種方式需要listener進程處於可用狀態。最普遍的通過網路連接。

 

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

Oracle Database 12c 因為有 multitenant container database (CDB) 及 pluggable databases (PDBs) 的功能,所以在建立帳號時,就必需要指定。不然會有錯誤訊息:ORA-65096: invalid common user or role name

[oracle@oradb12clinux ~]$ echo $ORACLE_SID
orcl
[oracle@oradb12clinux ~]$ sqlplus / as sysdba

SQL> show con_name

CON_NAME
------------------------------
CDB$ROOT

SQL> create user abcd identified by abcd;
create user abcd identified by abcd
            *
ERROR at line 1:
ORA-65096: invalid common user or role name

SQL> create user test identified by test container=current;
create user test identified by test container=current
                               *
ERROR at line 1:
ORA-65049: creation of local user or role is not allowed in CDB$ROOT

 

這時候,您要決定建立一個共用(common)帳號於 CDB (a "common" user in the CDB which could be used to manage multiple PDBs ),或是 Local 帳號於 PDB,可以使用 SQL 指令 select pdb from v$services; 來查詢目前有多少服務

SQL> select pdb from v$services;

PDB
------------------------------
PDBORCL
CDB$ROOT
CDB$ROOT
CDB$ROOT
CDB$ROOT

 

若要建立一個共用(common)帳號在 CDB$ROOT ,則必需在帳號前加入 c##

SQL> create user c##abc identified by abc;

User created.

SQL> drop user c##abc;

User dropped

 

若要將帳號建在 Local PDB:PDBORCL ,必需先將 session 指定在 container=PDBORCL;

SQL> alter session set container=PDBORCL;

Session altered.

SQL> show con_name;

CON_NAME
------------------------------
PDBORCL


SQL> CREATE USER RMAN_XE IDENTIFIED BY RMAN_PWD
ACCOUNT UNLOCK;
CREATE USER RMAN_XE IDENTIFIED BY RMAN_PWD
                                  *
ERROR at line 1:
ORA-01109: database not open

 

ORACLE_SID: orcl 資料庫不是明明已 open 了嗎? 奇怪,怎麼還告訴我 database not open,其實它是說 PDB:PDBORCL 沒有open,可以用 SQL 指令:ALTER PLUGGABLE DATABASE PDBORCL OPEN | CLOSE ;ALTER PLUGGABLE DATABASE ALL OPEN|CLOSE; 來開啟 pluggable databases (PDBs)

SQL> SHOW PDBS;

SQL> show pdbs;

 CON_ID CON_NAME              OPEN MODE  RESTRICTED
---------- ------------------------ ----------------- ----------
     2        PDB$SEED              READ ONLY      NO
     3        PDBORCL                MOUNTED

SQL> ALTER PLUGGABLE DATABASE ALL OPEN;

Pluggable database altered.

SQL> show pdbs;

CON_ID CON_NAME             OPEN MODE  RESTRICTED
---------- ------------------------ ---------------- ----------
     2       PDB$SEED              READ ONLY    NO
     3       PDBORCL                READ WRITE NO

 

 再來試一次吧

[oracle@oradb12clinux ~]$ sqlplus / as sysdba

SQL> ALTER PLUGGABLE DATABASE ALL OPEN;

SQL> alter session set container=PDBORCL;

SQL> show pdbs;

CON_ID CON_NAME             OPEN MODE  RESTRICTED
---------- ------------------------ ---------------- ----------
     3       PDBORCL                READ WRITE NO

SQL> CREATE USER RMAN_XE IDENTIFIED BY RMAN_PWD;

User created.

SQL> alter session set container=PDBORCL;

Session altered.

SQL> select username from dba_users where username like '%RMAN%';

USERNAME
--------------------------------------------------------------------------------
RMAN_XE

 

 

ORA-65096 的意思:

oerr ora 65096
65096, 00000, "invalid common user or role name"
// *Cause:  An attempt was made to create a common user or role with a name
//          that wass not valid for common users or roles.  In addition to
//          the usual rules for user and role names, common user and role
//          names must start with C## or c## and consist only of ASCII
//          characters.
// *Action: Specify a valid common user or role name.

 

ORA-65049 的意思:

oerr ora 65049
65049, 00000, "creation of local user or role is not allowed in CDB$ROOT"
// *Cause:   An attempt was made to create a local user or role in CDB$ROOT.
// *Action:  If trying to create a common user or role, specify CONTAINER=ALL.

 

參考:

http://docs.oracle.com/cd/E16655_01/server.121/e17633/cdblogic.htm#CNCPT89259

http://blog.contractoracle.com/2013/06/oracle-12c-ora-65096.html

http://www.oracle-base.com/articles/12c/multitenant-manage-tablespaces-in-a-cdb-and-pdb-12cr1.php

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

來源: Polin Wei

  上一篇 ANT 的基本介紹 我們知道透過 ANT 可以幫我們 Compile Java 所建立的專案,而且可以順便建立 JBoss 所需要的 .war 檔.但是 build.xml 的撰寫卻是一項艱鉅的任務,那有什麼工具可以代勞呢?! 接下來就來介紹如何用 Eclipse 自動建立 ANT 需要的 build.xml

環境:

Java : jdk1.5.0_12 程式放在 D:\Progs\jdk1.5.0_12
Eclipse: Ganymede http://www.eclipse.org/downloads/JBoss: Jboss-4.0.3SP1

  在專案上按滑鼠右鍵,選擇 Export

  

  然後選擇 General -> Ant Buildfiles





 最後選擇你要建立那一個專案的 build.xml ,按下 Finish 即可。



  這樣子就可以自動產生這個專案 Ant 所需要的 build.xml ,當然這個檔案是需要作些許修改的,至於 Ant 的屬性及要修改那些地方,可以視你自己的需要,詳細的說明可以參考
ANT 的基本概念與實作

參考:

[教學] 利用Eclipse 自動建立ANT 需要的build.xml

MIS 發表在 痞客邦 留言(0) 人氣()

來源: Polin Wei

Ant 的全名是"Another Neat Tool",Ant主要可以幫您自動完成下列的任務:

  • 編譯Java原始碼
  • 建立jar、war、zip檔案
  • 自動測試與生成報告
  • 從 CVS 或 SVN 等管理系統取得原始碼

所以若你對 Java 程式沒有任何興趣的話,那就可以先離開了,不然會很無聊.

環境:
OS: WinXPSP2

程式版本:
Java : jdk1.5.0_12 程式放在 D:\Progs\jdk1.5.0_12
Ant: ant-1.7.0 程式放在 C:\AppServ\apache-ant-1.7.0

增加系統變數:
%JAVA_HOME% = D:\Progs\jdk1.5.0_12
%ANT_HOME% = C:\AppServ\apache-ant-1.7.0

增加路徑:
PATH=%ANT_HOME%\bin;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

以上的環境設定好後,可以在 Command Prompt 中來測試一下 Ant 是否正常運作.




project 節點:

project 節點是 build.xml 的文件根節點。一個文件之中,只能有一個根節點。project 節點有以下三個屬性。

name:(必要:No)
專案名稱

default:(必要:Yes)
假設命令列未指定 target 時,預設執行的 target 節點

basedir:(必要:No)
用來指定專案的根目錄,這個屬性可以使用"basedir" property 節點來改變,如果定義 basedir的 property 節點,在 project 標籤中,就不可以定義這個屬性。假使未使用這個屬性或 property 節點來定義 basedir的話,則 Ant 會使用這個專案 build.xml 的目錄,作為 basedir。

屬性 說明 是否必要
name 專案名稱 No
default 假設命令列未指定 target 時,預設執行的 target 節點 Yes.
basedir 用來指定專案的根目錄,這個屬性可以使用"basedir" property 節點來改變,如果定義 basedir的 property 節點,在 project 標籤中,就不可以定義這個屬性。假使未使用這個屬性或 property 節點來定義 basedir的話,則 Ant 會使用這個專案 build.xml 的目錄,作為 basedir。 No

 



target 節點:

  target 節點是 Ant 執行的目標,我們可以把各種命令(在 Ant 中的術語,叫任務 task),放在 target 的節點中。所以,你可以把他想成是一組命令的結合,以程式設計來說,接近副程式或不傳回值的函式。

  target 和 target 之間,可以使用 depends屬性來定義彼此間的依存關係。藉由定義這些依存的關係,我們可以改變 target 的執行順序。也可以定義 if 以及 unless 屬性,來決定是否執行這個 target 節點的工作。沒有定義 if 和 unless 屬性的 target 節點,一定會按照順序執行。


name:target 的名稱

depends:
在執行這個 target 節點之前,先要執行其他節點的名稱。如果是多個節點時,以逗號區隔各個節點。


if:
指定 property 名稱。必須定義這個 property ,才會執行這個 target的工作。


unless:
指定 property 名稱。必須不定義這個 property ,才會執行這個 target的工作。


description:
文字說明

屬性 說明 是否必要
name target 的名稱 Yes
depends 在執行這個 target 節點之前,先要執行其他節點的名稱。如果是多個節點時,以逗號區隔各個節點。 No
if 指定 property 名稱。必須定義這個 property ,才會執行這個 target的工作。 No
unless 指定 property 名稱。必須不定義這個 property ,才會執行這個 target的工作。 No
description 文字說明 No

 



task 節點:

  task 節點,是 Ant 執行工作最基本的單位,類似程式設計中的命令句。可分為 core tasks 和 optional tasks 兩類,你也可以使用 java 來撰寫自定的 task。

 task 的範圍很廣,各個屬性也不相同,要運用 task時,可參考 Ant 的線上說明。



property 節點:

  property 節點,定義專案的屬性值,類似程式設計中的變數。最常用的屬性有 name 和 value。name 定義這個 property 的名稱,value 定義這個property 的值。要讀取 property 的值時,必須使用 ${property名稱}的格式。


  
  整理一下:在 Ant 的 buildfile 中可以定義構建專案時的「屬性」(property)、「任務」(task),一個build.xml中可以定義多個任務,這些任務可能是建立目錄、編譯Java原始碼、搬移檔案、產生doc文件、進行測試、產生測試報告等等,這些任務通常組織為一個「目標」(target)。



現在我們就來建立一個實際的專案及一個簡單的 build.xml 檔作測試

專案名:test (這是一個 struts 架構)
JBoss: jboss-4.0.3SP1

專案架構如下圖:







build.xml 檔案內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="build" name="test">
<property environment="env"/>
<property name="ECLIPSE_HOME" value="../../Progs/eclipse-ganymede"/>
<property name="JBOSS_HOME" value="C:/AppServ/jboss-4.0.3SP1" />
<property name="server.publish.dir" value="${JBOSS_HOME}/server/default/deploy/" />=> 定義 JBoss 存放專案的地方

<property name="debuglevel" value="source,lines,vars"/>
<property name="target" value="1.5"/>
<property name="source" value="1.5"/>
<path id="JBoss v4.0 [JBoss v4.0].libraryclasspath"> => 這個專案所需要的 JAR 檔
    <pathelement location="${JBOSS_HOME}/client/jboss-j2ee.jar" />
    <pathelement location="${JBOSS_HOME}/client/jbossall-client.jar" />
    <pathelement location="${JBOSS_HOME}/server/default/lib/javax.servlet.jar" />
    <pathelement location="${JBOSS_HOME}/server/default/lib/javax.servlet.jsp.jar" />
    <pathelement location="${JBOSS_HOME}/server/default/lib/activation.jar" />
    <pathelement location="${JBOSS_HOME}/server/default/lib/mail.jar" />
</path>

<path id="Web App Libraries.libraryclasspath">=>在 WebContent 中要包含的 JAR 檔
    <pathelement location="WebContent/WEB-INF/lib/NCSO.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/activation.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/common-annotations.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-beanutils-bean-collections.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-beanutils.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-collections-3.1.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-dbcp-1.2.2.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-digester-1.7.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-digester.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-fileupload.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-io-1.3.1.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-javaflow-20060411.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-lang.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-logging-api.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-logging.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-pool-1.2.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/commons-validator.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/itext-1.3.1.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/jakarta-oro.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/jasperreports-1.3.4.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/jdbc2_0-stdext.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/jstl.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/jxl.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/log4j-1.2.11.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/mail.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/ocrs12.zip"/>
    <pathelement location="WebContent/WEB-INF/lib/ojdbc14.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/ojdbc14_g.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/p6spy.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/png-encoder-1.5.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/poi-3.0.1-FINAL-20070705.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/quartz-1.5.2.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/standard.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/struts-legacy.jar"/>
    <pathelement location="WebContent/WEB-INF/lib/struts.jar"/>
</path>
<path id="EAR Libraries.libraryclasspath"/>

<path id="test.classpath"> => 這是重點, 此專案中所有 Java compile 成 class 檔 , 只要deploy Class 檔即可
    <pathelement location="WebContent/WEB-INF/classes"/>
    <path refid="JBoss v4.0 [JBoss v4.0].libraryclasspath"/>
    <path refid="Web App Libraries.libraryclasspath"/>
    <path refid="EAR Libraries.libraryclasspath"/>
</path>

<target name="init"> => ANT Compile 的進入點
    <mkdir dir="WebContent/WEB-INF/classes"/>
    <copy includeemptydirs="false" todir="WebContent/WEB-INF/classes">
        <fileset dir="src" excludes="**/*.launch, **/*.java"/>
    </copy>
</target>

<target name="clean"> => ANT compile 完後, 將 class 檔刪除
    <delete dir="WebContent/WEB-INF/classes"/>
</target>

<target depends="clean" name="cleanall"/>
<target depends="build-subprojects,build-project" name="build"/>
<target name="build-subprojects"/>

<target depends="init" name="build-project"> => 開始建立整個專案
    <echo message="${ant.project.name}: ${ant.file}"/>
    <javac deprecation="no" nowarn="true" encoding="UTF-8" debug="true" debuglevel="${debuglevel}" destdir="WebContent/WEB-INF/classes" source="${source}" target="${target}">
    <src path="src"/>
    <classpath refid="test.classpath"/>
</javac>

<jar destfile="${ant.project.name}.war"> => 把整個專案包成一個 .war 檔
    <zipfileset dir="WebContent/">
        <include name="**/*.*" />
        <exclude name="**/*.war" />
    </zipfileset>
</jar>

<move file="${ant.project.name}.war" todir="${server.publish.dir}" /> => 將 .war 檔 copy 到 JBoss 的目錄 "C:/AppServ/jboss-4.0.3SP1/server/default/deploy/"

</target>

<target description="Build all projects which reference this project. Useful to propagate changes." name="build-refprojects"/>
<target description="copy Eclipse compiler jars to ant lib directory" name="init-eclipse-compiler">
<copy todir="${ant.library.dir}">
<fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
</copy>
<unzip dest="${ant.library.dir}">
<patternset includes="jdtCompilerAdapter.jar"/>
<fileset dir="${ECLIPSE_HOME}/plugins" includes="org.eclipse.jdt.core_*.jar"/>
</unzip>
</target>
<target description="compile project with Eclipse compiler" name="build-eclipse-compiler">

<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>

<antcall target="build"/>
</target>
</project>

然後再用 ANT 執行, 如下圖



參考文獻:

我與小崴崴的工作日記: [教學] ANT 的基本介紹

Ant 使用手冊:
http://ant.apache.org/manual/index.html





文章標籤

MIS 發表在 痞客邦 留言(1) 人氣()

spfile & pfile 差異:

Oracle Database 自從 9i 以後的版本,就開始支援 spfile ,spfile & pfile 差異處如下:

  • pfile  :client 端參數文件,是一個文字檔,不能動態修改,可用 notepad 或 vi 來編輯,DBA 通常是指這個 init.ora 文件;修改之後需要重啟資料庫才會生效。
  • spfile:服務器端參數文件(Server Parameter File),這是一個二進位的檔案,編輯 SPFILE 檔案會破壞它,您將無法啟動您的數據庫,要更改參數值,需用指令:"ALTER SYSTEM SET" 來變更; 有了spfile,資料庫的參數可以線上動態修改,部分參數修改之後無需重啟資料庫就可以直接生效。。

 

可以用下列指令,得知您的資料庫是用那一種模式起動的。

 SQL> SELECT DECODE(value, NULL, 'PFILE', 'SPFILE') "Init File Type"
       FROM sys.v_$parameter WHERE name = 'spfile';

 

另一種查詢的方式,是查 view: V$SPPARAMETER,如:SHOW PARAMETERS pfile | spfile ; 若值為 null ,則是使用 pfile (init.ora) 啟動資料庫。

show parameters 各位 view 的意思:

V$PARAMETER view - display the currently in effect parameter values
V$PARAMETER2 view - display the currently in effect parameter values, but "List Values" are shown in multiple rows
V$SPPARAMETER view - display the current contents of the server parameter file.

 

spfile 的優點:

  • 1. 可以用 RMAN 備份 spfile ( spfile 是 Server Parameter File ), RMAN 無法備份 pfile ( client 端參數文件 )
  • 2. 滅少人為修改參數造成的錯誤,spfile 是儲存在資料庫系統裡,用 "ALTER SYSTEM SET" 來變更時,系統會先作檢查。
  • 3. 只有一個 spfile 參數檔,很容易找到與維護。

 

從 spfile 獲取 pfile:

Create pfile='d:pfileSID.ora' from spfile;
SQL> Create pfile='C:\oraclexe\app\oracle\admin\XE\pfile\pfileSID.ora' from spfile;


從pfile獲取spfile:

Create spfile from pfile='Your_pfile_location'
Create spfile='spfile_location' from pfile='Your_pfile_location'

動態修改參數:
alter system set parameter=Value scope=spfile | both | memory ( Startup nomount 的時候需要讀去 spfile 或 pfile 或 兩者共存,系統以 spfile 優先 )

SQL> ALTER SYSTEM SET open_cursors=300 SCOPE=SPFILE;

SQL> ALTER SYSTEM SET timed_statistics=TRUE
    COMMENT='Changed by Frank on 1 June 2003'
    SCOPE=BOTH
     SID='*';

The SCOPE parameter can be set to SPFILE, MEMORY or BOTH:

  • - MEMORY: Set for the current instance only. This is the default behaviour if a PFILE was used at STARTUP.
  • - SPFILE: update the SPFILE, the parameter will take effect with next database startup
  • - BOTH: affect the current instance and persist to the SPFILE. This is the default behaviour if an SPFILE was used at STARTUP.
  • The COMMENT parameter (optional) specifies a user remark.

 

強制用 pfile 啟動:

SQL>startup pfile='Your_Pfile.ora'
SQL>startup spfile='/data/oracle/product/10.2.0/db_1/dbs/dbs/spfile_orcl.ora' force

 

參數檔案 spfile 的備份:

RMAN (Oracle's Recovery Manager) 可以備份 SPFILE ,但參數 "CONFIGURE CONTROLFILE AUTOBACKUP" 要設定為 ON (the default is OFF). PFILEs 則無法由 RMAN 備份.如下範例設定:

RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;

由 RMAN 回存 SPFILE:

RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;

 

參考:

http://orafaq.com/node/5

http://weicheng331.blogspot.tw/2009/05/oracle-spfile-pfile.html

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

在談到 Oracle DB 12c 的安裝 install on linux 如何建立資料庫後,手動啟動/關閉資料庫總是覺得煩索了點,可以像 Windows Service  一樣自動化嗎? 這是可行的,接著我們來實作看看。

以上先用帳號:oracle 來編輯

Step 01: 建立 /home/oracle/scripts 目錄及 /home/oracle/scripts/startup.sh & /home/oracle/scripts/shutdown.sh 檔案

startup.sh

#!/bin/bash

export TMP=/tmp
export TMPDIR=$TMP
export PATH=/usr/sbin:/usr/local/bin:$PATH
export ORACLE_HOSTNAME=oradb12clinux.globeunion.com
export ORACLE_UNQNAME=orcl

export ORACLE_SID=orcl
ORAENV_ASK=NO
. oraenv
ORAENV_ASK=YES

# Start Listener
lsnrctl start

# Start Database
sqlplus / as sysdba << EOF
STARTUP;
EXIT;
EOF

 

shutdown.sh

#!/bin/bash

export TMP=/tmp
export TMPDIR=$TMP
export PATH=/usr/sbin:/usr/local/bin:$PATH
export ORACLE_HOSTNAME=oradb12clinux.globeunion.com
export ORACLE_UNQNAME=orcl

export ORACLE_SID=orcl
ORAENV_ASK=NO
. oraenv
ORAENV_ASK=YES

# Stop Database
sqlplus / as sysdba << EOF
SHUTDOWN IMMEDIATE;
EXIT;
EOF

# Stop Listener
lsnrctl stop

 

編輯好 /home/oracle/scripts/startup.sh & /home/oracle/scripts/shutdown.sh 兩個檔案後,記得用指令 chmod u+x /home/oracle/scripts/startup.sh /home/oracle/scripts/shutdown.sh 讓這兩個檔案變成可執行檔,並用手動執行,測試一下是否可以正常開啟與關閉資料庫。

 

以下以用帳號:root來編輯檔案

Step 02 : 手動測試可以正常開啟與關閉資料庫無誤後,再來建立 /etc/init.d/dbora 檔案,這是用來建立 Linux 上自建的服務啟動檔,內容如下:

#!/bin/sh
# chkconfig: 345 99 10
# description: Oracle auto start-stop script.
#
# Set ORA_OWNER to the user id of the owner of the 
# Oracle database software.

ORA_OWNER=oracle

case "$1" in
    'start')
        # Start the Oracle databases:
        # The following command assumes that the oracle login 
        # will not prompt the user for any values
        su $ORA_OWNER -c "/home/oracle/scripts/startup.sh >> /home/oracle/scripts/startup_shutdown.log 2>&1"
        touch /var/lock/subsys/dbora
        ;;
    'stop')
        # Stop the Oracle databases:
        # The following command assumes that the oracle login 
        # will not prompt the user for any values
        su $ORA_OWNER -c "/home/oracle/scripts/shutdown.sh >> /home/oracle/scripts/startup_shutdown.log 2>&1"
        rm -f /var/lock/subsys/dbora
        ;;
esac

 

記得用指令 chmod 750 /etc/init.d/dboradbora 它變成可執行檔案,這時 Linux 的 Service 應有一個 dbora 的服務。

linux-service-oradb  

 

最後,用指令 chkconfig --add dbora 將它與系統啟動與關閉作關連。

db-running-level  

 

您可以使用下列兩個指令,並用帳號:root 來作測試

# service dbora start
# service dbora stop

資料庫啟動與關閉的記錄,則可以查看 /home/oracle/scripts/startup_shutdown.log 這個記錄檔。

 

參考:

http://www.oracle-base.com/articles/linux/automating-database-startup-and-shutdown-on-linux.php#oracle-11gr2-update

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

瞭解 Oracle Linux Install Using LVM 與 LVM (Logical Volume Mamager) on Linux 動態放大檔案系統 的基本概念後,接下來就可以來安裝 Oracle Database 12c Release 1 (12.1),所需要的檔案有 linuxamd64_12c_database_1of2.zip & linuxamd64_12c_database_2of2.zip 可以從下列兩個網址取得:

實作環境說明:

host name : oradb12clinux.globeunion.com
ip address : 192.168.0.210


DB 安裝在 /u01 目錄下

以下均以帳號 root 執行

Step00: 建立資料庫相關帳號與群組

groupadd -g 54321 oinstall
groupadd -g 54322 dba
groupadd -g 54323 oper
#groupadd -g 54324 backupdba
#groupadd -g 54325 dgdba
#groupadd -g 54326 kmdba
#groupadd -g 54327 asmdba
#groupadd -g 54328 asmoper
#groupadd -g 54329 asmadmin

useradd -u 54321 -g oinstall -G dba,oper oracle

再設定 oracle 帳號的密碼:
passwd oracle

 

Step 01: Unpack Files 解壓檔案

unzip linuxamd64_12c_database_1of2.zip
unzip linuxamd64_12c_database_2of2.zip

 

Step 02: 編輯 /etc/hosts

127.0.0.1       localhost.localdomain  localhost
192.168.0.210   oradb12clinux.globeunion.com    oradb12clinux

 

Step03: 修改檔案 /etc/sysctl.conf 增加下列內容

fs.file-max = 6815744
kernel.sem = 250 32000 100 128
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 9000 65500

然後執行指令 /sbin/sysctl -p 讓它生效

 

Step04: 修改檔案 /etc/security/limits.conf 增加下列內容

oracle   soft   nofile    1024
oracle   hard   nofile    65536
oracle   soft   nproc    2047
oracle   hard   nproc    16384
oracle   soft   stack    10240
oracle   hard   stack    32768

 

Step05: 若安裝 Oracle Linux Install Using LVM 時沒選相關的套件,則請以 root 的帳號來裝下列套件

# From Public Yum or ULN
yum install binutils -y
yum install compat-libcap1 -y
yum install compat-libstdc++-33 -y
yum install compat-libstdc++-33.i686 -y
yum install gcc -y
yum install gcc-c++ -y
yum install glibc -y
yum install glibc.i686 -y
yum install glibc-devel -y
yum install glibc-devel.i686 -y
yum install ksh -y
yum install libgcc -y
yum install libgcc.i686 -y
yum install libstdc++ -y
yum install libstdc++.i686 -y
yum install libstdc++-devel -y
yum install libstdc++-devel.i686 -y
yum install libaio -y
yum install libaio.i686 -y
yum install libaio-devel -y
yum install libaio-devel.i686 -y
yum install libXext -y
yum install libXext.i686 -y
yum install libXtst -y
yum install libXtst.i686 -y
yum install libX11 -y
yum install libX11.i686 -y
yum install libXau -y
yum install libXau.i686 -y
yum install libxcb -y
yum install libxcb.i686 -y
yum install libXi -y
yum install libXi.i686 -y
yum install make -y
yum install sysstat -y
yum install unixODBC -y
yum install unixODBC-devel -y

 

Step06: 修改檔案 /etc/security/limits.d/90-nproc.conf

# Change this
*          soft    nproc    1024

# To this
* - nproc 16384

 

Step07: 修改檔案 /etc/selinux/config

SELINUX=permissive

然後執行指令 setenforce Permissive 讓它生效

 

Step08: 關閉防火牆

# service iptables stop 
# chkconfig iptables off

 

Step09: 建立目錄及設定權限

mkdir -p /u01/app/oracle/product/12.1.0/db_1
chown -R oracle:oinstall /u01
chmod -R 775 /u01

 

Step10: 編輯帳號:oracle ,目錄下的 /home/oracle/.bash_profile

# Oracle Settings
export TMP=/tmp
export TMPDIR=$TMP

export ORACLE_HOSTNAME=oradb12clinux.globeunion.com
export ORACLE_UNQNAME=orcl
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/12.1.0/db_1
export ORACLE_SID=orcl

export PATH=/usr/sbin:$PATH
export PATH=$ORACLE_HOME/bin:$PATH

export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib

最後,以帳號 oracle 登入執行 ./runInstaller 執行資料庫 Oracle DB 12c 安裝即可。

 

註: 在安裝過程中,會要求您切換帳帳,以 root 的權限執行兩個檔案 orainstRoot.sh & root.sh

[oracle@oradb12clinux database]$ su -
[root@oradb12clinux ~]# /u01/app/oraInventory/orainstRoot.sh
[root@oradb12clinux ~]# /u01/app/oracle/product/12.1.0/db_1/root.sh

安裝完成後的資訊

oradb12c-configuration  

可以用WEB進入管理

oradb12c-em  

若是沒有辦法顯示此登錄劃面,可以用下列指令檢查 EM (Enterprise Manager Database Express) 的 port 是否為 5500,若不是則更改之。

SQL> SELECT dbms_xdb_config.gethttpsport FROM dual;

GETHTTPSPORT
------------
        5500

SQL> EXEC dbms_xdb_config.sethttpsport(5500);

PL/SQL procedure successfully completed.

SQL>

 

資料庫的啟動與關閉

[oracle@oradb12clinux ~]$ sqlplus /nolog

SQL> connect /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.

Total System Global Area 1653518336 bytes
Fixed Size            2289016 bytes
Variable Size         1073742472 bytes
Database Buffers      570425344 bytes
Redo Buffers            7061504 bytes
Database mounted.
Database opened.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

TNS Listenser 的啟動與關閉lsnrctl start/stop 及 TNS 測試:tnsping

[oracle@oradb12clinux ~]$ lsnrctl start

LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 24-OCT-2013 13:18:14

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Starting /u01/app/oracle/product/12.1.0/db_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.1.0.1.0 - Production
System parameter file is /u01/app/oracle/product/12.1.0/db_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/oradb12clinux/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oradb12clinux)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.1.0 - Production
Start Date                24-OCT-2013 13:18:14
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.1.0/db_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/oradb12clinux/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=oradb12clinux)(PORT=1521)))
The listener supports no services
The command completed successfully

[oracle@oradb12clinux ~]$ tnsping orcl

TNS Ping Utility for Linux: Version 12.1.0.1.0 - Production on 24-OCT-2013 13:20:19

Copyright (c) 1997, 2013, Oracle.  All rights reserved.

Used parameter files:
/u01/app/oracle/product/12.1.0/db_1/network/admin/sqlnet.ora


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oradb12clinux.globeunion.com)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)))
OK (0 msec)

 

註:若要建立另一個資料庫(SID),可以使用指令 dbca 來建.

參考文件:

http://www.oracle-base.com/articles/12c/oracle-db-12cr1-installation-on-oracle-linux-6.php

http://figaro.neo-info.net/?cat=218

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

繼上章 Oracle Linux Install Using LVM,我們談到 LVM 的好處在於可以動態放大檔案系統,接下來就來做做看,假設我們安裝 Oracle Linux 時的磁碟配置如下,Volume Group:vg0 有三個 Physical Volume 實體磁區(簡稱PV),依下圖的配置來看,vg0 還有大約 13 G 未分配的磁碟空間。

lvm_01

 

下圖是整個系統磁碟的配置情況:

lvm_02  

 

系統安裝完後,可以用指令 lvscan 來查詢 LVM 實際擁有的空間

[root@oradb12clinux ~]# lvscan
  ACTIVE            '/dev/vg0/lv_u01' [15.00 GiB] inherit
  ACTIVE            '/dev/vg0/lv_root' [10.00 GiB] inherit
  ACTIVE            '/dev/vg0/lv_swap' [4.00 GiB] inherit
  ACTIVE            '/dev/vg0/lv_opt' [8.00 GiB] inherit

 

也可以使用指令 df -h 來看各個磁碟現在的使用狀況

[root@oradb12clinux ~]# df -h
Filesystem                                             Size  Used Avail Use% Mounted on
/dev/mapper/vg0-lv_root                      9.9G  4.1G  5.4G  43%    /
tmpfs                                                    2.0G  176K  2.0G   1%    /dev/shm
/dev/sda1                                            194M   51M  134M  28%  /boot
/dev/sda2                                            811M   17M  753M   3%  /home
/dev/mapper/vg0-lv_opt                      7.9G  146M  7.4G   2%   /opt
/dev/mapper/vg0-lv_u01                       15G  166M   14G   2%  /u01

 

用指令 vgdisplay 查詢一下 Volume Group:vg0 是否有未分配的磁碟空間

[root@oradb12clinux oradb12c]# vgdisplay
  --- Volume group ---
  VG Name               vg0
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                4
  Open LV               4
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               49.99 GiB
  PE Size               4.00 MiB
  Total PE              12797
  Alloc PE / Size       10521 / 41.10 GiB
  Free  PE / Size       2276 / 8.89 GiB
  VG UUID               MJcTqC-prDM-v0Ys-4s2c-0Fze-vGFD-THI2Iw

 

當發生磁碟空間不足,而 vg0 仍有未分配的磁碟空間時,就可以利用指令 lvextend -L 來增大空間,這樣是不是很方便呢!!

[root@oradb12clinux ~]# lvextend -L +100M '/dev/vg0/lv_opt'
  Extending logical volume lv_opt to 8.10 GiB
  Logical volume lv_opt successfully resized

ot@oradb12clinux oradb12c]# lvextend -L +4096 '/dev/vg0/lv_root'
  Extending logical volume lv_root to 14.00 GiB
  Logical volume lv_root successfully resized


[root@oradb12clinux oradb12c]# lvscan
  ACTIVE            '/dev/vg0/lv_u01' [15.00 GiB] inherit
  ACTIVE            '/dev/vg0/lv_root' [14.00 GiB] inherit
  ACTIVE            '/dev/vg0/lv_swap' [4.00 GiB] inherit
  ACTIVE            '/dev/vg0/lv_opt' [8.10 GiB] inherit


[root@oradb12clinux oradb12c]# df -h
Filesystem                                             Size  Used Avail Use% Mounted on
/dev/mapper/vg0-lv_root                      9.9G  8.8G  644M  94% /
tmpfs                                                     2.0G  264K  2.0G   1% /dev/shm
/dev/sda1                                             194M   51M  134M  28% /boot
/dev/sda2                                             811M   17M  753M   3% /home
/dev/mapper/vg0-lv_opt                       7.9G  146M  7.4G   2% /opt
/dev/mapper/vg0-lv_u01                      15G  166M   14G   2% /u01

 

發現了沒?! Logical Volume 邏輯磁區(簡稱 LV)'/dev/vg0/lv_root' 變大了,變為 14G,但用 df -h 去看時仍為 9.9 G ,lv_opt 也是相同的情形,那是因為尚未讓系統知道磁碟空間己變大,可以使用 resize2fs 來讓系統重新分配,若出現 Cannot use resize2fs as it is online. Use ext2online instead.  訊息,則是告知您,因磁碟在online 的情況下不能使用指令 resize2fs ,需以指令 ext2online 來替代。

[root@oradb12clinux oradb12c]# resize2fs /dev/vg0/lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg0/lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/vg0/lv_root to 3670016 (4k) blocks.
The filesystem on /dev/vg0/lv_root is now 3670016 blocks long.

[root@oradb12clinux oradb12c]# resize2fs /dev/vg0/lv_opt
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg0/lv_opt is mounted on /opt; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/vg0/lv_opt to 2122752 (4k) blocks.
The filesystem on /dev/vg0/lv_opt is now 2122752 blocks long.

[root@oradb12clinux oradb12c]# df -h
Filesystem                                               Size  Used Avail Use% Mounted on
/dev/mapper/vg0-lv_root                       14G  8.8G  4.4G  67% /
tmpfs                                                      2.0G  264K  2.0G   1% /dev/shm
/dev/sda1                                               194M   51M  134M  28% /boot
/dev/sda2                                               811M   17M  753M   3% /home
/dev/mapper/vg0-lv_opt                         8.0G  146M  7.5G   2% /opt
/dev/mapper/vg0-lv_u01                        15G  166M   14G   2% /u01

 

再查詢一次,看吧!! 系統也同步將空間實際放大了

 附註:若要看各個 Logical Volume 邏輯磁區(簡稱 LV)的狀態,可以用指令lvdisplay 查詢

[root@oradb12clinux oradb12c]# lvdisplay
  --- Logical volume ---
  LV Path                /dev/vg0/lv_u01
  LV Name                lv_u01
  VG Name                vg0
  LV UUID                qEiPkX-e9tf-SZow-0lWO-mani-vVG5-z8z3Su
  LV Write Access        read/write
  LV Creation host, time oradb12clinux.globeunion.com, 2013-10-24 00:26:18 +0800
  LV Status              available
  # open                 1
  LV Size                15.00 GiB
  Current LE             3840
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:2
   
  --- Logical volume ---
  LV Path                /dev/vg0/lv_root
  LV Name                lv_root
  VG Name                vg0
  LV UUID                0O3A7O-Lecx-bYK8-orvi-HaG3-Wc9h-OdqZbq
  LV Write Access        read/write
  LV Creation host, time oradb12clinux.globeunion.com, 2013-10-24 00:26:26 +0800
  LV Status              available
  # open                 1
  LV Size                14.00 GiB
  Current LE             3584
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
   
  --- Logical volume ---
  LV Path                /dev/vg0/lv_swap
  LV Name                lv_swap
  VG Name                vg0
  LV UUID                gV4fRO-FSVF-F7H2-pL9X-qJef-IfUO-mO6oLN
  LV Write Access        read/write
  LV Creation host, time oradb12clinux.globeunion.com, 2013-10-24 00:26:27 +0800
  LV Status              available
  # open                 2
  LV Size                4.00 GiB
  Current LE             1024
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1
   
  --- Logical volume ---
  LV Path                /dev/vg0/lv_opt
  LV Name                lv_opt
  VG Name                vg0
  LV UUID                18OarF-nVXJ-er3a-WsYn-lKJT-LEyJ-1YHcKr
  LV Write Access        read/write
  LV Creation host, time oradb12clinux.globeunion.com, 2013-10-24 00:26:27 +0800
  LV Status              available
  # open                 1
  LV Size                8.10 GiB
  Current LE             2073
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:3

 

參考:

http://www.dbvisit.com/forums/showthread.php?t=343

文章標籤

MIS 發表在 痞客邦 留言(0) 人氣()

設置的截圖如下:

先設定帳號對 msdb 資料庫有權限,並且有 SQLAgentOperator & SQLAgentReaderRole & SQLAgentUserRole 的角色

ProxyAccounts-loginProperties

Grant 給 MSSQL DB User:s1 上述權限後,就可以看到 SQL Server Agent

proxyAccount-SQLServerAgent 

由 MSSQL DB User:s1 建立 Job: del file

job-delfile

 

由 s1 執行會失敗,因 s1 沒有 OS 權限

 

Credential-user

 

ProxyAccount-generalProxyAccount-Principals  

 

 

job-proxyAccount  

 

 

 

 

MIS 發表在 痞客邦 留言(0) 人氣()