Windows平臺上饵骨,Oracle19c軟件完成安裝和建庫之后翘悉,在學(xué)習(xí)《Oracle SQL高級編程》的過程中,發(fā)現(xiàn)沒有scott居触、hr妖混、oe、pm轮洋、ix制市、sh、bi用戶弊予,需要額外動手創(chuàng)建部署祥楣。
一、scott用戶需要利用$ORACLE_HOME\rdbms\admin\scott.sql腳本來創(chuàng)建汉柒。
/*1:利用SQL Plus登錄sys或system as sysdba误褪,執(zhí)行腳本,創(chuàng)建scott用戶資源*/
win+r
輸入sqlplus /nolog
SQL> conn system/system as sysdba
SQL> @D:\WINDOWS.X64_193000_db_home\rdbms\admin\scott.sql
題外話:如果是Linux平臺上竭翠,scott用戶的創(chuàng)建腳本則需要執(zhí)行:
SQL> @/u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/utlsampl.sql
/*2:修改scott密碼*/
SQL> alter user scott identified by tiger;
/*3:解鎖用戶*/
SQL> alter user scott account unlock;
/*4:登錄scott用戶振坚,驗(yàn)證一下*/
SQL> conn scott/tiger
SQL> show user
/*5:也可以利用sys或system用戶驗(yàn)證*/
SQL> SELECT OWNER, OBJECT_TYPE, COUNT(1) FROM DBA_OBJECTS WHERE OWNER IN ('SCOTT') GROUP BY OWNER, OBJECT_TYPE ORDER BY OWNER, OBJECT_TYPE;
OWNER? OBJECT_TYPE? ? ? ? ? ? COUNT(1)
------ -------------------- ----------
SCOTT? INDEX? ? ? ? ? ? ? ? ? ? ? ? 2
SCOTT? TABLE? ? ? ? ? ? ? ? ? ? ? ? 4
已選擇 2 行。
二斋扰、hr渡八、oe、pm传货、ix屎鳍、sh、bi用戶需要利用GitHub下載所需版本的db-sample-schema安裝包內(nèi)的腳本來創(chuàng)建问裕。
到GitHub去下載Oracle軟件版本對應(yīng)的schema安裝包:https://github.com/oracle/db-sample-schemas/releases/
我的Oracle19c是Windows平臺的逮壁,所以我選擇下載Oracle Database 19c Sample Schemas的Source code(zip)
如果你的Oracle19c是Linux平臺的,則要選擇下載Oracle Database 19c Sample Schemas的Source code(tar.gz)
將下載的安裝包解壓縮到$ORACLE_HOME\demo\schema
所需的腳本文件可以在$ORACLE_HOME\demo\schema\db-sample-schemas-19c下看到
根據(jù)README.txt和README.md文件中的提示粮宛,完成用戶創(chuàng)建部署窥淆。
最重要的就是:README.md文件中的以下提示
### 2.3. Change all embedded paths to match your working directory
The installation scripts need your current directory embedded in
various locations.? Use a text editor or the following Perl script to
make the changes, replacing occurrences of the token `__SUB__CWD__`
with your current working directory, for example
`/home/oracle/db-sample-schemas`
```shell
perl -p -i.bak -e 's#__SUB__CWD__#'$(pwd)'#g' *.sql */*.sql */*.dat
```
perl這句話你要是讀不懂的話,沒關(guān)系巍杈。
你可以手動將db-sample-schema目錄及子目錄下的后綴為.sql和.dat的腳本文件中的字符串"__SUB__CWD__"替換為你自己的"$ORACLE_HOME\demo\schema\db-sample-schemas-19c"字符串忧饭,即:將字符串"__SUB__CWD__"替換為你自己的db-sample-schema文件夾路徑。
同時筷畦,你要把腳本文件中涉及到的词裤、被修改的目錄字符串后面相關(guān)的子目錄的 斜杠/ 改為 斜杠\ 刺洒,這是因?yàn)槟_本文件中涉及到的目錄都是Linux平臺目錄的寫法,而我的Oracle數(shù)據(jù)庫軟件是安裝在Windows平臺上的吼砂,所以相關(guān)目錄要與Windows平臺目錄的寫法保持一致逆航,這也是某些表無法正常導(dǎo)入數(shù)據(jù)的主要原因。
在Windows平臺上渔肩,如果只是修改了"$ORACLE_HOME\demo\schema\db-sample-schemas-19c"因俐,而沒有把緊隨其后的子目錄斜杠/ 進(jìn)行修改的話,就會出現(xiàn)這樣的錯誤:
看著上面這個目錄寫法赖瞒,有沒有覺得后面兩個斜杠/ 很別扭女揭?!
所以栏饮,腳本文件內(nèi)的字符串"__SUB__CWD__"及涉及到的子目錄的斜杠/ 需要逐一進(jìn)行修改,修改完成后磷仰,一定要記得保存袍嬉。
另外,因?yàn)槟愕钠脚_是Windows平臺灶平,所以腳本中很多涉及目錄路徑的寫法都要非常細(xì)節(jié)性的逐一修改到Windows平臺能夠認(rèn)讀的路徑字符串伺通。
另外,在mk_dir.sql腳本如下的語句中逢享,純粹的目錄后面的斜杠\ 需要被刪除罐监,否則會導(dǎo)致語法錯誤。
(說點(diǎn)題外話:perl是跨平臺的瞒爬,建議用Windows的同學(xué)們弓柱,可以安裝perl,這樣可以通過baidu邊學(xué)邊用侧但,畢竟shell矢空、awk、sed還是很方便的文本處理工具禀横,也便于日后自己寫批處理腳本屁药。
如果你是Linux平臺上的Oracle19c安裝db-sample-schema的話,替換腳本文件中的字符串時柏锄,可能會用到如下類似的命令:需要使用轉(zhuǎn)義符
grep -lnr '__SUB__CWD__' *.sql */*.sql */*.dat |xargs sed -i.bak 's#__SUB__CWD__#\/u01\/app\/oracle\/product\/19.0.0\/dbhome_1\/demo\/schema\/db-sample-schemas-19c#g'
如果你打算借用虛擬機(jī)上的Linux平臺的sed等命令修改Windows平臺的db-sample-schema安裝包里的腳本字符串酿箭,可能會用到如下類似的命令:需要使用轉(zhuǎn)義符
grep -lnr '__SUB__CWD__' *.sql */*.sql */*.dat |xargs sed -i.bak 's#__SUB__CWD__#D\:\\WINDOWS\.X64_193000_db_home\\demo\\schema\\db-sample-schemas-19c#g'
在Windows平臺刪除已存在的db-sample-schemas-19c的文件夾時,如果彈出框提示沒有權(quán)限的話趾娃,別擔(dān)心缭嫡,正常刪除,而后刷新一下茫舶,就能看到文件夾消失了械巡。
)
Windows平臺上的具體安裝執(zhí)行如下:
win+r
輸入sqlplus /nolog
SQL> conn system/system as sysdba
SQL> @$ORACLE_HOME\demo\schema\db-sample-schemas-19c\mksample.sql system sys hr oe pm ix sh bi users temp D:\$ORACLE_HOME\demo\log localhost:1521/orcl
如果你是Linux平臺上的Oracle19c安裝db-sample-schema的話,則需要執(zhí)行:
@/u01/app/oracle/product/19.0.0/dbhome_1/demo/schema/db-sample-schemas-19c/mksample.sql system sys hr oe pm ix sh bi users temp /u01/app/oracle/product/19.0.0/dbhome_1/demo/log localhost:1521/orcl
/*檢查一下用戶創(chuàng)建部署是否成功*/
看看執(zhí)行終端上的日志,看看sh用戶的costs表是否被成功導(dǎo)入數(shù)據(jù)讥耗。
用戶能夠登陸有勾、用戶下的表能夠查詢到數(shù)據(jù),這樣才算是db-sample-schema安裝部署成功古程。
如果sh.costs表始終沒有數(shù)據(jù)蔼卡,那便證明db-sample-schema沒有完全成功被安裝。根據(jù)終端顯示的日志挣磨,仔細(xì)看看哪里出錯了雇逞,逐步排查腳本,肯定是哪個地方的目錄寫的有問題茁裙,細(xì)致才能成功塘砸。
在Linux平臺上,由于腳本中的目錄都是適合Linux的晤锥,所以會很容易完成db-sample-schema的安裝掉蔬,sh.costs表里的數(shù)據(jù)也很容易被導(dǎo)入。但是如果你使用的是Windows平臺矾瘾,你在排錯的過程中女轿,由于需要很細(xì)致的閱讀腳本,所以也能獲得很多成長和進(jìn)步壕翩,讀透了db-sample-schema中的腳本結(jié)構(gòu)和設(shè)計(jì)蛉迹,你也可以自己寫數(shù)據(jù)的批處理腳本程序了,代碼結(jié)構(gòu)也會設(shè)計(jì)的很漂亮放妈。有得必有失北救,細(xì)致用心地對待每一個報(bào)錯,絕對不吃虧大猛。
我的Windows10平臺的db-sample-schema安裝始終不能把sh.costs表的數(shù)據(jù)完成導(dǎo)入扭倾,始終有報(bào)錯:
loading COSTS using external table
Table created.
INSERT /*+ append */ INTO costs
*
ERROR at line 1:
ORA-29913: error in executing ODCIEXTTABLEFETCH callout
ORA-29400: data cartridge error
KUP-04020: found record longer than buffer size supported, 524288, in
D:\WINDOWS.X64_193000_db_home\demo\schema\db-sample-schemas-19c\sales_history\sa
le1v3.dat (offset=0)