- 浏览: 272799 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
Java_zhou:
...
Oracle自定义函数 -
wmj007:
SELECT USER_TAB_COLS.TABLE_NAME ...
Oracle 查询字段详细信息 -
avi9111:
怎么可以个人有一个MQ? 咁威的
使用c#操作IBM WebSphere MQ -
chouchouzzj:
8个小时。。。让我想起了世界时和北京时之间的差距,MQ存在时区 ...
使用c#操作IBM WebSphere MQ
对于DBA来说,一切可以简化操作的尝试都要被鼓励。这里提供两种快速得到Oracle授权语句的脚本。
第一种方法:可以通过SQL从一些数据字典中查询到授权信息,生成授权语句:
undefine user_name
set pagesize 1000
select 'grant '||tt.granted_role||' to '||tt.grantee||';' as SQL_text
from dba_role_privs tt where tt.grantee=(upper('&&user_name'))
union all
select 'grant '||tt.privilege||' to '||tt.grantee||';'
from dba_sys_privs tt where tt.grantee=(upper('&&user_name'))
union all
select 'grant '||tt.privilege||' on '||owner||'.'||table_name||' to '||tt.grantee||';'
from dba_tab_privs tt where tt.grantee=(upper('&&user_name'))
union all
select 'alter user '||tt.user_name||' quota '||maxblocks*blocksize||' on '||ts_name||';'
from KU$_TSQUOTA_VIEW tt where tt.user_name=(upper('&&user_name'));
使用效果如下:
sys@ora10g> undefine user_name
sys@ora10g> set pagesize 1000
sys@ora10g> select 'grant '||tt.granted_role||' to '||tt.grantee||';' as SQL_text
2 from dba_role_privs tt where tt.grantee=(upper('&&user_name'))
3 union all
4 select 'grant '||tt.privilege||' to '||tt.grantee||';'
5 from dba_sys_privs tt where tt.grantee=(upper('&&user_name'))
6 union all
7 select 'grant '||tt.privilege||' on '||owner||'.'||table_name||' to '||tt.grantee||';'
8 from dba_tab_privs tt where tt.grantee=(upper('&&user_name'))
9 union all
10 select 'alter user '||tt.user_name||' quota '||maxblocks*blocksize||' on '||ts_name||';'
11 from KU$_TSQUOTA_VIEW tt where tt.user_name=(upper('&&user_name'));
Enter value for user_name: sec
old 2: from dba_role_privs tt where tt.grantee=(upper('&&user_name'))
new 2: from dba_role_privs tt where tt.grantee=(upper('sec'))
old 5: from dba_sys_privs tt where tt.grantee=(upper('&&user_name'))
new 5: from dba_sys_privs tt where tt.grantee=(upper('sec'))
old 8: from dba_tab_privs tt where tt.grantee=(upper('&&user_name'))
new 8: from dba_tab_privs tt where tt.grantee=(upper('sec'))
old 11: from KU$_TSQUOTA_VIEW tt where tt.user_name=(upper('&&user_name'))
new 11: from KU$_TSQUOTA_VIEW tt where tt.user_name=(upper('sec'))
SQL_TEXT
---------------------------------------
grant DBA to SEC;
grant UNLIMITED TABLESPACE to SEC;
grant WRITE on SYS.DIR1 to SEC;
grant READ on SYS.DIR1 to SEC;
grant READ on SYS.dir2 to SEC;
grant WRITE on SYS.dir2 to SEC;
6 rows selected.
第二种方法:通过Oracle提供的dbms_metadata包,获得更加详细准确的创建用户以及授权的DDL语句:
set serveroutput on size 1000000
set verify off
undefine user_name
declare
v_name varchar2(30) := upper('&user_name');
no_grant exception;
pragma exception_init( no_grant, -31608 );
begin
dbms_metadata.set_transform_param(dbms_metadata.SESSION_TRANSFORM, 'SQLTERMINATOR', TRUE);
dbms_output.enable(1000000);
dbms_output.put_line(dbms_metadata.get_ddl('USER',v_name));
begin
dbms_output.put_line(dbms_metadata.get_granted_ddl('SYSTEM_GRANT',v_name));
exception
when no_grant then dbms_output.put_line('-- No system privs granted');
end;
begin
dbms_output.put_line(dbms_metadata.get_granted_ddl('ROLE_GRANT',v_name));
exception
when no_grant then dbms_output.put_line('-- No role privs granted');
end;
begin
dbms_output.put_line(dbms_metadata.get_granted_ddl('OBJECT_GRANT',v_name));
exception
when no_grant then dbms_output.put_line('-- No object privs granted');
end;
begin
dbms_output.put_line(dbms_metadata.get_granted_ddl('TABLESPACE_QUOTA',v_name));
exception
when no_grant then dbms_output.put_line('-- No tablespace quota specified');
end;
dbms_output.put_line(dbms_metadata.get_granted_ddl('DEFAULT_ROLE', v_name ));
exception
when others then
if SQLCODE = -31603 then dbms_output.put_line('-- User does not exists');
else raise;
end if;
end;
/
使用过程如下:
sys@ora10g> set serveroutput on size 1000000
sys@ora10g> set verify off
sys@ora10g> undefine user_name
sys@ora10g> declare
2 v_name varchar2(30) := upper('&user_name');
3 no_grant exception;
4 pragma exception_init( no_grant, -31608 );
5 begin
6 dbms_metadata.set_transform_param(dbms_metadata.SESSION_TRANSFORM, 'SQLTERMINATOR', TRUE);
7 dbms_output.enable(1000000);
8 dbms_output.put_line(dbms_metadata.get_ddl('USER',v_name));
9 begin
10 dbms_output.put_line(dbms_metadata.get_granted_ddl('SYSTEM_GRANT',v_name));
11 exception
12 when no_grant then dbms_output.put_line('-- No system privs granted');
13 end;
14 begin
15 dbms_output.put_line(dbms_metadata.get_granted_ddl('ROLE_GRANT',v_name));
16 exception
17 when no_grant then dbms_output.put_line('-- No role privs granted');
18 end;
19 begin
20 dbms_output.put_line(dbms_metadata.get_granted_ddl('OBJECT_GRANT',v_name));
21 exception
22 when no_grant then dbms_output.put_line('-- No object privs granted');
23 end;
24 begin
25 dbms_output.put_line(dbms_metadata.get_granted_ddl('TABLESPACE_QUOTA',v_name));
26 exception
27 when no_grant then dbms_output.put_line('-- No tablespace quota specified');
28 end;
29 dbms_output.put_line(dbms_metadata.get_granted_ddl('DEFAULT_ROLE', v_name ));
30 exception
31 when others then
32 if SQLCODE = -31603 then dbms_output.put_line('-- User does not exists');
33 else raise;
34 end if;
35 end;
36 /
Enter value for user_name: sec
CREATE USER "SEC" IDENTIFIED BY VALUES '9EC74A4FC0A9E227'
DEFAULT TABLESPACE "TBS_SEC_D"
TEMPORARY TABLESPACE
"TEMP";
GRANT UNLIMITED TABLESPACE TO "SEC";
GRANT "DBA" TO "SEC";
GRANT READ ON DIRECTORY "DIR1" TO "SEC" WITH GRANT OPTION;
GRANT WRITE ON DIRECTORY "DIR1" TO "SEC" WITH GRANT OPTION;
GRANT WRITE ON DIRECTORY "dir2" TO "SEC" WITH GRANT OPTION;
GRANT READ ON DIRECTORY "dir2" TO "SEC" WITH GRANT OPTION;
-- No tablespace quota specified
ALTER USER "SEC" DEFAULT ROLE ALL;
PL/SQL procedure successfully completed.
鼓励任何形式的自动化尝试,这才是DBA的真正价值的体现。
-- The End --
发表评论
-
wrap加密oracle包
2011-03-08 17:15 1764大家都知道oracle的很多系统包是没法看它的源码的,orac ... -
oracle导出和导入
2009-11-26 15:41 675<script type="text/java ... -
oracle 新手注意事项
2009-11-26 17:52 6581. 删除表的注意事项 ... -
Oracle随机函数的取法
2009-11-26 23:54 901简单得说,通过dbms_random包调用随机数的方法大致有4 ... -
oracle for in loop 两例
2009-11-27 15:43 0for in loop 壹:1、搭建环境create tabl ... -
oracle索引整理
2009-11-27 23:01 0一, oracle的索引陷阱一个表中有几百万条数据,对某个字 ... -
Oracle 绑定变量的用法
2009-12-01 15:42 01.让Oracle自己绑定变量set serverout on ... -
sql语句收集
2010-02-09 12:02 01. wm_concat函数也来打擂台使用场景:简单的将一列的 ... -
Oracle 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数)
2010-02-24 09:04 0<script type="text/java ... -
oracle for in loop 两例
2009-11-27 15:43 2316for in loop 壹:1、搭建环境create tabl ... -
oracle索引整理
2009-11-27 23:01 716一, oracle的索引陷阱一个表中有几百万条数据,对某个字 ... -
Oracle 绑定变量的用法
2009-12-01 15:42 8141.让Oracle自己绑定变量set serverout on ... -
sql语句收集
2010-02-09 12:02 9101. wm_concat函数也来打擂台使用场景:简单的将一列的 ... -
Oracle 函数大全(字符串函数,数学函数,日期函数,逻辑运算函数,其他函数)
2010-02-24 09:04 840<script type="text/java ... -
Oracle自定义函数
2010-05-11 17:06 5064特价手机话费充值,亏本充值,淘宝店铺 http://t ... -
dbms_metadata.get_ddl的用法
2010-05-20 09:57 1321dbms_metadata包中的get_ddl函数 <s ...
相关推荐
Oracle提供了两种主要的数据导入导出工具:`EXPDP` 和 `IMPDP`,它们分别是 `EXP` 和 `IMP` 的增强版,支持更多特性如并行处理、压缩等,但本文将主要聚焦于传统的 `EXP` 和 `IMP` 命令。 ### 导出(Export) ####...
Oracle提供了两种主要的导出工具:`expdp`和`exp`。其中,`exp`是较早版本的导出工具,在Oracle 10g及以前的版本中广泛使用;而`expdp`则是在Oracle 10g引入的新一代导出工具,具有更高的性能和更多的特性。本文将...
为了实现Oracle 11g数据库在SUSE下的自动化备份,我们可以利用SUSE自带的任务计划程序Cron来定期执行备份脚本。下面将详细介绍整个过程: 1. **环境准备**:确保Oracle 11g已经在SUSE上正确安装并配置完毕。 2. **...
Oracle Grants Accounting User’s Guide Release 11i 是一本专为使用Oracle数据库系统进行政府和非营利组织财务管理和会计操作的用户编写的指南。这本指南旨在帮助用户理解和掌握Oracle Grants Accounting模块的...
本文将深入探讨Oracle笔记中的几个关键概念:导出、导入、创建用户、授权以及使用INSERT语句和ROWNUM。 1. 导出(Export)与导入(Import): Oracle提供了数据泵(Data Pump)工具用于数据的导出和导入,它极大地...
### Oracle常用语句知识点 #### 一、用户管理 **创建用户:** ```sql CREATE USER ơkcyg2 IDENTIFIED BY 롰kcyg; ``` 此语句用于创建一个新用户`ơkcyg2`,并设置其密码为`롤kcyg`。在实际操作中,用户名和密码...
综上所述,通过编写备份脚本、配置定时任务以及实施有效的监控机制,可以轻松实现Oracle数据库的自动化备份。这不仅能够提高数据库管理效率,还能有效降低数据丢失的风险,是数据库管理员不可或缺的一项技能。
MySql 中有三种注释方式,而 Oracle 只有两种。 10. 字符函数 MySql 中的 DATE_FORMAT 函数相当于 Oracle 中的 TO_CHAR 函数。MySql 中的 STR_TO_DATE 函数相当于 Oracle 中的 TO_DATE 函数。 11. 回车符、换行符...
Oracle Grants Proposal Implementation Guide Release 11i Part No. A85
在本例中,"oracle的exp备份脚本.bat"很可能是用于自动化这个过程的批处理文件,它可能包含了执行EXP命令的必要参数。 3. **EXP命令格式**: 命令的基本结构如下: ``` exp [username/password@database] file=...
SQL Scripts to Generate Scripts Chapter 12 Backing Up and Recovering the Database What Are the Backup Options? What’s New for Oracle8? What Are the Recovery Options? Chapter 13 Using the Oracle...
本文将详细介绍如何设置Oracle数据库的自动备份方法,以确保数据能够在意外发生时得到及时恢复。 #### 二、自动备份方案概述 为了实现Oracle数据库的自动备份,我们可以利用系统自带的任务计划功能配合自定义脚本...
### Oracle 数据文件导入语句详解 #### 一、概述 Oracle 数据库的导入导出功能是数据库管理中非常重要的组成部分,它提供了灵活高效的方式来进行数据迁移、备份与恢复等工作。在给定的文件中,主要关注的是通过 `...
3. 性能监视工具:如Oracle Enterprise Manager Cloud Control,提供图形化的数据库监控和管理界面。 总结,Oracle初学者应从基础理论入手,逐步熟悉Oracle的各项操作,同时不断实践,加深理解。随着经验的积累,你...
在 Windows 系统中,通过编写批处理脚本来自动化数据库操作是一种高效的方法。 ##### 执行 SQL 脚本 - **`C:\A.BAT: SQLPLUS "SYS/MANAGER AS SYSDBA" @B.BAT`**:调用 SQL*Plus 执行 B.BAT 文件中的命令。 - **`C:...
ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup ...
Oracle批处理文件是用于自动化数据库备份和恢复过程的脚本,尤其在大型企业环境中,确保数据的安全和可恢复性至关重要。以下是对Oracle批处理文件及其相关知识点的详细说明: 1. **Oracle EXP导出功能**: Oracle ...
Oracle 中有两种模式:归档模式和非归档模式。查看归档模式可以使用 Archive log list 命令。要修改归档模式,首先需要关闭数据库,使用 Shutdown immediate 命令,然后在 Mount 数据库,使用 Startup mount 命令...
本方案介绍了一种在Windows环境下使用批处理脚本配合Oracle的EXP导出工具以及Windows的任务计划程序实现Oracle数据库自动备份的方法。这种方法简单有效,能够根据日期自动创建并管理备份文件,支持不同时间粒度(如...