A. oracle警告:創建的過程帶有編譯錯誤
告訴你兩點:
1、當出現警告或者錯誤的時候,使用show
error
命令,可以查看錯誤的具體信息,在信息中可以定位錯誤的具體位置。
2、你的問題是:【endif;】不能寫在一起,【end
if;】是正確的。
類似的還有【end
loop】
等。
---
以上,希望對你有所幫助。
B. oracle數據導出字元集錯誤怎麼解決
下面的回答希望能夠幫主樓主 如果還是解決不了的話 不好意思了
Oracle資料庫導出字元集錯誤的解決辦法2007-12-06 22:00改了sys.prop$,但導出數據時出錯!
後來修改了sys.col$,改了之後可以導出。
------------------------------------------------------------------
原字元集 WE8ISO8859PI
修改成字元集 ZHT16BIG5
SELECT NLS_CHARSET_ID(VALUE) NLS_CHARSET_ID,VALUE NLS_CHARSET_NAME
FROM V$NLS_VALID_VALUES
WHERE PARAMETER = 'CHARACTERSET'
ORDER BY NLS_CHARSET_ID(VALUE)
查詢得到:
31 WE8ISO8859PI
865 ZHT16BIG5
UPDATE SYS.PROPS$
SET VALUE$ = 'ZHT16BIG5'
WHERE NAME = 'NLS_CHARACTERSET'
單改SYS.PROPS$之後用EXP導出數據出現錯誤
EXE-00008: ORACLE error 6552 encountered
ORA-06552: PL/SQL: Compilation unit analysis terminated
ORA-06553: PLS-553: character set name is not recognized
EXP-00000: Export terminated unsuccessfully
SELECT CHARSETID FROM SYS.COL$
WHERE CHARSETFORM=1
UPDATE SYS.COL$
SET CHARSETID=865
WHERE CHARSETFORM=1
UPDATE SYS.ARGUMENT$
SET CHARSETID=865
WHERE CHARSETFORM=1
UPDATE SYS.COLLECTION$
SET CHARSETID=865
WHERE CHARSETFORM=1
UPDATE SYS.PARAMETER$
SET CHARSETID=865
WHERE CHARSETFORM=1
UPDATE SYS.RESULT$
SET CHARSETID=865
WHERE CHARSETFORM=1
改過之後重新啟動就可以了。
shutdown immediate
startup
exp csm/csm file=d:\CSM.mp log=d:\csm_exp.
C. oracle存儲過程編譯時出現未連接到ORACLE錯誤
估計許可權變了,把錯誤貼出來
D. 視圖遷移到oracle之後,出現字元集不匹配問題!
那就把視圖重新編譯下唄,看看出什麼錯啊!
sqlserver遷移到ORACLE最好用oracle官方的工具sqldeveloper,不過就算是sqldeveloper也不可能百分百的轉換OK,好多東西還是要手動去修正下!
E. unbuntu下安裝oracle下出錯。
1.安裝前准備工作
1.1 到oracle官網下載適合自己電腦的oracle軟體包;
我的是:Oracle Database 10gRelease 2 (10.2.0.1.0)Enterprise/Standard Edition for linux x86下的:10201_database_linux32.zip
地址:http //www oracle.com/technetwork/database/10201linuxsoft-097986.html
1.2 更新ubuntu
# apt-get update
# apt-get upgrade
1.3 安裝額外的javaJDK
可在【Ubuntu軟體中心】搜OPENjdk,安裝OpenJDK 完成後path路徑自動設置好了
1.4 安裝缺少的包並降低GCC版本
apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 lio1 alien
apt-get install ksh libtool libstdc++5 build-essential compat-libstdc++
卸載gcc-4.6,安裝gcc-4.4 版本
apt-get remove gcc-4.6
apt-get install gcc-4.4
1.5 創建oracle用戶
登錄到root用戶下操作:
1.5.1 修改shell
ls -l /bin/sh 如果是dash修改為bash
rm /bin/sh
ln -s /bin/bash /bin/sh
1.5.2 創建用戶和組及oracle安裝路徑
addgroup oinstall
addgroup dba
addgroup nobody
usermod -g nobody nobody
adser oracle
usermod -g oinstall -G dba oracle
id oracle
id nobody
mkdir -p /opt/oracle
mkdir -p /opt/oradata
chown -R oracle:dba /opt/ora*
chmod -R 775 /opt/ora*
1.5.3 創建欺騙版本聲明
vi /etc/RedHat-release
然後向其中加入 Red Hat Linux release 3.1
1.5.4 建立鏈接
ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
ln -s /lib/i386-linux-gnu/libgcc_s.so.1 /lib/libgcc.s.so.1
ln -s /usr/bin/awk /bin/awk
ln -s /usr/bin/rpm /bin/rpm
ln -s /usr/bin/basename /bin/basename
mkdir /etc/rc.d
ln -s /etc/rc0.d /etc/rc.d/rc0.d
ln -s /etc/rc1.d /etc/rc.d/rc1.d
ln -s /etc/rc2.d /etc/rc.d/rc2.d
ln -s /etc/rc3.d /etc/rc.d/rc3.d
ln -s /etc/rc4.d /etc/rc.d/rc4.d
ln -s /etc/rc5.d /etc/rc.d/rc5.d
ln -s /etc/rc6.d /etc/rc.d/rc6.d
ln -s /etc/init.d /etc/rc.d/init.d
1.5.5 添加用戶到sudoer列表中
vi /etc/sudoers
在「 root ALL=(ALL:ALL) ALL」 下一行 ,添加:
oracle ALL=(ALL:ALL) ALL
1.5.6 修改內核參數和系統變數
A 修改/etc/sysctl.conf文件(可以不用修改)
gedit /etc/sysctl.conf
添加如下內容:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 25 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
B 修改/etc/security/limits.conf(可以不用修改)
gedit /etc/security/limits.conf
添加如下內容:
* soft nproc 2407
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
說明:不要忘了「*」號,可以換成oracle
C 修改ubuntu的oracle用戶的環境變數
修改/home/oracle/.profile和/etc/profile兩個文件
vi /home/oracle/.profile
vi /etc/profile
添加如下內容:
#oracle_path start
export ORACLE_HOME=/opt/oracle
export ORACLE_SID=orcl
export ORACLE_OWNER=oracle
export PATH=$PATH:$ORACLE_HOME/bin
#oracle_path end
1.5.7 使參數生效
重啟系統 或 終端執行命令 sysctl -p
1.5.8 將下載好的oracle安裝文件mv到/home/oracle下,並解壓。注銷root用戶,登錄oracle用戶
2.開始安裝oracle
2.1 打開終端,cd到/home/oracle/database的oracle解壓文件下,執行下面這條命令
./runInstaller -jreLoc /usr/lib/jvm/java-6-openjdk-i386/jre
java-version是java的安裝版本,這一句是為了在圖像化裝oracle是不會出現亂碼或者方框
然後就向windows下安裝一樣的圖像化安裝界面。
不行的話,使用英文安裝界面
export LANG=ENGLISTH
./runInstaller
2.2 按照下面的圖像步驟操作
http //www cnblogs.com/luochengor/archive/2011/08/20/2147041.html
2.3 執行到配置配置腳本時
切換到root下,在終端中執行腳本
/home/oracle/oralnventory/orainstRoot.sh
/opt/ora10/root.sh
2.4 出現oracle database 10g 安裝完成時,記下兩個URL。
2.5 安裝資料庫
在終端中執行如下命令:
$dbca //如果出現中文亂碼,執行下面命令
$cd /opt/ora10/bin
$gedit dbca
在dbca中找到「JRE_DIR=/opt/ora10/jdk/jre」,替換為JRE_DIR=/usr/lib/jvm/java-1.6.0-openjdk/jre ,然後保存退出
$dbca //正常顯示了
2.6 按照下面步驟執行
http //www cnblogs.com/luochengor/archive/2011/08/20/2147041.html
但是:要將資料庫名字及SID都要寫上orcl
一直到安裝完成。
3. 啟動oracle
在「終端」以oracle身份運行
啟動TNS監聽器:$ORACLE_HOME/bin/lsnrctl start
($ORACLE_HOME,就是oracle的安裝目錄:/opt/ora10 .直接cd,進入oracle的安裝目錄,到bin文件夾下,$lsnrctl start ,也行)。
關閉TNS:$ORACLE_HOME/bin/lsnrctl stop
啟動sqlplus:$ORACLE_HOME/bin/sqlplus /nolog
關閉sqlplus:SQL> exit
4. 為了能夠像windows下一樣能夠使用上下鍵翻動命令,還需要安裝rlwrap包:
sudo apt-get install rlwrap
然後修改oracle用戶的~/.bashrc文件和/etc/profile文件,在其最後添加兩行:
這樣上下左右鍵就可以使用了。
最後來解決oracle中文字元集的問題。不出意外的話,啟動oracle會發現所有的中文都是「?」,要麼就是亂碼,這其實是伺服器端字元集和客戶端字元集不一致造成的。
解決方法為:DBA身份進入sqlplus,做查詢
SQL>select userenv(『language』) from al;
將查詢結果復制,在/etc/bash.bashrc文件中再加一行:export NLS_LANG=」查詢結果」,重新登錄問題解決。例如:我的查詢結果為SIMPLIFIED CHINESE_CHINA.AL32UTF8,則新加一行為export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"。
但是有時候這個方法不一定奏效,你可以將
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK"
分別寫到兩個文件中嘗試一下,但是兩個文件寫的一定要一致。
5. 如果有問題可按下列過程處理:
5.1
問題:調用makefile '../sqlplus/lib/ins_sqlplus.mk' 的目標'install' 時出錯。請參閱'/home/oracle/oraInventory/logs/installActions2011-12-06_11-03-18AM.log' 以了解詳細信息。
解決辦法:$ORACLE_HOME/sqlplus/lib/env_sqlplus.mk添加一行:EXPDLIBS=-lclntsh ,然後點擊「重試」按鈕, ok.
其實安裝 gcc-4.4 以後沒有這個問題。
5.2
問題:調用makefile '../sysman/lib/ins_sysman.mk' 的目標'agent nmo nmb' 時出錯。請參閱'.. /oraInventory/logs/installActions2011-12-06_11-03-18AM.log' 以了解詳細信息。
分析:後面遇到的錯誤其實本質上是一個問題,主要是gcc的版本高了,oracle10g的gcc是3.4左右的版本,但是ubuntu的開發速度早就用了4.0以上版本,而且你還無法apt安裝低版本
解決辦法:卸載gcc-4.6,安裝gcc-4.4 版本
apt-get remove gcc-4.6
apt-get install gcc-4.4
5.3
調用makefile '../network/lib/ins_net_server.mk' 的目標'install' 時出錯。請參閱'.. /oraInventory/logs/installActions2011-12-06_11-03-18AM.log' 以了解詳細信息。
分析:我在網上找到了一篇類似的文檔,參見(點擊打開鏈接),但是我手工編譯還是有問題,而且在oracle10g中並不是他所提到的-lons參數問題。
還是gcc版本問題,我曾嘗試過安裝低版本的gcc,但是一開始編譯就報錯,所以放棄了,如果有人能成功降低版本環境,相信一定能解決所有錯誤問題,這也是為什麼ubuntu 8能很自然成功安裝的一個解釋。
方法:目前我還沒有方法,按照其.mk文件的說明,這個東西好像是資料庫鏈接斷裂時候重新鏈接用的
解決辦法:卸載gcc-4.6,安裝gcc-4.4 版本
在/usr/bin 下做了 /usr/bin/gcc-4.4 的軟鏈接
cd /usr/bin
ln -s /usr/bin/gcc-4.4 /usr/bin/gcc
5.4
調用makefile '../rdbms/lib/ins_rdbms.mk' 的目標'all_no_orcl ihsodbc' 時出錯。請參閱'../oraInventory/logs/installActions2011-12-06_11-07-36-AM.log' 以了解詳細信息。
分析:我們看一下log文件
信息: Generating BASE ORASDK library...
信息: Creating /opt/ora10/lib/liborasdkbase.so.10.2
信息: gcc: 錯誤:/lib/libgcc_s.so.1:沒有那個文件或目錄
gcc: 錯誤:/usr/lib/libstdc++.so.5:沒有那個文件或目錄
我們看到終於是那個非常多的錯誤了,其實還是gcc的問題,重新下載了libgcc_s.so.1,並且重新做了stdc++5的鏈接,但是問題還是更多,因為只做軟鏈接和下載一個動態庫是沒法解決所有問題的。
解決辦法:安裝compat-libstdc++-33_3.2.3-48.3_i386.deb,重試。。
在一個libgcc_s.so.1軟鏈接
cd /lib
ln -s /lib/i386-linux-gnu/libgcc_s.so.1 libgcc.s.so.1
6. 開機啟動
6.1 root 下面修改:vi /etc/oratab
orc1:/opt/oracle/proct/10.2.0/db_1:Y
將N該為Y
6.2 oracle 下面修改:
cd $ORACLE_HOME/bin
vi dbstart
找到 ORACLE_HOME_LISTNER 這行, 修改成:
ORACLE_HOME_LISTNER=/opt/oracle/proct/10.2.0/db_1
或者直接修改成:
ORACLE_HOME_LISTNER=$ORACLE_HOME
測試運行 dbshut, dbstart 看能否啟動oracle 服務及listener服務
ps -efw | grep ora_
lsnrctl status
ps -efw | grep LISTEN | grep -v grep
6.3 root 下創建文件:
vi /etc/rc.d/init.d/oracle10
#!/bin/bash
# chkconfig: 345 99 10
# description: Startup Script for Oracle Databases
# /etc/init.d/oracle10
export ORACLE_SID=ym
# export ORACLE_HOME_LISTNER=/data/files/oracle/10g/bin
#oracle 安裝目錄
export ORACLE_HOME=/data/files/oracle/10g
export PATH=$PATH:$ORACLE_HOME/bin
case "$1" in
start)
su oracle -c $ORACLE_HOME/bin/dbstart #啟動服務
su oracle -c $ORACLE_HOME/bin/lsnrctl start #啟動監聽
touch /var/lock/oracle
echo "OK"
;;
stop)
echo -n "Shutdown Oracle: "
su oracle -c $ORACLE_HOME/bin/dbshut #啟關閉服務
su oracle -c $ORACLE_HOME/bin/lsnrctl stop #關閉監聽
rm -f /var/lock/oracle
echo "OK"
;;
*)
echo "Usage: 'basename $0' start|stop"
exit 1
esac
exit 0
然後
chmod 775 oracle10
chkconfig --add oracle10
chkconfig --list oracle10
F. oracle EXP-00091錯誤,更改字元集後出錯,請高手
不需要去改動環境變數的吧,我也是用AL32UTF8 你安裝資料庫的時候不會就選了這一種吧。
ENGLISH選了嗎
G. Oracle 12c導入,00098錯誤,網上說是字元集不同,改了還是報錯,求解答
如果使用11g導出,12c導入的話:試試在普通用戶前加上 c## 前綴。
另外下面IMP-00403的錯誤提示裡面說了:你用sys用戶導出的,但導入的用戶因許可權不夠在運行DDL語句時出錯。
建議你先給導入用戶足夠的許可權試試。
H. oracle 觸發器的問題。。編譯時報錯PLS-00553 character name is not recongnized.
PLS-00553: 無法識別字元集名稱。
關於這個問題的解決方案大都是修改資料庫字元集,但是該資料庫字元集沒有發現明顯問題,如何處理?
這個錯誤是發生在創建觸發器時, 當觸發器帶 :new或者 :old關鍵字時報錯, 如果不帶就沒問題. 而且該表上以前建立的觸發器是好的, 但是重新編譯時也會報同樣的錯誤.
最終的解決方案是, 備份該表上的觸發器語法, 備份表數據, 重建表, 恢復數據, 恢復觸發器, 編譯失效對象.
希望對你有幫助。
I. oracle警告:創建的存儲過程帶有編譯錯誤
第一個exeception1寫錯了;
第二個,oracle沒有else if只有elsif;
第三個:多了一個end if;
最後一個,輸出的時候後面的";"應該改為英文分號