Thứ Sáu, 19 tháng 7, 2013

Duplicate database from active database

Giới thiệu
Nhân bản csdl là cách sử dụng lệnh DUPLICATE để lưu toàn bộ dữ liệu của csdl nguồn. Hoạt động của csdl đích toàn toàn độc lập với nguồn.

Mục đích
Kiểm tra phương thức backup & recovery, kiểm thử bản update mới của Oracle, kiểm tra hiệu suất csdl, tạo mới standby database (dataGuard), sinh báo cáo.

Khái niệm cơ bản
Source host là máy chứa csdl gốc. Source database instance là instance tương ứng với csdl gốc.
Destination host là máy chứa csdl được nhân bản. Source host và destination host có thể cũng hoặc khác máy chủ. Instance tương ứng với csdl đích được gọi là auxiliary instance.

Kỹ thuật nhân bản csdl
Để nhân đôi database RMAN cung cấp hai cách căn bản: nhân bản trực tiếp từ csdl đang hoạt động và qua backup.


Duplicate database from active database

Thứ Tư, 10 tháng 7, 2013

ORACLE NET Service

Khái niệm


Instance: Mỗi csdl có ít nhất một Instance, một Instance bao gồm vùng bộ nhớ (GSA) và các tiến trình xử lý nền. Mỗi instance được xác định bởi một Instance Name (theo hình: sales và finance là tên 2 instance).

  • Instance Name: được chỉ định bởi tham số khởi tạo INSTANCE_NAME, mặc định có giá trị giống với SID (Oracle system identifier) 

Database service: Đối với client một csdl Oracle được hiểu là một dịch vụ (service). Một csdl có thể có nhiều dịch vụ. (theo hình: Có 2 csdl với 2 dịch vụ phục vụ nhóm Sale và Finance). Mỗi csdl được xác định bởi một Service Name.

  • Service name: Là đại diện mức logic của một csdl. Khi một Instance khởi động, nó sẽ đăng ký với listener để sử dụng một hoặc nhiều Service Name.
    Một Service Name có thể định danh nhiều Instance, một Instance chứa nhiều service. Do đó Listener đóng vai trò như phương tiện giữa client - Instance và định tuyến yêu cầu kết nối đến đúng Instance.
Password File Authentication
Tạo file password: ORAPWD FILE=filenameENTRIES=max_users
- Khi dùng Database Configuration Assitant để tạo csdl, nó sẽ tạo file password.
- Kể từ Oracle 11gR1, password phân biệt chữ hoa chữ thường trừ khi chọn IGNORECASE=Y
Đặt tham số khởi tạo REMOTE_LOGIN_PASSWORDFILE = EXCLUSIVE (Deafault) - Khi thay đổi tham số phải khởi động lại csdl.
Kết nối đến database bằng user SYS (Hoặc user có quyền quản trị)
Nếu user không tồn tại, tạo một user và gán password cho user đó. Mật khẩu phân biệt chữ hoa chữ thường, hoặc ta có thể đặt tham số khởi tạo như sau: SEC_CASE_SENSITIVE_LOGON = FALSE
Gán quyền SYSDBA hoặc SYSOPER cho user: GRANT SYSDBA to <user>;

Tạo file password bằng ORAPWD
Syntax: ORAPWD FILE=filename [ENTRIES=numuser] [FORCE=(Y|N)] [IGNORECASE=(Y|N)]
Không có dấu cách trước và sau ký tự (=)
Lệnh sẽ hiển thị dấu nhắc ghõ mật khẩu của user SYS
  • FILE: tên của password file
    • Yêu cầu về tên file và đường dẫn đối với LINUX/UNIX
      • Tên file: orapwORACLE_SID
      • Đường dẫn: ORACLE_HOME/dbs
  • ENTRIES: Số lượng tối đa tài khoản được lưu trong file
    • Số lượng tài khoản tươnwg ứng với số lượng người dùng được phép kết nối đến database bằng quyền SYSDBA hay SYSOPER. Số lượng bản ghi trong file có thể nhiều hơn số lượng user, vì ORAPWD tiếp tục gán bản ghi cho đến khi OS block được làm đầy. VD: nếu OS block là 512 bytes, nó sẽ lưu giữ 4 bản ghi.số lượng bản ghi luôn luôn chia hết cho 4.
    • Các bản ghi có thể được tái sử dụng qua việc gán và thu hồi quyền
  • FORCE: Cho phép ghi đè file đã tồn tại (y)
    • Tham số nếu được gán (y) sẽ ghi đè file đã tồn tại. Nếu (n) một lỗi báo file đã tồn tại sẽ được trả về.
  • IGNORECASE: Mật khẩu phân biệt chữ hoa chữ thường. (y)
Chia sẻ và tắt file password
Sử dụng tham số khởi tạo REMOTE_LOGIN_PASSWORDFILE để kiểm soát việc chia sẻ giữa các Instance. Các giá trị như sau:

  • NONE: Không cho phép kết nối không an toàn đến csdl.
  • EXCLUSIVE (default): Sử dụng với một Instance của một csdl. File có thể được thay đổi, cho phép thêm, sửa, xóa user. Ngoài ra nó còn cho phép thay đổi mật khẩu của SYS qua lệnh ALTER USER
  • SHARE: Sử dụng trên nhiều csdl chạy trên cùng server, hoặc trên nhiều Instance của một csdl RAC. File không cho phép thay đổi, nếu muốn thay đổi thì chuyển về EXCLUSIVE sau đó đổi về SHARE.
Đồng bộ mật khẩu

  • Nếu thay đổi tham số khởi tạo REMOTE_LOGIN_PASSWORDFILE từ NONE sang EXCLUSIVE hay SHARED, hoặc tạo lại file mật khẩu và thay đổi mật khẩu của SYS, thì ta phải đảm bảo mật khẩu trong từ điển và trong file password giống nhau.
  • Để đồng bộ mật khẩu SYS, sử dụng lệnh ALTER USER, lệnh sẽ cập nhật và đồng bộ mật khẩu.
  • Để đồng bộ mật khẩu của các user khác, đăng nhập sử dụng quyền SYSDBA hoặc SYSOPER, thu hồi và gán lại quyền cho những user này:
    1. Tìm tất cả user được gán quyền SYSDBA
      SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSDBA='TRUE';
    2. Thu hồi quyền và gán lại quyền SYSDBA cho những user này
      REVOKE SYSDBA FROM non-SYS-user;
      GRANT SYSDBA TO non-SYS-user
    3. Tìm tất cả user được gán quyền SYSOPER
      SELECT USERNAME FROM V$PWFILE_USERS WHERE USERNAME != 'SYS' AND SYSOPER='TRUE';
    4. Thu hồi quyền và gán lại quyền SYSOPERcho những user này
      REVOKE SYSOPER FROM non-SYS-user;
      GRANT SYSOPER TO non-SYS-user;
Thêm user vào file password
Khi được gán quyền SYSDBA hay SYSOPER, user đó sẽ được lưu trong file password. Nếu server không đặt EXCLUSIVE (hoặc file password bị xóa) thì lỗi sẽ được trả về khi gán quyền. User sẽ được lưu trong file passowrd khi tồn tại một trong 2 quyền trên.
Tạo file password và thêm user

  1. Tạo file password với công cụ ORAPWD
  2. Đặt biến khởi tạo REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE (default là thế, đặt xong phải restart database)
  3. Kết nối đến csdl bằng quyền SYSDBA
    CONNECT SYS AS SYSDBA;
  4. Khởi động csdl
  5. Tạo user và gán 1 trong 2 quyền SYSDBA hoặc SYSOPER
Gán và thu hồi quyền SYSDBA và SYSOPER

Vì SYSDBA và SYSOPER là hai quyền lớn, nên WITH ADMIN OPTION không được sử dụng trong lệnh GRANT. Do đó user được gán quyền (Grantee) sẽ không có quyền gán quyền này cho user khác.Các quyền này không thể gán cho chức năng (role), bởi vì role chỉ có tác dụng khi csdl được khởi động. Không nên đồng hóa quyền SYSDBA và SYSOPER với quyền OS. (Đọc thêm Security Guide)
Xem thông tin user trong Password File
Sử dụng View V$PWFILE_USERS để xem user nào được gán quyền SYSDBA, SYSOPER hay SYSASM. Các cột và mô tả:

  • USERNAME: tên user
  • SYSDBA: nếu giá trị TRUE, user có thể kết nối với quyền SYSDBA
  • SYSOPER: nếu giá trị TRUE, user có thể kết nối với quyền SYSOPER
  • SYSASM: nếu giá trị TRUE, user có thể kết nối với quyền SYSASM
Duy trì file password
Mở rộng số lượng bản ghi trong file password: Khi có lỗi trả về khi gán quyền SYSDBA hay SYSOPER cho user, thì lỗi đó là do file password bị đầy. Ta cần tạo một file lớn hơn và gán lại quyền cho các user.
  • Thay thế file password
    1. Xác định những user có quyền SYSDBA hoặc SYSOPER bằng cách truy vấn view V$PWFILE_USERS
    2. Xóa file password hiện tại.
    3. Tạo file password mới, xác định tham số ENTRIES lớn hơn hiện tại.
    4. Thêm user vào file password.
  • Xóa file password
    • Nếu xác định không cần dùng tới file password để xác thực, ta có thể xóa file đó và khởi tạo lại tham số REMOTE_LOGIN_PASSWORDFILE=NONE. Sau khi xóa file, chỉ những user có quyền xác thực bằng OS mới có khả năng sử dụng quyền thực thi của SYSDBA hay SYSOPER.