2013年11月24日 星期日

[Tips]Oracle 11g Architecture 資料庫架構(下) - Oracle database files

讓我們先回想一下:當提及Oracle Server的時候,它同時包含了Oracle InstanceOracle database files,本篇將探討Oracle database files,如果忘了Oracle Instance可以利用下面連結閱讀^_^
Oracle database files就是存放資料的地方,可以分為實體(Physical)結構和邏輯(Logical)結構,實體結構就是實際儲存在OS上的datafiles或是OS Block;而一般我們透過軟體工具看到的都是邏輯結構,包括Tablespaces、Segments、Extents、Block。

2013年11月23日 星期六

[Tips]Oracle 11g Architecture 資料庫架構(上) - Oracle Instance

從下圖我們可以發現,其資料庫架構看起來相當複雜呢!

大致可以先簡單分為Oracle InstanceOracle database files,當我們提及Oracle Server的時候,它同時包含了上述兩個東西。以下將分為兩篇針對其進行個別探討:
Oracle的架構裡包含了許多複雜的元件,也是Oracle對於初學者相當不好學習的地方,而理解這些對於了解Oracle運作有相當大的幫助,讓我們一起來看看吧^_^

2013年11月21日 星期四

[Tips]運用PL/SQL撰寫procedure/function/package

運用PL/SQL,我們可以撰寫成procedure/function/package,便可以重複呼叫利用,或是放到DBMS_JOB中去例行執行。
  • procedure:沒有回傳值
  • function:要有回傳值
  • package:類似Java的com package概念,利用來打包一至多個procedure/function,更方便管理。

2013年11月13日 星期三

[Tips]如何建立Tablespaces

在Oracle Database中,Tablespaces包含一至多個Datafiles。而Datafiles用來儲存資料,一個Datafile只能存在一個Tablespace中。

CREATE TABLESPACE Tablespace_Name

DATAFILE 'file_specification' SIZE volume
AUTOEXTEND [ON/OFF] NEXT volume MAXSIZE volume;

2013年11月12日 星期二

[Tips]基本介紹Oracle PL/SQL

PL/SQL(Procedural Language/Structured Query Language)是Oracle推出的程序語言(Procedural Language),用來擴充SQL的的功能。PL/SQL中會運用到一些程式裡面變數設定、條件判斷(if..then)、迴圈(for)等概念。

首先我們先來看一個簡單的PL/SQL,主要分為兩個部分,Declare為定義變數的地方,Begin...End為程式邏輯的地方,也是主要撰寫著墨的部分。


DECLARE
  v1 number(5);
  v2 varchar2(10);
  v3 date;
BEGIN
  --to do
END;

2013年11月10日 星期日

[Tips]常用的DBA/USER_、V$的表格和視圖

在Oracle Database中,我們可以用DBA_、USER_和V$的表格和視圖來獲取一些資訊,幫助我們進行資料庫的管理,現在就讓我們來看看吧。
  • DBA_:代表能夠看到所有的資訊。
  • USER_:代表只能看到當前USER的資訊。
  • V$:Dynamic Performance View,又稱為動態視圖,它是儲存在SGA之中。可以透過SELECT * FROM dba_objects WHERE object_name like 'V_$%'來查詢。

2013年11月9日 星期六

[Tips]關於DBA_JOBS及DBMS_JOBS.

在Oracle Database中,我們可以利用DBA/ALL/USER_JOBS來觀看我們排定的工作行程,然後利用DBMS_JOBS.來進行工作的安排和管理。

SELECT * FROM [dba_jobs/all_jobs/user_jobs];

  • DBA_JOBS:代表可以看到所有的Jobs,包含一些只有DBA才能看。
  • ALL_JOBS代表可以看到所有的連線到資料庫的USER的Jobs。
  • USER_JOBS:代表只能看到當前USER的Jobs。
  • DBA_JOBS_RUNNING:代表目前正在運作的Jobs。

2013年11月8日 星期五

[Tips]如何建立Database Link

Oracle Database中,當我們想要查詢其它資料庫的時候,可以利用Database Link來達成目的。

CREATE DATABASE LINK 
DBlink_Name
CONNECT TO user IDENTIFIED BY "password"
using 'Service_Name';

2013年11月7日 星期四

[Tips]如何建立Oracle Materialized View (snapshot)

Materialized View中文翻譯成「實體化視圖」或「物化視圖」。其實就是以前比較熟悉的snapshot,將本機/遠端的資料庫上面一個/多個表格的查詢結果,快照儲存在本機/遠端的表格中。

如果要備份的表格是在遠端資料庫的時候,則必須先建立Database Link,可以參考我寫的另外一篇文章,以下只針對Materialized View的部分進行著墨。

CREATE MATERIALIZED VIEW/SNAPSHOT Material_View_Name
[TABLESPACE Tablespaces_Name]
REFRESH [complete/fast/force(default)] [WITH primary key(default)/rowid/object id]
[START WITH sysdate NEXT (sysdate+1/24)]
AS Sql_Query;