create synonym pay.payccs1 for paysys.payccs1;
搜尋此網誌
2014年10月1日 星期三
賦予table使用者權限
grant select,insert,update,delete on paysys.payccs1 to paysys_role;
create synonym pay.payccs1 for paysys.payccs1;
create synonym pay.payccs1 for paysys.payccs1;
2014年9月29日 星期一
C# 取得自己Hostname 及 IP
C# 取得自己Hostname 及 IP
C# 要取得自己的 hostname 及所有介面的ip,可以使用以下的方法:
using System.Net;
// 取得本機hostname的方法
localhostname = Environment.UserDomainName;
//取得遠端hostname得到IP的方法
IPHostEntry ipHostInfo = Dns.GetHostEntry(hostname);
//得到遠端IP個數
int ipaddrnum = ipHostInfo.AddressList.GetLength(0);
// ipHostInfo 中有所有的 IPAddress
foreach (IPAddress ipaddress in ipHostInfo.AddressList){}
// 把字串轉成IP的方法
IPAddress ip = IPAddress.Parse ( "x.x.x.x" );
C# 要取得自己的 hostname 及所有介面的ip,可以使用以下的方法:
using System.Net;
// 取得本機hostname的方法
localhostname = Environment.UserDomainName;
//取得遠端hostname得到IP的方法
IPHostEntry ipHostInfo = Dns.GetHostEntry(hostname);
//得到遠端IP個數
int ipaddrnum = ipHostInfo.AddressList.GetLength(0);
// ipHostInfo 中有所有的 IPAddress
foreach (IPAddress ipaddress in ipHostInfo.AddressList){}
// 把字串轉成IP的方法
IPAddress ip = IPAddress.Parse ( "x.x.x.x" );
2014年9月25日 星期四
SQL Server 2005 如何解開 Lock
使用 select object_id('TABLE_NAME') 或是 select object_name('OBJECT_ID') 去查出該 Lock 是屬於哪個 Table
使用 sp_lock 去查詢被 Lock 的資料有哪些, 因為他不會直接列出 Table 名稱, 所以可透過上述取得OBJID
接下來針對SPID去下指令即可
kill 81
2014年9月3日 星期三
db command
using System.Data.SqlClient;
using System.Configuration;
using Oracle.DataAccess.Client;
using System.Collections;
public static SqlConnection CPCIS1Conn = new SqlConnection(ConfigurationSettings.AppSettings["ConncetionStringCPCIS1"].ToString());
public static OracleConnection ORASRVConn = new OracleConnection(ConfigurationSettings.AppSettings["ConncetionStringORASRV01"].ToString());
public static ArrayList tSQL = new ArrayList();
public static ArrayList oSQL = new ArrayList();
protected DataTable GetDataSQL(string Command, string TableName)
{
DataTable Dt = new DataTable();
CPCIS1Conn.Close();
CPCIS1Conn.Open();
try
{
Dt.TableName = TableName;
string sTranstionSql = Command;
SqlCommand cmd = new SqlCommand(sTranstionSql, CPCIS1Conn);
SqlDataReader sdr = cmd.ExecuteReader();
Dt.Load(sdr);
}
catch (Exception ex)
{
ex.ToString();
}
CPCIS1Conn.Close();
return Dt;
}
protected DataTable GetDataORACLE(string Command, string TableName)
{
DataTable Dt = new DataTable();
ORASRVConn.Close();
ORASRVConn.Open();
try
{
Dt.TableName = TableName;
string sTranstionSql = Command;
OracleCommand cmd = new OracleCommand(sTranstionSql, ORASRVConn);
OracleDataReader sdr = cmd.ExecuteReader();
Dt.Load(sdr);
}
catch (Exception ex)
{
ex.ToString();
}
ORASRVConn.Close();
return Dt;
}
protected bool WriteDataSQL(ArrayList SQL)
{
try
{
SqlCommand DBCommand = new SqlCommand();
SqlTransaction DBTransaction;
SqlConnection DBConnection = new SqlConnection();
DBConnection.ConnectionString = ConfigurationSettings.AppSettings["ConncetionStringCPCIS1"].ToString();
DBConnection.Open();
DBCommand = DBConnection.CreateCommand();
DBTransaction = DBConnection.BeginTransaction("SQLTransaction");
DBCommand.Connection = DBConnection;
DBCommand.Transaction = DBTransaction;
try
{
for (Int32 i = 0; i < SQL.Count; i++)
{
DBCommand.CommandText = SQL[i].ToString();
DBCommand.ExecuteNonQuery();
}
DBTransaction.Commit();
tSQL.Clear();
return true;
}
catch (Exception ex)
{
DBTransaction.Rollback();
tSQL.Clear();
throw new Exception(ex.Message);
}
}
catch (Exception ex)
{
tSQL.Clear();
throw new Exception(ex.Message);
}
}
protected bool WriteDataORACLE(ArrayList SQL)
{
try
{
OracleCommand DBCommand = new OracleCommand();
OracleTransaction DBTransaction;
OracleConnection DBConnection = new OracleConnection();
DBConnection.ConnectionString = ConfigurationSettings.AppSettings["ConncetionStringORASRV01"].ToString();
DBConnection.Open();
DBCommand = DBConnection.CreateCommand();
DBTransaction = DBConnection.BeginTransaction();
DBCommand.Connection = DBConnection;
//DBCommand.Transaction = DBTransaction;
try
{
for (Int32 i = 0; i < SQL.Count; i++)
{
DBCommand.CommandText = SQL[i].ToString();
DBCommand.ExecuteNonQuery();
}
DBTransaction.Commit();
//DBTransaction.Rollback();
oSQL.Clear();
return true;
}
catch (Exception ex)
{
DBTransaction.Rollback();
oSQL.Clear();
throw new Exception(ex.Message);
}
}
catch (Exception ex)
{
oSQL.Clear();
throw new Exception(ex.Message);
}
}
using System.Configuration;
using Oracle.DataAccess.Client;
using System.Collections;
public static SqlConnection CPCIS1Conn = new SqlConnection(ConfigurationSettings.AppSettings["ConncetionStringCPCIS1"].ToString());
public static OracleConnection ORASRVConn = new OracleConnection(ConfigurationSettings.AppSettings["ConncetionStringORASRV01"].ToString());
public static ArrayList tSQL = new ArrayList();
public static ArrayList oSQL = new ArrayList();
protected DataTable GetDataSQL(string Command, string TableName)
{
DataTable Dt = new DataTable();
CPCIS1Conn.Close();
CPCIS1Conn.Open();
try
{
Dt.TableName = TableName;
string sTranstionSql = Command;
SqlCommand cmd = new SqlCommand(sTranstionSql, CPCIS1Conn);
SqlDataReader sdr = cmd.ExecuteReader();
Dt.Load(sdr);
}
catch (Exception ex)
{
ex.ToString();
}
CPCIS1Conn.Close();
return Dt;
}
protected DataTable GetDataORACLE(string Command, string TableName)
{
DataTable Dt = new DataTable();
ORASRVConn.Close();
ORASRVConn.Open();
try
{
Dt.TableName = TableName;
string sTranstionSql = Command;
OracleCommand cmd = new OracleCommand(sTranstionSql, ORASRVConn);
OracleDataReader sdr = cmd.ExecuteReader();
Dt.Load(sdr);
}
catch (Exception ex)
{
ex.ToString();
}
ORASRVConn.Close();
return Dt;
}
protected bool WriteDataSQL(ArrayList SQL)
{
try
{
SqlCommand DBCommand = new SqlCommand();
SqlTransaction DBTransaction;
SqlConnection DBConnection = new SqlConnection();
DBConnection.ConnectionString = ConfigurationSettings.AppSettings["ConncetionStringCPCIS1"].ToString();
DBConnection.Open();
DBCommand = DBConnection.CreateCommand();
DBTransaction = DBConnection.BeginTransaction("SQLTransaction");
DBCommand.Connection = DBConnection;
DBCommand.Transaction = DBTransaction;
try
{
for (Int32 i = 0; i < SQL.Count; i++)
{
DBCommand.CommandText = SQL[i].ToString();
DBCommand.ExecuteNonQuery();
}
DBTransaction.Commit();
tSQL.Clear();
return true;
}
catch (Exception ex)
{
DBTransaction.Rollback();
tSQL.Clear();
throw new Exception(ex.Message);
}
}
catch (Exception ex)
{
tSQL.Clear();
throw new Exception(ex.Message);
}
}
protected bool WriteDataORACLE(ArrayList SQL)
{
try
{
OracleCommand DBCommand = new OracleCommand();
OracleTransaction DBTransaction;
OracleConnection DBConnection = new OracleConnection();
DBConnection.ConnectionString = ConfigurationSettings.AppSettings["ConncetionStringORASRV01"].ToString();
DBConnection.Open();
DBCommand = DBConnection.CreateCommand();
DBTransaction = DBConnection.BeginTransaction();
DBCommand.Connection = DBConnection;
//DBCommand.Transaction = DBTransaction;
try
{
for (Int32 i = 0; i < SQL.Count; i++)
{
DBCommand.CommandText = SQL[i].ToString();
DBCommand.ExecuteNonQuery();
}
DBTransaction.Commit();
//DBTransaction.Rollback();
oSQL.Clear();
return true;
}
catch (Exception ex)
{
DBTransaction.Rollback();
oSQL.Clear();
throw new Exception(ex.Message);
}
}
catch (Exception ex)
{
oSQL.Clear();
throw new Exception(ex.Message);
}
}
2014年8月20日 星期三
取得Oracle資料表、欄位、索引、主鍵值資訊
SELECT
C.OWNER, C.TABLE_NAME, C.COLUMN_ID, C.COLUMN_NAME,
DATA_TYPE, DATA_LENGTH, DATA_PRECISION, DATA_DEFAULT,
NULLABLE, COMMENTS
FROM
ALL_TAB_COLUMNS C
JOIN ALL_TABLES T ON
C.OWNER = T.OWNER AND C.TABLE_NAME = T.TABLE_NAME
LEFT JOIN ALL_COL_COMMENTS R ON
C.OWNER = R.Owner AND
C.TABLE_NAME = R.TABLE_NAME AND
C.COLUMN_NAME = R.COLUMN_NAME
WHERE
C.OWNER = 'PAYSYS' AND TABLE_NAME LIKE 'PWS%'
ORDER BY C.TABLE_NAME, C.COLUMN_ID
C.OWNER, C.TABLE_NAME, C.COLUMN_ID, C.COLUMN_NAME,
DATA_TYPE, DATA_LENGTH, DATA_PRECISION, DATA_DEFAULT,
NULLABLE, COMMENTS
FROM
ALL_TAB_COLUMNS C
JOIN ALL_TABLES T ON
C.OWNER = T.OWNER AND C.TABLE_NAME = T.TABLE_NAME
LEFT JOIN ALL_COL_COMMENTS R ON
C.OWNER = R.Owner AND
C.TABLE_NAME = R.TABLE_NAME AND
C.COLUMN_NAME = R.COLUMN_NAME
WHERE
C.OWNER = 'PAYSYS' AND TABLE_NAME LIKE 'PWS%'
ORDER BY C.TABLE_NAME, C.COLUMN_ID
2014年7月8日 星期二
oracle 10g 刪除咬住的session
SELECT A.SID,A.SERIAL#,A.USERNAME,B.TYPE FROM V$SESSION A,V$LOCK B WHERE A.SID=B.SID order by sid;
ALTER SYSTEM KILL SESSION 'SID,SERIAL#';
ALTER SYSTEM KILL SESSION 'SID,SERIAL#';
2014年6月11日 星期三
Oracle中dual表的用途
dual是一個虛擬表,用來構成select的語法規則,oracle保證dual裡面永遠只有一條記錄。我們可以用它來做很多事情,如下:
1、查看當前使用者,可以在 SQL Plus中執行下面語句 select user from dual;
2、用來調用系統函數
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--獲得當前系統時間
select SYS_CONTEXT('USERENV','TERMINAL') from dual;--獲得主機名稱
select SYS_CONTEXT('USERENV','language') from dual;--獲得當前 locale
select dbms_random.random from dual;--獲得一個亂數
3、得到序列的下一個值或當前值,用下面語句
select your_sequence.nextval from dual;--獲得序列your_sequence的下一個值
select your_sequence.currval from dual;--獲得序列your_sequence的當前值
4、可以用做計算機 select 7*9 from dual;
------
Oracle系統中dual表是一個「神秘」的表,網上有很多網友都對該表進行了測試,該表只有一行一列,其實該表和系統中的其他表一樣,一樣可以執行插入、更新、刪除操作,還可以執行drop操作。但是不要去執行drop表的操作,否則會使系統不能用,資料庫起不了,會報Database startup crashes with ORA-1092錯誤。此時也不要慌亂,可以通過執行以下步驟來進行恢復。可以用sys使用者登陸。
SQL> create pfile=’d:pfile.bak’ from spfile
SQL> shutdown immediate
在d:pfile.bak檔中最後加入一條:
replication_dependency_tracking = FALSE
重新開機資料庫:
SQL> startup pfile=’d:pfile.bak’
SQL> create table 「sys」.」DUAL」
[an error occurred while processing this directive]
=====
DUAL ? 有什麼神秘的? 當你想得到ORACLE系統時間, 簡簡單單敲一行SQL 不就得了嗎? 故弄玄虛....
SQL> select sysdate from dual;
SYSDATE
---------
28-SEP-03
哈哈, 確實DUAL的使用很方便. 但是大家知道DUAL倒底是什麼OBJECT, 它有什麼特殊的行為嗎? 來,我們一起看一看. 首先搞清楚DUAL是什麼OBJECT :
SQL> connect system/manager
Connected.
SQL> select owner, object_name , object_type from dba_objects where object_name like '%DUAL%'; OWNER OBJECT_NAME OBJECT_TYPE
--------------- --------------- -------------
SYS DUAL TABLE PUBLIC DUAL SYNONYM
原來DUAL是屬於SYS schema的一個表,然後以PUBLIC SYNONYM的方式供其他資料庫USER使用.
再看看它的結構:
SQL> desc dual Name Null? Type
----------------------------------------- -------- ----------------------------
DUMMY VARCHAR2(1)
SQL>
只有一個名字叫DUMMY的字元型COLUMN .
然後查詢一下表裡的資料:
SQL> select dummy from dual;
DUMMY
----------
X
哦, 只有一條記錄, DUMMY的值是’X’ .很正常啊,沒什麼奇怪嘛. 好,下面就有奇妙的東西出現了!
插入一條記錄:
SQL> connect sys as sysdba
Connected.
SQL> insert into dual values ( 'Y');
1 row created.
SQL> commit;
Commit complete.
SQL> select count(*) from dual;
COUNT(*)
----------
2
迄今為止,一切正常. 然而當我們重新查詢記錄時,奇怪的事情發生了
SQL> select * from dual;
DUMMY
----------
X
剛才插入的那條記錄並沒有顯示出來 ! 明明DUAL表中有兩條記錄, 可就是只顯示一條!
再試一下刪除 ,狠一點,全刪光 !
SQL> delete from dual; /*注意沒有限定條件,試圖刪除全部記錄*/
1 row deleted.
SQL> commit;
Commit complete.
哈哈,也只有一條記錄被刪掉,
SQL> select * from dual;
DUMMY
----------
Y
為什麼會這樣呢? 難道SQL的語法對DUAL不起作用嗎?帶著這個疑問,
我查詢了一些ORACLE官方的資料. 原來ORACLE對DUAL表的操作做了一些內部處理,儘量保證DUAL表中只返回一條記錄.當然這寫內部操作是不可見的 . 看來ORACLE真是蘊藏著無窮的奧妙啊!
1、查看當前使用者,可以在 SQL Plus中執行下面語句 select user from dual;
2、用來調用系統函數
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;--獲得當前系統時間
select SYS_CONTEXT('USERENV','TERMINAL') from dual;--獲得主機名稱
select SYS_CONTEXT('USERENV','language') from dual;--獲得當前 locale
select dbms_random.random from dual;--獲得一個亂數
3、得到序列的下一個值或當前值,用下面語句
select your_sequence.nextval from dual;--獲得序列your_sequence的下一個值
select your_sequence.currval from dual;--獲得序列your_sequence的當前值
4、可以用做計算機 select 7*9 from dual;
------
Oracle系統中dual表是一個「神秘」的表,網上有很多網友都對該表進行了測試,該表只有一行一列,其實該表和系統中的其他表一樣,一樣可以執行插入、更新、刪除操作,還可以執行drop操作。但是不要去執行drop表的操作,否則會使系統不能用,資料庫起不了,會報Database startup crashes with ORA-1092錯誤。此時也不要慌亂,可以通過執行以下步驟來進行恢復。可以用sys使用者登陸。
SQL> create pfile=’d:pfile.bak’ from spfile
SQL> shutdown immediate
在d:pfile.bak檔中最後加入一條:
replication_dependency_tracking = FALSE
重新開機資料庫:
SQL> startup pfile=’d:pfile.bak’
SQL> create table 「sys」.」DUAL」
[an error occurred while processing this directive]
=====
DUAL ? 有什麼神秘的? 當你想得到ORACLE系統時間, 簡簡單單敲一行SQL 不就得了嗎? 故弄玄虛....
SQL> select sysdate from dual;
SYSDATE
---------
28-SEP-03
哈哈, 確實DUAL的使用很方便. 但是大家知道DUAL倒底是什麼OBJECT, 它有什麼特殊的行為嗎? 來,我們一起看一看. 首先搞清楚DUAL是什麼OBJECT :
SQL> connect system/manager
Connected.
SQL> select owner, object_name , object_type from dba_objects where object_name like '%DUAL%'; OWNER OBJECT_NAME OBJECT_TYPE
--------------- --------------- -------------
SYS DUAL TABLE PUBLIC DUAL SYNONYM
原來DUAL是屬於SYS schema的一個表,然後以PUBLIC SYNONYM的方式供其他資料庫USER使用.
再看看它的結構:
SQL> desc dual Name Null? Type
----------------------------------------- -------- ----------------------------
DUMMY VARCHAR2(1)
SQL>
只有一個名字叫DUMMY的字元型COLUMN .
然後查詢一下表裡的資料:
SQL> select dummy from dual;
DUMMY
----------
X
哦, 只有一條記錄, DUMMY的值是’X’ .很正常啊,沒什麼奇怪嘛. 好,下面就有奇妙的東西出現了!
插入一條記錄:
SQL> connect sys as sysdba
Connected.
SQL> insert into dual values ( 'Y');
1 row created.
SQL> commit;
Commit complete.
SQL> select count(*) from dual;
COUNT(*)
----------
2
迄今為止,一切正常. 然而當我們重新查詢記錄時,奇怪的事情發生了
SQL> select * from dual;
DUMMY
----------
X
剛才插入的那條記錄並沒有顯示出來 ! 明明DUAL表中有兩條記錄, 可就是只顯示一條!
再試一下刪除 ,狠一點,全刪光 !
SQL> delete from dual; /*注意沒有限定條件,試圖刪除全部記錄*/
1 row deleted.
SQL> commit;
Commit complete.
哈哈,也只有一條記錄被刪掉,
SQL> select * from dual;
DUMMY
----------
Y
為什麼會這樣呢? 難道SQL的語法對DUAL不起作用嗎?帶著這個疑問,
我查詢了一些ORACLE官方的資料. 原來ORACLE對DUAL表的操作做了一些內部處理,儘量保證DUAL表中只返回一條記錄.當然這寫內部操作是不可見的 . 看來ORACLE真是蘊藏著無窮的奧妙啊!
訂閱:
文章 (Atom)