① oracle理論學習詳解及各種簡單操作例子怎麼解決
1. 資料庫的發展過程
層次模型 -->網狀模型 -->關系模型 -->對象關系模型
2. 關於資料庫的概念
DB:資料庫(存儲信息的倉庫)
DBMS:資料庫管理系統(用於管理資料庫的工具)
RDBMS:關系型資料庫管理系統
ORDBMS:對象關系型的資料庫管理系統
3. Oracle資料庫的主要特點
1)支持多用戶、大事務量的處理
2)資料庫安全性和完整性控制
3)支持分布式數據處理
4)可移植性
4.Oracle一些常見問題?
1)如果我只有一張表,為什麼我還要創建資料庫?
sql語言要求所有表都需放在資料庫里。這項設計當然有它好的理由。SQL能控制多為用戶同時訪問表的行為。能夠授予或撤銷對整個資料庫的訪問權。這有時比控制每張表的許可權要簡單很多
2)創建庫的命令的字母全是大寫,一定要這樣嗎?
有些系統確實要求某些關鍵字採用大寫形式。但SQL本身不區分大小寫。也就是說,命令不大寫也可以,但命令大寫是良好的SQL編程慣例。
3)給資料庫、表和列命名時有什麼主意事項嗎?
創建具有描述性的名稱通常有不錯的效果。有時候要多用幾個單詞來命名。所有名稱都不能包含空格,所以使用下劃線能夠讓你創建更具描述性的名稱。命名時最好避免首字母大寫,因為SQL不區分大小寫。極有可能會搞錯資料庫。
4)為什麼不能直接把BLOB當成所有文本值的類型?
因為這樣很浪費空間。VARCHAR或CHAR只會佔用特定空間。不會多於256字元。但BLOB需要很大的存儲空間。隨著資料庫的增長,佔用存儲空間就是冒著耗盡硬碟空間的風險。另外,有些重要的字元串運算無法操作BLOB類型的數據。只能用於VARCHAR或CHAR。
5)為什麼需要INT和DEC這類數值類型?
節省資料庫存儲空間和效率有關。為表的沒列選擇最合適的數據類型可以為表瘦身,還可以使數據操作更為快速。
5.Oracle關系資料庫基礎
1)主鍵:表中其中一列或幾列的組合,其值能唯一標識表中每一行。
表中任何列都可以作為主鍵,但要滿足如下條件:
任何兩行都不具有相同的主鍵值
每個行都必須具有一個主鍵值(主鍵列不允許為null值)
主鍵列中的值不允許修改或更新
主鍵值不能重用(如果某行從表中刪除,它的主鍵不能賦給以後的新行)
一般以id或uuid作為主鍵的名字
2)外鍵是什麼:
在一個關系(參照表)中是主鍵,而另一個關系引用這個鍵。那麼這個鍵在另一個關系中就是外鍵。
3)外建能幹什麼:
使兩個關系(表)形成關聯,外鍵只能引用參照表中的主鍵。保持數據一致性,完整性。
如圖:
4)如何在資料庫內表示一對一
5)如何在資料庫內表示一對多
6)關系模型的完整性約束是什麼?
是通過關系的某種約束條件對關系進行約束。也就是說關系的值隨時間變化時應該滿足一些約束條件。如年齡不能超過1000,性別必須是男或者女
7)關系模型的完整性約束能有什麼?
實體完整性、參照完整性、用戶自定義完整性。
實體完整性:針對基本關系而言,也就是一個二維表,主鍵不能為NULL
參照完整性:表之間存在關系,自然就存在關系的引用(外鍵),表和表之間的關系通過外鍵實現,外鍵可以為NULL或引用表的主鍵
用戶自定義完整性:針對不同的需求定義自己的完整性約束,如不允許學生編號中出現非數字字元,性別必須是男或者女
6. Oracle自學筆記
1)資料庫和表的名稱不一定要大寫。
2)列是存儲在表中的一塊數據,行是一組能夠描述某個事物的列的集合。列和行構成了表。
3)創建oracle資料庫。使用oracle自帶的Database Configuration Assistant 來創建庫
4)使用DBA身份 創建表空間。具體sql如下:
create tablespace pzw datafile 'C:/oracle/pzw.dbf' SIZE 1024M REUSE AUTOEXTEND OFF extent management local segment space
management auto;
5)刪除用戶命令
drop user pzw cascade;
6)刪除表空間命令
DROP TABLESPACE pzw INCLUDING CONTENTS AND DATAFILES;
7 )查看錶空間命令。
鏈接地址:查看oracle表空間的兩種方式
8)創建用戶。
create user pzw identified by pzw;
9)將包空間分配給用戶
alter user pzw default tablespace pzw;
10)給用戶授權
grant create session, create table, unlimited tablespace to pzw;
11)創建表
CREATE TABLE doughnut_list
(
doughnut_name VARCHAR(10),
doughnut_type VARCHAR(6),
doughnut_birthday DATE
);
12)刪除表
DROP TABLE
doughnut_list;
13)給表中增加一列
Alter table EMP add sale number;
14)資料庫插入一條數據
insert into DEPT_EMP_TABLE (DEPT_EMP_NO,emp_no,Dept_No,Joined_Date) values (009,'00002',1,to_date('2011-2-28 15:42:56','yyyy-mm-dd hh24:mi:ss'));
commit;
15)資料庫修改一條數據
update emp set emp_name='張惠妹',age=20,sex='女',profession='流行歌手' where emp_no = '00002';
commit;
16)資料庫刪除一條數據
delete emp where emp_no = '000013';
commit;
17)查詢全部數據
select * from emp;
18)創建視圖
create view adress_view as select * from pzw.adress;
以下為oracle演示數據操作及練習題(對菜鳥及有用。使用scott 登陸。默認密碼tiger)
1.查看演示數據的表。
select*fromtab
或者selecttable_namefromuser_tables;
2.查看錶結構(plsql操作無效。使用命名提示符 可以操作)
desc dept;
3.查看員工姓名
select ENAMEfrom emp;
4.查詢員工的編號和明星(sql語句不區分大小寫)
select empno, enamefrom emp;
5.查詢所有的欄位
select*fromemp;
一般建議不使用*號,使用*號不明確,建議將相關的欄位寫到select語句的後面,使用*號的效率比較低
6.列出員工的編號,姓名和年薪。
select empno, ename,sal*12from emp;
select語句中可以使用運算符,以上存在一些問題,年薪的欄位名稱不太明確
7.將查詢出來的欄位顯示為中文
select empnoas 員工編號, ename as 員工姓名, sal*12 as 年薪 from emp;
可以採用as命名別名,as可以省略
如:可以採用as命名別名,as可以省略
8.查詢薪水等於5000的員工
select empno, ename, sal from emp where sal=5000;
如果是字元類型的數據進行比較的時候,是區分大小寫的。
9.查詢薪水不等於5000的員工
select empno, ename, sal from emp where sal<>5000;
10.查詢工作崗位不等於manager的員工
select empno,ename,sal,job from emp where job<>
'manager';
在sql語句中如果是字元串採用單引號,引起來,不同於Java中採用雙引號,如果是數值型也可以引起來,只不過是數值類型數據當成字元串來處理
11.查詢薪水為1600到3000的員工(第一種方式,採用>=和<=)
select empno, ename, sal from emp where sal>=1600 and sal<=3000;
查詢薪水為1600到3000的員工(第一種方式,採用between ...and...)
select empno,ename,sal,job from emp where salbetween
1600and 3000;
between ….and …,包含最大值和最小值
between ….and …,不僅僅可以應用在數值類型的數據上,還可以應用在字元數據類型上
between ….and …,對於兩個參數的設定是有限制的,小的數在前,大的數在後
12.查詢津貼為空的員工
select * from emp where commis null;
13.查詢津貼不為空的員工
select * from emp where commis not null;
14.工作崗位為MANAGER,薪水大於2500的員工。
select empno, ename, sal from emp where job='MANAGER'and sal>2500;
and表示並且的含義,表示所有的條件必須滿足
15.查詢出job為manager和job為salesman的員工。
select * from emp where job='MANAGER'or job='SALESMAN';
or,只要滿足條件即可,相當於或者
16.查詢薪水大於1800,並且部門編號為20 或者 30的
select * from emp where sal>1800and (deptno=20or deptno=30);
17.查詢出job為manager和job為salesman的員工
select * from emp where jobin('MANAGER','SALESMAN');
18.查詢job不等於MANAGER並且不能與SALESMAN的員工(第一種寫法)
select * from emp where job<> 'MANAGER' and job <> 'SALESMAN';
19 .查詢job不等於MANAGER並且不能與SALESMAN的員工(第二種寫法)
select * from emp where jobnot in('MANAGER','SALESMAN');
20.查詢以M開頭的所有員工
select * from emp where ename like 'M %';
21.查詢以T結尾的所有員工
select * from emp where ename like '%T';
22.查詢以O結尾的所有員工
select * from emp where ename like '%O%';
23.查詢姓名中第一個字元為A的所有員工
select * from emp where ename like '_A%';
Like可以實現模糊查詢,like支持%和下劃線匹配
Like中%和下劃線的差別?
%匹配任意字元出現任意次數
下劃線只匹配一個任意字元出現一次
Like語句是可以應用在數值類型的數據上的,但是如果沒有使用引號括起來的話,那麼不能使用%和下劃線。類似於等號的操作,如果使用引號括起來的話,那麼可以使用%和下劃線,將數值類型的數據轉換為字元類型後進行處理。
24.按照薪水由小到大排序
s elect * from emporder by sal;
如果存在where子句那麼order by必須放到where語句的後面
25.手動指定按照薪水由小到大排序
select * from emp order by saldesc;
26. 按照薪水和姓名排序
select * from emp order by sal desc ,ename desc;
如果採用多個欄位排序,如果根據第一個欄位排序重復了,會根據第二個欄位排序
select * from emp order by sal asc;
26.手動指定按照薪水由大到小排序
select * from emporder by sal desc;
27.按照薪水升序(使用欄位的位置來排序)
select * from emp order by 6;
不建議使用此種方式,採用數字含義不明確,程序不健壯
28.查詢員工.將員工姓名全部轉換成小寫。
select lower(ename)from emp;
29.查詢job為manager的員工
select * from emp where job=upper('manager');
30.查詢姓名以M開頭所有的員工
select * from emp wheresubstr(ename, 1,1)='M';
方法的第二個參數表示的是查詢字元的位置,0,1都表示第一個字元,負數表示從結尾開始的位置,第三個參數表示截取字元串的長度。
31.取得員工姓名的長度
select length(ename) from emp;
32.取得工作崗位為MANAGER的所有員工
select * from emp where job=trim('MANAGER ');
trim會去首尾空格,不會去除中間的空格
33.查詢1986-02-20入職的員工(第一種方法,與資料庫的格式匹配上)
select * from emp where HIREDATE='20-2月 -81';
查詢1982-02-20入職的員工(第二種方法,將字元串轉換成date類型)
select * from emp where hiredate=to_date('1981-02-20 00:00:00', 'YYYY-MM-DD HH24:MI:SS');
to_date可以將字元串轉換成日期,具體格式to_date(字元串,匹配格式)
34.查詢1981- 02-30以後入職的員工,將入職日期格式為yyyy-mm-dd hh:mm:ss
select empno, ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss')from emp where hiredate>to_date('1981-02-2000:00:00', 'YYYY-MM-DD HH24:MI:SS');
35.查詢員工薪水加入前分位
select empno, ename, to_char(sal, '$999,999') from emp;
36.查詢薪水加入千分位和保留兩位小數
select empno, ename, to_char(sal, '$999,999.00') fromemp;
將數字轉換成字元串,格式
控制符
說明
9
表示一位數字
0
位數不夠可以補零
$
美元符
L
本地貨幣符號
.
顯示小數
,
顯示千分位
37.將字元串轉換成數值
select * from emp where sal>to_number('1,500','999,999');
38.取得員工的全部薪水,薪水+津貼
select empno, ename, sal, comm, sal+nvl(comm,0) fromemp;
39.如果job為MANAGER薪水上漲10%,如果job為SALESMAN工資上漲50%(case … when … then …end)
select empno, ename, job, sal, (casejobwhen 'MANAGER' thensal*1.1when 'SALESMAN' thensal*1.5end)as newsal from emp;
40.如果job為MANAGER薪水上漲10%,如果job為SALESMAN工資上漲50%(decode)
select empno, ename, job, sal, decode(job,'MANAGER', SAL*1.1, 'SALESMAN',sal*1.5) as newsal from emp;
41.四捨五入
select round(1234567.4567, 2) from al;
Dual是oracle提供的,主要為了方便使用,因為select的時候需要用from
42.聚合函數
count
取得記錄數
sum
求和
Avg
取平均
Max
取最大的數
min
取最小的數
43.取得所有員工人數
select count(*) from emp;
Count(*)表示取得所有記錄,忽略null,為null值也會取得
44.取得津貼不為null的員工數
select count(comm) from emp;
採用count(欄位名稱),不會取得為null的紀錄
45.取得工作崗位的個數
select count(distinctjob) from emp;
Distinct可以去除重復的紀錄
46.取得薪水的合計
select sum(sal) from emp;
47取得薪水的合計(sal+comm)
select sum(sal+nvl(comm, 0)) from emp;
48.取得平均薪水
select avg(sal) from emp;
49.取得最高薪水
select max(to_char(hiredate, 'yyyy-mm-dd')) from emp;
50.取得最小薪水
select min(sal) from emp;
51.取得最早入職的員工
select min(hiredate) from emp;
52.可以將這些聚合函數都放到select中一起使用
select count(*), sum(sal), avg(sal), max(sal),min(sal) from emp;
53.取得每個崗位的工資合計,要求顯示崗位名稱和工資合計。
select job, sum(sal) from empgroupby job;
採用group by,非聚合函數所使用的欄位必須參與分組,
Group by中不能使用聚合函數
如果使用了order by,order by必須放到group by後面
54。取得每個崗位的平均工資大於2000
select job, avg(sal) from emp group by job having avg(sal) >2000;
分組函數的執行順序:
1、 根據條件查詢數據
2、 分組
3、 採用having過濾,取得正確的數據
55. 顯示每個員工信息,並顯示所屬的部門名稱
select ename ,dname from emp a ,dept b where a.deptno = b.deptno;
以上查詢也稱為「內連接」,指查詢相等的數據
56.取得員工和所屬的經理的姓名
select a.ename, b.ename from emp a, emp b wherea.mgr=b.empno;
以上稱為「自連接」,只有一張表連接,具體的查詢方法
57.(內連接)顯示薪水大於2000的員工信息,並顯示所屬的部門名稱
SQL99語法:
select ename,sal,dname from emp a join dept b on a.deptno = b.deptno where sal>2000;
SQL92語法
select ename,sal,dname from emp a, dept b where a.deptno=b.deptno and sal > 2000;
Sql92語法和sql99語法的區別:99語法可以做到表的連接和查詢條件分離,特別是多個表進行連接的時候,會比sql92更清晰
58.(外連接)顯示薪水大於2000的員工信息,並顯示所屬的部門名稱,如果某一個部門沒有員工。那麼該部門也必須顯示出來
select dname,ename from emp a right join dept b on a.deptno = b.deptno;
59.查詢員工名稱和所屬經歷的名稱,如果沒有上級經理,也要查詢出來
Select e.ename, m.ename mname from emp e, emp mwhere m.empno(+) = e.mgr;
60.查詢員工信息,查詢哪些人是管理者,要求顯示出其員工編號和員工姓名
select ename,ename from emp where empno in (select distinct mgr from emp where mgr is not null);
61.查詢那些人的薪水高於員工的平均薪水,需要顯示員工編號,員工姓名,薪水。
select empno, ename, sal from emp where sal>(selectavg(sal) from emp);
分析思路:首先根據文字描述找出被依賴的條件,逐次分析
62.查詢各個部門的平均薪水所屬的等級,需要顯示部門編號,平均薪水,等級編號
select a.deptno, a.avg_sal, b.grade from (select deptno, avg(sal) avg_sal fromemp group by deptno) a, salgrade b where a.avg_sal between b.losal and b.hisal;
關鍵點:將子查詢看作一張表
63.查詢員工信息以及部門名稱
Select e.empno, e.ename, e.deptno, (select dname from dept where deptno = e.deptno) as dname from emp e
64.union可以合並集合(相加)
select * from emp where job='MANAGER'
union
select* from emp where job='SALESMAN'
65.minus可以移出集合(相減)
查詢部門編號為10和20的,取出薪水大於2000的。
select * from emp where deptno in(10, 20)
minus
select* from emp where sal>2000
66.rownum隱含欄位
select rownum, a.* from emp a;
67.取得前5條數據
select * from emp where rownum <=5;
68.取得薪水最好的前5名
select empno, ename, sal from (select empno,ename, sal from emp order by sal desc)whererownum <=5
② 如何簡化 Oracle Linux 6 上的 Oracle 資料庫安裝
在 Oracle Linux 上,我發現有一種非常輕松的辦法可以讓系統滿足這些安裝先決條件:首先安裝一個名為 oracle-rdbms-server-11gR2-preinstall 的 RPM 軟體包。此 RPM 執行一些預配置步驟,包括:
自動下載並安裝 Oracle Grid Infrastructure 和 Oracle Database 11g 第 2 版 (11.2.0.3) 安裝過程所需的任何額外的軟體包和特定軟體版本,並通過 yum 或 up2date 功能處理軟體包依賴關系。
創建用戶 oracle 和組 oinstall(針對 OraInventory)、dba(針對 OSDBA),供資料庫安裝期間使用。(出於安全目的,該用戶沒有默認口令,且不能遠程登錄)。要啟用遠程登錄,請使用 passwd 工具設置一個口令。)
修改 /etc/sysctl.conf 中的內核參數以更改共享內存、信號、最大文件描述符數量等設置。
設置 /etc/security/limits.conf 中的軟硬 shell 資源限制,如鎖定內存地址空間、打開的文件數量、進程數和核心文件大小。
對於 x86_64 計算機,在內核中設置 numa=off。
請注意,oracle-rdbms-server-11gR2-preinstall 只是根據資料庫安裝的需要來分析現有的 /etc/sysctl.conf 和 /etc/security/limits.conf 文件並更新值。所有與資料庫安裝無關的預自定義設置保持不變。
oracle-rdbms-server-11gR2-preinstall RPM 軟體包可通過 Oracle Unbreakable Linux Network(ULN,需要支持合同)、Oracle Linux 分發媒體或 Oracle 公共 yum 信息庫獲取。因此,無論系統是否在 ULN 注冊訪問 Oracle 補丁和支持,您均可使用 oracle-rdbms-server-11gR2-preinstall 來簡化 Oracle Linux 上的資料庫安裝。此外,Oracle 公共 yum 信息庫現在還包括了所有安全和錯誤勘誤表,從而通過最新的安全更新和錯誤修復來確保系統的安全和穩定。
安裝 oracle-rdbms-server-11gR2-preinstall RPM
本文其餘部分將逐步介紹通過 Oracle 公共 yum 信息庫在 Oracle Linux 上安裝 oracle-rdbms-server-11gR2-preinstall 的過程。我首先從一個運行適用於 x86_64 的 Oracle Linux 第 6 版 Update 3 的系統開始,這個 64 位版本的 Oracle Linux 是我從 Oracle 軟體交付雲(需要注冊或登錄)下載的。首先,設置一個 yum 配置文件,讓其指向正確的信息庫,然後從該信息庫安裝 oracle-rdbms-server-11gR2-preinstall RPM。
以下是針對 Oracle 資料庫安裝使用 oracle-rdbms-server-11gR2-preinstall 對系統進行預配置的步驟:
作為一個授權用戶(如 root)檢索配置信息庫位置的文件:
# cd /etc/yum.repos.d
# wget http://public-yum.oracle.com/public-yum-ol6.repo
使用文本編輯器修改該文件,將欄位 enabled=0 更改為 enabled=1 以反映對應於該計算機操作系統版本的信息庫。
下面是 public-yum-old6.repo 的部分內容,以粗體顯示更改過的行。
[ol6_latest]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/$basearch/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
gpgcheck=1
enabled=1
[ol6_UEK_latest]
name=Latest Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEK/latest/$basearch/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
gpgcheck=1
enabled=1
因為目標系統運行的是適用於 x86_64 的 Oracle Linux 第 6 版 Update 6,所以要啟用 [ol6_latest] 和 [ol6_UEK_latest] 信息庫。
接下來,使用 yum install 命令安裝 oracle-rdbms-server-11gR2-preinstall RPM。
清單 1 中的輸出顯示了安裝過程如何檢查依賴關系,然後下載和安裝所需軟體包。
# yum install oracle-rdbms-server-11gR2-preinstall
Loaded plugins:refresh-packagekit, rhnplugin, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package oracle-rdbms-server-11gR2-preinstall.x86_64 0:1.0-6.el6 will be installed
--> Processing Dependency:gcc-c++ for package:oracle-rdbms-server-11gR2-preinstall-1.0-6.el6.x86_64
--> Processing Dependency:gcc for package:oracle-rdbms-server-11gR2-preinstall-1.0-6.el6.x86_64
--> Processing Dependency:lio-devel for package:
oracle-rdbms-server-11gR2-preinstall-1.0-6.el6.x86_64
--> Processing Dependency:libstdc++-devel for package:
oracle-rdbms-server-11gR2-preinstall-1.0-6.el6.x86_64
--> Processing Dependency:glibc-devel for package:
oracle-rdbms-server-11gR2-preinstall-1.0-6.el6.x86_64
--> Processing Dependency:compat-libstdc++-33 for package:
oracle-rdbms-server-11gR2-preinstall-1.0-6.el6.x86_64
--> Processing Dependency:ksh for package:oracle-rdbms-server-11gR2-preinstall-1.0-6.el6.x86_64
--> Processing Dependency:compat-libcap1 for package:
oracle-rdbms-server-11gR2-preinstall-1.0-6.el6.x86_64
--> Running transaction check
---> Package compat-libcap1.x86_64 0:1.10-1 will be installed
---> Package compat-libstdc++-33.x86_64 0:3.2.3-69.el6 will be installed
---> Package gcc.x86_64 0:4.4.6-4.el6 will be installed
--> Processing Dependency:cpp = 4.4.6-4.el6 for package:gcc-4.4.6-4.el6.x86_64
--> Processing Dependency:cloog-ppl >= 0.15 for package:gcc-4.4.6-4.el6.x86_64
---> Package gcc-c++.x86_64 0:4.4.6-4.el6 will be installed
--> Processing Dependency:libmpfr.so.1()(64bit) for package:gcc-c++-4.4.6-4.el6.x86_64
---> Package glibc-devel.x86_64 0:2.12-1.80.el6_3.4 will be installed
--> Processing Dependency:glibc-headers = 2.12-1.80.el6_3.4 for package:
glibc-devel-2.12-1.80.el6_3.4.x86_64
--> Processing Dependency:glibc-headers for package:glibc-devel-2.12-1.80.el6_3.4.x86_64
---> Package ksh.x86_64 0:20100621-16.el6 will be installed
---> Package lio-devel.x86_64 0:0.3.107-10.el6 will be installed
---> Package libstdc++-devel.x86_64 0:4.4.6-4.el6 will be installed
--> Running transaction check
---> Package cloog-ppl.x86_64 0:0.15.7-1.2.el6 will be installed
--> Processing Dependency:libppl_c.so.2()(64bit) for package:cloog-ppl-0.15.7-1.2.el6.x86_64
--> Processing Dependency:libppl.so.7()(64bit) for package:cloog-ppl-0.15.7-1.2.el6.x86_64
---> Package cpp.x86_64 0:4.4.6-4.el6 will be installed
---> Package glibc-headers.x86_64 0:2.12-1.80.el6_3.4 will be installed
--> Processing Dependency:kernel-headers >= 2.2.1 for package:
glibc-headers-2.12-1.80.el6_3.4.x86_64
--> Processing Dependency:kernel-headers for package:glibc-headers-2.12-1.80.el6_3.4.x86_64
---> Package mpfr.x86_64 0:2.4.1-6.el6 will be installed
--> Running transaction check
---> Package kernel-uek-headers.x86_64 0:2.6.32-300.32.1.el6uek will be installed
---> Package ppl.x86_64 0:0.10.2-11.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package Arch Version Repository Size
③ oracle11g資料庫最新的優勢有哪些
現在已經是Oracle12c了。
你要的是這個嗎?
Oracle 11g比10g多了哪些新特性?
1. 11 g 擴展了 Oracle 獨傢具有的提供網格計算優勢的功能,來提高用戶服務水平、減少停機時間以及更加有效地利用 IT資源,
同時還增強全天候業務應用程序的性能、可伸縮性和安全性,利用真正應用測試(RAT)盡量降低更改的風險
2. 11 g降低了資料庫升級以及其他硬體和操作系統更改的成本,顯著簡化了更改前後的系統測試以便您可以識別和解決問題。如:
利用 Database Replay在資料庫級別輕松捕獲實際的生產負載並在測試系統上重新播放,這樣有效的全面測試系統更改(包括關鍵的並發特性)的影響。
3. SQL Performance Analyzer識別結構化查詢語言 ) SQL(執行計劃更改和性能回退。可以使用 SQL Tuning Advisor解決識別的問題,
方法是還原到原始的執行計劃或進一步優化。利用管理自動化提高 DBA 效率
4. Oracle 資料庫 11 g繼續致力於顯著簡化和完全自動化 DBA 任務。
5.利用自學功能自動進行 SQL 優化系統全局區(SGA)和程序全局區( PGA)的內存緩存區的自動、統一調整新的 advisor用於分區、數據恢復、
流性能和空間管理針對自動資料庫診斷監視器 (ADDM)的增強,能夠提供 Oracle 真正應用集群 (Oracle RAC)環境中的更好的性能全局視圖以及改進的性能比較分析功能。
6.利用故障診斷快速解決問題
7.故障診斷功能使客戶在發生錯誤後捕獲 Oracle
8.Support所需的數據變得極為簡單。這可以加速問題的解決,減少客戶重現問題的需要,盡量降低停機成本
9.通過 Oracle Data Guard快速恢復數據 Oracle Data Guard在本地和遠程伺服器之間協調資料庫的維護和同步以便從災難或站點故障快速恢復。
Oracle資料庫11 g提供了大量顯著的 Oracle Data Guard增強,包括可以在物理備用系統上運行實時查詢用於報表和其他目的、
可以通過將物理備用系統暫時轉換為邏輯備用系統執行聯機的、滾動的資料庫升級
10.支持測試環境的快照備用系統
11.物理和邏輯備用的性能都有提高。邏輯備用現在支持可擴展標記語言(XML)類型字元大型對象 (CLOB)數據類型和透明的數據加密。現在支持自動的、快速啟動的故障切換以支持非同步傳輸。
12.支持滾動升級
13.自動壞塊檢測和修復
14.快速鏡像重新同步,該功能可以有效地重新同步存儲網路連接性暫時丟失時自動存儲管理鏡像的存儲陣列
15.自動存儲管理的性能增強使得大型資料庫可以更快地打開並減少 SGA 內存消耗。這些增強還允許 DBA增加存儲分配單元大小以加快大型序列輸入/輸出 (I/O),顯著增加正常運行時間
16.Oracle資料庫11 g使您可以應用很多一次性資料庫補丁(包括診斷補丁),而沒有停機時間。新的數據恢復 advisor通過快速識別故障根本原因、為 DBA提供可用的恢復選項,
極大地減少了停機時間,在某些情況下,還通過「自我恢復」機制自動糾正問題。
17.自動編譯資料庫中的 PL/SQL 和 Java
18.更快的觸發器,包括更加有效地調用每行觸發器
19.更快的簡單 SQL 操作
20.更快的 Oracle Data Guard 和 Oracle Streams 復制
21.與網路文件系統( NFS) 存儲設備更快、更可靠的直接連接、更快的升級
22.大型文件更快的備份/還原更快的備份壓縮
23.Oracle 資料庫 11 g包括大量新的 ILM特性,例如
新的分區功能,包括 按父/子引用分區、按虛擬列分區
Oracle資料庫11 g還具有帶 Oracle閃回數據歸檔的 Total Recall,可以在選定的表中查詢以前的數據,從而提供了一種簡單實用的向數據中添加時間維度的方法以便於更改跟蹤、 ILM、審計和合規。
24.Oracle 資料庫 11g還有其他高可用性增強,包括:
Oracle閃回事務查詢,提供帶其他相關事務更改的流氓事務的按鈕更改
具有更多可傳輸選項的增強的平台移植和數據移動,包括可傳輸分區、
模式和跨平台資料庫
Oracle恢復管理器 (RMAN)支持 Windows Volume Shadow Copy
Service ( VSS )快照,從而實現與 Windows備份更緊密的集成
優化性能和可靠性
合規、法律取證以及整合數據倉庫的趨勢導致資料庫的大小每兩年就會增加兩倍,這極大地影響了大型資料庫的存儲成本和性能、可靠性以及可管理性
Oracle 資料庫 11 g使組織可以使用低成本的伺服器和模塊化的存儲器輕松伸縮大型的事務和數據倉庫系統並提供快速的全天候數據訪問。
Oracle 資料庫11 g提供新的創新特性以進一步提高要求極嚴格的環境的性能和可伸縮性。
利用 SecureFiles安全地存儲您的所有數據
SecureFiles 是 Oracle用於在資料庫中存儲大型對象) LOB (例如圖像、大型文本對象或包括 XML、醫學成像以及地理空間柵格對象在內的高級數據類型)的下一代產品。
SecureFiles提供能夠完全與文件系統相媲美的卓越性能。此外,它還提供高級功能,例如智能壓縮、透明加密以及透明的重復刪除。
通過聯機事務處理壓縮提高性能並盡量降低存儲成本
Oracle 資料庫 11 g支持聯機事務處理 (OLAP)應用程序中常用的更新、插入和刪除操作的數據壓縮。以前的 Oracle資料庫版本支持數據倉庫應用
程序常用的批量數據載入操作的壓縮。 Oracle 資料庫 11 g OLTP表壓縮通過更加高效地使用內存來緩存數據以及減少表掃描的 I/O提高了資料庫性能
利用 OLTP表壓縮,您可以利用最小的處理開銷達到 2 到 3倍的壓縮比。
④ 資料庫性能優化有哪些措施
1、調整數據結構的設計。這一部分在開發信息系統之前完成,程序員需要考慮是否使用ORACLE資料庫的分區功能,對於經常訪問的資料庫表是否需要建立索引等。
2、調整應用程序結構設計。這一部分也是在開發信息系統之前完成,程序員在這一步需要考慮應用程序使用什麼樣的體系結構,是使用傳統的Client/Server兩層體系結構,還是使用Browser/Web/Database的三層體系結構。不同的應用程序體系結構要求的資料庫資源是不同的。
3、調整資料庫SQL語句。應用程序的執行最終將歸結為資料庫中的SQL語句執行,因此SQL語句的執行效率最終決定了ORACLE資料庫的性能。ORACLE公司推薦使用ORACLE語句優化器(Oracle Optimizer)和行鎖管理器(row-level manager)來調整優化SQL語句。
4、調整伺服器內存分配。內存分配是在信息系統運行過程中優化配置的,資料庫管理員可以根據資料庫運行狀況調整資料庫系統全局區(SGA區)的數據緩沖區、日誌緩沖區和共享池的大小;還可以調整程序全局區(PGA區)的大小。需要注意的是,SGA區不是越大越好,SGA區過大會佔用操作系統使用的內存而引起虛擬內存的頁面交換,這樣反而會降低系統。
5、調整硬碟I/O,這一步是在信息系統開發之前完成的。資料庫管理員可以將組成同一個表空間的數據文件放在不同的硬碟上,做到硬碟之間I/O負載均衡。
6、調整操作系統參數,例如:運行在UNIX操作系統上的ORACLE資料庫,可以調整UNIX數據緩沖池的大小,每個進程所能使用的內存大小等參數。
資料庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它產生於距今六十多年前,隨著信息技術和市場的發展,特別是二十世紀九十年代以後,數據管理不再僅僅是存儲和管理數據,而轉變成用戶所需要的各種數據管理的方式。資料庫有很多種類型,從最簡單的存儲有各種數據的表格到能夠進行海量數據存儲的大型資料庫系統都在各個方面得到了廣泛的應用。
在信息化社會,充分有效地管理和利用各類信息資源,是進行科學研究和決策管理的前提條件。資料庫技術是管理信息系統、辦公自動化系統、決策支持系統等各類信息系統的核心部分,是進行科學研究和決策管理的重要技術手段。
在經濟管理的日常工作中,常常需要把某些相關的數據放進這樣的「倉庫」,並根據管理的需要進行相應的處理。
例如,企業或事業單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個資料庫。有了這個"數據倉庫"我們就可以根據需要隨時查詢某職工的基本情況,也可以查詢工資在某個范圍內的職工人數等等。這些工作如果都能在計算機上自動進行,那我們的人事管理就可以達到極高的水平。此外,在財務管理、倉庫管理、生產管理中也需要建立眾多的這種"資料庫",使其可以利用計算機實現財務、倉庫、生產的自動化管理。
(4)oracle資料庫瘦身擴展閱讀
資料庫,簡單來說是本身可視為電子化的文件櫃--存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。
資料庫指的是以一定方式儲存在一起、能為多個用戶共享、具有盡可能小的冗餘度的特點、是與應用程序彼此獨立的數據集合。
在經濟管理的日常工作中,常常需要把某些相關的數據放進這樣的"倉庫",並根據管理的需要進行相應的處理。
例如,企業或事業單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個資料庫。有了這個"數據倉庫"我們就可以根據需要隨時查詢某職工的基本情況,也可以查詢工資在某個范圍內的職工人數等等。這些工作如果都能在計算機上自動進行,那我們的人事管理就可以達到極高的水平。此外,在財務管理、倉庫管理、生產管理中也需要建立眾多的這種"資料庫",使其可以利用計算機實現財務、倉庫、生產的自動化管理。