当前位置:  数据库>其它
本页文章导读:
    ▪Oracle基础——第二章 SQL语言基础      本章目标   数据类型 SQL语句类型介绍 SELECT基础 数据类型   1.        数据类型 a)        数据类型是在设计表结构中需要定义的,选择.........
    ▪Oracle Data Pump 工具系列:Data Pump 使用权限配置详解      一、Data Pump 的概念: Oracle Data Pump 技术可以非常快速地将一个数据库的数据与元数据迁移到另一个数据库。 Oracle Data Pump 由三大独一无二的部分构成: 1. 命令行客户端:expdp 和 impdp 2. DBMS_DA.........
    ▪Oracle兵器谱上古神器之-KFED      如其名是个比较internal的工具,并不被Oracle官方文档对外支持,算是属于常规兵器谱外的工具。KFED主要用来编辑和修复ASM metadata,可以在DG没有mount的情况下使用,因此在ASM无法启动、DG无法mou.........

[1]Oracle基础——第二章 SQL语言基础
    来源: 互联网  发布时间: 2013-11-07
本章目标

 

数据类型

SQL语句类型介绍

SELECT基础

数据类型

 

1.        数据类型

a)        数据类型是在设计表结构中需要定义的,选择适当的数据类型可以节省存储空间,提高运算效率。

b)        Oracle数据类型主要包括字符型、数据型、日期/时间型、大对象(LOB)型等

2.        字符型

3.        数值型

 

4.        日期/时间类型

 

5.        大对象(LOB)类型

 

 

 

SQL语句类型介绍

 

1.        SQL语句类型

a)        数据操纵语言DML (Data Manipulation Language)

                        i.              用于操作数据

                      ii.              如:insert into,update,delete

b)        数据定义语言DDL (Data Definition Language)

                        i.              用于创建对象

                      ii.              如:create table ,alter table,drop table,create view;

c)        数据控制语言DCL (Data Control Language)

                        i.              用于访问权限的控制

                      ii.              如revoke,grant,commit,rollback

2.        SELECT语句

a)        SELECT语句的基本语法

SELECT 子句

FROM 子句

[WHERE 子句]

b)        说明

                        i.              SELECT 子句:指定查询结果集的列的组成,列表中的列可以来自一个或多个表或视图

                      ii.              FROM 子句:指定要查询的一个或多个表或视图

                    iii.              WHERE 子句:指定查询的条件

3.        相关说明

a)        在本课程中,关键字、子句和语句定义如下:

b)        关键字

                        i.              是指单个的SQL元素。

                      ii.              例如,SELECT和FROM都是关键字

c)        子句

                        i.              是SQL语句的一部分。

                      ii.              例如,SELECT employee_id,last_name,…就是一个子句

d)  &nbs

    
[2]Oracle Data Pump 工具系列:Data Pump 使用权限配置详解
    来源: 互联网  发布时间: 2013-11-07
一、Data Pump 的概念:
Oracle Data Pump 技术可以非常快速地将一个数据库的数据与元数据迁移到另一个数据库。
Oracle Data Pump 由三大独一无二的部分构成:


1. 命令行客户端:expdp 和 impdp
2. DBMS_DATAPUMP PL/SQL 包(也称为 Data Pump API)
3. DBMS_METADATA PL/SQL 包(也称为 Metadata API)


与传统的基于客户端的 Export/Import 工具相比,Data Pump 是一种基于服务器的实用工具。
Oracle Data Pump 与 Export/Import 的功能并不兼容。


Oracle Data Pump 还可以使用 NETWORK_LINK 功能,在无需 dump 文件的情况下,在两个数据库
之间利用网络技术从远程数据库迁移数据和元数据。


二、Data Pump 实用工具的安装与配置


用户需要一定的权限才能运行 Data Pump。在 Oracle 10g 或更高版本运行 Export DataPump 或
Import DataPump job 所需的最低权限要求如下:
- 系统权限 CREATE SESSION (或 CONNECT 角色) 
- 系统权限 CREATE TABLE 
- 对象权限 对某个有效 directory 对象的读写权限 (CREATE DIRECTORY privilege with which a valid directory object was created) 
- 对用户的默认表空间需要足够的表空间配额(需要创建 DataPump job 所使用的主抽样表)。


此外,Data Pump 还需要 EXP_FULL_DATABASE 角色来执行以下任务:
- 运行全库 Export DataPump 作业 
- 运行传输表空间 Export DataPump 作业
- 运行带有 TRACE 参数的 Export DataPump 作业
- 运行导出其他 schema 的 Export DataPump 作业


注意,上述权限要求适用于链接数据库运行 Export DataPump 或 Import DataPump 作业的用户,而非被导出或导入的用户


这些权限既可以通过显式的方式授予也可以通过角色来授予,方法如下:


CONNECT system/manager
CREATE DIRECTORY my_dir AS 'full_pre_existing_directory_path_here';
 GRANT create session, create table TO scott IDENTIFIED BY tiger;
 GRANT read, write ON DIRECTORY my_dir TO scott;
 ALTER USER scott QUOTA unlimited ON users; 
 
或者:


CONNECT system/manager
 CREATE DIRECTORY my_dir AS 'full_pre_existing_directory_path_here>>';
 CREATE ROLE expdp_role;
 GRANT create session, create table TO expdp_role;
 GRANT read, write ON DIRECTORY my_dir TO expdp_role;
 GRANT expdp_role TO scott;
 ALTER USER scott DEFAULT ROLE all;
 ALTER USER scott QUOTA unlimited ON users;


特权用户:


特权用户是指具有执行 Export DataPump 作业的 EXP_FULL_DATABASE 角色和执行
 Import DataPump 作业的 IMP_FULL_DATABASE 或者包含这两种角色的 DBA 角色:
SET lines 80  
COL privilege FOR a40  
SELECT grantee, granted_role, default_role  
FROM dba_role_privs  
WHERE granted_role IN ('DBA', 'EXP_FULL_DATABASE', 'IMP_FULL_DATABASE')  
ORDER BY 1,2; 
 
GRANTEE              GRANTED_ROLE                   DEF 
-------------------- ------------------------------ --- 
DBA                  EXP_FULL_DATABASE              YES 
DBA                  IMP_FULL_DATABASE              YES 
SCOTT                EXP_FULL_DATABASE              YES 
SCOTT                IMP_FULL_DATABASE              YES 
SYS                  DBA                            YES 
SYS                  EXP_FULL_DATABASE              YES 
SYS                  IMP_FULL_DATABASE              YES 
SYSMAN               DBA                            YES 
SYSTEM               DBA                            YES


使用 DataPump LOGFILE 参数可以将正在进行、已完成的工作以及遇到的错误相关的消息全部写入一个日志文件。
在检查 Data Pump 问题时应首先查看该日志文件。


也可以指定未证实公开的 METRICS=y 参数在该日志文件中记录额外的对象数量以及所花时间相关的信息。


日志文件中报告的错误消息并不意味着 Data Pump 作业执行失败 。有些消息报告的只是警告信息和通知信息。例如,
有关对象已存在和被跳过的信息。在出现这种情况时,可以it过调整 IMPDP 目录参数来重建这些对象或者往这些已
存在的对象附加数据。




与 DataPump job 权限相关的实用sql脚本


--查看连接数据库执行 DataPump job 的用户是否具有 CREATE SESSION 和 CREATE TABLE 权限
SET lines 80 pages 50 
COL privilege FOR a40 
SELECT grantee, privilege  
  FROM dba_sys_privs  
 WHERE (grantee IN ('SCOTT', 'PUBLIC')  
        OR grantee IN (SELECT granted_role FROM dba_role_privs  
                        WHERE grantee IN ('SCOTT', 'PUBLIC')))  
   AND privilege IN ('CREATE SESSION', 'CREATE TABLE')  
 ORDER BY 1,2;   


GRANTEE                        PRIVILEGE 
------------------------------ ---------------------------------------- 
SCOTT                          CREATE SESSION 
SCOTT                          CREATE TABLE 




--查看链接数据库运行 DataPump job 的用户所授予的角色及其默认角色


SET lines 80 
SELECT grantee, granted_role, default_role  
  FROM dba_role_privs  
 WHERE grantee IN ('SCOTT', 'PUBLIC') ORDER BY 1,2;   


GRANTEE                        GRANTED_ROLE                   DEF 
------------------------------ ------------------------------ --- 
SCOTT                          EXP_FULL_DATABASE              YES 
SCOTT                          IMP_FULL_DATABASE              YES 




查询连接数据库运行 DataPump job 的用户所授予的 directory 权限


SET lines 100 
COL privilege FOR a10 
COL grantee FOR a20 
COL owner FOR a20 
SELECT p.grantee, p.privilege, p.owner, d.directory_name  
  FROM dba_tab_privs p, dba_directories d  
 WHERE p.table_name=d.directory_name  
   AND (grantee IN ('SCOTT', 'PUBLIC')  
        OR grantee IN (SELECT granted_role FROM dba_role_privs  
                        WHERE grantee IN ('SCOTT', 'PUBLIC')))  
 ORDER BY 4,3,2;   


GRANTEE              PRIVILEGE  OWNER                DIRECTORY_NAME 
-------------------- ---------- -------------------- ---------------------- 
IMP_FULL_DATABASE    READ       SYS                  DATA_PUMP_DIR 
EXP_FULL_DATABASE    READ       SYS                  DATA_PUMP_DIR 
EXP_FULL_DATABASE    WRITE      SYS                  DATA_PUMP_DIR 
IMP_FULL_DATABASE    WRITE      SYS                  DATA_PUMP_DIR 
SCOTT                READ       SYS                  MY_DIR 
SCOTT                WRITE      SYS                  MY_DIR 




--查看连接数据库运行 DataPump job 的用户的默认表空间


SET lines 80 
SELECT username, default_tablespace  
  FROM dba_users WHERE username IN ('SCOTT');   


USERNAME                       DEFAULT_TABLESPACE 
------------------------------ ------------------------------&nbs
    
[3]Oracle兵器谱上古神器之-KFED
    来源: 互联网  发布时间: 2013-11-07
如其名是个比较internal的工具,并不被Oracle官方文档对外支持,算是属于常规兵器谱外的工具。KFED主要用来编辑和修复ASM metadata,可以在DG没有mount的情况下使用,因此在ASM无法启动、DG无法mount的时候可以尝试使用这个利器。
在10G中默认KFED是没有现成可以使用的,但是我们可以手工编译它。
0. 编译KFED
我们可以使用make -f $ORACLE_HOME/rdbms/lib/ins_rdbms.mk ikfed命令来编译它,记得要在lib目录下执行编译:
[oracle@gtser1 ~]$ which kfed
/usr/bin/which: no kfed in (/home/oracle/bin:/u01/oracle/10g/product/10.2.0/db_1/bin:/usr/bin:/usr/ccs/bin:/etc:/bin:/usr/openwin/bin:/usr/local/bin:/usr/X11R6/bin:)
[oracle@gtser1 ~]$ cd $ORACLE_HOME/rdbms/lib     
[oracle@gtser1 lib]$ make -f ins_rdbms.mk ikfed                       

Linking KFED utility (kfed)
rm -f /u01/oracle/10g/product/10.2.0/db_1/rdbms/lib/kfed
gcc -o /u01/oracle/10g/product/10.2.0/db_1/rdbms/lib/kfed -L/u01/oracle/10g/product/10.2.0/db_1/rdbms/lib/ -L/u01/oracle/10g/product/10.2.0/db_1/lib/ -L/u01/oracle/10g/product/10.2.0/db_1/lib/stubs/  /u01/oracle/10g/product/10.2.0/db_1/lib/s0main.o /u01/oracle/10g/product/10.2.0/db_1/rdbms/lib/sskfeded.o /u01/oracle/10g/product/10.2.0/db_1/rdbms/lib/skfedpt.o  /u01/oracle/10g/product/10.2.0/db_1/rdbms/lib/defopt.o -ldbtools10 -lclntsh  `cat /u01/oracle/10g/product/10.2.0/db_1/lib/ldflags`    -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /u01/oracle/10g/product/10.2.0/db_1/lib/ldflags`    -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lclient10 -lnnetd10  -lvsn10 -lcommon10 -lgeneric10 -lmm -lsnls10 -lnls10  -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 `cat /u01/oracle/10g/product/10.2.0/db_1/lib/ldflags`    -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lnro10 `cat /u01/oracle/10g/product/10.2.0/db_1/lib/ldflags`    -lnsslb10 -lncrypt10 -lnsgr10 -lnzjs10 -ln10 -lnnz10 -lnl10 -lclient10 -lnnetd10  -lvsn10 -lcommon10 -lgeneric10   -lsnls10 -lnls10  -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10 -lclient10 -lnnetd10  -lvsn10 -lcommon10 -lgeneric10 -lsnls10 -lnls10  -lcore10 -lsnls10 -lnls10 -lcore10 -lsnls10 -lnls10 -lxml10 -lcore10 -lunls10 -lsnls10 -lnls10 -lcore10 -lnls10   `cat /u01/oracle/10g/product/10.2.0/db_1/lib/sysliblist` -Wl,-rpath,/u01/oracle/10g/product/10.2.0/db_1/lib -lm    `cat /u01/oracle/10g/product/10.2.0/db_1/lib/sysliblist` -ldl -lm   -L/u01/oracle/10g/product/10.2.0/db_1/lib
mv -f /u01/oracle/10g/product/10.2.0/db_1/bin/kfed /u01/oracle/10g/product/10.2.0/db_1/bin/kfedO
mv /u01/oracle/10g/product/10.2.0/db_1/rdbms/lib/kfed /u01/oracle/10g/product/10.2.0/db_1/bin/kfed
chmod 751 /u01/oracle/10g/product/10.2.0/db_1/bin/kfed
[oracle@gtser1 lib]$ which kfed
/u01/oracle/10g/product/10.2.0/db_1/bin/kfed
这样我们就完成了KFED工具编译,接下来就可以正常使用它了。
1. 使用KFED命令
KFED提供了哪些命令选项呢?我们看下帮助选项就知道了。
[oracle@gtser1 lib]$ kfed -help
as/mlib         ASM Library [asmlib='lib']
aun/um          AU number to examine or update [AUNUM=number]
aus/z           Allocation Unit size in bytes [AUSZ=number]
blkn/um         Block number to examine or update [BLKNUM=number]
blks/z          Metadata block size in bytes [BLKSZ=number]
ch/ksum         Update checksum before each write [CHKSUM=YES/NO]
cn/t            Count of AUs to process [CNT=number]
d/ev            ASM device to examine or update [DEV=string]
o/p             KFED operation type [OP=READ/WRITE/MERGE/REPAIR/NEW/FORM/FIND/STRUCT]
p/rovnm         Name for provisioning purposes [PROVNM=string]
s/eek           AU number to seek to [SEEK=number]
te/xt           File name for translated block text [TEXT=string]
ty/pe           ASM metadata block type number [TYPE=number]
2. KFED查看header信息
这个工具可以在ASM没有启动的情况下使用,因此我们就关闭ASM验证下到底可不可以。
[oracle@gtser1 lib]$ export ORACLE_SID=+ASM
[oracle@gtser1 lib]$ sqlplus "/as sysdba"

SQL*Plus: Release 10.2.0.5.0 - Production on Sat Mar 2 16:24:14 2013

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate;
ASM diskgroups dismounted
ASM instance shutdown
SQL> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
在10.2.0.5版本之前header信息是没有额外保护的,而且header信息非常容易损坏,好在之后版本做了额外的备份保护,我们后面会描述到。
使用KFED查看header信息:
[oracle@gtser1 lib]$ kfed read /dev/raw/raw1
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                            1 ; 0x002: KFBTYP_DISKHEAD--表示这是HEAD数据信息
kfbh.datfmt:                          1 ; 0x003: 0x01
kfbh.block.blk:                       0 ; 0x004: T=0 NUMB=0x0
kfbh.block.obj:              2147483648 ; 0x008: TYPE=0x8 NUMB=0x0
kfbh.check:                  3544975665 ; 0x00c: 0xd34c0931
kfbh.fcn.base:                       48 ; 0x010: 0x00000030
kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000
kfbh.spare1:                          0 ; 0x018: 0x00000000
kfbh.spare2:                          0 ; 0x01c: 0x00000000
kfdhdb.driver.provstr:         ORCLDISK ; 0x000: length=8
kfdhdb.driver.reserved[0]:            0 ; 0x008: 0x00000000
kfdhdb.driver.reserved[1]:            0 ; 0x00c: 0x00000000
kfdhdb.driver.reserved[2]:            0 ; 0x010: 0x00000000
kfdhdb.driver.reserved[3]:            0 ; 0x014: 0x00000000
kfdhdb.driver.reserved[4]:            0 ; 0x018: 0x00000000
kfdhdb.driver.reserved[5]:            0 ; 0x01c: 0x00000000
kfdhdb.compat:                168820736 ; 0x020: 0x0a100000
kfdhdb.dsknum:                        0 ; 0x024: 0x0000--disk号
kfdhdb.grptyp:                        1 ; 0x026: KFDGTP_EXTERNAL--DG冗余类型
kfdhdb.hdrsts:                        3 ; 0x027: KFDHDR_MEMBER--disk status信息
kfdhdb.dskname:                   DISK1 ; 0x028: length=5--disk name
kfdhdb.grpname:                  DATA01 ; 0x048: length=6--dg name
    
最新技术文章:
▪gc buffer busy/gcs log flush sync与log file sync    ▪让你的PL/SQL更好用    ▪ADO.NET中的非脱机数据库查询
▪参数job_queue_processes与Oracle jobs    ▪11gR2游标共享新特性带来的一些问题以及_cursor...    ▪_library_cache_advice和latch:shared pool、latch:shared poo...
▪SQL: Date Utility    ▪DB2 分区表增加分区    ▪DB2第一步 — 创建表
▪oracle 数据库    ▪插入10万条记录测试    ▪rebuild index VS. rebuild index online
▪如何处理undo tablespace 表空间太大的问题    ▪ado执行存储过程中包含结果集获取输出参数为...    ▪oracle函数的demo
▪Entity Framework 学习建议及自学资源    ▪存储过程的编写    ▪Linux/Unix shell 自动发送AWR report(二)
▪第二章 Oracle恢复内部原理(基础数据结构)    ▪Redis源码学习之【Tcp Socket封装】    ▪Java Jdbc减少与Oracle之间交互提升批量处理性能...
▪南大通用GBase8a Vs Oracle11g 单机测试亲测    ▪oracle 中行列转换    ▪rhel下安装oracle10g+asm---测试环境搭建
▪Redis系列-主从复制配置    ▪MySQL索引与查询优化    ▪INDEX受到NULL值的影响
▪测试人员的SQL语言 系列    ▪SQL数据库基本语句    ▪MySQL Replication常见错误整理[持续更新...]
▪eclipse下建立esper的demo    ▪把oracle rac 转化为单机数据库    ▪Redis系列-存储篇sorted set主要操作函数小结
▪基本的SQL*Plus报表和命令    ▪druid简单教程    ▪11g调度--scheduler使用
▪EF基础一    ▪db2存储过程中循环语句while do的continue有没有...    ▪oracle 创建DBLINK
▪DB2数据库备份还原    ▪Warning: prerequisite DBD::mysql 1 not found错误解决方...    ▪innotop性能监视mysql,innodb工具
▪数据迁移:DataGuard配置    ▪QX项目实战-19.跨库数据同步    ▪Mysql EXPLAIN
▪Oracle 11g AWR 系列七:Active Session History (ASH) 报...    ▪Oracle 11G新特性(共36个)    ▪父子节点问题
▪OEM简介及按钮乱码问题    ▪NoSql之MongoDB的常用类管理    ▪ORA-39700: database must be opened with UPGRADE option
▪node.js 访问redis数据库,pub/sub    ▪使用DBMS_REDEFINITION在线重定义分区表    ▪SQL Developer 使用问题与解决方法汇总
▪oralce 11g dataguard 概念    ▪ORA-30004 错误处理    ▪oracle分组函数rollup,cube
▪Sql Developer 使用问题与解决方法汇总    ▪Configure Oracle Dataguard Primary-ASM to Physical-ASM    ▪Oracle Data Guard 理论知识
▪Control File 恢复    ▪Oracle数据文件收缩    ▪Oracle 11g AWR 系列五:如何生成 AWR 报告?
▪Wireshark数据包分析实战(第2版)    ▪MySql用户权限控制    ▪db2和oracle查询序列区别
▪更新blob字段的存储过程    ▪MySQLReport分析报告三    ▪DB2中的序列
▪Oracle中DBMS_RANDOM.STRING 的用法    ▪SQL SERVER无法安装成功,sqlstp.log文件提示[未发...    ▪Data Guard 部署物理备库的 10 大注意事项
▪万能数据库查询分析器使用技巧之(九)    ▪SQL 自定义Split函数    ▪视图 v$sql,v$sqlarea,$sqltext,v$sqltext_with_newlines 的...
▪Data Guard Standby_archive_dest 和 Log_archive_dest_n 的...    ▪机房收费系统数据库设计(一)    ▪利用putty的SSH tunnel连接Oracle
▪DBCA建库偶遇ORA-27125    ▪使用PowerPivot建立简单的分析模型    ▪Linux/Unix shell 自动发送AWR report
▪写入到blob字段的存储过程    ▪关于JDBC中ResultSet接口的一点细节探究    ▪Data Guard 配置 Standby Redo Log
▪linux下redis的安装    ▪windows下redis的安装    ▪手动创建数据库步骤(简单翻译官方文档)
▪Ubuntu安装Mongodb    ▪SQL CLR应用    ▪redis的配置文件参数--详细说明
 


站内导航:


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

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

浙ICP备11055608号-3