Thứ Hai, 18 tháng 1, 2016

Apache Bench (ab) timings explained visually

Apache Bench (ab) is a HTTP load testing tool. ab can be configured to output the raw timings:
$ ab -n 5 -g raw-data 'https://google.com/' > /dev/null
$ cat raw-data
starttime   seconds ctime   dtime   ttime   wait
Wed Aug 06 19:11:27 2014    1407348687  8   2   10  2
Wed Aug 06 19:11:27 2014    1407348687  8   2   11  2
Wed Aug 06 19:11:27 2014    1407348687  9   2   11  2
Wed Aug 06 19:11:27 2014    1407348687  9   3   12  3
Wed Aug 06 19:11:27 2014    1407348687  9   9   18  8
However, ctime, dtime, ttime & wait are not documented.
Through Wireshark wrangling and reading the ab source file, I managed to figure out what they are:
  • assumes first byte from server comes after when the request is written
  • the diagram is ugly, sorry
If it still isn’t clear, or if it’s inaccurate, please tell me.

(Source)

Thứ Sáu, 15 tháng 1, 2016

Hướng dẫn cách rút tiền nhanh và tiết kiệm nhất từ Upwork và Elance (Phần V)

  (Source: link)
Thù lao luôn là vấn đề nan giải đối với các freelancer, nhất là những bạn mới vào nghề vì thu nhập còn thấp và chưa có nhiều kinh nghiệm rút tiền khi hai trang này đều hỗ trợ nhiều phương thức thanh toán. Mình đã có 4 năm làm việc và thú thật là mình đã có một thời gian không tìm hiểu về các vấn đề thanh toán nên có thể là đã lãng phí rất nhiều tiền từ việc rút tiền thù lao về Việt Nam.
Bài viết này xin chia sẻ một số kinh nghiệm, có thể chưa là giải pháp tối ưu nhất nhưng chắc sẽ giúp ích được nhiều bạn.


Hướng dẫn chung

Mỗi tài khoản trên Upwork và Elance đều có số dư (balance), sau khi hoàn thành dự án cho khách hàng bạn phải yêu cầu khách thanh toán hoặc giải phóng (release) số tiền được giữ trong Escrow. Tuy nhiên có vài vấn đề bạn cần lưu ý:

Đây là email thông báo từ Elance khách đã giải phóng thù lao cho một dự án của mình.

Upwork email thông báo khi khách hàng gửi tiền và đặt tiền cọc mới.

1. Nếu dự án bạn đang làm được tính theo giờ thì sau mỗi tuần, số thời gian bạn làm được sẽ nhân với đơn giá đã thỏa thuận và khách hàng sẽ bị trừ số tiền đó. Tóm lại là hoàn toàn tự động.
2. Đối với Upwork thì mọi thanh toán đều bị hold (giữ lại) để kiểm tra trong khoản 1 tuần mới được đưa vào tài khoản của bạn còn Elance thì ngay tức thì. Tuy nhiên Upwork khi có tiền rồi nếu bạn thực hiện thanh toán rút thì được giải quyết ngay tức thì còn Elance thì phải đợi (tối đa 24 giờ đối với các ví điện tử).
3. Mỗi trang đều hỗ trợ một số phương thức nhưng bạn phải thực hiện add các phương thức vào và xác nhận, sau khi hoàn tất thì đợi vài ngày mới dùng được. 

4. Có nhiều khách hàng hoặc chính bạn đề nghị khách hàng thanh toán riêng cho bạn để tiết kiệm phí trung gian của hai trang này. Việc làm này có lợi hay hại sẽ được mình bàn ở một bài khác vì có nhiều thứ đáng nói.
5. Khách hàng có thể thanh toán thưởng ngoài số tiền đã giao kèo (deal), tuy nhiên số tiền đó vẫn bị tính phí hoa hồng như bình thường.
Phương thức của tác giả là mình áp dụng để tối ưu chi phí ở 2 trang là:
Upwork: Rút về Paypal
Elance: Rút thẳng về Việt Nam (bank wire)
Tài khoản Paypal và Skrill đều liên kết với thẻ MasterCard của ngân hàng ACB. Thủ tục làm thẻ chỉ trong 15 phút, phí thường niên 100k (miễn phí năm đầu).
Và một số kinh nghiệm chung:
- Nên rút mỗi tháng một lần
- Không nên quá trông chờ vào thu nhập Freelancer cho chi phí hiện tại mà nên dự tính cho tháng tới.
- Làm sẵn thẻ Master, verify và gắn với tài khoản Paypal, Skrill sẵn để tiện rút bất kỳ lúc nào.
- Không nên hối thúc khách hàng thanh toán trừ khi họ đã trễ hẹn
- Nên đăng ký nhận thông báo tiền qua điện thoại (SMSBanking hoặc iBanking) để biết khi nào tiền về

Xin đọc tiếp để hiểu tại sao như vậy là rẻ nhất

Upwork (oDesk)

Như đã nói ở phần trước, phí hoa hồng thanh toán của Upwork là 10%. Tạm bỏ qua các vấn đề về thỏa thuận riêng với khách hàng. Ở đây chúng ta sẽ đi nhanh về các phương thức Upwork hỗ trợ:

1.       Payoneer: cái này mình không có dùng nên không bàn tới, nghe nói phổ biến cho bên Philipines
2.      Skrill: khá tuyệt vời, tỷ giá chuyển đổi USD > Việt Nam Đồng cao và lệnh rút tiền được giải quyết trong 24 giờ. Tức là hôm nay rút sớm (trong buổi chiều) thì mai có tiền (không tính Chủ Nhật). Phí rút một lần 1 USD. Khi rút về Skrill sẽ bị charge phí nhận tiền 3,9%.
3.       Direct Deposit/ACH: Cái này dành cho các freelancer ở Mỹ
4.      Wire Transfer: 30$ một lần rút. Mình chưa dùng bao giờ vì thường không để quá nhiều tiền ở trang này, nếu bạn có số dư tầm 1000$ trở lên thì hãy rút bằng phương thức này vì nó tiết kiệm hơn nếu rút qua Paypal hay Skrill.
5.      Paypal: phương thức mình ưa dùng nhất khi rút tiền. Paypal thật ra tính phí cao hơn Skrill, các bạn có thể google “Paypal calculator” để biết, cách tính của Paypal phức tạp hơn nhưng nói chung khi nhận tiền tự do sẽ bị charge phí cao hơn. Tuy nhiên Paypal không charge phí với các partner (đối tác) của nó và Upwork là một trong những đối tác lớn nên bạn không mất xu nào khi nhận tiền qua Paypal.
Lưu ý: Như đã nói ở trên, Upwork giữ thanh toán của khách hàng 1 tuần mới ghi có vào tài khoản của bạn. Nếu số dư của bạn hơn 1000$ thì Upwork sẽ tự động rút về hằng tháng cho bạn, việc này bạn có thể điều chỉnh lại để thanh toán tự động theo tuần, hai tuần một lần, theo tháng hoặc theo quý và chọn mức số dư bạn muốn tự động rút.
Nếu bạn là một freelancer bình thường sống ở Việt Nam không buôn bán Skrill, không có làm dự án quá to hay thích để dành tiền > 1000$ mới rút thì Paypal là lựa chọn tốt nhất.

Elance

Nhắc lại, phí hoa hồng thanh toán của Elance là 8,25-8,75%. Và đây là danh sách các phương thức Elance hỗ trợ:

1. Bank Transfer (chuyển khoản ngân hàng): Trước khi dùng nó, mình cũng dùng Paypal và Skrill, tuy nhiên khi biết Elance có hỗ trợ rút thẳng về Việt nam thì chuyển sang dùng cái này vì mỗi tháng Elance cho bạn rút miễn phí một lần, những lần rút kế tiếp thì charge phí 5$. Nên nếu bạn rút định kỳ theo tháng thì nên dùng cái này. Tuy nhiên, tỷ giá của Elance khá thấp, tương tự Paypal, và thời gian rút khoản 3 ngày. Ví dụ bạn rút thứ hai thì thứ năm có tiền trong tài khoản.
2. Paypal: Không charge phí rút. Lâu quá mình không rút về Paypal nên không rõ có bị charge phí nhận tiền không nữa.
3. Skrill: Không charge phí rút. Rút về vẫn bị tính 3,9% phí nhận tiền.

So sánh giữa Paypal và Skrill

Paypal:
Ưu điểm:
+ Uy tín
+ Đa chức năng
+ Có thể check tỷ giá tiền (USD/VND)
+ Chuyển khoản qua lại giữa các tài khoản không mất phí
Nhược điểm:
+ Thời gian rút lâu (đối với VN là 3 ngày, không tính T7, CN)
+ Tỷ giá thấp hơn so với thị trường vì phải qua trung gian. Ví dụ tỷ giá chính thức là 22.500VND/USD thì Paypal chỉ khoảng 21.634VND/USD
Skrill:
Ưu điểm:
+ Tốc độ xử lý nhanh
+ Giao diện đơn giản dễ dùng
+ Thời gian rút tiền cực nhanh trong 1 ngày
+ Tỷ giá quy đổi ngoại tệ lớn (không bị ăn phí trung gian)
+ Có nhiều loại thành viên và chế độ tích lũy điểm đổi quà.
Nhược điểm:
+ Luôn luôn tính phí nhận tiền 3,9% với mọi nguồn tiền nhận được
+ Chuyển tiền qua lại giữa các thành viên vẫn bị tính phí
+ Không có cơ chế lấy lại tiền nếu tài khoản bị hack như Paypal cho tài khoản thường.

Các bạn có bất kỳ câu hỏi về thanh toán nạp rút ở hai trang Upwork và Elance xin để lại bình luận, mình sẽ trả lời sớm nhất khi có thể.

Thứ Hai, 25 tháng 5, 2015

GlusterFS + IPtables

1. What ports does Gluster need?
Preferably, your storage environment should be located on a safe segment of your network where firewall is not necessary. In the real world, that simply isn't possible for all environments. If you are willing to accept the potential performance loss of running a firewall, you need to know that Gluster makes use of the following ports:
- 24007 TCP for the Gluster Daemon
- 24008 TCP for Infiniband management (optional unless you are using IB)
- One TCP port for each brick in a volume. So, for example, if you have 4 bricks in a volume, port 24009 – 24012 would be used in GlusterFS 3.3 & below, 49152 - 49155 from GlusterFS 3.4 & later.
- 38465, 38466 and 38467 TCP for the inline Gluster NFS server.
- Additionally, port 111 TCP and UDP (since always) and port 2049 TCP-only (from GlusterFS 3.4 & later) are used for port mapper and should be open.
Note: by default Gluster/NFS does not provide services over UDP, it is TCP only. You would need to enable the nfs.mount-udp option if you want to add UDP support for the MOUNT protocol. That's completely optional and is up to your judgement to use.

Vie:
- 24007 TCP tiến trình gluster
- 24008 TCP quản lý đường Infiniband
- 111 TCP tiến trình map port (RPC)
- 38465:38467 TCP kết nối trực tiếp đến IP GlusterFS server (đại diện cho volume mount)
Mở với mỗi IP của brick:
- 24009:24009+n TCP với n là số brick trong volume (bản GlusterFS cũ hơn ver 3.4)
- 38465:38465+n TCP với n là số brick trong volume (bản GlusterFS mới hơn từ ver 3.4)


# Gluster client IP: 232, 237
-A RH-Firewall-1-OUTPUT -m state --state NEW -m tcp -p tcp --dport 24007:24008 -d 10.58.49.232/32 -j ACCEPT -m comment --comment "mount nfs client"
-A RH-Firewall-1-OUTPUT -m state --state NEW -m tcp -p tcp --dport 111 -d 10.58.49.232/32 -j ACCEPT -m comment --comment "mount nfs client"
-A RH-Firewall-1-OUTPUT -m state --state NEW -m udp -p udp --dport 111 -d 10.58.49.232/32 -j ACCEPT -m comment --comment "mount nfs client"
-A RH-Firewall-1-OUTPUT -m state --state NEW -m tcp -p tcp --dport 49152:49154 -d 10.58.49.232/32 -j ACCEPT -m comment --comment "mount nfs brick1 client"
-A RH-Firewall-1-OUTPUT -m state --state NEW -m tcp -p tcp --dport 49152:49154 -d 10.58.49.237/32 -j ACCEPT -m comment --comment "mount nfs brick2 client"
-A RH-Firewall-1-OUTPUT -m state --state NEW -m tcp -p tcp --dport 38465:38467 -d 10.58.49.232/32 -j ACCEPT -m comment --comment "mount nfs client"

Thứ Sáu, 6 tháng 9, 2013

Cài đặt PHP OCI8 + PDO_OCI (instantclient 12.1) module

Trường hợp: cài máy chạy php không nằm trên máy cài oracle
PHP5.3.27

PHP OCI8
Bước 1: Download mấy cái file instantclient Link
Lưu ý: kiểm tra xem OS là x86 hay x86_64, nếu down sai thì sẽ có lỗi

unzip instantclient-basic-linux-12.1.0.1.0.zip
unzip instantclient-odbc-linux-12.1.0.1.0.zip
unzip instantclient-sdk-linux-12.1.0.1.0.zip
Giải nén ra (các file sẽ nằm cùng một thư mục vd: /usr/local/src/instantclient_12_1)

cd vào mấy con vẹo
ln -s libclntsh.so.*.1 libclntsh.so
(với * là 10,11,12.. vv)

Bước 2: cài đặt OCI8
Download oci8: Link (vd: oci8-1.4.10.tgz)

tar xvzf oci8-1.4.10.tgz
/usr/local/php5/bin/phpize
./configure --with-oci8=instantclient,/usr/local/src/instantclient_12_1 --with-php-config=/usr/local/php5/bin/php-config
make && make install

Bước 3: cấu hình php.ini thêm
extension=oci8.so

PDO_OCI
fix erorr: 
1. checking for oci.h... /x/x/x/x/include
configure: error: I'm too dumb to figure out where the libraries are in your instant client install
2. configure: error: Unsupported Oracle version!


Bước 1: Download pdo_oci link
Bước 2: giải nén tar xvzf PDO_OCI-1.0.tgz
Bước 3: download config.mp4 patch: link
Bước 4: sửa config.m4 (để chạy với instantclient 12.1)
tìm line: SUPPORTED_LIB_VERS="9.0 10.1 11.1"  # This caters for all Oracle 9.x, 10.x and 11.1 installs
-> thêm: SUPPORTED_LIB_VERS="9.0 10.1 11.1 12.1"  # This caters for all Oracle 9.x, 10.x and 11.1 installs

tìm line: case $PDO_OCI_VERSION in
    9.0|10.1|10.2|11.1|11.2)
-> thêm: case $PDO_OCI_VERSION in
    9.0|10.1|10.2|11.1|11.2|12.1)


Bước 5: Cài đặt
 /usr/local/php5/bin/phpize
./configure --with-pdo-oci=instantclient,/usr/local/src/instantclient_12_1,12.1 --with-php-config=/usr/local/php5/bin/php-config
make && make install

Bước 6: Enable module, thêm vào php.ini
; Enable pdo_oci (oracle) extension module
extension=pdo_oci.so



REFERENCE:
ORACLE: http://www.oracle.com/technetwork/articles/technote-php-instant-084410.html
OCI8: http://www.php.net/manual/en/oci8.installation.php
PDO_OCI config.mp4 patch: http://svn.php.net/viewvc?view=revision&revision=294487
PDO_OCI manual: http://php.net/manual/en/ref.pdo-oci.php
PDO_OCI v1.0 download: http://pecl.php.net/package/PDO_OCI

Thứ Hai, 26 tháng 8, 2013

[Syslog-ng] The BSD syslog Protocol

The BSD syslog Protocol

Cấu trúc một đoạn tin có 3 phần PRI, HEADER, MSG
Mỗi gói tin có độ dài: 1024 bytes hoặc nhỏ hơn

PRI: phải có 3, 4, hoặc 5 ký tự và phải nằm trong "<" và ">" (mã ASCII là: %d60 và %d62)
Đại diện cho Facility và Severity theo công thức: Facility*8 + Severity

           Table 1.  syslog Message Facilities
        Numerical         Severity
          Code
0 kernel messages 1 user-level messages 2 mail system 3 system daemons 4 security/authorization messages (note 1)
           5             messages generated internally by syslogd
           6             line printer subsystem
           7             network news subsystem
           8             UUCP subsystem
           9             clock daemon (note 2)
          10             security/authorization messages (note 1)
          11             FTP daemon
          12             NTP subsystem
          13             log audit (note 1)
          14             log alert (note 1)
          15             clock daemon (note 2)
          16             local use 0  (local0)
          17             local use 1  (local1)
          18             local use 2  (local2)
          19             local use 3  (local3)
          20             local use 4  (local4)
          21             local use 5  (local5)
          22             local use 6  (local6)
          23             local use 7  (local7)

           Table 2. syslog Message Severities

        Numerical         Severity
          Code

           0       Emergency: system is unusable
           1       Alert: action must be taken immediately
           2       Critical: critical conditions
           3       Error: error conditions
           4       Warning: warning conditions
           5       Notice: normal but significant condition
           6       Informational: informational messages
           7       Debug: debug-level messages

HEADER: Lưu thời gian (timestamp), hostname hoặc IP của thiết bị. Giá trị gồm ký tự chuẩn ASCII giống phần PRI (%d33-126) và dấu cách (%d32).
- Trường TIMESTAMP nằm sau dấu ">" của phần PRI, lưu thời gian theo định dạng "Mmm dd hh:mm:ss". Trong đó Mmm là viết tắt của tháng: 
         Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
dd là ngày trong tháng, nếu ngày <10 thì dd gồm dấu cách và số. vd: ngày 7 tháng 8 sẽ được viết là "Aug  7" với 2 dấu cách.
hh:mm:ss là thời gian cục bộ. hh hiển thị theo định dạng 24 giờ (giá trị 00 -> 23). Phút (mm) và giây (ss) có giá trị 00 -> 59
- Trường HOSTNAME lưu tên máy chủ, hoặc IP (v4 hoặc v6) của nơi gửi log. Giá trị ưu tiên là tên máy chủ, được quy định theo chuẩn STD 13. Lưu ý, trong trường này không được phép có dấu cách (space). Không đi kèm tên miền với trường hostname. Tiếp sau trường HOSTNAME là một dấu cách (space)

MGS: Lưu phần còn lại của gói tin syslog. Gia trị gồm ký tự chuẩn ASCII (%d33-126) và dấu cách (%d32).
Bao gồm 2 trường: TAG và CONTENT. Trong đó CONTENT là nội dung chi tiết của đoạn thông điệp. Phần TAG không quá 32 ký tự, bất kỳ ký tự không trong bảng chữ cái đều là ký tự đánh dấu kết thúc phần TAG. Phần lớn, ký tự đầu tiên của phần CONTENT gồm ký tự "[", ":", hoặc dấu cách.

4.2 Nguyên bản của gói tin syslog
Không có yêu cầu cụ thể nào về nội dung của gói tin syslog. Bất kỳ gói tin nào có đích là cổng 514 UDP đều hợp lệ nếu có đúng định dạng của syslog.



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.