[20141105]不同使用者訪問oracle資料庫.txt
[20141105]不同使用者訪問oracle資料庫.txt
--我們有一臺機器,上面安裝了兩個資料庫,字符集不一樣。要訪問和操作是要切換ORACLE_SID以及NLS_LANG環境變數。
--非常繁瑣,而且容易出錯,非常不方便。
--自己也想了幾種方式:
1.建立一個指令碼,用來切換使用者:
# cat chsid
#! /bin/bash
##############
# Desc : switch oracle sid , change sid and env NLS_LANG
######################################################
case "$1" in
dbcn1|cn1)
unset ORACLE_SID
export ORACLE_SID=dbcn1
unset NLS_LANG
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
;;
dben1|en1)
unset ORACLE_SID
export ORACLE_SID=dben1
unset NLS_LANG
export NLS_LANG=AMERICAN_AMERICA.US7ASCII
;;
*)
echo "$0 ORACLE_SID"
;;
esac
--執行時使用 . chsid en1或者source chsid en1,就可以實現切換。
--注意前面要使用一個. 或者source ,不然環境變數的修改無效,我不知道什麼往上傳環境變數(子程式到父程式傳遞環境變數,好像不行)。
2.建立一個新使用者,這樣比較科學一些,不容易出錯。
--簡單記錄一下步驟。
$ id
uid=503(oracle11g) gid=501(oinstall) groups=501(oinstall),502(dba)
--建立新使用者包含oracle的全部組。
# useradd oraen -g oinstall -G dba
[root@hisdg IP=40 ~ 6]# passwd oraen
Changing password for user oraen.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
--再修改.bash_profile環境變數,就ok了。
3.讀寫存在問題嗎?
--這個一直是我擔心的問題,測試以後不存在。
# ls -l users01.dbf
-rw-r----- 1 oracle11g oinstall 805314560 2014-11-05 02:08:11 users01.dbf
--可以發現使用者oracle11g有讀寫許可權,而組oinstall僅僅有讀許可權。sqlplus訪問執行執行DML可以嗎?測試看看。
SCOTT@test> select * from t;
ID C2
---------- --------------------
1 1
2 2
3 3
4 4
5 5
SCOTT@test> update t set id=100 where id=1;
1 row updated.
SCOTT@test> commit ;
Commit complete.
SCOTT@test> select * from t where rownum<=5;
ID C2
---------- --------------------
100 1
2 2
3 3
4 4
5 5
SCOTT@test> alter system checkpoint;
System altered.
--為什麼能成功呢?
SCOTT@test> select spid from v$process where addr in (select paddr from v$session where sid in (select sid from v$mystat where rownum=1));
SPID
------
14416
$ ps -ef
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
...
4 S root 14380 11086 0 76 0 - 17836 wait 10:08 pts/3 00:00:00 su - oraen
4 S oraen 14381 14380 0 76 0 - 14175 wait 10:08 pts/3 00:00:00 -bash
0 S oraen 14415 14381 0 76 0 - 15372 - 10:08 pts/3 00:00:00 sqlplus
0 S 503 14416 14415 0 76 0 - 453967 pipe_w 10:08 ? 00:00:00 oracletest (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
--可以發現程式號=14416的使用者503,就是oracle11g。
--注意如果使用者名稱的長度大於8位,ps 顯示UID是使用者id。oracle11g的使用者id就是503.
# id oracle11g
uid=503(oracle11g) gid=501(oinstall) groups=501(oinstall),502(dba)
$ ls -l `which oracle `
-rwsr-s--x 1 oracle11g oinstall 232272740 2013-03-21 09:02:54 /u01/app/oracle11g/product/11.2.0/db_2/bin/oracle
--可以發現執行檔案oracle帶有s許可權,這樣當使用者呼叫執行它時,可以繼承命令的uid以及gid,這樣使用者就具有了訪問資料檔案的許可權。
--unix/linux下一些管理命令都具有這樣的特性。比如修改口令的程式。
# ls -l `which passwd`
-r-s--x--x 1 root root 27728 2005-06-17 22:40:47 /usr/bin/passwd
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-1321046/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 不同使用者訪問資料--current schema
- Oracle資料庫訪問控制Oracle資料庫
- Oracle資料庫限制訪問IPOracle資料庫
- 如何限制ip訪問Oracle資料庫Oracle資料庫
- Oracle資料庫訪問效能優化Oracle資料庫優化
- 【方法】如何限定IP訪問Oracle資料庫Oracle資料庫
- 如何限定IP訪問Oracle資料庫-轉Oracle資料庫
- 禁止某個IP訪問Oracle資料庫Oracle資料庫
- Java Spring中同時訪問多種不同資料庫JavaSpring資料庫
- Oracle透明閘道器訪問SQLServer資料庫OracleSQLServer資料庫
- Oracle透明閘道器訪問MySQL資料庫OracleMySql資料庫
- JDBC資料庫訪問JDBC資料庫
- Oracle資料鏈+同義詞+訪問遠端資料庫Oracle資料庫
- MySQL新增使用者以及資料庫訪問授權MySql資料庫
- ubuntu下python通過sqlalchemy庫訪問oracle資料庫UbuntuPythonSQLOracle資料庫
- 觸發器限制指定IP訪問oracle資料庫觸發器Oracle資料庫
- Oracle資料庫訪問限制繞過漏洞 解決Oracle資料庫
- Windows 下JDBC 訪問Oracle11g 資料庫WindowsJDBCOracle資料庫
- 異構資料庫訪問資料庫
- 不同Oracle資料庫之間的資料同步Oracle資料庫
- jboss訪問資料庫的問題資料庫
- 同步整合不同系統、不同資料庫中資料的問題資料庫
- 使用Oracle Net實現限制特定IP訪問資料庫Oracle資料庫
- Oracle,SqlServer,Access資料庫通用訪問類設計(轉)OracleSQLServer資料庫
- 【磐維資料庫】Oracle(透明閘道器)訪問磐維資料庫(PanWeiDB)資料庫Oracle
- oracle資料庫調優描述(三).txtOracle資料庫
- oracle資料庫調優描述(五).txtOracle資料庫
- oracle資料庫調優描述(二).txtOracle資料庫
- oracle資料庫調優描述(一).txtOracle資料庫
- oracle資料庫使用sqlldr命令匯入txt資料Oracle資料庫SQL
- 不同資料庫間傳遞資料的問題資料庫
- 外網訪問MySQL資料庫MySql資料庫
- C#訪問MySQL資料庫C#MySql資料庫
- C#訪問SQLite資料庫C#SQLite資料庫
- 訪問HyperSQL資料庫的方法SQL資料庫
- 限制特定IP訪問資料庫資料庫
- 資料庫如何處理大資料訪問資料庫大資料
- 求助:資料庫併發訪問問題資料庫