ORACLE如何限制ip段登入和登入之後記錄資訊
CREATE USER DBCONFIG IDENTIFIED BY "DBCONFIG"
GRANT UNLIMITED TABLESPACE TO DBCONFIG
/
ALTER USER DBCONFIG ACCOUNT LOCK
/
CREATE TABLE DBCONFIG.LOGON_IPCONFIG
(
USERNAME VARCHAR2(30),
STARTIP VARCHAR2(15) NOT NULL,
ENDIP VARCHAR2(15),
EFF_DATE DATE DEFAULT SYSDATE,
EXP_DATE DATE DEFAULT SYSDATE+3,
LOGON_ENABLED CHAR(1) DEFAULT 'Y',
LOG_ENABLED CHAR(1) DEFAULT 'N',
STATE CHAR(1) DEFAULT 'A',
STATE_DATE DATE,
REMARK VARCHAR2(20)
)
/
CREATE OR REPLACE TRIGGER DBCONFIG.TR_UI_LOGON_IPCONFIG
BEFORE INSERT OR UPDATE ON DBCONFIG.LOGON_IPCONFIG
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
ip1 varchar(15);
ip2 varchar(15);
i integer;
l integer;
BEGIN
ip1 := :new.startip;
i := -1;
--測試是否數字
ip2 := to_char(to_number(replace(ip1,'.','')));
i := instr(ip1, '.');
if i=0 or i=l then raise_application_error(-20061,'INVALID STARTIP VALUE.'); end if;
--STARTIP的第1節
ip2 := lpad(substr(ip1,1,i),4,'0');
l := length(ip1);
ip1 := substr(ip1,i+1,l-i);
i := instr(ip1, '.');
if i=0 or i=l then raise_application_error(-20061,'INVALID STARTIP VALUE.'); end if;
--STARTIP的第2節
ip2 := ip2||lpad(substr(ip1,1,i),4,'0');
l := length(ip1);
ip1 := substr(ip1,i+1,l-i);
i := instr(ip1, '.');
if i=0 or i=l then raise_application_error(-20061,'INVALID STARTIP VALUE.'); end if;
--STARTIP的第3節
ip2 := ip2||lpad(substr(ip1,1,i),4,'0');
ip1 := substr(ip1,i+1,l-i);
--STARTIP的第4節
ip2 := ip2||lpad(ip1,3,'0');
:new.startip := ip2;
ip1 := :new.endip;
i := -2;
--測試是否數字
ip2 := to_char(to_number(replace(ip1,'.','')));
i := instr(ip1, '.');
if i=0 or i=l then raise_application_error(-20062,'INVALID ENDIP VALUE.'); end if;
--ENDIP的第1節
ip2 := lpad(substr(ip1,1,i),4,'0');
l := length(ip1);
ip1 := substr(ip1,i+1,l-i);
i := instr(ip1, '.');
if i=0 or i=l then raise_application_error(-20062,'INVALID ENDIP VALUE.'); end if;
--ENDIP的第2節
ip2 := ip2||lpad(substr(ip1,1,i),4,'0');
l := length(ip1);
ip1 := substr(ip1,i+1,l-i);
i := instr(ip1, '.');
if i=0 or i=l then raise_application_error(-20062,'INVALID ENDIP VALUE.'); end if;
--ENDIP的第3節
ip2 := ip2||lpad(substr(ip1,1,i),4,'0');
ip1 := substr(ip1,i+1,l-i);
--ENDIP的第4節
ip2 := ip2||lpad(ip1,3,'0');
:new.endip := ip2;
:new.username := upper(:new.username);
:new.logon_enabled := upper(:new.logon_enabled);
:new.log_enabled := upper(:new.log_enabled);
:new.state := upper(:new.state);
exception when others then
if i=-1 then
raise_application_error(-20061,'INVALID STARTIP VALUE.');
elsif i=-2 then
raise_application_error(-20062,'INVALID ENDIP VALUE.');
end if;
END;
INSERT INTO DBCONFIG.LOGON_IPCONFIG
SELECT USERNAME,'0.0.0.0','255.255.255.255',TRUNC(SYSDATE),DATE '3000-1-1','Y','Y','A',TRUNC(SYSDATE),'DEFAULT' FROM ALL_USERS
select * from DBCONFIG.LOGON_IPCONFIG
CREATE UNIQUE INDEX DBCONFIG.IDX_LOGON_IPCONFIG
ON DBCONFIG.LOGON_IPCONFIG(USERNAME, LOGON_ENABLED, STATE, STATE_DATE)
/
CREATE SEQUENCE DBCONFIG.LOGON_SEQ
INCREMENT BY 1
START WITH 1
MAXVALUE 99999999
MINVALUE 1
CYCLE
CACHE 20
NOORDER
/
CREATE TABLE DBCONFIG.LOGON_HISTORY
(
ID NUMBER(8),
SID NUMBER,
SERIAL# NUMBER,
AUDSID NUMBER,
USERNAME VARCHAR2(30),
SERVER VARCHAR2(9),
SCHEMANAME VARCHAR2(30),
OSUSER VARCHAR2(30),
MACHINE VARCHAR2(64),
TERMINAL VARCHAR2(16),
PROGRAM VARCHAR2(64),
LOGON_IP VARCHAR2(16),
LOGON_TIME DATE,
CONSTRAINT PK_LOGON_HISTORY PRIMARY KEY (ID)
)
/
CREATE OR REPLACE TRIGGER SYS.TRIGGER_LOGON
AFTER LOGON ON DATABASE
declare
usr varchar2(10);
ip varchar2(16);
ip1 varchar2(15);
ip2 varchar2(15);
i number;
log char;
begin
usr := sys_context('USERENV','SESSION_USER');
ip := sys_context('USERENV','IP_ADDRESS');
i := instr(ip,'.');
ip1 := lpad(substr(ip,1,i),4,'0');
ip2 := substr(ip,i+1,length(ip)-i);
i := instr(ip2,'.');
ip1 := ip1||lpad(substr(ip2,1,i),4,'0');
ip2 := substr(ip2,i+1,length(ip2)-i);
i := instr(ip2,'.');
ip1 := ip1||lpad(substr(ip2,1,i),4,'0');
ip2 := substr(ip2,i+1,length(ip2)-i);
ip1 := ip1||lpad(ip2,3,'0');
select max( LOG_ENABLED ) into log
from DBCONFIG.LOGON_IPCONFIG
where STATE = 'A'
and USERNAME = usr
and LOGON_ENABLED = 'Y'
and ip1 between STARTIP and nvl(ENDIP,STARTIP)
and sysdate between EFF_DATE and EXP_DATE
and not exists
(
select 1 from DBCONFIG.LOGON_IPCONFIG
where STATE = 'A'
and USERNAME = usr
and LOGON_ENABLED = 'N'
and ip1 between STARTIP and nvl(ENDIP,STARTIP)
and sysdate between EFF_DATE and EXP_DATE
);
if log is null then
raise_application_error(-20069,'YOUR IP WAS REFUSED.');
end if;
if log = 'Y' then
insert into DBCONFIG.LOGON_HISTORY
select DBCONFIG.LOGON_SEQ.NEXTVAL,
SID,SERIAL#,AUDSID,USERNAME,SERVER,
SCHEMANAME,OSUSER,MACHINE,TERMINAL,PROGRAM,
ip,LOGON_TIME
from v$session
where audsid = userenv('sessionid')
and LOGON_TIME = sysdate;
end if;
end;
/
CREATE OR REPLACE TRIGGER logoff_audit
Before LOGOFF ON DATABASE
BEGIN
NULL;
END;
select * from DBCONFIG.LOGON_HISTORY
select * from dbconfig.logon_ipconfig for update
drop table dbconfig.logon_ipconfig
相關推薦
ORACLE如何限制ip段登入和登入之後記錄資訊
CREATE USER DBCONFIG IDENTIFIED BY "DBCONFIG" GRANT UNLIMITED TABLESPACE TO DBCONFIG / ALTER USER DBCONFIG ACCOUNT LOCK / CREATE TABLE D
nginx 限制ip併發數和限制速度
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
微信小程式中使用者登入和登入態維護
提供使用者登入以及維護使用者的登入狀態,是一個擁有使用者系統的軟體應用普遍需要做的事情。像微信這樣的一個社交平臺,如果做一個小程式應用,我們可能很少會去做一個完全脫離和捨棄連線使用者資訊的純工具軟體。讓使用者登入,標識使用者和獲取使用者資訊,以使用者為核心提供服務,是大部分小程式都會做的事情。我們今天就來了解
Oracle限制ip連線設定
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521)) STATUS of the LISTENER ———————— Alias LISTENER Version TNSLSNR for Linux: Version 10.2.0.1.0 – Pro
利用apache限制IP併發數和下載流量控制
一,為什麼要對IP併發數,下載流量進行控制 說正題之前,先給大家講個故事,那是在2007年,我進了一家公司,當時我們正在給達芙妮做電子商務網,www.idaphne.com。從三月份開始做的吧,九月份正式上線,上線後沒多長時間,有一天伺服器老是死,後來查了一下,一個IP
設定Oracle用IP遠端連線和客戶端訪問
要想將oracle設定為多使用者可遠端訪問,須進行以下設定: 1、路徑:D:\app\Administrator\product\11.1.0\db_1\NETWORK\ADMIN\listener.ora,將其內容設定為如下: LISTENER = (DESCR
12、微信授權登入和拉取使用者資訊
注:在微信公眾號請求使用者網頁授權之前,開發者需要先到公眾平臺官網中的“開發 - 介面許可權 - 網頁服務 - 網頁帳號 - 網頁授權獲取使用者基本資訊”的配置選項中,修改授權回撥域名。請注意,這裡填寫的是域名(是一個字串),而不是URL,因此請勿加 htt
Apache限制IP併發數和流量控制
轉自:http://www.cszhi.com/20120512/apache-mod_bandwidth-mod_limitipconn.html 使用mod_limitipconn模組限制IP併發連線數 安裝: wget http://dominia.org/dja
java鬼混筆記:shiro 11、唯一登入和登入退出Bug
完整的專案下載路徑(專案下載網上的hui框架來著,什麼鬼檔案都在裡面,暫清除,所以很多): http://download.csdn.net/download/u013845177/9992748 相關的lib包路徑: http://download.csdn.net/do
ORACLE限制IP連線
在 D:\oracle\product\10.2.0\db_1\network\ADMIN\oraname.ora檔案 最後加入如下內容,然後重啟監聽,重啟後稍等幾分鐘 #是否開啟登陸節點檢查(客戶端IP檢查<yes/no>) tcp.validnode_ch
關於限制同一個IP訪問頻率和限制使用者登入時候輸錯密碼次數限制(超過即限制)
一:關於限制同一IP的基本的思路 spring action請求頻率限制(不能限制靜態資源的請求) 限制同一ip在一定時間內, 對server請求的次數. 由ip第一次請求來做為時間點, 將時間,請求次數快取到redis.1. 第一次請求(redis中無快取記錄), 初始化
mysql 新增使用者並授權訪問指定資料庫,同時限制登入為指定IP段
記錄下以備查。 create user 'user'@'192.168.104.%' identified by '******'; create database database; grant a
CentOS 下SSH限制IP和使用者登入
CentOS 下設定SSH只允許特定使用者從特定的IP登入,其它未經允許的使用者和IP都不能登入。 演示環境 192.168.1.81:CentOS 6 192.168.0.222:Win 10 192.168.1.135:Win 8.1 未做任何設定時192.16
執行登入觸發器(sql server 2016限制IP訪問)後,登入sql server報錯: 由於執行觸發器,登入失敗已將資料庫上下文更改為master。解決方法:用cmd執行刪除登入觸發器
背景: 在cmd中執行osql命令: osql -S 【資料庫伺服器】 -E -i mysql.sql 其中mysql.sql內容如下: CREATE LOGIN test WITH PASSWORD = '輸入密碼' GO
Linux 禁止Root遠端登入,限制IP登入
1.禁止root遠端登入 vi /etc/ssh/sshd_config PermitRootLogin yes改為PermitRootLogin no 重啟sshd服務 service sshd restart 2.Centos7 ssh和vsftp限制IP
oracle登入和使用者的切換
1.登入OracleSqlplus 使用者名稱/密碼Sqlplus 使用者名稱/密碼@全域性資料區的唯一表示(SID)2.修改密碼(1) 輸入sqlplus(2) 在輸入使用者名稱:sqlplus/as sysdba(3) 在輸入密碼:直接回車(4) 使用SQL語句修改
Android APP首次登入和之後自動登入流程
App登陸儲存資料流程App因為要實現自動登陸功能,所以必然要儲存一些憑據,所以比較複雜。 App登陸要實現的功能: 密碼不會明文儲存,並且不能反編繹解密; 在伺服器端可以控制App端的登陸有效性,防止
linux禁ping與限制ip登入
以root進入linux系統,然後編輯檔案icmp_echo_ignore_all vi /proc/sys/net/ipv4/icmp_echo_ignore_all 將其值改為1後為禁止PING 將其值改為0後為解除禁止PING 我的LNUX也不是很好希望大家以後多
資料庫 Oracle限制SYSDBA許可權類使用者遠端登入
參考步驟: (1).oracle使用者登入系統。 (2).sqlplus / as sysdba登陸資料庫。 (3).執行alter system set REMOTE_LOGIN_PASSWORDFILE=NONE SCOPE=SPFILE; (4).shutdown im
登入和退出Oracle資料庫的命令
登入命令:/u/ainet-> psql -U scncraft A=>select * from *** A=>insert into *** values() 一些基本操作的語法還是差不多的額麼。 退出命令 相信很多小白都不太知道這兩條命令,反正我