最近的工作中总结了一些小技巧,利用这些小技巧,可以在平时的工作中促进效率,但是其实这些小技巧说实在话,还是对数据库的安全性有一定的影响。
1.在9i中,或者说在8i,9i,10gR1中,dblink的用户密码被以明文的形式保留在link$表中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
test@ORADG(192.168.190.241)> create database link to_oralocal connect to test identified by test using 'oralocal'; Database link created. Elapsed: 00:00:00.93 test@ORADG(192.168.190.241)> test@ORADG(192.168.190.241)> sys@ORADG(192.168.190.241)> l 1* select userid,password,host from link$ sys@ORADG(192.168.190.241)> / USERID PASSWORD HOST -------------------- ------------------------------------------------------------ -------------------- TEST TEST oralocal Elapsed: 00:00:00.09 sys@ORADG(192.168.190.241)> |
2.没有用户密码,用dba用户也可以直接操作该用户的表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
sys@ORADG(192.168.190.241)> sys@ORADG(192.168.190.241)> sys@ORADG(192.168.190.241)> create table test.tb_test tablespace tools as select * from dba_users; Table created. Elapsed: 00:00:02.66 sys@ORADG(192.168.190.241)> sys@ORADG(192.168.190.241)> sys@ORADG(192.168.190.241)> desc tb_test ERROR: ORA-04043: object tb_test does not exist sys@ORADG(192.168.190.241)> sys@ORADG(192.168.190.241)> sys@ORADG(192.168.190.241)> alter session set current_schema=test; Session altered. Elapsed: 00:00:00.04 sys@ORADG(192.168.190.241)> sys@ORADG(192.168.190.241)> desc tb_test Name Null? Type ----------------------------------------------------- -------- ------------------------------------ USERNAME NOT NULL VARCHAR2(30) USER_ID NOT NULL NUMBER PASSWORD VARCHAR2(30) ACCOUNT_STATUS NOT NULL VARCHAR2(32) LOCK_DATE DATE EXPIRY_DATE DATE DEFAULT_TABLESPACE NOT NULL VARCHAR2(30) TEMPORARY_TABLESPACE NOT NULL VARCHAR2(30) CREATED NOT NULL DATE PROFILE NOT NULL VARCHAR2(30) INITIAL_RSRC_CONSUMER_GROUP VARCHAR2(30) EXTERNAL_NAME VARCHAR2(4000) sys@ORADG(192.168.190.241)> |
这个操作比较适合不想建synonym只是临时用来对数据的操作上。注意alter session之后,是否对schema的表有操作权限取决于你之前登录的用户,之前登录的用户需要对当前schema的用户的表有操作权限。
2条评论
确实不错
不过咋发现的?
跟踪还是碰巧?
alter session set current_schema 这个在用有dba权限的用户去imp数据时,imp到其他用户下,在imp的日志中就可以看到。
不过测试过alter session set current_schema后 创建dblink这种对象不行。
但是按用户导出导入时居然dblink能建起来