搜尋 Oracle 結果:
繁中的錯誤訊息: 集合中已經包含 OracleParameter 物件
簡中的錯誤訊息: 另一个 OracleParameterCollection 中已包含 OracleParameter
解決方法是把 OracleParameter p, 做 clone 之後再加入 OracleCommand 的 Parameters 之中。
OracleParameter pp = (OracleParameter)((ICloneable)p).Clone();
cmd.Parameters.Add(pp);
看來簡中的翻譯比較明確。
不知道英文版的錯誤訊息是什麼。
Bike, 2023/6/1 下午 07:26:36
繁中的錯誤訊息: 集合中已經包含 OracleParameter 物件
簡中的錯誤訊息: 另一个 OracleParameterCollection 中已包含 OracleParameter
解決方法是把 OracleParameter p, 做 clone 之後再加入 OracleCommand 的 Parameters 之中。
OracleParameter pp = (OracleParameter)((ICloneable)p).Clone();
cmd.Parameters.Add(pp);
看來簡中的翻譯比較明確。
不知道英文版的錯誤訊息是什麼。
Bike, 2023/6/1 下午 07:26:21
當發現於Developer下Script時,ScriptRunner一直在跑都不會停的時候,請先暫停該Query。
1. 查出哪隻Session將Table lock住了
select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;
2. 取得該Session SID與SERIAL#,順便可以看是哪個SQL帳號Lock的
select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;
3. 使用下面這段SQL,帶入SID與SERIAL#即可將該Session Kill
alter system kill session'{SID}, {SERIAL#}';
梨子, 2022/10/26 下午 08:35:31
感覺上, Oracle 的 table space 和 MS-SQL 的 DB 是一樣的。都是用來指定實體檔案。
google 到的範例居然有小 bug, 記錄一個修正版如下:
CREATE TABLESPACE TABPE_SPACE_NAME
DATAFILE 'TABPE_SPACE_NAME.dbf'
SIZE 1m
AUTOEXTEND ON;
完成之後,可以列出所有 table space:
SELECT A.TABLESPACE_NAME, A.FILE_NAME,
ROUND(B.FREE_GB,2) AS FREE_GB ,
ROUND(A.TOTAL_GB - b.FREE_GB) AS USED_GB ,
ROUND(A.TOTAL_GB,2) AS TOTAL_GB ,
ROUND(((A.TOTAL_GB - B.FREE_GB)/ A.TOTAL_GB )*100,2) AS USED_PERCENT,
ROUND((B.FREE_GB/ A.TOTAL_GB )*100,2) AS FREE_PERCENT
FROM
(
SELECT TABLESPACE_NAME, FILE_NAME,
SUM(BYTES)/ (1024*1024*1024) AS TOTAL_GB
FROM DBA_DATA_FILES
-- WHERE TABLESPACE_NAME='My_TableSpace_Name'
GROUP BY TABLESPACE_NAME, FILE_NAME
)A,
(
SELECT TABLESPACE_NAME,
SUM(BYTES) / (1024*1024*1024) AS FREE_GB
FROM DBA_FREE_SPACE
-- WHERE TABLESPACE_NAME='My_TableSpace_Name'
GROUP BY TABLESPACE_NAME
) B
WHERE A.TABLESPACE_NAME= B.TABLESPACE_NAME ;
Bike, 2022/4/6 上午 08:35:54
已經有資料的資料庫無法更改。
開啟 sqlplus
用 sys 登入 XPEDB1 指定為SYSDBA 的身份
--sqlplus SYS/password@localhost/XEPDB1 as SYSDBA
sqlplus / as SYSDBA
--修改 NLS_CHARACTERSET to ZHT16MSWIN950
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 INTERNAL_USE ZHT16MSWIN950;
ALTER SESSION SET SQL_TRACE=FALSE;
shutdown immediate;
STARTUP;
查詢 nvarchar 的欄位
select owner, table_name, column_name
from dba_tab_columns
where (data_type = 'NCHAR' or
data_type = 'NVARCHAR2' or
data_type = 'NCLOB') and
owner != 'SYS' and
owner != 'SYSTEM';
要 truncate 兩個 table:
truncate table SYS.RADM_FPTM_LOB$;
truncate table SYS.RADM_FPTM$ ;
執行以下指令
修改 System 的 NLS_NCHAR_CHARACTERSET:
shutdown immediate;
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0 SCOPE = MEMORY;
ALTER SYSTEM SET AQ_TM_PROCESSES=0 SCOPE = MEMORY;
ALTER DATABASE OPEN;
ALTER DATABASE NATIONAL CHARACTER SET UTF8;
SHUTDOWN IMMEDIATE;
STARTUP;
要修特定 PDB 的 NLS_NCHAR_CHARACTERSET:
alter session set container=cdb$root;
show pdbs;
alter pluggable database XEPDB1 close immediate;
alter pluggable database XEPDB1 open read write restricted;
alter session set container=XEPDB1;
truncate table SYS.RADM_FPTM_LOB$;
truncate table SYS.RADM_FPTM$;
ALTER DATABASE NATIONAL CHARACTER SET UTF8;
ALTER PLUGGABLE DATABASE XEPDB1 CLOSE IMMEDIATE;
ALTER PLUGGABLE DATABASE XEPDB1 OPEN;
select * from database_properties where PROPERTY_NAME in ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET');
Bike, 2022/4/1 下午 05:31:17
老問題, 居然又查了一次, 要記下來.
看到這個要檢查 SQL command 的結尾是不是加了 ";"
只有在 Oracle 會發生的問題.
Bike, 2021/11/3 下午 07:48:10
1. .Net Core 5.0 使用.
2. 可切換後, 適用於 MsSQL, MySql, Oracle
3. 預設所有 SQL 執行時要經過 SQL Injection 檢查.
(移除 "CheckDangerSQL", 併入 IsSqlInjection)
預設會把 CR 和 LF 換成 空白,以免 sql injection 檢查發生錯誤, 有參數可以控制這個行為。sql 和 資料應該要分開,sql 中的 CR 和 LF 被換成空白應該不會有問題。
4. 不要再使用 SqlStr, 改用 SqlValue (避免誤用, SqlStr 有一個問題, 若是忘了加上 '' 會有可能造成 sql injection)
5. ORM 的 Class Name, 若遇到全大寫的字節, 要先轉小寫, 再把第一個字母變大寫.
6. CopyPropertiesTo, CopyTo..
SetValue 時, 若發生錯誤, 要顯示錯誤欄位名稱. (Tmi 的版本, ObjUtil.cs)
7. CopyFromDataRow:
string 自動轉 DateTime
string 自動轉 int, long, decimal..
8. Criteria 的 In 和 operator (|) 要接 list 做為參數, 不要再直接用字串做參數.
9. OrderBy 增加 by column 且可以多個串接
10. Update 時可以用 sql 語法 (參考聖宜的 GetSetFieldWithExpression)
11. 檢查 SQL Injection 的方法改為先把 \r 和 \n 用空白取代,再檢查, 再取代參數。
12. DtFromSql 和 ExecuteSql 傳入 connection 和 transaction 的版本先刪除,未來有需要再增加。
Bike, 2021/10/18 下午 04:29:15
建立 tablespace:
有點類似 SQL 的 Create Database
create tablespace IEDF_D004M datafile 'C:\Oracle\IEDF_D004M.DBF' size 100M autoextend on next 10M maxsize unlimited;
Bike, 2021/8/4 下午 09:48:39