Windows 7可以掛載NFS,指令為mount,例如:
c:\> mount \\192.168.1.1\home\test x:
要缷載的只要下umount即可,例如:
c:\> umount x:
如果在Win7的cmd中找不到mount的指令,例如:
c:\>mount /?
'mount'不是內部或外部指令,可執行的程式或批次檔
出現上面的錯誤,則可以檢查Services for NFS是否沒有啟用,如下圖:
只要將Services for NFS、Client for NFS、系統管理工具都勾選後,按下「確定」就可以了。
Oracle 11g 利用Flashback找回被刪除的Procedure
昨天用Flashback救回一個不小心覆蓋到舊資料的Procedure,今天再度測試。
建立一個測試用的Procedure
SQL> CREATE OR REPLACE PROCEDURE APPS.TEST_PROC
2 IS
3 BEGIN
4 NULL;
5 END;
6 /
Procedure created.
查詢dba_source是否有資料
SQL> select count(1) from dba_source where name='TEST_PROC';
COUNT(1)
----------
5
刪除測試的Procedure
SQL> drop procedure apps.test_proc;
Procedure dropped.
再查一次dba_source,也可以查dba_objects
SQL> select count(1) from dba_source where name='TEST_PROC';
COUNT(1)
----------
0
登入到sys
SQL> connect sys/xxxxx as sysdba
Connected.
利用flashback查30分鐘前的資料(假設undo的資料還在)
SQL> select text from dba_source AS OF TIMESTAMP TO_TIMESTAMP(sysdate-30/1440)
where owner='APPS' and name = 'TEST_PROC';
TEXT
--------------------------------------------------------------------------------
PROCEDURE TEST_PROC
IS
BEGIN
dbms_output.put_line('aaaaaa');
END;
建立一個測試用的Procedure
SQL> CREATE OR REPLACE PROCEDURE APPS.TEST_PROC
2 IS
3 BEGIN
4 NULL;
5 END;
6 /
Procedure created.
查詢dba_source是否有資料
SQL> select count(1) from dba_source where name='TEST_PROC';
COUNT(1)
----------
5
刪除測試的Procedure
SQL> drop procedure apps.test_proc;
Procedure dropped.
再查一次dba_source,也可以查dba_objects
SQL> select count(1) from dba_source where name='TEST_PROC';
COUNT(1)
----------
0
登入到sys
SQL> connect sys/xxxxx as sysdba
Connected.
利用flashback查30分鐘前的資料(假設undo的資料還在)
SQL> select text from dba_source AS OF TIMESTAMP TO_TIMESTAMP(sysdate-30/1440)
where owner='APPS' and name = 'TEST_PROC';
TEXT
--------------------------------------------------------------------------------
PROCEDURE TEST_PROC
IS
BEGIN
dbms_output.put_line('aaaaaa');
END;
Solaris 10 本機測試sendmail
執行mconnect,如果Sendmail有正常啟動話,就可用SMTP的指令來進一步測試
# mconnect
connecting to host localhost (127.0.0.1), port 25
connection open
220 sol.ccc.com.tw ESMTP Sendmail 8.14.5+Sun/8.14.5; Wed, 25 Jun 2014 14:31:10 +0800 (CST)
help <--輸入help查看其他的指令
214-2.0.0 This is sendmail version 8.14.5+Sun
214-2.0.0 Topics:
214-2.0.0 HELO EHLO MAIL RCPT DATA
214-2.0.0 RSET NOOP QUIT HELP VRFY
214-2.0.0 EXPN VERB ETRN DSN STARTTLS
214-2.0.0 For more info use "HELP <topic>".
214-2.0.0 To report bugs in the implementation contact Sun Microsystems
214-2.0.0 Technical Support.
214-2.0.0 For local information send email to Postmaster at your site.
214 2.0.0 End of HELP info
執行下列的指令可以查詢Sendmail的資訊
# sendmail -bt -d0 </dev/null
Version 8.14.5+Sun
Compiled with: DNSMAP LDAPMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8
MIME8TO7 NAMED_BIND NDBM NETINET NETINET6 NETUNIX NEWDB NIS
NISPLUS PIPELINING SCANF STARTTLS TCPWRAPPERS USERDB
USE_LDAP_INIT XDEBUG
============ SYSTEM IDENTITY (after readcf) ============
(short domain name) $w = test
(canonical domain name) $j = test.ccc.com.tw
(subdomain name) $m = ccc.com.tw
(node name) $k = test
========================================================
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
# mconnect
connecting to host localhost (127.0.0.1), port 25
connection open
220 sol.ccc.com.tw ESMTP Sendmail 8.14.5+Sun/8.14.5; Wed, 25 Jun 2014 14:31:10 +0800 (CST)
help <--輸入help查看其他的指令
214-2.0.0 This is sendmail version 8.14.5+Sun
214-2.0.0 Topics:
214-2.0.0 HELO EHLO MAIL RCPT DATA
214-2.0.0 RSET NOOP QUIT HELP VRFY
214-2.0.0 EXPN VERB ETRN DSN STARTTLS
214-2.0.0 For more info use "HELP <topic>".
214-2.0.0 To report bugs in the implementation contact Sun Microsystems
214-2.0.0 Technical Support.
214-2.0.0 For local information send email to Postmaster at your site.
214 2.0.0 End of HELP info
執行下列的指令可以查詢Sendmail的資訊
# sendmail -bt -d0 </dev/null
Version 8.14.5+Sun
Compiled with: DNSMAP LDAPMAP LOG MAP_REGEX MATCHGECOS MILTER MIME7TO8
MIME8TO7 NAMED_BIND NDBM NETINET NETINET6 NETUNIX NEWDB NIS
NISPLUS PIPELINING SCANF STARTTLS TCPWRAPPERS USERDB
USE_LDAP_INIT XDEBUG
============ SYSTEM IDENTITY (after readcf) ============
(short domain name) $w = test
(canonical domain name) $j = test.ccc.com.tw
(subdomain name) $m = ccc.com.tw
(node name) $k = test
========================================================
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
設定Workflow notification mailer on Solaris 10 簡易說明
1、檢查Solaris 10 Sendmail是否有啟用(如果是以其他的SMTP Server寄送,就不用檢查)
# svcs -a | grep sendmail
online May_09 svc:/network/sendmail-client:default
online 13:19:35 svc:/network/smtp:sendmail
2、編輯/etc/hosts,加入mail server的資訊,注意要加上mailhost的關鍵字,如果去觀察sendmail.cf
,可以發現設定檔內都是用變數mailhost來指定mail server,所以在hosts中要加上mailhost。
如果要用其他的mail server來寄送,一樣要加入/etc/hosts,並增加mailhost的關鍵字。
例如mail server是test.ccc.com.tw
# vi /etc/hosts
192.168.10.100 test.ccc.com.tw mailhost
3、設定Workflow notification mailer:
路徑:Administrator--> Oracle Application Manager --> Wrokflow
在Outbound的「Server Name」輸入SMTP Server的IP或Hostname
在InBound的「Relay-To Address」輸入mail,雖然沒有使用IMAP,可是還是要輸入mail,
此欄位也是mail寄送時的發信者,輸入完成後就可以用Test Mailer或Alert直接測試了。
# svcs -a | grep sendmail
online May_09 svc:/network/sendmail-client:default
online 13:19:35 svc:/network/smtp:sendmail
2、編輯/etc/hosts,加入mail server的資訊,注意要加上mailhost的關鍵字,如果去觀察sendmail.cf
,可以發現設定檔內都是用變數mailhost來指定mail server,所以在hosts中要加上mailhost。
如果要用其他的mail server來寄送,一樣要加入/etc/hosts,並增加mailhost的關鍵字。
例如mail server是test.ccc.com.tw
# vi /etc/hosts
192.168.10.100 test.ccc.com.tw mailhost
3、設定Workflow notification mailer:
路徑:Administrator--> Oracle Application Manager --> Wrokflow
在Outbound的「Server Name」輸入SMTP Server的IP或Hostname
在InBound的「Relay-To Address」輸入mail,雖然沒有使用IMAP,可是還是要輸入mail,
此欄位也是mail寄送時的發信者,輸入完成後就可以用Test Mailer或Alert直接測試了。
solaris--執行mail指令時出現錯誤 mail:cannot stat mailfile
今天要以mail查詢Sols上root帳號的信時,出現了cannot stat mailfile的錯誤,
原來是root的mailfile超過了2GB的大小,以致無法查詢,如下圖:
我的解決方式是先將原本root的mailfile更名,再新建一個root的mailfile,改完權限後就正常了,
最後將原本的root mailfile刪除,步驟如下:
# cd /var/mail
# mv root root.bk
# touch root
# chown root:mail root
#chmod 554 root
# rm -i root.bk
原來是root的mailfile超過了2GB的大小,以致無法查詢,如下圖:
我的解決方式是先將原本root的mailfile更名,再新建一個root的mailfile,改完權限後就正常了,
最後將原本的root mailfile刪除,步驟如下:
# cd /var/mail
# mv root root.bk
# touch root
# chown root:mail root
#chmod 554 root
# rm -i root.bk
Windows無法刪除USb隨身碟的分割區
我有一個4G的USB隨身碟,因為安裝一個精簡型的系統,已經忘了安裝哪一個系統了,
現在想複製一個40MB的資料夾到隨身碟,出現空間不足,所以就到隨身碟去把內容全部刪除,
結果還是空間不足,這就奇怪了,一個4G的隨身碟怎麼放不下40MB的資料夾,
詳細一看,我的隨身碟只有16MB的空間,那其他的空間怎麼不見了。
開啟「電腦管理」的「磁碟管理」,發現隨身碟已經被分割成四個分割區,難怪只有16MB的空間,
只是當試著要將其他的分割區刪除時,卻無法如願,Windwos 7/8都無法刪除其他的分割區。
所以我到網路上下載一套免費的磁碟分割管理程式EaseUS Partition Master Free
下載網址:http://www.partition-tool.com/landing/home-download.htm
安裝完成後,開啟畫面如下,在Disk2(隨身碟)的每個分割區點一下並且按下上面工具列的「Delete」按鈕,
成功刪除每個分割區,記得最後再按下「Apply」的按鈕儲存就可以了。
每個分割區都刪除後,總算還我4G的空間了,此時再將隨身碟重新格式化就可以正常使用了。
現在想複製一個40MB的資料夾到隨身碟,出現空間不足,所以就到隨身碟去把內容全部刪除,
結果還是空間不足,這就奇怪了,一個4G的隨身碟怎麼放不下40MB的資料夾,
詳細一看,我的隨身碟只有16MB的空間,那其他的空間怎麼不見了。
開啟「電腦管理」的「磁碟管理」,發現隨身碟已經被分割成四個分割區,難怪只有16MB的空間,
只是當試著要將其他的分割區刪除時,卻無法如願,Windwos 7/8都無法刪除其他的分割區。
下載網址:http://www.partition-tool.com/landing/home-download.htm
安裝完成後,開啟畫面如下,在Disk2(隨身碟)的每個分割區點一下並且按下上面工具列的「Delete」按鈕,
成功刪除每個分割區,記得最後再按下「Apply」的按鈕儲存就可以了。
每個分割區都刪除後,總算還我4G的空間了,此時再將隨身碟重新格式化就可以正常使用了。
Solaris 10 -- logadm管理log
Solaris 10有一支程式logadm專門用來做系統log的管理工作,是一個純文字檔。
可以直接用vi去編輯它,不過建議用logadm指令來變更設定。
因為logadm變更設定時會檢查語法是否正確,所以建議還是使用指令去變更設定。
logadm管理SSHD的log範例語法:
logadm /var/adm/sshdlog -p 5d
/var/adm/sshdlog就是sshd的log。-p指的是週期(period), 有d(day)、w(week)、m(month)、y(year)。
如5d表示5天;2w,是二個星期(14天)。m雖然是指月,但是不分大小月,都是以30天為一個週期。
另外還有二個特別的時間值,一個就是now,另外一個是never 。now就是不管如何,馬上替換新的log檔;
never則是永遠都不要換,除非其他條件成立。
下面是幾個常用的參數:
-C n :保留的檔案數量,預設為10,超過保留數量的log會被刪除。
-p n[dwmy] :輪替週期天數
-s n[bkmg] :檔案大小,當指定的log檔的大小大於等於這個值時就更換。
-z n :被更換掉的舊檔以gzip來壓縮。
-a :log檔更換後要執行的指令。
-b :log檔更換前要執行的指令。
-w :將設定寫入設定檔。
-r :將此設定從設定檔中移除。
-V :列出設定檔的內容。
例如apache的error_log,希望每2MB換一次,最少保留8份:
# logadm -w /var/apache/logs/error_log -C 8 -s 2m -a 'kill -HUP `cat /var/run/apache2/httpd.pid`'
可以直接用vi去編輯它,不過建議用logadm指令來變更設定。
因為logadm變更設定時會檢查語法是否正確,所以建議還是使用指令去變更設定。
logadm管理SSHD的log範例語法:
logadm /var/adm/sshdlog -p 5d
/var/adm/sshdlog就是sshd的log。-p指的是週期(period), 有d(day)、w(week)、m(month)、y(year)。
如5d表示5天;2w,是二個星期(14天)。m雖然是指月,但是不分大小月,都是以30天為一個週期。
另外還有二個特別的時間值,一個就是now,另外一個是never 。now就是不管如何,馬上替換新的log檔;
never則是永遠都不要換,除非其他條件成立。
下面是幾個常用的參數:
-C n :保留的檔案數量,預設為10,超過保留數量的log會被刪除。
-p n[dwmy] :輪替週期天數
-s n[bkmg] :檔案大小,當指定的log檔的大小大於等於這個值時就更換。
-z n :被更換掉的舊檔以gzip來壓縮。
-a :log檔更換後要執行的指令。
-b :log檔更換前要執行的指令。
-w :將設定寫入設定檔。
-r :將此設定從設定檔中移除。
-V :列出設定檔的內容。
例如apache的error_log,希望每2MB換一次,最少保留8份:
# logadm -w /var/apache/logs/error_log -C 8 -s 2m -a 'kill -HUP `cat /var/run/apache2/httpd.pid`'
Solaris 10 使用scp與rsync的一個簡單範例
語法:scp [-r] source_file user@remote_hostname:target_file
-r
Use to recursively copy entire directories.
user
Login account to use on the remote host.
remote_hostname
The names of the remote host from or to which the file is to be copied.
target_file
The file name or directory name to be copied. Several source file names may be included on one command line.
例如:
複製檔案
scp test.txt root@192.168.10.100:/export/home
複製目錄
scp -r test root@192.168.10.100/export/home
-------------------------------------------------------------------------------------
語法:rsync -auvzP[r] --bwlimit=speed_value source_file user@remote_hostname:target_file
-a archive模式,保留檔案原有的屬性,是「-rlptgoD」的參數組合
-v 顯示同步過程的訊息
-r 遞廻模式,包含目錄及子目錄
-u 不覆蓋比較新的檔案,只更新來源檔案時間大於目的檔案的時間
-z 在傳輸的過程中進行壓縮
-P 等於s --partial --progress ,等於支持斷點續傳
--bwlimit 限制速度limit I/O bandwidth; KBytes per second
rsync具有差異備份、安全性等眾多的特性,唯檔案數量過多時,效率可能不佳。
複製檔案
rsync -auvzP --bwlimit=100 test.txt root@192.168.1.162:/export/home/testmgr
複製目錄
rsync -auvzPr --bwlimit=100 test root@192.168.1.162:/export/home/testmgr
找不到mdi264.dll
最近Win7開機後,總是出現找不到mdi264.dll的檔案,可是提示的路徑竟然是在Temp底下,
我猜應該是被防毒軟體刪除了,只是每次開機都會提示,還蠻麻煩的。
在「開始」->「搜尋程式及檔案」輸入msconfig,開啟系統設定,選擇「啟動」頁面如下圖。
找到一個不認識的tsiVideo程式會去執行rundll32,並嘗試載入Temp底下的mdi264.dll,
看來兇手應該就是它了。直接先取消勾選後儲存,再到「開始」->「搜尋程式及檔案」輸入regedit
,開啟登錄檔,搜尋tsiVideo的機碼並將它刪除,再檢查下列的路徑是否有tsiVideo或mdi264等相關機碼。
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run]
最後重開機就不再出現找不到mdi264.dll了。
我猜應該是被防毒軟體刪除了,只是每次開機都會提示,還蠻麻煩的。
在「開始」->「搜尋程式及檔案」輸入msconfig,開啟系統設定,選擇「啟動」頁面如下圖。
找到一個不認識的tsiVideo程式會去執行rundll32,並嘗試載入Temp底下的mdi264.dll,
看來兇手應該就是它了。直接先取消勾選後儲存,再到「開始」->「搜尋程式及檔案」輸入regedit
,開啟登錄檔,搜尋tsiVideo的機碼並將它刪除,再檢查下列的路徑是否有tsiVideo或mdi264等相關機碼。
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run]
最後重開機就不再出現找不到mdi264.dll了。
Post-Clone AP時出現要Failed to execute adclone.pl
$ perl adcfgclone.pl appsTier
Enter the APPS password [APPS]:
XXXXX
First Creating a new context file for the cloned system.
The program is going to ask you for information about the new system:
Provide the values required for creation of the new APPL_TOP Context file.
Do you want to use a virtual hostname for the target node (y/n) [n] ?:n
Target system database SID [PROD]:
Username for the applications file system owner [prodmgr]:testmgr
Target system database server node [f511]:fudr
Target system database domain name [ccc.com.tw]:
Does the target system have more than one application tier server node (y/n) [y] ?:n
Is the target system APPL_TOP divided into multiple mount points (y/n) [n] ?:n
Target system APPL_TOP mount point [/erpap/prodappl]:/erpdr/AP/testappl
Target system COMMON_TOP directory [/erpap/prodcomn]:/erpdr/AP/testcomn
Target system 8.0.6 ORACLE_HOME directory [/erpap/prodora/8.0.6]:/erpdr/AP/testora/8.0.6
Target system iAS ORACLE_HOME directory [/erpap/prodora/iAS]:/erpdr/AP/testora/iAS
Do you want to preserve the Display set to f511:1.0 (y/n) [y] ?:n
Target system Display [fudr:0.0]:
Location of the JDK on the target system [/usr/jdk/instances/jdk1.6.0]:
Target system JRE_TOP [/usr/jdk/instances/jdk1.6.0]:
Do you want to preserve the port values from the source system on the target system (y/n) [y] ?:
Complete port information available at /erpdr/AP/testappl/admin/out/PROD_fudr/portpool.lst
UTL_FILE_DIR on database tier consists of the following directories.
1. /usr/tmp
2. /usr/tmp/prod
3. /erpdr/DB/product/11.2.0/appsutil/outbound/PROD_f511
4. /usr/tmp
Choose a value which will be set as APPLPTMP value on the target node [1]:
Creating the new APPL_TOP Context file from :
/erpdr/AP/testappl/ad/11.5.0/admin/template/adxmlctx.tmp
The new APPL_TOP context file has been created :
/erpdr/AP/testappl/admin/PROD_fudr.xml
Log file located at /tmp/CloneContext_0617042722.log
這裡有提示執行的command及帶入的參數
Running Rapid Clone with command:
perl /erpdr/AP/testcomn/clone/bin/adclone.pl java=/erpdr/AP/testcomn/clone/bin/../jre/jre mode=apply
stage=/erpdr/AP/testcomn/clone/bin/.. component=appsTier method=CUSTOM
appctxtg=/erpdr/AP/testappl/admin/PROD_fudr.xml showProgress contextValidated=true
The 806 installer uses the oratab file.
The file oratab needs to exist at: /var/opt/oracle/oratab
Rapid Clone will use the oraInst.loc file.
The file oraInst.loc needs to exist at: /erpdr/AP/testora/iAS
Creating the oraInst.loc in the ORACLE HOME now...
Please run the script /tmp/orainstRoot.sh as root
Restart adclone.pl after performing required corrections.
ERROR: Failed to execute /erpdr/AP/testcomn/clone/bin/adclone.pl
這個錯誤已經有提示了:Please run the script /tmp/orainstRoot.sh as root
用root登入後,再去執行 /tmp/orainstRoot.sh
重新執行上面有錯誤的腳本adclone.pl,注意手動執行這個腳本不會有進度百分比的出現,直接監控log
$ perl /erpdr/AP/testcomn/clone/bin/adclone.pl java=/erpdr/AP/testcomn/clone/bin/../jre/jre \
mode=apply stage=/erpdr/AP/testcomn/clone/bin/.. component=appsTier method=CUSTOM \
appctxtg=/erpdr/AP/testappl/admin/PROD_fudr.xml
Beginning application tier Apply - Tue Jun 17 16:34:24 2014
APPS Password : dorp02apps47
Log file located at /erpdr/AP/testappl/admin/PROD_fudr/log/ApplyAppsTier_06171634.log
成功完成後,開啟AP就完成了
Oracle 11g 查詢 recyclebin(回收箱)內表格的資料
建立測試Table
SQL> CREATE TABLE TEST_CCC( A VARCHAR2(20 BYTE)) ;
Table created.
SQL> insert into test_ccc values ( 'aa');
1 row created.
insert into test_ccc values ( 'bb');
1 row created.
SQL> commit;
Commit complete.
SQL> select count(1) from test_ccc;
COUNT(1)
----------
2
SQL> drop table test_ccc ;
Table dropped.
SQL> select object_name,ORIGINAL_NAME,OPERATION from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME OPERATION
------------------------------ ---------------------- ---------
BIN$+65JcJ7AGHPgRAAUT/lsSQ==$0 TEST_CCC DROP
以object_name為表格名稱就可以查詢放在recyclebin內的表格資料
SQL> select * from "BIN$+65JcJ7AGHPgRAAUT/lsSQ==$0";
A
--------------------
aa
bb
SQL> CREATE TABLE TEST_CCC( A VARCHAR2(20 BYTE)) ;
Table created.
SQL> insert into test_ccc values ( 'aa');
1 row created.
insert into test_ccc values ( 'bb');
1 row created.
SQL> commit;
Commit complete.
SQL> select count(1) from test_ccc;
COUNT(1)
----------
2
SQL> drop table test_ccc ;
Table dropped.
SQL> select object_name,ORIGINAL_NAME,OPERATION from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME OPERATION
------------------------------ ---------------------- ---------
BIN$+65JcJ7AGHPgRAAUT/lsSQ==$0 TEST_CCC DROP
以object_name為表格名稱就可以查詢放在recyclebin內的表格資料
SQL> select * from "BIN$+65JcJ7AGHPgRAAUT/lsSQ==$0";
A
--------------------
aa
bb
Oracle 11g Recyclebin(回收)的使用與範例
一、recyclebin的使用範例(單一表格)
檢查recyclebin是否有啟用,VALUE=on表示有啟用
SQL> show parameter recyclebin ;
NAME TYPE VALUE
------------------- ----------- ----------
recyclebin string on
建立測試用的test_ccc並新增兩筆資料
SQL> CREATE TABLE apps.TEST_CCC(A VARCHAR2(20 BYTE)) ;
SQL> insert into test_ccc values ( 'may');
SQL> insert into test_ccc values ( 'john');
SQL> commit;
確認test_ccc是否有兩筆資料
SQL> select count(1) from test_ccc;
COUNT(1)
----------
2
刪除Table:test_ccc,不要加上purge的參數,purge是強制直接刪除
SQL> drop table test_ccc;
Table dropped.
重新查詢test_ccc,已經找不到Table
SQL> select count(1) from test_ccc;
select count(1) from test_ccc
*
ERROR at line 1:
ORA-00942: table or view does not exist
查詢回收站中是否有剛才刪除的Table
SQL> select OBJECT_NAME,ORIGINAL_NAME,OPERATION from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME OPERATION
---------------------------------------------- -------------------------------- ---------
BIN$+65JcJ65GHPgRAAUT/lsSQ==$0 TEST_CCC DROP
BIN$+sbBFDvWWtXgRKA2nyw7nA==$0 T1 DROP
BIN$+sEO43HLVgHgRKA2nyw7nA==$0 PLAN_TABLE DROP
還原被Drop的Table
SQL> flashback table test_ccc to before drop;
Flashback complete.
再查詢一次,Table及資料都還原回來了。
SQL> select count(1) from test_ccc;
COUNT(1)
----------
2
二、recyclebin的使用範例(同名表格)
再次刪除test_ccc
SQL> drop table test_ccc;
再建一個同名的表格
SQL> CREATE TABLE apps.TEST_CCC( A VARCHAR2(20 BYTE)) ;
SQL> insert into test_ccc values ( 'aa');
SQL> insert into test_ccc values ( 'bb');
SQL> insert into test_ccc values ( 'cc');
SQL> commit;
新建的test_ccc有三筆資料,而原有但已經刪除test_ccc有兩筆資料
SQL> select count(1) from test_ccc;
COUNT(1)
----------
3
將新建的test_ccc刪除
SQL> drop table test_ccc;
重新查詢recyclebin可以發現不同的時間有同名的表格
SQL> select ORIGINAL_NAME,OPERATION,droptime from user_recyclebin;
ORIGINAL_NAME OPERATION DROPTIME
-------------------------------- ---------------- -------------------
TEST_CCC DROP 2014-06-13:09:31:29
TEST_CCC DROP 2014-06-13:09:43:40
T1 DROP 2014-06-01:20:52:41
PLAN_TABLE DROP 2014-06-01:14:04:57
如下可得知雖然表格名稱相同,但是object_name是不同的。
SQL> select OBJECT_NAME,ORIGINAL_NAME from user_recyclebin
2 where original_name='TEST_CCC';
OBJECT_NAME ORIGINAL_NAME
------------------------------------------ --------------------------------
BIN$+65JcJ69GHPgRAAUT/lsSQ==$0 TEST_CCC
BIN$+65JcJ67GHPgRAAUT/lsSQ==$0 TEST_CCC
由recyclebin還原Test_ccc
SQL> flashback table test_ccc to before drop;
如下可以得知同名的表格會以最後被刪除的表格回復
SQL> select count(1) from test_ccc;
COUNT(1)
----------
3
此時再重新還原相同的表格時,就會出現物件已經存在的錯誤
SQL> flashback table test_ccc to before drop;
flashback table test_ccc to before drop
*
ERROR at line 1:
ORA-38312: original name is used by an existing object
如果想還原相同的表格,可以rename為另一個名稱
SQL> flashback table test_ccc to before drop rename to test_ccc_1;
三、清除recyclebin的資料及強制drop
清除指定表:purge table <table_name>;
清除目前用戶的recyclebin:purge recyclebin;
清除所有用户的recyclebin:purge dba_recyclebin;
查詢目前的recyclebin
SQL> select ORIGINAL_NAME,OPERATION,droptime,dropscn from user_recyclebin;
ORIGINAL_NAME OPERATION DROPTIME
-------------------------------- --------------- ----------------------
TEST_CCC DROP 2014-06-13:10:03:14
TEST_CCC_1 DROP 2014-06-13:10:34:09
T1 DROP 2014-06-01:20:52:41
PLAN_TABLE DROP 2014-06-01:14:04:57
清除recyclebin的test_ccc資料
SQL> purge table test_ccc;
Table purged.
SQL> select ORIGINAL_NAME,OPERATION,droptime from user_recyclebin;
ORIGINAL_NAME OPERATION DROPTIME
-------------------------------- ----------------- -------------------
TEST_CCC_1 DROP 2014-06-13:10:34:09
T1 DROP 2014-06-01:20:52:41
PLAN_TABLE DROP 2014-06-01:14:04:57
SQL> purge recyclebin;
Recyclebin purged.
SQL> select ORIGINAL_NAME,OPERATION,droptime,dropscn from user_recyclebin;
no rows selected
加上參數purge就可以強制drop table,不會到recyclebin,例如:
drop table test_ccc purge;
四、停用recyclebin
修改參數「recyclebin」來停用recyclebin,可以針對session或系統級別來設定:
alter session set recyclebin=off;
alter system set recyclebin=off;
檢查recyclebin是否有啟用,VALUE=on表示有啟用
SQL> show parameter recyclebin ;
NAME TYPE VALUE
------------------- ----------- ----------
recyclebin string on
建立測試用的test_ccc並新增兩筆資料
SQL> CREATE TABLE apps.TEST_CCC(A VARCHAR2(20 BYTE)) ;
SQL> insert into test_ccc values ( 'may');
SQL> insert into test_ccc values ( 'john');
SQL> commit;
確認test_ccc是否有兩筆資料
SQL> select count(1) from test_ccc;
COUNT(1)
----------
2
刪除Table:test_ccc,不要加上purge的參數,purge是強制直接刪除
SQL> drop table test_ccc;
Table dropped.
重新查詢test_ccc,已經找不到Table
SQL> select count(1) from test_ccc;
select count(1) from test_ccc
*
ERROR at line 1:
ORA-00942: table or view does not exist
查詢回收站中是否有剛才刪除的Table
SQL> select OBJECT_NAME,ORIGINAL_NAME,OPERATION from user_recyclebin;
OBJECT_NAME ORIGINAL_NAME OPERATION
---------------------------------------------- -------------------------------- ---------
BIN$+65JcJ65GHPgRAAUT/lsSQ==$0 TEST_CCC DROP
BIN$+sbBFDvWWtXgRKA2nyw7nA==$0 T1 DROP
BIN$+sEO43HLVgHgRKA2nyw7nA==$0 PLAN_TABLE DROP
還原被Drop的Table
SQL> flashback table test_ccc to before drop;
Flashback complete.
再查詢一次,Table及資料都還原回來了。
SQL> select count(1) from test_ccc;
COUNT(1)
----------
2
二、recyclebin的使用範例(同名表格)
再次刪除test_ccc
SQL> drop table test_ccc;
再建一個同名的表格
SQL> CREATE TABLE apps.TEST_CCC( A VARCHAR2(20 BYTE)) ;
SQL> insert into test_ccc values ( 'aa');
SQL> insert into test_ccc values ( 'bb');
SQL> insert into test_ccc values ( 'cc');
SQL> commit;
新建的test_ccc有三筆資料,而原有但已經刪除test_ccc有兩筆資料
SQL> select count(1) from test_ccc;
COUNT(1)
----------
3
將新建的test_ccc刪除
SQL> drop table test_ccc;
重新查詢recyclebin可以發現不同的時間有同名的表格
SQL> select ORIGINAL_NAME,OPERATION,droptime from user_recyclebin;
ORIGINAL_NAME OPERATION DROPTIME
-------------------------------- ---------------- -------------------
TEST_CCC DROP 2014-06-13:09:31:29
TEST_CCC DROP 2014-06-13:09:43:40
T1 DROP 2014-06-01:20:52:41
PLAN_TABLE DROP 2014-06-01:14:04:57
如下可得知雖然表格名稱相同,但是object_name是不同的。
SQL> select OBJECT_NAME,ORIGINAL_NAME from user_recyclebin
2 where original_name='TEST_CCC';
OBJECT_NAME ORIGINAL_NAME
------------------------------------------ --------------------------------
BIN$+65JcJ69GHPgRAAUT/lsSQ==$0 TEST_CCC
BIN$+65JcJ67GHPgRAAUT/lsSQ==$0 TEST_CCC
由recyclebin還原Test_ccc
SQL> flashback table test_ccc to before drop;
如下可以得知同名的表格會以最後被刪除的表格回復
SQL> select count(1) from test_ccc;
COUNT(1)
----------
3
此時再重新還原相同的表格時,就會出現物件已經存在的錯誤
SQL> flashback table test_ccc to before drop;
flashback table test_ccc to before drop
*
ERROR at line 1:
ORA-38312: original name is used by an existing object
如果想還原相同的表格,可以rename為另一個名稱
SQL> flashback table test_ccc to before drop rename to test_ccc_1;
也可以用object_name指定要還原的Table
FLASHBACK TABLE "BIN$+65JcJ65GHPgRAAUT/lsSQ==$0" TO BEFORE DROP;
三、清除recyclebin的資料及強制drop
清除指定表:purge table <table_name>;
清除目前用戶的recyclebin:purge recyclebin;
清除所有用户的recyclebin:purge dba_recyclebin;
查詢目前的recyclebin
SQL> select ORIGINAL_NAME,OPERATION,droptime,dropscn from user_recyclebin;
ORIGINAL_NAME OPERATION DROPTIME
-------------------------------- --------------- ----------------------
TEST_CCC DROP 2014-06-13:10:03:14
TEST_CCC_1 DROP 2014-06-13:10:34:09
T1 DROP 2014-06-01:20:52:41
PLAN_TABLE DROP 2014-06-01:14:04:57
清除recyclebin的test_ccc資料
SQL> purge table test_ccc;
Table purged.
SQL> select ORIGINAL_NAME,OPERATION,droptime from user_recyclebin;
ORIGINAL_NAME OPERATION DROPTIME
-------------------------------- ----------------- -------------------
TEST_CCC_1 DROP 2014-06-13:10:34:09
T1 DROP 2014-06-01:20:52:41
PLAN_TABLE DROP 2014-06-01:14:04:57
SQL> purge recyclebin;
Recyclebin purged.
SQL> select ORIGINAL_NAME,OPERATION,droptime,dropscn from user_recyclebin;
no rows selected
加上參數purge就可以強制drop table,不會到recyclebin,例如:
drop table test_ccc purge;
四、停用recyclebin
修改參數「recyclebin」來停用recyclebin,可以針對session或系統級別來設定:
alter session set recyclebin=off;
alter system set recyclebin=off;
五、recyclebin的額外說明
有幾種情形Drop是不會移動到recyclebin中
drop tablespace
drop a user
drop a cluster
drop a type
而recyclebin會佔用原本的表空間,除非表空間不足時,Oracle會由最早的recyclebin object開始回收
drop tablespace
drop a user
drop a cluster
drop a type
而recyclebin會佔用原本的表空間,除非表空間不足時,Oracle會由最早的recyclebin object開始回收
EBS 11i INV或PO排除FRM-40654
如果在ITEM的Description最後有一個空白或特殊字元時,當要儲存時會出現同時使用同一筆資料的錯誤:
FRM-40654 Record Has Been Updated. Requery Block To See Change
上述的FRM-40654也會發生在PO模組上,但是原因一樣的,有部份的列值包含了空白。
在$FND_TOP中,有一支腳本程式afchrck.sql可以檢查,以apps登入後執行
SQL> connect apps/appsc
Connected.
SQL> @afchrchk.sql
PL/SQL procedure successfully completed.
*** INSTRUCTIONS ***
Enter the table and column names to check for leading or trailing
spaces and control characters. Like-style expressions are ok.
Leave either table or column blank to check table/column.
Table name (blank for all):
Enter value for 1: MTL_SYSTEM_ITEMS_B --表格名稱
Column name (blank for all):
Enter value for 2: DESCRIPTION --檢查的欄位名稱
Newline characters are acceptable in columns never queried in
Forms, on only queried in multi-line items.
Enter Y to also look for newline characters.
Check for newline characters (Y/N)?
Enter value for 3: Y
Enter Y to automatically strip all leading/trailing spaces
and control characters found.
*** WARNING ***
It is highly recommended to run first without stripping
to be sure all detected values really should be fixed!
Automatically fix all errors found (Y/N)?
Enter value for 4: N --是否自動俢復
FRM-40654 Record Has Been Updated. Requery Block To See Change
上述的FRM-40654也會發生在PO模組上,但是原因一樣的,有部份的列值包含了空白。
在$FND_TOP中,有一支腳本程式afchrck.sql可以檢查,以apps登入後執行
SQL> connect apps/appsc
Connected.
SQL> @afchrchk.sql
PL/SQL procedure successfully completed.
*** INSTRUCTIONS ***
Enter the table and column names to check for leading or trailing
spaces and control characters. Like-style expressions are ok.
Leave either table or column blank to check table/column.
Table name (blank for all):
Enter value for 1: MTL_SYSTEM_ITEMS_B --表格名稱
Column name (blank for all):
Enter value for 2: DESCRIPTION --檢查的欄位名稱
Newline characters are acceptable in columns never queried in
Forms, on only queried in multi-line items.
Enter Y to also look for newline characters.
Check for newline characters (Y/N)?
Enter value for 3: Y
Enter Y to automatically strip all leading/trailing spaces
and control characters found.
*** WARNING ***
It is highly recommended to run first without stripping
to be sure all detected values really should be fixed!
Automatically fix all errors found (Y/N)?
Enter value for 4: N --是否自動俢復
Solaris 10 只關閉SFTP
先查看版本
# ssh -V
Sun_SSH_1.1.6, SSH protocols 1.5/2.0, OpenSSL 0x0090704f
Subsystem sftp /usr/lib/openssh/sftp-server
改成
# Subsystem sftp /usr/lib/openssh/sftp-server
然後重跑一次 sshd
# /etc/init.d/sshd restart
不過可惜的是此版並不支援Match user、Match group的語法,無法針對特定帳號、群組
EBS 11i 修改form export資料的格式
EBS 11i的forms可以由File->Export匯出資料,預設的副檔名為.tsv,
如果想更改這個值,可以到System Administrator->Profile->System的設定修改,
修改的參數為Export MIME type
例如想要匯出.csv,可以更改為text/comma-separated-values
例如想要匯出.xls,可以更改為application/vnd.ms-excel(但是檔案內容還是文字格式,非Excel標準的格式)
EBS Responsibilities增加權限時出現ORA-04063:rule set APPLSYS.WF_JAVA_DEFERRED_R has errors
EBS 11i測試機在由HP-UX移至Solaris並且Database由9i upgrade到11g之後,
要增加使用者權限時出現了ORA-04063:rule set APPLSYS.WF_JAVA_DEFERRED_R has errors
查看相關的object,發現狀態是invalid,但是嘗試用Toad recompile時,出現無法編譯的錯誤
查詢Metalink之後,找到相關的解決方法:
Fixing Invalid Workflow Rule Sets such as WF_DEFERRED_R and Related Errors on Workflow Queues:ORA-24033(ID 337294.1)
下載script後,再執行指令就成功了。
SQL> connect apps/XXXXX
SQL> @wf_fix.sql
script下載:
https://mega.co.nz/#!1AdlibIS!Pc-pvn8lzhGqnKHzgn4U1kAEJYaANXDG3cKAJBclbqk
要增加使用者權限時出現了ORA-04063:rule set APPLSYS.WF_JAVA_DEFERRED_R has errors
查看相關的object,發現狀態是invalid,但是嘗試用Toad recompile時,出現無法編譯的錯誤
查詢Metalink之後,找到相關的解決方法:
Fixing Invalid Workflow Rule Sets such as WF_DEFERRED_R and Related Errors on Workflow Queues:ORA-24033(ID 337294.1)
下載script後,再執行指令就成功了。
SQL> connect apps/XXXXX
SQL> @wf_fix.sql
script下載:
https://mega.co.nz/#!1AdlibIS!Pc-pvn8lzhGqnKHzgn4U1kAEJYaANXDG3cKAJBclbqk
Excel VBA如何取得開啟文字檔的語法
利用巨集可以自動取得VBA開啟文字檔的語法,步驟如下:
按下「錄製巨集」,啟動錄製並為巨集取一個名字。
.png)
選擇「開啟舊檔」,並選擇要匯入的文字檔
.png)
.png)
匯入文字檔會有三個步驟,依據文字檔的格式來做選擇,這裡的選擇會影響VBA的語法
.png)
完成匯入文字檔之後,按下「停止錄製」
.png)
最後開啟「Visual Basic」編輯器,就可以看見開啟文字檔的VBA語法了。
.png)
訂閱:
文章 (Atom)

-
在電腦版的Line輸入文字時,遇到需要換行的情形時,我都是用記事本先寫好再複製上去,這樣就可以有換行的效果,可是這樣的做法好像失去Line的便利性。 於是查了一下,原來有一個設定可以指定Enter換行,而不是發訊息出去。 完成設定之後,要發送訊息就改用Al...
-
Windows7 / Windows8 kill process Linux下要刪除某個程序通常會使用 ps 配合 kill 來刪除程序。 例如:ps -ef |grep [PROCESS NAME] kill -9 [PID] 在Windows下,通常是...
-
Excel有許多實用的公式,善用這些公式可以達成大部份的功能,但是萬一公式無法滿足需求時,可以自訂公式來解決。 自訂公式其實就是自訂函數,先開啟Visual Basic(VBA) 新增一個「模組」 ...