2012年6月21日 星期四

有關Oracle 帳號鎖定、密碼過期

【帳號鎖定】
當登入Oracle出現 ORA-2800: the account is locked 訊息時,就是帳號被鎖定了
解除鎖定的方法:
   $ sqlplus '/ as sysdba' SQL> alter user system account unlock;
鎖定帳號:
   SQL> alter user system account lock;
修改密碼:
   SQL> ALTER USER user IDENTIFIED BY usepassword

【密碼有效期限】
Oracle 11g以後的版本密碼預設180天過期
查看用戶使用的profile是什麼,預設是default:
  SELECT username, PROFILE FROM dba_users;
查看default密碼有效期限:
  SELECT * FROM dba_profiles WHERE profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
修改密碼期限為無限制:
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改後,還沒到期的帳號就不會再出現過期的提示訊息,如果已經被提示了就要修改密碼了

2011年1月25日 星期二

修改 Oracle XE 的CHARACTERSET

從AMD64的Oracle 9i要把ddsysV2資料轉入到acoldev oracle xe上,有些資料會出現欄位長度不夠的狀況
發現是原資料庫的 NLS_CHARACTERSET=ZHT16BIG5,但是Oracle XE上的是AL32UTF8,前者會把一個中文字視為2個字元集,後者則為3個字元集,所以長度就會不夠了,以下為將Oracle XE上的AL32UTF8改為ZHT16BIG5的方法:


以 sysdba 角色進入 sqlplus 之後執行以下

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER SESSION SET SQL_TRACE=TRUE;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
-- ALTER DATABASE CHARACTER SET ZHT16BIG5;
-- >>會出現Error: ORA-12712: new character set must be a superset of old character set
-- 改為
ALTER DATABASE CHARACTER SET INTERNAL_USE ZHT16BIG5;
ALTER SESSION SET SQL_TRACE=FALSE;

查看Oracle 參數
select * from v$NLS_PARAMETERS

Perl DBD Oracle on Ubuntu

sudo apt-get install alien rpm

從oracle網站下載 Instant Client
oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm

安裝 alien , 把rpm檔轉成deb檔
sudo apt-get install alien rpm
sudo alien oracle-instantclient11.2-basic-11.2.0.2.0.i386.rpm

wget http://ftp.debian.org/debian/pool/contrib/libd/libdbd-oracle-perl/libdbd-oracle-perl_1.24b-1_i386.deb

dpkg -i oracle-instantclient11.2-basic-11.2.0.2.0.i386.deb
dpkg -i --force-depends-version libdbd-oracle-perl_1.24b-1_i386.deb

libdbd-oracle-perl_1.24b-1_i386.deb是用 perl 5.10.1-13編譯但是acoldev上的是perl 5.10.1-12,所以用--force-depends-version來強制安裝

2011年1月22日 星期六

Ubuntu 10.10 安裝 Oracle XE 10

安裝Oracle XE要注意交換分區是否足夠大(1024M的swap空間)
確認記憶體大於1G,要是小於1G的話就增加一個Swap
sudo dd if=/dev/zero of=/swpfs1 bs=1M count=1024
sudo mkswap /swpfs1
sudo swapon /swpfs1

必要存在的package
檢查 libaio1 是否有安裝
檢查 bc 是否有安裝

編輯/etc/apt/source.list 增加:
deb http://oss.oracle.com/debian unstable main non-free
將該源服務器的公鑰添加到本地密鑰庫中:
sudo wget http://oss.oracle.com/el4/RPM-GPG-KEY-oracle
sudo apt-key add RPM-GPG-KEY-oracle
執行更新
sudo apt-get update
安裝Oracle Xe, Oracle Xe Client (裝了Oracle XE,應該就不需要再裝client了)
sudo apt-get install oracle-xe
sudo apt-get install oracle-xe-client

設定環境變數
export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY
export TNS_ADMIN=/usr/lib/oracle
export PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME
export ORACLE_SID=XE
export NLS_LANG=AMERICAN_AMERICA.ZHT16BIG5

設定 Orcale XE
/etc/init.d/oracle-xe configure
不過發現安裝後預設已經Configure好一個Instance "XE",web 管理介面為http://127.0.0.1:8080,sys & system 預設密碼為oracle沒法重新Configure
預設密碼是沒差,但是8080跟TOMCAT衝突,是可以用SQLPLUS改掉,但是有點麻煩
所以後來移除掉,必須包含configure file
apt-get remove --purge oracle-xe-universal
改下載deb檔用dpkg來安裝
wget -c http://oss.oracle.com/debian/dists/unstable/main/binary-i386/libaio_0.3.104-1_i386.deb http://oss.oracle.com/debian/dists/unstable/non-free/binary-i386/oracle-xe-universal_10.2.0.1-1.1_i386.deb
sudo dpkg -i --force-architecture oracle-xe-universal_10.2.0.1-1.1_i386.deb
這樣就可以用/etc/init.d/oracle-xe configure來configure了


啟動的指令
/etc/init.d/oracle-xe {start|stop|restart|force-reload|configure|status|enable|disable}

2011年1月20日 星期四

有關Crontab設定

Crontab 主要是在做排程設定, 一般寫法如下:
分 時 日 月 週 指令
範例:0 0 * * * /usr/local/backup/appbackup.sh

field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)

上面範例寫法另外可寫成:@daily /usr/local/backup/appbackup.sh

string meaning
------ -------
@reboot Run once, at startup
@yearly Run once a year, "0 0 1 1 *"
@annually (same as @yearly)
@monthly Run once a month, "0 0 1 * *"
@weekly Run once a week, "0 0 * * 0"
@daily Run once a day, "0 0 * * *"
@midnight (same as @daily)
@hourly Run once an hour, "0 * * * *"

在寫crontab指令時須注意要用絕對路徑如 rm 執行檔必須寫成 /usr/bin/rm

2010年10月16日 星期六

Ubuntu 顯示中文

Ubuntu目前預設的 locale 已經沒有安裝 Big5 了,在「 /var/lib/locales/supported.d/ 」下,編輯 「zh」 2個檔案來增加中文語系:

修改成:

zh_TW.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8
zh_TW.BIG5 BIG5

完成後,執行:sudo locale-gen

2010年9月27日 星期一

檔案名稱Big5轉UTF-8

convmv 為一個轉換檔案名稱編碼的工具

#執行方式--僅測試
convmv -f big5-eten -t utf8 -r 欲轉換的目錄

#執行方式--實地轉換
convmv -f big5-eten -t utf8 -r --notest 欲轉換的目錄