TOAD Select View 時,會查詢不到資料
原因一. 因為其環境變數[Org_ID]未給值。
DECLARE
P_ORG_ID VARCHAR2(30);
BEGIN
FND_PROFILE.GET('ORG_ID',P_ORG_ID);
DBMS_APPLICATION_INFO.SET_CLIENT_INFO(P_ORG_ID);
END;
如果還是不行 試試原因二.
環境變數 不可為 NLS_LANG = TRADITIONAL CHINESE_TAIWAN.ZHT16BIG5
改為 NLS_LANG = American_America.ZHT16BIG5
重新開機後 就可以了
================ 2007-08-01
此錯誤: Fatal error: Call to undefined function ocilogon()
是安裝 oracle client 後 php oci8 無法載入問題,只要調整 系統路徑 path 將 c:\php5\;c:\php5\ext\; 調整到最前面 後 重新開機 即可解決。
================ 2007-07-05
sqlplus 無法連上 tns 問題 ORA-12560: TNS:protocol adapter error
原因為 資料庫變更了 原本的 SID 所致
只要在DOS視窗輸入 C:\>set oracle_sid=ora10g 這樣的指令 即可
另外 根本解決之道 就是在 系統環境變數 增加
上面 區塊
ORACLE_SID = ORA10G
NLS_LANG = American_America.ZHT16BIG5
下面 區塊
NLS_LANG = American_America.UTF8
================
這是 oracle 10g 在VISTA下支援多國語系的設定
NLS_CHARACTERSET
AL32UTF8
NLS_NCHAR_CHARACTERSET
UTF8
================
1. sqlplus /nolog
2. SQL> connect / as sysdba
3. SQL> SHUTDOWN IMMEDIATE;
4. SQL> STARTUP MOUNT;
5. SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
6. SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
7. SQL> ALTER DATABASE OPEN;
8. SQL> ALTER DATABASE CHARACTER SET UTF8;
9. SQL> ALTER DATABASE NATIONAL CHARACTER SET UTF8;
10. SQL> SHUTDOWN IMMEDIATE;
11. SQL> STARTUP;
此範例是將語系改為UTF8
Oracle 10g 變更資料庫的 characterset
之前裝起來的 Oracle 10g 竟然放中文字進去會變成一堆問號。
於是下指令看看:
SELECT parameter, value FROM v$nls_parameters WHERE parameter LIKE '%CHARACTERSET';
竟然出現:
PARAMETER
------------------------
VALUE
------------------------
NLS_CHARACTERSET
WE8ISO8859P1
NLS_NCHAR_CHARACTERSET
AL16UTF16
================
NLS_CHARACTERSET
ZHT16MSWIN950
NLS_NCHAR_CHARACTERSET
AL16UTF16
================
主要是這個:NLS_CHARACTERSET
我想要可以放中文,而且是 UTF-8
找到一些適用於 9i 的步驟,試過之後,10g 也適用:
以 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 AL32UTF8;
ALTER SESSION SET SQL_TRACE=FALSE;
然重新啟動 oracle 就好了。
當然,這種方式會造成裏面的資料亂掉。應該要先把DB內清空再來做。
P.S. 因應 UTF-8, 環境變數 NLS_LANG 為:TRADITIONAL CHINESE_TAIWAN.AL32UTF8
P.S. 注意:網路上廣為流傳的用這種方法是不正確的: update props$ set value$='AL32UTF8' where name='NLS_CHARACTERSET';
透過前述 "ALTER DATABASE CHARACTER SET" 方式更改 characterset 時,Oracle至少需要更改 12 張 data dictionary,而這種直接更新 props$ 表的方式只完成了其中十二分之一的工作,其?在的完整性隱憂可想而知。