- 1: TỔNG QUAN
- Giới thiệu
Ngày nay, công nghệ thông tin đã thâm nhập vào mọi lĩnh vực của đời sống kinh tế, xã hội. Việc áp dụng công nghệ thông tin đem lại hiệu quả ta lớn, làm tăng năng suất lao động, giảm chi phí đặc biệt là việc quản lý trong doang nghiệp. Với hàng trăm doanh nghiệp mua bán thiết bị điện tử trong phạm vi thành phố Hồ Chí Minh, vấn đề ứng dụng khoa học công nghệ càng trở nên cấp bách. Trên thị trường ERP, Oracle E-Business Suite được biết đến như là một trong những giải pháp quản trị doanh nghiệp ERP hàng đầu trên thế giới. Đây là một bộ gồm các ứng dụng quản trị doanh nghiệp cho phép quản lí hiệu quả và tự động hóa tất cả các mảng nghiệp vụ: kế toán tài chính, thương mại dịch vụ, sản xuất, cung ứng, vật tư hàng hóa… Để áp dụng Oracle E-Business Suite vào ứng dụng quản trị doang nghiệp, nhóm em đã thực hiện khóa luận “Tìm hiểu Oracle Form và xây dựng ứng dụng bán hàng”, phần nào đưa Oracle E-Business Suite đến gần với thực tiễn.
-
- Mục tiêu đề tài
- Tìm hiểu về Oracle database:
- Các bước cài đặt và cấu hình.
- Kiến trúc cơ sở dữ liệu.
- Ngôn ngữ PL/SQL.
- Quản trị người dùng.
- Tìm hiểu về Oracle form:
- Các bước cài đặt và cấu hình.
- Các thành phần của form.
- Tìm hiểu về Oracle report.
- Xây dựng chương trình quản lý mua bán điện thoại di động:
- Quản lý thông tin: khách hàng, nhân viên, sản phẩm.
- Quản lý nhập hàng.
- Quản lý xuất hàng.
- Quản lý tồn kho.
- Khuyến mãi, ưu đãi.
- Thống kê báo cáo.
-
- Phạm vi đề tài
Đề tài tập trung nghiên cứu tổng quan về Oracle. Trong đó, tập trung nghiên cứu chính về Oracle Database, Oracle Developer Suite. Bộ Oracle Developer Suite nghiên cứu chủ yếu ở Oracle Form, Oracle Report.
Dựa trên nội dung nghiên cứu tổng quát để xây dựng ứng dụng quản lý mua bán điện thoại di động. Trong ứng dụng quản lý mua bán thiết bị di động, chương trình chỉ tập trung nhiều vào nghiệp vụ mua, bán, nhập, xuất hàng hóa.
- 2: ORACLE DATABASE
- Tổng quan về Oracle Database
Oracle database là tập hợp một tập dữ liệu được xử lý như đơn vị. Mục đích của cơ sở dữ liệu là lưu trữ và truy xuất thông tin có liên quan. Trong đó, máy chủ cơ sở là nơi lưu trữ các thông tin có liên quan.
Oracle database là cơ sở dữ liệu đầu tiên được thiết kế cho máy tính lưới doanh nghiệp, cách linh hoạt và chi phí hiệu quả nhất để quản lý thông tin và ứng dụng.
-
-
- Các phiên bản của Oracle
Enterprise Edition (EE) là bản đầy đủ chức năng nhất, hỗ trợ mạnh nhất. Standard Edition (SE) là bản Database với những chức năng tiêu chuẩn, đủ dùng cơ bản. Standard Edition One (SE1 / SEO) giới hạn một số chức năng so với SE để triển khai trên môi trường nhỏ. Express Edition (Oracle Database XE): bản Database nhỏ, dùng cho những nhu cầu đơn giản, nhỏ gọn, Oracle Database Lite: chạy trên các thiết bị di động (mobile devices)
Giới thiệu về Grid computing: Điện toán lưới (grid computing) là tập hợp của tất cả hay một nhóm máy tính, máy chủ, thiết bị lưu trữ trong doanh nghiệp được tập trung để thực hiện một mục đích chung. Điện toán lưới trong đem lại cho Oracle nhiều lợi ích như chất lượng dịch vụ cao hơn nhờ cơ sở hạ tầng an ninh mạnh mẽ và quản lý tập trung, theo chính sách. Chi phí thấp hơn nhờ việc tăng cường sử dụng các nguồn lực và giảm đáng kể chi phí quản lý và bảo trì, các tài nguyên được phân bổ theo nhu cầu, giảm trừ khả năng dư thừa, khả năng linh hoạt cao.
-
-
- Kiến trúc của Oracle
Kiến trúc của Oracle gồm có 3 phần chính đó là kiến trúc bộ nhớ (memory structure), kiến trúc process (process structure), kiến trúc về lưu trữ (storage structure).
-
-
-
- Kiến trúc bộ nhớ
Kiến trúc bộ nhớ của Oracle gồm 2 phần: System Global Area (SGA) là phần bộ nhớ chia sẻ, bao gồm nhiều phần bộ nhớ nhỏ bên trong, chứa thông tin về hoạt động database, thông tin về các session, process, code thực thi, dữ liệu đọc từ phần lưu trữ lên…Program Global Area (PGA) là phần bộ nhớ riêng cho mỗi server process (user session) hay background process.
-
-
-
- Kiến trúc process
Process chính là các tiến trình thực hiện các hoạt động trong hệ thống. Các 3 loại process là client process: là các tiến trình được tạo bởi user chẳng hạn như khi user mở một tool ứng dụng SQL Plus. User kết nối với databse. Đó là client process. Server process: là các process được sinh ra để phục vụ các user process. Background Process (các process xử lý các công việc nội tại database).
-
-
-
- Kiến trúc về lưu trữ
Kiến trúc lưu trữ bao gồm kiến trúc luận lý (logical structure) và kiến trúc vật lý (physical structure), chúng có quan hệ mật thiết với nhau.
Kiến trúc vật lý(physical structure) bao gồm Data files là các tập tin chứa dữ liệu của CSDL, bao gồm dữ liệu của user, ứng dụng và data dictionary.
Kiến trúc luận lý (logical structure) Oracle data block là cấp độ lưu trữ logic nhỏ nhất trong Oracle database.
-
- Ngôn ngữ SQL
SQL cung cấp các câu lệnh để thực hiện truy vấn dữ liệu; thêm, sửa, xóa các dòng trong bảng; tạo, thay thế, thêm và xóa các đối tượng điều khiển truy cập đến cơ sở dữ liệu và các đối tượng của nó, đảm bảo thống nhất và toàn vẹn CSDL.
Công cụ hỗ trỡ SQL trong Oracle: Oracle SQL Developer, SQL * Plus, Oracle Jdevelopers, Oracle Application Express,…
Các đối tượng CSDL:
Một Schema là tập hợp các cấu trúc logic của dữ liệu hoặc các đối tượng lược đồ. Một Schema được sở hữu bởi một người dùng CSDL và có cùng tên với người dùng đó. Mỗi người dùng sở hữu một schema. Các Schema có thể được tạo và thao tác với SQL và bao gồm các kiểu đối tượng sau: Constraints, Database triggers, Indexes, …
Các loại đối tượng khác cũng được lưu trữ trong cơ sở dữ liệu và có thể được tạo ra và thao tác với SQL nhưng không có trong lược đồ: Tablespaces, Users, …
SQL (Structured Query Language) là Data Definition Language – DDL, Data Manipulation Language – DML.
-
-
- Data Definition Language – DDL
- Kiểu dữ liệu
Charater: char (n), nchar (n), varchar2 (n), nvarchar2 (n)
Numberic: number (m, n), float, binary_float, binary_double
Datetime: date, …
-
-
-
- Bảng
Tên bảng và tên cột tuân theo quy tắc: 1 – 30 kí tự, bắt đầu bằng chữ cái, bao gồm chữ cái, số, _, #, $ (hạn chế dùng #, $), không dùng những từ có sẵn trong Oracle (NUMBER, INDEX…), tên cột phải duy nhất trong bảng, tên bảng phải duy nhất trong namespace
Để tạo bảng, người dùng cần được cấp quyền hệ thống CREATE TABLE/CREATE ANY TABLE.
Cú pháp tạo bảng:
CREATE [GLOBAL TEMPORARY] TABLE [schema.]<Tên_Bảng>
(
<Tên_Cột> <Kiểu_Dữ_Liệu> [Null| Not Null],…
[CONSTRAINT <Tên_Ràng_Buộc> <Kiểu_Ràng_Buộc>]
);
-
-
-
- Ràng buộc toàn vẹn (Constraint)
Ràng buộc toàn vẹn (RBTV) đảm bảo tính toàn vẹn của dữ liệu. Chúng ta có thể khai báo RBTV trong hoặc sau khi tạo bảng.
Các loại RBTV: not null, unique, primary key, foreign key, check.
-
-
-
- Xóa bảng, thay đổi cấu trúc bảng
Xóa bảng:
Cú pháp:
DROP TABLE <Tên_Bảng> [CASCADE CONSTRAINT]
Nếu có CASCADE CONSTRAINT thì sẽ xóa tất cả các ràng buộc toàn vẹn liên quan đến bảng.
Sửa đổi cấu trúc bảng:
Thêm cột:
ALTER TABLE <Tên_Bảng>
ADD [(]<Tên_Cột> <Kiểu_Dữ_Liệu> [NOT NULL]
[, … )]
Xóa cột:
ALTER TABLE <Tên_Bảng> DROP (<DS_Tên_Cột>);
Sửa cột:
ALTER TABLE <Tên_Bảng>
MODIFY <Tên_Cột> <Kiểu_Dữ_Liệu>;
Thêm RBTV:
ALTER TABLE <Tên_Bảng>
ADD CONSTRAINT <Tên_RBTV> <Kiểu_RBTV>
Xóa RBTV:
ALTER TABLE <Tên_Bảng>
DROP CONSTRAINT <Tên_RBTV>
Đổi tên RBTV:
ALTER TABLE <Tên_Bảng>
RENAME CONSTRAINT <Tên_cũ>
TO <Tên_mới>
-
-
-
- Sequence
Sequence là một đối tượng trong Schema dùng để tự động sinh ra các số nguyên theo thứ tự nào đó (thường dùng cho khóa chính).
Đặc điểm của sequence là mỗi sequence có một tên xác định, không gắn với một cột hay một bảng nào, có thể tạo ra số nguyên theo thứ tự tăng hoặc giảm dần đều, khoảng cách giữa hai số nguyên do người dùng tùy đặt, có thể quay vòng nếu giá trị sinh ra đã đạt ngưỡng.
Tạo sequence:
CREATE SEQUENCE <Tên_Sequence>
INCREMENT BY integer START WITH integer
[MAXVALUE integer] [MINVALUE integer]
[CYCLE|NO CYCLE];
Sửa Sequence:
ALTER SEQUENCE <Tên_Sequence>
INCREMENT BY integer START WITH integer
[MAXVALUE integer] [MINVALUE integer]
[CYCLE/NOCYCLE];
Có thể sửa các thuộc tính: INCREMENT BY, MAXVALUE, MINVALUE, CYCLE, CACHE nhưng không thể sửa: START WITH.
Sử dụng lệnh SQL để làm việc với sequence:
CURRVAL: cho giá trị hiện tại của sequence.
NEXTVAL: tăng giá trị hiện tại của sequence.
Sử dụng sequence: trong danh sách lựa chọn của câu lệnh SELECT, trong mệnh đề VALUES của câu lệnh INSERT, trong mệnh đề SET của câu lệnh UPDATE
Xóa sequence:
DROP SEQUENCE <Tên_Sequence>;
-
-
-
- Synonym
Synonym là định danh (tên gọi tắt) tham chiếu đến một đối tượng của một schema.
Tạo synonym:
CREATE SYNONYM <Tên_synonym>
FOR <Tên_schema>.<Tên_đối_tượng>
Xóa synonym:
DROP SYNONYM <Tên_synonym>
-
-
- Data Manipulation Language – DML
- Truy vấn dữ liệu
Cú pháp truy vấn dữ liệu:
SELECT [DISTINCT] danh_sách_cột
FROM {table_name | view_name}
[WHERE điều_kiện]
[GROUP BY danh_sách_cột_1]
[HAVING điều_kiện_lọc]
[ORDER BY danh_sách_cột_2 [ASC | DESC]]
-
-
-
- Phép toán
Loại phép toán bao gồm toán học là +, -, *, /, so sánh là =, !=, <>, ^=, <, >, <=, >=, Logic là Not, And, Or, các phép toán chuỗi: ||, Like, Not like, các phép toán khác: In, Not In, Exists, Not Exists, Between, …
-
-
-
- Liên kết bảng
Phép nối (Join): Dùng để lấy dữ liệu từ nhiều bảng, khung nhìn.
INNER JOIN: Nối hai hoặc nhiều bảng, kết quả chỉ trả về những dòng thỏa mãn điều kiện nối.
Cú pháp:
SELECT <Danh sách cột>
FROM <Bảng1>
INNER JOIN [|JOIN] <Bảng_2>
ON <Điều kiện kết nối>
NATURAL JOIN: Nối hai hoặc nhiều bảng thông qua thuộc tính chung.
Cú pháp:
SELECT <Danh sách cột>
FROM <Bảng1>
NATURAL JOIN <Bảng_2>;
OUTER JOIN: Phép nối ngoài trả về tất cả các dòng thỏa điều kiện nối và một vài hoặc tất cả các dòng từ một bảng mà không có dòng nào thỏa mãn điều kiện nối. Bao gồm: LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN.
Cú pháp:
SELECT <Danh sách cột>
FROM <Bảng1>
LEFT/RIGHT/FULL [OUTER] JOIN <Bảng_2>
ON <Điều kiện kết nối>
-
-
-
- Thay đổi dữ liệu
Thêm dữ liệu:
- Nhập giá trị cho tất cả các cột trong bảng
INSERT INTO <Tên_bảng> VALUES (Gt1, Gt2, …)
Sửa dữ liệu:
UPDATE <Tên_bảng>
SET <Cột1> = Giá_trị1, …, <CộtN> = Giá_trịN
[WHERE Điều_kiện];
Xóa dữ liệu:
DELETE <Tên_bảng> WHERE [Điều_kiện];
-
-
-
- Một số hàm thông dụng
Hàm xử lý chuỗi:
- LENGTH (<chuỗi>): Trả về chiều dài chuỗi.
- LOWER/ UPPER/ INITCAP (<chuỗi>): Chuyển chuỗi thành chuỗi viết thường/ hoa/ viết hoa ký tự đầu các từ.
- LTRIM/ RTRIM(<chuỗi a>, <chuỗi b>): Loại bỏ chuỗi b ở bên trái/phải chuỗi a
- CONCAT(<chuỗi a>, <chuỗi b>): Nối chuỗi a và chuỗi b
- REPLACE (<chuỗi a>, <chuỗi b> [,<chuỗi c>]): Thay tất cả các chuỗi b có trong chuỗi a bằng chuỗi c.
- SUBSTR (<chuỗi a>, n, m): Trả về chuỗi con của chuỗi a, từ vị trí n sang phải m ký tự, nếu không chỉ m thì lấy cho đến hết chuỗi.
Hàm toán học:
- FLOOR: Trả về số nguyên lớn nhất nhỏ hơn hoặc bằng n.
- CEIL (n): Trả về số nguyên nhỏ nhất lớn hơn hoặc bằng n.
- ROUND (<biểu_thức> [, vị_trí]): Làm tròn một số.
- MOD (n, m): Trả về phần dư của n chia cho m.
- SQRT (<biểu_thức>): Trả về căn bậc 2 của <biểu_thức>
Hàm thời gian:
- SYSDATE: Lấy ngày tháng hiện hành.
- EXTRACT(YEAR| MONTH| DAY FROM <chuỗi ngày>): Lấy năm/ tháng/ ngày của <chuỗi ngày>
- ADD_MONTHS(<ngày>, n): Thêm n tháng vào <ngày>
- MONTHS_BETWEEN (<ngày 1>, <ngày 2>): Cho biết số tháng giữa 2 ngày <ngày 1> và <ngày 2>.
Hàm chuyển đổi:
- TO_CHAR (<số>): Chuyển số sang dạng chuỗi.
- TO_CHAR (<ngày>, <chuỗi định dạng>): Chuyển ngày sang chuỗi theo định dạng.
- TO_NUMBER(<chuỗi ký số>): Chuyển chuỗi ký số sang dạng số
- TO_DATE(<chuỗi ngày tháng>, <chuỗi định dạng>): Chuyển chuỗi ngày sang dạng ngày theo định dạng
Hàm tập hợp: Min, Max, Count, Avg, Sum.
-
- Ngôn ngữ PL/SQL
- Cấu trúc khối lệnh
DECLARE – Dùng để khai báo các thành phần. Thành phần đó có thể là types, biến, chương trình con.
BEGIN
– Phần thực thi bao gồm các câu lệnh.
[EXCEPTION – Xử lý các trường hợp ngoại lệ]
END;
-
-
- Biến và hằng số
Biến:
Đặc điểm của biến: lưu trữ dữ liệu tạm thời, cho phép sửa dữ liệu, cho phép tái sử dụng.
Quy tắc đặt tên biến là có thể chứa chữ số và chữ cái, có thể chứa kí tự đặc biệt: $, … tối đa 30 kí tự, không trùng với từ khóa Oracle
DECLARE <Tên_biến> Kiểu_DL [NOT NULL] [:= <Giá_trị>];
Gán giá trị cho biến: <Tên_biến>:= <Giá_trị>;
Hằng số (Constant):
Khai báo:
<Tên_hằng> Constant Kiểu_DL:= <G_trị>;
-
-
- Thuộc tính %TYPE và %ROWTYPE
- Thuộc tính %TYPE:
Dùng để khai báo biến tham chiếu đến một cột trong cơ sở dữ liệu. Có cấu trúc như một cột trong Table.
Cú pháp: <Tên_biến> <Tên_cột>/<Tên_biến_khác>%TYPE;
Ưu điểm: Không cần biết chính xác kiểu dữ liệu của MANV. Khi thay đổi kiểu dữ liệu MANV trong bảng NHANVIEN thì kiểu dữ liệu của biến V_MANV thay đổi theo.
-
-
-
- %ROWTYPE:
Dùng để khai báo biến tham chiếu đến một dòng trong cơ sở dữ liệu. Có cấu trúc như một dòng trong Table.
Cú pháp: <Tên_biến> <Tên_bảng>%ROWTYPE;
Khi truy xuất đến từng cột thì thực hiện tham chiếu đến cột giống như với một bảng (gồm 1 bản ghi).
Cú pháp: <Tên_biến>.<Tên_cột>
-
-
- Nhập và xuất (Input/Output)
- Lệnh nhập
Cách 1: Sử dụng biến thay thế &. Biến được nhập giá trị lúc thực thi
Cú pháp: &<Tên_biến>
Cách 2: Sử dụng biến thay thế &&. Giá trị nhập vào được lưu trữ cho những lần sau.
Cú pháp: &&<Tên_biến>
-
-
-
- Lệnh xuất
Điều kiện: Phải thực hiện lệnh SET SERVEROUTPUT ON trước khi xuất nội dung DBMS_OUTPUT.
Cú pháp: DBMS_OUTPUT.PUT_LINE (‘Nội dung cần xuất’);
-
-
- Các cấu trúc điều khiển
- Rẽ nhánh
Cú pháp: If…else…then
IF <Điều_kiện> THEN
<Lệnh>;
[ELSE IF <Điều_kiện> THEN
<Lệnh>;]
[ELSE <Lệnh>; … ]
END IF;
END IF;
Cú pháp: Case_When
CASE <n>
WHEN <biểu_thức_1> THEN <giá_trị_1>
WHEN <biểu_thức_2> THEN <giá_trị_2>
...
WHEN <biểu_thức_N> THEN <giá_trị_N>
[ELSE <giá_trị_N+1>]
END
-
-
-
- Lặp
Cú pháp: Loop
LOOP
<lệnh_1>; ...
EXIT [WHEN <điều_kiện>];
END LOOP;
Cú pháp: For
FOR <counter> IN [REVERSE]
<init_val> … <final_val> LOOP
<lệnh_1>;
...
END LOOP;
-
-
- Con trỏ
Con trỏ là kiểu biến có cấu trúc cho phép xử lý dữ liệu gồm nhiều dòng. Có hai loại con trỏ: con trỏ không tường minh, con trỏ tường minh.
-
-
-
- Con trỏ không tường minh
Con trỏ không tường minh là kiểu con trỏ được tự động sinh ra khi gặp câu lệnh Select hoặc DDL.
Các thuộc tính của con trỏ không tường minh:
- SQL%ISOPEN: Trả về FALSE
- SQL%FOUND: Trả về NULL/ TRUE/ FALSE
- SQL%NOTFOUND: Trả về NULL/ TRUE/ FALSE
- SQL%ROWCOUNT: Trả về NULL
-
-
- Con trỏ tường minh
Con trỏ tường minh là con trỏ do người dùng tự định nghĩa. Các bước sử dụng con trỏ là khai báo, mở con trỏ, lấy dữ liệu xử lý, đóng con trỏ.
Khai báo:
DECLARE CURSOR <Tên_con_trỏ> (DS_biến) IS <Truy_vấn>;
Mở con trỏ:
OPEN <Tên_con_trỏ>| <Tên_con_trỏ (<DS_biến>);
Lấy dữ liệu xử lý:
FETCH <Tên_con_trỏ> INTO <DS_biến>;
Đóng con trỏ:
CLOSE <Tên_con_trỏ>;
-
-
- Thủ tục
Một nhóm lệnh thực hiện một chức năng cụ thể được nhóm lại.
Cú pháp:
CREATE [OR REPLACE] PROCEDURE <Tên_thủ_tục> [(<Đối_số1> [IN|OUT|IN OUT] Kiểu_DL1, <Đối_số2> [IN|OUT|IN OUT] Kiểu_DL2, ... )]
IS|AS
BEGIN <Thân_thủ_tục>;
END
Gọi thủ tục: EXEC <Tên_thủ_tục>;
Hủy bỏ: DROP PROCEDURE <Tên_thủ_tục>;
Sửa: ALTER PROCEDURE <Tên_thủ_tục> …
-
-
- Hàm
Một nhóm lệnh thực hiện một chức năng cụ thể được nhóm lại.
Cú pháp:
CREATE [OR REPLACE] FUNCTION <Tên_hàm> [(argument1 [mode1] datatype1, argument2 [mode2] datatype2, ... )]
RETURN kiểu dữ liệu
IS|AS
<Lệnh>
Gọi hàm: <Tên _biến>:= <Tên_hàm>;
Hủy bỏ: DROP FUNCTION <Tên_hàm>;
Sửa: ALTER FUNCTION <Tên_hàm> …
-
-
- Trigger
Trigger là một thủ tục được thực hiện ngầm định ngay khi thực hiện lệnh SQL nhằm đảm bảo các quy tắc logic phức tạp của dữ liệu. Có thể định nghĩa Trigger trên table, view, schema hoặc database.
Các loại trigger: DDL trigger, DML trigger, Instead – of trigger,…
Lưu ý:
Không sử dụng trigger cho trường hợp có thể sử dụng constraint. Không cho phép các lệnh COMMIT, ROLLBACK, SAVE POINT… bên trong thân trigger. Chỉ sử dụng trigger khi thật cần thiết.
Trigger DML:
Phân theo thời gian thực hiện: BEFORE, AFTER
Phân loại theo loại câu lệnh kích hoạt: INSERT, UPDATE, DELETE
Cú pháp:
CREATE [OR REPLACE] TRIGGER trigger_name
{BEFORE | AFTER | INSTEAD OF}
{INSERT [OR] | UPDATE [OR] | DELETE}
[OF col_name] ON table_name
[REFERENCING OLD AS old |NEW AS new]
[FOR EACH ROW] WHEN (condition)
DECLARE
Declaration-statements
BEGIN
Executable-statements
END;
Hủy trigger: DROP TRIGGER trigger_name;
-
-
- Package
Package là một đối tượng schema, nhóm các kiểu dữ liệu, biến và các thủ tục, hàm có mối liên hệ logic với nhau. Khi một phần tử trong package được gọi thì toàn bộ nội dung của package sẽ được nạp vào trong hệ thống. Nâng cao tốc độ thực hiện lệnh của toàn bộ hàm, thủ tục trong package.
Packages thường có hai phần: phần mô tả (specification) là định nghĩa package, phần thân (body) là các cài đặt package.
Khai báo phần mô tả Package:
CREATE [OR REPLACE] PACKAGE package_name
IS | AS
-- Khai báo các biến, hằng, cursor, ngoại lệ và kiểu sử dụng trong toàn bộ package
-- Khai báo các hàm, thủ tục PL/SQL
END package_name;
Khai báo phần thân Package
CREATE [OR REPLACE] PACKAGE BODY package_name
IS | AS
-- Khai báo các kiểu chỉ sử dụng riêng trong package -- Nội dung của package
END package_name;
Sử dụng các phần tử của Package:
package_name.element_name;
-
- Quản trị người dùng
- Tài khoản
Mỗi tài khoản có đặc điểm như tài khoản có tên là duy nhất. Nó dùng phương thức xác thực nhất định. Nó một tablespace mặc định, một tablespace tạm, danh sách các tài nguyên mà user được sử dụng, trạng thái.
Khi cài đặt CSDL, tài khoản người dùng được cài đặt tự động. Các tài khoản administrative mặc định khi tạo CSDL là: SYS, SYSTEM, SYSMAN và DBSNMP. Tài khoản administrative được quyền tài khoản cao và được chỉ bởi individuals authorized để thực hiện các công việc administrative.
Khi tạo một tài khoản người dùng cần chỉ định tên user, mật khẩu, tablespace mặc định cho tài khoản và cấp đặc quyền hệ thống, đặc quyền đối tượng, nhóm quyền cho tài khoản.
Cú pháp tạo tài khoản
CREATE USER <Ten_User> IDENTIFIED <Kieu_Xac_thuc>
DEFAULT TABLESPACE <Ten_TableSpace>
TEMPORARY TABLESPACE <Ten_TEMP>
[QUOTA <Kieu_Quota> ON User] [GRANT <Quyen> TO User];
Xác thực người dùng
Xác thực người dùng bao gồm: Password, External, Global.
-
-
- Quyền (Privilege)
Cho phép người dùng truy cập vào dữ liệu và giới hạn các loại lệnh SQL mà người dùng có thể thực hiện. Có hai loại quyền: quyền hệ thống, quyền đối tượng.
Quyền hệ thống: thường được cấp bởi một DBA cho người dùng thực hiện một số thao tác đối với CSDL như CREATE TABLE, CREATE SESSION,…
Quyền đối tượng: cho phép người dùng truy cập và thực hiện một số thao tác đối với đối tượng trong cơ sở dữ liệu. Các quyền đối tượng như: ALTER, DELETE, UPDATE, SELECT, INSERT, INDEX, REFERENCES
Cú pháp cấp quyền hệ thống
GRANT <Quyen_cap_phat> TO <User> [WITH ADMIN OPTION];
Cú pháp cấp quyền đối tượng
GRANT <Quyen_cap_phat[(<Ten_cot>)]>ON<Doi_tuonng>TO <User>
[WITH GRANT OPTION];
Cú pháp cấp gỡ quyền
REVOKE <Quyen_cap_phat> ON <Doi_tuong> FROM <User>;
-
-
- Nhóm quyền (Role)
Vai trò của nhóm quyền là dễ dàng quản lý quyền, quản lý quyền “động”, bật/tắt quyền dễ dàng.
Cú pháp tạo Role
CREATE ROLE <Tên_Role>;
Cú pháp gán quyền cho Role
GRANT <TênQuyền> TO <Tên_Role> WITH ADMIN OPTION;
Cú pháp gỡ quyền của Role
REVOKE <TênQuyền> FROM <Tên_Role>;
Cú pháp gán Role cho người dùng
GRANT <Tên_Role> TO User;
Cú pháp xóa Role
DROP ROLE <Tên_Role>;
-
-
- Profile
Tại một thời điểm, mỗi người dùng chỉ được gán DUY NHẤT một profile. Profile dùng để quản lý tài nguyên được phép dùng của người dùng, quản lý trạng thái và ràng buộc về mật khẩu.
Cú pháp tạo profile
CREATE PROFILE [Tên profile] LIMIT
FAILED_LOGIN_ATTEMPTS [số lần cố gắng login thất bại]
CONNECT_TIME [thời gian connect cho một session giới hạn]
IDLE_TIME -- Lượng thời gian nhàn rỗi cho session của user
LOGICAL_READS_PER_SESSION DEFAULT;