统计信息-外部表-快速装载-DBLINK-审计
单项简单应用
统计信息 DBMS_STATS 包 3
1、GATHER_TABLE_STATS 3
2、COLUMN_STATS_SHOW 3
3、TABLE_STATS_SHOW 3
4、INDEX_STATS_SHOW 4
5、GATHER_INDEX_STATS 4
6、GATHER_SCHEMA_STATS 4
7、DELETE_TABLE_STATS 4
8、DELETE_SCHEMA_STATS 4
9、DELETE_INDEX_STATS 5
10、DELETE_COLUMN_STATS 5
11、UPDATE_ALL_STATS 5
外部表 5
1、数据文件 dept_w.txt 5
2、控制文件 dept_w.ctl 6
3、不使用控制文件创建外部表 7
快速装载 8
1、编辑数据文件 dept_w.txt 8
2、编写控制文件 9
3、创建表 9
4、快速加载数据 9
5、快速装载导出 10
DBLINK 10
审计 11
启动审计功能 11
审计日志及存储表 13
审计日志存放在操作系统文件中 14
根据设定的参数,收集表,表中的列和表上的索引的统计信息。
其中,对于表,只搜集表的总行数,总的页数,已经使用的页数等基本信息。
DBMS_STATS.GATHER_TABLE_STATS(‘SYSDBA’,‘DEPT’); --这种貌似默认收集全部统计信息了。。
貌似等同:
DBMS_STATS.GATHER_TABLE_STATS(‘SYSDBA’,‘DEPT’,‘貌似是分区’,100,FALSE,‘FOR ALL COLUMNS SIZE AUTO’);
DBMS_STATS.GATHER_TABLE_STATS(‘SYSDBA’,‘DEPT’,null,100,true,‘FOR ALL COLUMNS SIZE AUTO’);
根据模式名,表名和列名获得该列的统计信息。
返回两个结果集:一个是列的统计信息;另一个是直方图的统计信息。
DBMS_STATS.COLUMN_STATS_SHOW(‘SYSDBA’,‘DEPT’,‘ID’);
根据模式名,表名获得该表的统计信息。
DBMS_STATS.TABLE_STATS_SHOW(‘SYSDBA’,‘DEPT’);
根据模式名,索引名获得该索引的统计信息。
返回两个结果集:一个是索引的统计信息;另一个是直方图的统计信息。
DBMS_STATS.INDEX_STATS_SHOW(‘SYSDBA’,‘INDEX33555528’);
根据设定的参数,收集索引的统计信息。
DBMS_STATS.GATHER_INDEX_STATS(‘SYSDBA’,‘INDEX33555528’);
收集模式下对象的统计信息。 --慎用!!
DBMS_STATS.GATHER_SCHEMA_STATS(‘SYSDBA’);
根据设定参数,删除与表相关对象的统计信息。
DBMS_STATS.DELETE_TABLE_STATS(‘SYSDBA’,‘DEPT’);
根据设定参数,删除模式下对象的统计信息。–慎用!!
DBMS_STATS.DELETE_SCHEMA_STATS(‘SYSDBA’);
根据设定参数,删除索引的统计信息
DBMS_STATS.DELETE_INDEX_STATS(‘SYSDBA’,‘INDEX33555528’);
根据设定参数,删除列的统计信息。
DBMS_STATS.DELETE_COLUMN_STATS(‘SYSDBA’,‘DEPT’,‘ID’);
更新已有的统计信息。 --也需要慎用!!
DBMS_STATS.UPDATE_ALL_STATS();
建立外部表不会产生段,页簇等存储结构,只有与表相关的定义放在数据字典中。不需要将外部表的数据载入到数据库中来,通过sql 解码器来访问外部表。
1,AAAAA
2,BBBBB
3,DD
4,CCCC
5,FF
6,WERWRWRW
7,iiiii
8,nnnnn
9,SER
10,EWDEWRWRWRWRW
(不能使用绝对路径) —不创建控制文件也行
LOAD DATA
INFILE ‘dept_w.txt’
INTO TABLE dept_w3
FIELDS ‘,’
或者写全参数(数据文件中有表头时必须加skip参数去除)
options
(skip=1
errors=10
log=‘dept_wlog.log’
character_code=‘UTF-8’)
load data
infile ‘dept_w.txt’ str X ‘0a’
badfile ‘t_extdept.bad’
into table dept_w3
fields ‘,’
create EXTERNAL TABLE dept_w3(id int, name varchar(20))
from DEFAULT DIRECTORY EXTDIR LOCATION (‘dept_w.ctl’);
查询目录:
select * from DBA_DIRECTORIES;
grant CREATE ANY directory to dmtest;
create directory dir_data as ‘/dm8/backup/data’;
grant read, write on directory dir_data to dmtest;
CREATE OR REPLACE DIRECTORY “EXTDIR” AS ‘/opt/dmdbms/’;
CREATE EXTERNAL TABLE dept_w (id int, name varchar(20))
FROM DATAFILE DEFAULT DIRECTORY EXTDIR LOCATION (‘dept_w.txt’)
PARMS(FIELDS DELIMITED BY ‘,’ );
或者写全参数:
CREATE EXTERNAL TABLE dept_w2 (id int, name varchar(20))
FROM DATAFILE DEFAULT DIRECTORY EXTDIR LOCATION (‘dept_w.txt’)
parms (fields DELIMITED by ‘,’, records 0x0a, skip 1, character_code ‘UTF-8’);
1,AAAAA
2,BBBBB
3,DD
4,CCCC
5,FF
6,WERWRWRW
7,iiiii
8,nnnnn
9,SER
10,EWDEWRWRWRWRW
–貌似不使用也行
cat dept_ks.ctl
LOAD DATA
INFILE ‘/opt/dmdbms/dept_w.txt’
INTO TABLE dept_ks
FIELDS ‘,’
CREATE TABLE dept_ks (id int, name varchar(20));
–单引号必须转义
./dmfldr SYSDBA/SYSDBA control=’/opt/dmdbms/dept_ks.ctl’
或 --不使用控制文件
./dmfldr SYSDBA/SYSDBA data=’/opt/dmdbms/dept_w.txt’ table=‘DEPT_KS’ FIELD_SEPERATOR=’,’
或 (注不指定行分隔符上面有默认的,下面这个指定行分隔符在linux中是0a,貌似在windows中未0d0a)
./dmfldr SYSDBA/SYSDBA data=’/opt/dmdbms/dept_w.txt’ table=‘DEPT_KS’ FIELD_SEPERATOR=’,’ ROW_SEPERATOR= X ‘0a’ mode=‘in’
快速装载导出(导出需要增加 mode=‘OUT’参数)
./dmfldr SYSDBA/SYSDBA data=’/opt/dmdbms/dept_w2.txt’ table=‘DEPT’ FIELD_SEPERATOR=’,’ ROW_SEPERATOR= X ‘0a’ mode=‘out’
–推荐不使用mal创建
create or replace link “SYSDBA”.“db_jmk” connect ‘DPI’ with “SYSDBA” identified by “SYSDBA”
using ‘192.168.16.181:5238’;
select * from dept@db_jmk;
报错:
-7096: 远程操作符执行失败
select sf_get_para_value(1,‘DBLINK_OPT_FLAG’); --509
sp_set_para_value(2,‘DBLINK_OPT_FLAG’,0);
需要两步:
1、打开审计开关(貌似不需要重启数据库即可)–必须是SYSAUDITOR才可以开启及操作
sp_set_enable_audit(1); --开启普通审计 (2是开启普通审计及实时审计)
sp_set_enable_audit(0); --关闭审计
2、指定审计对象设置审计。
sp_audit_stmt(‘TABLE’,‘SYSDBA’,‘ALL’); --可以是表、试图、索引、模式等等等 --NULL不限制
sp_audit_stmt(‘TABLE’,‘NULL’,‘ALL’); --开启所有模式下表的审计
sp_noaudit_stmt(‘TABLE’,‘SYSDBA’,‘ALL’);
sp_audit_object(‘INSERT’,‘SYSDBA’,‘SYSDBA’,‘DEPT’,‘ALL’);
sp_audit_object(‘INSERT’,‘NULL’,‘HR’,‘DEPT’,‘ALL’);
sp_audit_object(‘DELETE’,‘NULL’,‘HR’,‘DEPT’,‘ALL’);
sp_noaudit_object(‘INSERT’,‘SYSDBA’,‘SYSDBA’,‘DEPT’,‘ALL’);
select * from V$AUDITRECORDS; --只能审计用户查看
查询设置了哪些审计方案:
审计信息的获取:
SELECT SF_GET_AUDIT_LEVELNAME(level) level,
SF_GET_AUDIT_TYPENAME(type) type,
SF_GET_AUDIT_WHENEVERNAME(“WHENEVER”) whenever1,
sf_get_tablename_by_id(decode(tvpid,-1,null, tvpid)) tablename,
SF_GET_USERNAME_BY_ID(UID) uname
FROM sysaudit t;
(AUDIT_开头.log 文件,默认在 SYSTEM_PATH 下,
也可以配置 AUD_PATH (就是在dm.ini中直接添加该参数即可)设置审计日志文件存放路径),
mkdir audit --必须手动创建并授权目录才可以!!
文章
阅读量
获赞