当前位置:  数据库>oracle
本页文章导读:
    ▪Oracle收集用户的权限      【使用场景】系统上线前准备工作。一般迁移数据的时候经常使用导入dump文件的方法。由于是一个一个用户导入进去的,所以在导入过程中会报权限问题的错误(可以忽略),还必须在生产.........
    ▪PL/SQL DEVELOPER 使用小技巧      1,登录后默认自动选中My Objects 默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wait几秒钟,而选择My Objects后响应速率则.........
    ▪Oracle 11g存在用户失效及锁定问题      1. 用户失效问题上次安装一个铁路系统的过程中,发现Oracle 11g数据库存在用户失效日期;查阅相关oracle资料,确实存在此方面的问题。【原因/触发因素】确定是由于oracle11g中默认在default概要.........

[1]Oracle收集用户的权限
    来源:    发布时间: 2013-10-29

【使用场景】系统上线前准备工作。一般迁移数据的时候经常使用导入dump文件的方法。由于是一个一个用户导入进去的,所以在导入过程中会报权限问题的错误(可以忽略),还必须在生产库授权系统才能正常工作。使用下面的脚本可以得到授权语句。

在UAT环境执行select语句,在生产环境执行grant语句,根据实际用户做相应的修改。

注意:查询的用户需要有查看dba_开头数据字典的权限,否则报出表或者视图不存在。

SELECT 'GRANT ' || T1.GRANTED_ROLE || ' TO ' || T1.GRANTEE || ';' AS TEXT

FROM DBA_ROLE_PRIVS T1

WHERE T1.GRANTEE IN ('ABOQ',

'AMLM',

'BOP',

'CREDIT',

'DATACORE',

'MDR2',

'METABASE',

'METABASE_CREDIT',

'REPORT',

'UPRR',

'WORK')

UNION ALL

SELECT 'GRANT ' || T2.PRIVILEGE || ' TO ' || T2.GRANTEE || ';' AS TEXT

FROM DBA_SYS_PRIVS T2

WHERE T2.GRANTEE IN ('ABOQ',

'AMLM',

'BOP',

'CREDIT',

'DATACORE',

'MDR2',

'METABASE',

'METABASE_CREDIT',

'REPORT',

'UPRR',

'WORK')

UNION ALL

SELECT 'GRANT ' || T3.PRIVILEGE || ' ON ' || T3.OWNER || '.' ||

T3.TABLE_NAME || ' TO ' || T3.GRANTEE || ';' AS TEXT

FROM DBA_TAB_PRIVS T3

WHERE T3.GRANTEE IN ('ABOQ',

'AMLM',

'BOP',

'CREDIT',

'DATACORE',

'MDR2',

'METABASE',

'METABASE_CREDIT',

'REPORT',

'UPRR',

'WORK');

这样写比较死板,使用‘&’替换变量也很不好用,可以建立一个存储过程。

create or replace procedure user_priv(username in varchar2) as
  cursor v_cur  is
    SELECT 'GRANT ' || T1.GRANTED_ROLE || ' TO ' || T1.GRANTEE || ';' AS TEXT
      FROM DBA_ROLE_PRIVS T1
     where T1.grantee = upper(username)
    union all
    SELECT 'GRANT ' || T2.PRIVILEGE || ' TO ' || T2.GRANTEE || ';' AS TEXT
      FROM DBA_SYS_PRIVS T2
     WHERE T2.GRANTEE = upper(username)
    union all
    SELECT 'GRANT ' || T3.PRIVILEGE || ' ON ' || T3.OWNER || '.' ||
           T3.TABLE_NAME || ' TO ' || T3.GRANTEE || ';' AS TEXT
      FROM DBA_TAB_PRIVS T3
     where T3.grantee = upper(username);
/*select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee=upper(username) );如果有必要可-以收集角色中的权限*/

begin
  for v_t in v_cur loop
    begin
      dbms_output.put_line(v_t.TEXT);
    end;
  end loop;
end;

最后直接运行procedure即可  execute user_priv (username => 'hr');

如果遇到输出文本问题请参考:http://blog.csdn.net/u010033674/article/details/8744629

http://www.cnblogs.com/AlbertCQY/archive/2013/03/31/2992497.html

 

 

 

 

 

本文链接


    
[2]PL/SQL DEVELOPER 使用小技巧
    来源:    发布时间: 2013-10-29

1,登录后默认自动选中My Objects
默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wait几秒钟,而选择My Objects后响应速率则是以毫秒计算的。
Tools菜单 --> Object Brower Filters,会打开Brower Folders的定单窗口,把“My Objects”设为默认即可。
Tools菜单--> Object Brower Folders,中把你经常点的几个目录(比如:Tables Views Seq Functions Procedures)移得靠上一点,并加上颜色区分,这样你的平均寻表时间会大大缩短,试试看。
/*设置方法:Tools菜单--Brower Folders,会打开Brower Folders的定单窗口,把“My Objects”移到最顶端即可。
同理,可以把你经常点的几个目录(比如:tables Views Seq Functions Procedures)移得靠上一点,并加上颜色区分,这样你的平均寻表时间会大大缩短,试试看。*/
2,记住密码
这是个有争议的功能,因为记住密码会给带来数据安全的问题。
但假如是开发用的库,密码甚至可以和用户名相同,每次输入密码实在没什么意义,可以考虑让PLSQL Developer记住密码。
位置:Tools菜单--Preferences--Oracle--Logon HIstory--Store with password
3,双击即显示表数据
PLSQL Developer里鼠标双击表或者视图时的默认响应实在让我感到失望,因为我最关心的是表结构和数据,但是双击后这两件事情都没有发生,也许默认响应是高手们需要的,但对我来说查看数据和表结构是最主要的,其他的我不关心。
不过好的是这是可以设置的,你可以给鼠标双击和拖放绑定需要的事件,比如:双击编辑数据,拖放显示表结构,Yeah!
位置:Preferences--User Interface,在右侧,为不同的Object type绑定双击和拖放操作。
4,SQL语句字符全部大写
自认为这是个好习惯,信息系统的核心是数据库,系统出问题时最先要查的就是SQL语句,怎样在浩瀚的日志中快速找到那条SQL语句是件比较痛苦的事情。
SQL语句全部大写并不能彻底解决这一问题,但在一堆代码中间找一行全部大写的字符相对容易些,你的眼睛会感谢你。
设置位置在Editor里。同时我觉得等宽字符可以减少程序的出错率,所以我所有的工具清一色用Courier New,如果某个IDE不支持这个字体,我基本上会选择放弃。哈,偶系个满挑惕的家伙。
5,特殊Copy
在SQL Window里写好的SQL语句通常需要放到Java或者别的语言内,就需要转成字符串并上加上相应的连字符,这一个事不需要再重复做了,在写好的SQL上点右键,使用特殊Copy即OK!
6,自定义快捷键
PLSQL Developer里预留了很多键让用户自定义,这是件很Hight的事情。不像霸道的Word,基本上所有的键都已预定义了功能,修改起来很是头疼。
通常情况下,打开PLSQL Developer后,最经常干的事就是打开SQL Window和Command Window,就给这两个操作定义了快捷键,ALT+S和ALT+ C,这样拿鼠标点三下的事情只需要按一下键。
7,其他
快速清空表,TRUNCATE TABLE,右键里可以找到。
没搞清楚的两个功能:Analyze、VALID
7、SQL Window中根据光标位置自动选择语句
设置方法:Preferences --> Window Types --> SQL Window,将AutoSelect statement选中即可。注意,每条语句后面要加分号。
补充:
8、启动PLSQL Developer,window list菜单自动调出
需要两步设置,首先要保存桌面设置,然后勾上Window list选项,具体操作如下:
a、在菜单项的Tools下的Preference选项中的User Interface中选择Option,在右边对于的Autosave desktop中把前面的复选框勾选上。
b、在菜单项的Tools下的Window list选项勾上。
9、格式化SQL(format)
当大家拿到一段较长的SQL语句时,想快速查看其中的逻辑,可以放在这个工具里,进行格式化,语句的逻辑也就一目了然了
10、数据库自动检测连接情况
因为数据库每过一段时间不操作,就会自动断开,然后需要自己手动连接,因为网络原因,总会卡在那里。工具提供了检测连接的功能,可以自动连接。
具体设置在Tools-Preferences-Check connection,Check connection前面勾选即可。
11、常用的快捷键
其实这些在第6项中都提到,下面是我的习惯设置:
ctrl+tab 切换windows窗口(或者alt+left/right)
alt + n 创建新sql window
alt + c 关闭当前窗口

alt + f 格式化sql

再次补充:

1、右键菜单

在PL/SQL Developer(下面简称PLD)中的每一个文本编辑窗口,如SQL Window,Command Window和Porgram Window,右键点击某个对象名称,会弹出一个包含操作对象命令的菜单,我们这里称之为右键菜单。

对象类型可以是表,视图,同义词,存储过程和函数等。根据对象类型的不同,弹出的菜单也有区别。表和视图有View, Edit, Rename, Drop, Query data 和Edit data等功能。View和Edit分别是查看和修改表的结构信息,如字段,主键,索引和约束等。Query data相当于新打开一个窗口,并执行select * from 表。Edit data相当于新打开一个窗口,并执行select * from 表 for update。存储过程和函数有Test功能,选中后可以进入调试状态。有时由于PLD识别错误,右键点击对象并不能出来正确的菜单,可以在对象所在的DDL或DML语句的前面,加上分号,这样PLD就能正确的判断出对象的类型

2、Select for Update

有时我们需要把一些数据导入数据库中,如果用UE拼Insert语句,会比较麻烦,而且操作性不强。PLD的SQL Window可以查询,新增,修改和删除表的内容。查询自不必说,而新增,删除和修改,只需在select语句后加入for update,对表进行行级锁定,然后点击窗口的锁型图标,即可进入编辑状态。下面介绍一下如何从Excel中提取文本插入到数据库中我们的Excel文件中有三列:在数据库中建立临时表:create table t1 (cino varchar2(100), contno varchar2(100), loanno varchar2(100))然后在SQL Window中输入select t1 for update,并点击锁型鼠标,进入编辑状态:用鼠标点击第一行的输入窗口,这时PLD会死锁几秒钟,然后可以见到光标在第一行的输入框中闪动,用鼠标把CINO, CONTNO, LOANNO选中:进入Excel中,把需要插入数据库的内容选中,然后切换到PLD,按Ctrl + V:点击√,然后再点击Commit按钮,则数据提交到表t1中,执行select * from t1可以看到内容:

3、PL/SQL Beautifier(PL/SQL 美化器)

PLD 6以上版本有对DML代码格式化的功能。在SQL Window或Program Window中选中部分代码(如果不选则对整个窗口的代码操作),在菜单中选Edit -> PL/SQL Beautifier,得到格式化的代码。对于非法的DML语句或DDL语句,PLD将会在下方状态栏提示PL/SQL Beautifier could not parse text。在缺省的状态下,PLD会把DML语句的每一个字段都排在单独的一行,这样不方便查看。在菜单中选Edit à PL/SQL Beautifier Options,进入Preferences窗口,选择Edit,进入配置文件编辑界面:在标签栏选DML,在窗口中部的Select, Insert和Update组框中把Fit选中,然后点击Save,把配置文件保存到PLD的安装目录下,点击Close关闭。在Rules file中输入配置文件所在位置,点击OK,完成配置文件切换。这时再对代码进行格式化,就可以使每一个字段尽可能的在一行上了。

4、TNS Names

菜单Help à Support Info à TNS Names,可以查看Oracle的tnsnames.ora。

5、Copy to Excel

在SQL Window中执行Select语句,在结果出来以后,右键点击下面的数据区,选择Copy to Excel,可以把数据区的记录原样拷贝到Excel中。但有两点需要注意:一,field中不能以=开始,否则Excel会误认为是函数;二,数字不要超过17位,否则后面的位数将会置为0,但可以通过在数字前加‘来使Excel认为该field是文本,同时对于数据库中Numbe类型的字段,最好用to_char输出,不然可能会显示不正常

6、PL/SQL Developer记住登陆密码

在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码;

设置方法:PL/SQL Developer 7.1.2 ->tools->Preferences->Oracle->Logon History , “Store history”是默认勾选的,勾上“Store with password” 即可,重新登录在输入一次密码则记住了。(我的好像不行哦)

7、执行单条SQL语句

在使用PL/SQL Developer的SQL Window时,按F8键,PL/SQL Developer默认是执行该窗口的所有SQL语句,需要设置为鼠标所在的那条SQL语句,即执行当前SQL语句;

设置方法:PL/SQL Developer 7.1.2 -->tools->Preferences-->Window types ,勾上“AutoSelect Statement” 即可。

7、格式化SQL语句

在使用PL/SQL Developer的SQL Window时,有时候输入的SQL语句太长或太乱,希望能用比较通用的写法格式话一下,这样看起来会好看

    
[3]Oracle 11g存在用户失效及锁定问题
    来源:    发布时间: 2013-10-29
1. 用户失效问题
上次安装一个铁路系统的过程中,发现Oracle 11g数据库存在用户失效日期;查阅相关oracle资料,确实存在此方面的问题。
【原因/触发因素】
确定是由于oracle11g中默认在default概要文件中设置了“PASSWORD_LIFE_TIME=180天”所导致。
【影响和风险】
密码过期后,业务进程连接数据库异常,影响业务使用。
数据库密码过期后,业务进程一旦重启会提示连接失败。
【解决方案】
按照如下步骤进行操作:
1、查看用户的proifle是哪个,一般是default:
sql>SELECT username,PROFILE FROM dba_users;
2、查看指定概要文件(如default)的密码有效期设置:
sql>SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
3、将密码有效期由默认的180天修改成“无限制”:
sql>ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
修改之后不需要重启动数据库,会立即生效。
4、修改后,已经被提示的帐户必须再改一次密码,举例如下:
$sqlplus / as sysdba
sql> alter user smsc identified by <原来的密码> ----不用换新密码
oracle11g启动参数resource_limit无论设置为false还是true,密码有效期都是生效的,所以必须通过以上方式进行修改。以上的帐户名请根据实际使用的帐户名更改。
 
    
最新技术文章:
▪current online redo log缺失后的恢复
▪ORA-600 2662错误解决实例
▪ORA-00600 2662错误解决方法
▪Oracle Hidden Parameter:_allow_resetlogs_corruption
▪Oracle诊断事件列表
▪Oracle 隐含参数 _disable_logging 详解
▪ORA-00600 [2662]错误解决过程
▪Oracle里常见的执行计划
▪Oracle里另外一些典型的执行计划
▪Oracle服务器自动备份
▪Oracle固定SQL的执行计划(一)---SQL Profile
▪Oracle固定SQL的执行计划(二)---SPM
▪同一环境下新建Standby RAC库
▪Oracle快速克隆安装
▪Oracle单实例启动多个实例
▪Oracle的PLSQL别名中文出现乱码解决方法
▪ORA-00379: no free buffers available in buffer pool DEFAULT ...
▪RMAN-06023: no backup or copy of datafile 16 found to restor...
▪RMAN还原数据库报错问题解决案例
▪OEL6.8_X86平台部署Oracle 10gR2检测失败问题
▪Oracle 性能优化建议
▪Oracle SQL语句优化心得
▪Oracle慢SQL监控脚本实现
▪Oracle dblink 查询 tns:无法解析指定的连接标识...
▪Red Hat Enterprise Linux 6使用udev配置Oracle ASM总结...
▪Linux6.6及以上版本配置Oracle ASM共享储存-UDEV
▪Oracle 12C 开启数据库归档模式
▪Solairs系统中配置Oracle 12c 开机启动
▪重建DBMS_STATS解决ORA-31626 ORA-21633以及ORA-04063 ORA...
▪Oracle ASMM 与AMM之间相互切换
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3