总结
根据路线图上的重点去进行有针对性的学习,在学习过程中,学会写笔记,做总结。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
这里分享一些前端学习笔记:
-
html5 / css3 学习笔记
-
JavaScript 学习笔记
-
Vue 学习笔记
- 导入/导出时提供了非常细粒度的对象控制。通过
Include、Exclude
两个参数,甚至可以详细制定是否包含或不包含某个对象。
二、什么是Directory对象
Directory
对象是Oracle10g
版本提供的一个新功能。他是一个指向,指向了操作系统中的一个路径。每个Directory都包含 Read,Write两个权限,可以通过Grant命令授权给指定的用户或角色。拥有读写权限的用户就可以读写该Directory对象指定的操作系统路径下的文件。
- 除了使用
network_link
参数意外,expdp
生成的文件都是在服务器上(Directory指定的位置)
2.1 如何调用
- 命令行方式
最简单的调用,但是写的参数有限,建议使用参数文件的方式。 - 参数文件方式
最常用的方式。通常需要先编写一个参数文件。指定导出时需要的各种参数。然后以如下方式调用。
expdp user/pwd parfile=xxx.par
这个xxx.par即是编辑的参数文件。注意,在这个命令行后面,同样可以再跟别的参数, 甚至是在par参数文件中指定过的参数。
如果执行命令中附加的参数与参数文件中的参数有重复,最终采用哪个参数,会以参数最后出现的位置而定。如:expdp user/pwd parfile=xxx.par logfile=a.log
,如果在参数文件中也指定了logfile,这里会以命令行中的logfile为准;如:expdp user/pwd logfile=a.log parfile=xxx.par
,而这个,则会以参数文件中的为准,因为parfile=xxx.par写在命令行的后面。
- 交互方式
Data Pump
导入导出任务支持停止,重启等状态操作。如用户执行导入或者导出任务,执行了一半时,使用Crtl+C中断了任务(或其他原因导致的中断),此时任务并不是被取消,而是被转移到后台。可以再次使用expdp/impdp命令,附加attach参数的方式重新连接到中断的任务中,并选择后续的操作。 这就是交互方式。
2.2 什么是attach参数
每执行一个导入,或者导出,在命令的第一行,会有以下信息:
Starting “BAM”.”SYS_EXPORT_SCHEMA_01″:bam/\*\*\*\*\*\*\*\* parfile=expdp_tbs.par
这个SYS_EXPORT_SCHEMA_01
就是我们的attach参数。
三、操作模式
- 全库模式
导入或者导出整个数据库,对应impdp/expdp
命令中的full参数,只有拥有dba或者exp_full_database
和imp_full_database
权限的用户才能执行。 - Schema模式
导出或导入Schema下的自有对象,对应impdp/expdp
命令中的Schema参数,这是默认的操作模式。 如果拥有dba或者exp_full_database
和imp_full_database
权限的用户执行的话,就可以导出或导入多个Schema
中的对象。 - 表模式
导出指定的表或者表分区(如果有分区的话)以及依赖该表的对象(如该表的索引,约束等,不过前提是这些对象在同一个Schema
中,或者执行的用户有相应的权限)。对应impdp/expdp
命令中的Table参数。 - 表空间模式
导出指定的表空间中的内容。对应impdp/expdp
中的Tablespaces
参数,这种模式类似于表模式和 Schema模式的补充。 - 传输表空间模式
对应impdp/expdp
中的Transport_tablespaces
参数。这种模式与前面几种模式最显著的区别是生成的Dump文件中并不包含具体的逻辑数据,而只导出相关对象的元数据(即对象的定义,可以理解成表的创建语句),逻辑数据仍然在表空间的数据文件中,导出时需要将元数据和数据文件同时复制到目标端服务器。这种导出方式效率很高,时间开销主要是花在复制数据文件产生的I/O上。expdp执行传输表空间模式的导出,用户必须 拥有 exp_full_database角色或者DBA角色。而通过传输表空间模式导入时,用户必须拥有imp_full_database角色或者DBA角 色。 - 过滤数据
过滤数据主要依赖于Query和Sample两个参数。其中Sample参数主要针对expdp导出功能。 - Query
与exp命令中的Query功能类似,不过Expdp中,该参数功能得到了增强,控制的粒度更细。Expdp中的Query也是指定类似where语句来限定记录。语法如下:
Query = [Schema.][Table_name:] Query_clause
默认情况如果不指定Schema.table_name
,则Query_clause
针对所有导出的表有效,或者你可以为每一个表指定不同的Query_clause
,如:导出a表中所有id<5的记录,导出b表中所有name=’a’的记录,则Query的参数应该如下:
Query=A:”Where id<5″,B:”Where name=’a’”
如果Where
条件前没有指定Schema
名或者表名的话,默认就是针对当前所有要被导出的表。如:Query=Where id <5
注⚠️: 建议把Query参数放入到参数文件中使用,以避免转义符带来的麻烦。
- Sample
该参数用来指定导出数据的百分比,可指定的值的范围从0.000001到99.999999,语法如下:
Sample=[[Schema_name.]Table_name:]sample_percent
指定该参数以后,EXPDP导出将自动控制导出的记录量,如导出A表中50%的记录,设置的Sample参数如下:
Sample=A:50
注: Sample_percent指定的值只是一个参考值,EXPDP会根据数据量算出一个近似值。
四、过滤对象
过滤对象主要依赖于Include和Exclude两个参数。这两个参数作用正好相反,在这两个参数中,可以指定你知道的任何对象类型(如:Package、Procedure、Table等等)或者对象名称(支持通配符)。
- Exclude 反规则
指定不被包含的对象类型或者对象名称。指定了该参数以后,指定的对象类型对应的所有对象都不会被导入或导出。 如果被排除的对象有依赖的对象,那么其依赖的对象也不会被导入或导出。如:通过Exclude参数指定不导出表对象的话,不仅指定的表不会被导出,连这些表关联的Index、Check等都不会被导出。
注: 建议把Exclude参数放入到参数文件中使用,以避免转义符带来的麻烦。
- Include 正规则
与Exclude
正好相反。指定包含的对象类型或者对象名称。
注⚠️: 由于两个参数功能正好相反,因此在执行导入或导出命令时,两个参数不能同时使用,否则Oracle也不知道你想要干什么。
exclude/include
参数用法:
EXCLUDE=[object_type]:[name_clause],[object_type]:[name_clause] --排出特定对象
INCLUDE=[object_type]:[name_clause],[object_type]:[name_clause] --包含特定对象
object_type
子句用于指定对象的类型,如table,sequence,view,procedure,package
等等
name_clause
子句可以为SQL表达式用于过滤特定的对象名字。它由SQL操作符以及对象名(可使用通配符)来过滤指定对象类型中的特定对象。
当未指定name_clause
,而仅仅指定object_type
则所有该类型的对象都将被过滤或筛选。多个[object_type]:[name_clause]中间以逗号分割。
示例:
expdp <other_parameters> SCHEMAS=scott EXCLUDE=SEQUENCE,TABLE:"IN ('EMP','DEPT')"
impdp <other_parameters> SCHEMAS=scott INCLUDE=PACKAGE,FUNCTION,PROCEDURE,TABLE:"='EMP'"
常用的过滤SQL表达式
EXCLUDE=SEQUENCE,VIEW --过滤所有的SEQUENCE,VIEW
EXCLUDE=TABLE:"IN ('EMP','DEPT')" --过滤表对象EMP,DEPT
EXCLUDE=SEQUENCE,VIEW,TABLE:"IN ('EMP','DEPT')" --过滤所有的SEQUENCE,VIEW以及表对象EMP,DEPT
EXCLUDE=INDEX:"= 'INDX\_NAME'" --过滤指定的索引对象INDX\_NAME
INCLUDE=PROCEDURE:"LIKE 'PROC\_U%'" --包含以PROC\_U开头的所有存储过程(\_ 符号代表任意单个字符)
INCLUDE=TABLE:"> 'E' " --包含大于字符E的所有表对象`
直接将过滤操作符封装到参数文件中,如下面的例子
Parameter file:exp_scott.par
DIRECTORY = dump_scott
DUMPFILE = exp_scott_%U.dmp
LOGFILE = exp_scott.log
SCHEMAS = scott
PARALLEL= 2
EXCLUDE = TABLE:"IN ('EMP', 'DEPT')"
命令行下转义符的处理
Windows平台:
D:\> expdp system/manager DIRECTORY=my_dir DUMPFILE=exp_tab.dmp LOGFILE=exp_tab.log SCHEMAS=scott
INCLUDE=TABLE:\"IN ('EMP', 'DEPT')\"
在Windows平台下,需要对象双引号进行转义,使用转义符\
Unix平台:
在未使用parfile文件的情形下,所有的符号都需要进行转义,包括括号,双引号,单引号等
expdp system/manager DIRECTORY=my_dir DUMPFILE=exp_tab.dmp LOGFILE=exp_tab.log SCHEMAS=scott
INCLUDE=TABLE:\"IN \(\'EMP\', \'DEP\'\)\"
exclude/include常见的错误
任意需要转义的字符如果未转义或转义错误,都会产生ORA错误。下面给出几种常见的ORA错误。
- ORA-39001: invalid argument value
- ORA-39071: Value for INCLUDE is badly formed.
- ORA-00936: missing expression
- ORA-39071: Value for EXCLUDE is badly formed.
- ORA-00904: “DEPT”: invalid identifier
- ORA-39041: Filter “INCLUDE” either identifies all object types or no object types.
- ORA-39041: Filter “EXCLUDE” either identifies all object types or no object types
- ORA-39038: Object path “USER” is not supported for TABLE jobs.
五、高级过滤
在导出/导入的时候,我们常常有这样的需求,只想导出/导入表结构,或者只想导出/导入数据。幸运的是数据泵也提供了该功能。使用 Content参数。该参数有三个属性
ALL
: 导出/导入对象定义和数据,该参数的默认值就是ALLDATA_ONLY
: 只导出/导入数据。METADATA_ONLY
: 只导出/导入对象定义。
注: 有一点值得注意的是,在执行导出的时候,如果使用了高级过滤,如只导出了数据,那么导入时,需要确保数据定义已经存在。否则数据都变成没有主子了。如果数据定义已经存在,导入时最好指定data_only,否则会触发ORA-39151错误,因为对象已经存在了。
5.1 过滤已经存在的数据
ajax
1)ajax请求的原理/ 手写一个ajax请求?
2)readyState?
3)ajax异步与同步的区别?
4)ajax传递中文用什么方法?
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
ajax
1)ajax请求的原理/ 手写一个ajax请求?
2)readyState?
3)ajax异步与同步的区别?
4)ajax传递中文用什么方法?
[外链图片转存中…(img-L9e64IRR-1715650587751)]
[外链图片转存中…(img-oRdaHtxl-1715650587753)]