

Select * from v$version;
Select id_code;
select b.tablespace_name, b.file_name, b.bytes/1024/1024 size_m
from dba_data_files b
union all
select 'RLOG', a.path, a.rlog_size/1024/1024
from v$rlogfile a;
select b.file_name,
b.tablespace_name,
b.bytes/1024/1024 size_m,
(b.bytes-(nvl(a.bytes,0)))/1024/1024 used_m,
round((b.bytes-(nvl(a.bytes,0)))/(b.bytes)*100,2) usedrate
from dba_free_space a,dba_data_files b
where a.file_id(+) = b.file_id
and a.tablespace_name(+) = b.tablespace_name
order by b.tablespace_name;
select a.NAME schname, a.ID schid, b.id userid, b.NAME username
from sysobjects a, sysobjects b
where a."TYPE$"='SCH'
and a.pid = b.id;
select a.object_name, a.object_id, a.object_type, a.created, a.status
from dba_objects a
where a.owner='DMHR'; -- 用户/模式名
批量禁用某个用户/模式下所有外键约束
将查询出的拷贝执行即可禁用外键约束。
select 'alter table '|| t.owner||'.'||t.table_name ||' disable constraint '||t.constraint_name||';'
from dba_constraints t
where t.owner = 'DMHR' -- 用户/模式名
and t.constraint_type = 'R';
查看系统外键约束的引用关系
查询某个用户或模式下外键约束的引用关系:
select t1.owner,t1.table_name,
t2.table_name as "TABLE_NAME(R)",
t1.constraint_name,
t1.r_constraint_name as "CONSTRAINT_NAME(R)",
a1.column_name,
a2.column_name as "COLUMN_NAME(R)"
from dba_constraints t1, dba_constraints t2, dba_cons_columns a1, dba_cons_columns a2
where t1.owner = t2.owner and a1.owner = a2.OWNER and t1.owner = 'DMHR'
and t1.r_constraint_name = t2.constraint_name
and t1.constraint_name = a1.constraint_name
and t1.r_constraint_name = a2.constraint_name;
select t.job, t.schema_user, t.last_date, t.last_sec, t.next_date, t.next_sec, t."INTERVAL", t.broken, t.failures,t.what
from dba_jobs t;
call dbms_job.run(1637544901); --参数为jobid
select * from sysjob.SYSJOBHISTORIES2;
select t.SESS_ID, t.SQL_TEXT, t.STATE, t.TRX_ID, t.THRD_ID
from v$sessions t;
select sessid;
使用如下sql查询数据库中的事务等待信息,如果为空,则表示当前无事务等待。
select * from v$trxwait;
或
select b.name, t.*
from v$lock t, SYSOBJECTS b
where t.BLOCKED = 1
and t.TABLE_ID = b.ID;
select * from V$SQL_HISTORY t where T.SESS_ID = '140577090115912'; --会话id
1.1、查看数据库信息**(是否开启归档等)****:**
select t.name, t.arch_mode from V$DATABASE t;
select * from V$DATABASE t;
select name, status$ from v$instance;
select * from V$INSTANCE;
select * from V$LICENSE;
select * from v$dm_arch_ini;
select sys_context('USERENV','CURRENT_USER');
select current_user;
select user;
select sys_context('USERENV','CURRENT_SCHEMA');
set schema hr;
select sys_context('USERENV','SID');
select sessid;
select t.segment_name,
t.segment_type,
t.tablespace_name,
t.owner,
t.bytes,
t.bytes/1024 byte_kb,
t.bytes/1024 byte_mb
from dba_segments t
where t.owner = 'DMHR' -- 用户/模式名
and t.SEGMENT_TYPE = 'TABLE'
order by t.bytes desc;
select t.owner, t.table_name, t.tablespace_name, t.num_rows, t.last_analyzed
from dba_tables t
where t.owner = 'DMHR' -- 用户/模式名
order by t.num_rows desc;
alter table t_emp move tablespace main;
select t.TABLE_NAME,
t.COLUMN_NAME,
t.COLUMN_ID,
t.DATA_TYPE,
t.DATA_LENGTH,
t.DATA_PRECISION,
t.DATA_SCALE,
t.NULLABLE,
t.DATA_DEFAULT
from user_tab_columns t
where t.TABLE_NAME = 'EMPLOYEE' -- 表名
order by t.COLUMN_ID;
select t.segment_name,
t.segment_type,
t.tablespace_name,
t.bytes,
t.bytes/1024 byte_kb,
t.bytes/1024 byte_mb
from user_segments t
where t.segment_type = 'INDEX'
order by t.bytes desc;
select t.INDEX_NAME, t.TABLE_OWNER, t.INDEX_TYPE, t.TABLE_NAME, t.UNIQUENESS, t.TABLESPACE_NAME
from user_indexes t
where t.TABLE_NAME = 'DEPARTMENT'; -- 表名
select *
from user_ind_columns t
where t.table_name ='EMPLOYEE'; -- 表名
alter index dmhr.ix_emp_empid monitoring usage;
select * from v$object_usage;
alter index dmhr.ix_emp_empid nomonitoring usage;
1.1、查询数据库中动态视图**:**
DM8新版本动态视图信息保存在v$dynamic_tables中,查询该视图可以获取所有动态视图:
select *
from v$dynamic_tables a;
可以使用名称模糊匹配要查找的动态视图信息,比如使用如下语句查询备份相关动态视图:
select *
from v$dynamic_tables t
where t.name like 'V$BACKUP%';
DM提供v$ifun视图可查询数据库中的系统函数:
select * from v$ifun t;
如果要获取系统函数的参数信息可查询v$ifun_args:
select a.name, b.*
from v$ifun a, v$ifun_arg b
where a.id = b.id
and a.name like 'SF_ARCHIVELOG_%'; --系统函数名
查看某个PACKAGE包(例如P_TEST)的源码信息,可以使用下列语句查询:
select * from DBA_SOURCE t
where name = 'P_TEST'; --查询对象名
**二、**对象依赖关系
在我们清理某张表或修改某张表时,想要了解这张表对哪些视图或对象有影响,可以使用语句查询。
select a.owner, a.name, a.type
from dba_dependencies a
where a.referenced_name ='P_TEST'; --查询的依赖对象
查看某个PACKAGE包(例如DBMS_METADATA)用到了哪些表、视图、包、同义词等,可以使用下列语句查询:
SELECT a.referenced_owner,
a.referenced_name,
a.referenced_type,
a.referenced_link_name
FROM dba_dependencies a
WHERE a.NAME ='DBMS_METADATA' --查询的依赖对象
and a.type = 'PACKAGE'; --查询的依赖对象类型
查询系统中所有用户信息(包含用户默认表空间、索引表空间等,用户状态等):
select t.username,
t.user_id,
t.account_status,
t.default_tablespace,
t.default_index_tablespace,
t.password_versions
from dba_users t;
查询系统中用户资源限制信息(包含用户最大登录失败次数、密码有效期、会话连接限制等):
select b.USERNAME, a.*
from sysusers a,dba_users b
where a.id = b.user_id;
资源限制用于限制用户对DM数据库系统资源的使用。DM8新版本支持创建或修改用户时直接使用limit <资源设置>语句和创建PROFILE(兼容Oracle)的方式设置资源设置项。
比如使用limit语句直接修改HR用户的最大登录失败次数为5次,密码输入错误超过5次将锁定3分钟:
alter user hr limit failed_login_attemps 5, password_lock_time 3;
DM8新版本支持使用PROFILE设置资源设置项,命令参考如下:
create profile profile1 limit failed_login_attemps 5, password_lock_time 3;
alter user hr profile profile1;
*3.3、用户锁定/解锁*
默认情况下,DM数据库用户密码输入错误超过3次,用户即会被锁定。
查询系统中锁定的用户及对应的锁定时间:
select t.username,
t.user_id,
t.account_status,
t.lock_date
from dba_users t
where t.account_status = 'LOCKED';
对于被锁定的用户,可以使用SYSDBA或者具有alter user权限的用户解锁。
alter user hruser ACCOUNT UNLOCK; --解锁用户
alter user hruser ACCOUNT LOCK; --锁定某用户
DM普通版本只支持设置系统的口令测试,安全版本可以支持设置用户的口令策略。系统的口令策略由参数PWD_POLICY指定,其参数值说明如下,可组合设置。
| 参数名 | 缺省值 | 属性 | 说明 |
|---|---|---|---|
| PWD_POLICY | 2 | 动态,系统级 | 设置系统默认口令策略。0:无策略;1:禁止与用户名相同;2:口令长度不小于9;4:至少包含一个大写字母(A-Z);8 :至少包含一个数字(0-9);16:至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号;若为其他数字,则表示配置值的和,如3=1+2,表示同时启用第1项和第2项策略。当COMPATIBLE_MODE=1时,PWD_POLICY的实际值均为0 |
使用如下命令可以设置系统口令策略,比如修改为1+2+4+8=15(包含大写字母、数字、且口令与用户名不同,且长度不小于9),不需要重启数据库即可生效。
alter system set 'PWD_POLICY'=15 both;
查询当前用户拥有的权限:
select * from SESSION_PRIVS;
查询数据库中角色信息:
select * from dba_roles;
查看某用户/角色拥有的系统权限信息:
select * from dba_sys_privs t
where t.GRANTEE= 'HRTEST'; -- 用户/角色名
或者使用该用户登录,直接查询user_sys_privs。
select * from user_sys_privs t;
查看某用户/角色拥有的对象权限信息:
select * from dba_tab_privs t
where t.GRANTEE= 'HRTEST'; -- 用户/角色名
或者使用该用户登录,直接查询user_tab_privs。
查看某用户/角色拥有的角色权限信息:
select * from dba_role_privs t
where t.GRANTEE= 'HRTEST'; -- 用户/角色名
或者使用该用户登录,直接查询user_role_privs。
查看某用户/角色拥有的列权限信息:
select * from dba_col_privs t
where t.GRANTEE= 'HRTEST'; -- 用户/角色名
或者使用该用户登录,直接查询user_col_privs。
select * from v$arch_file t;
或:
select * from v$archived_log t;
删除N天前的归档日志文件(这里以十天为例):
select sf_archivelog_delete_before_time(trunc(sysdate) -10);
删除指定LSN之前的归档日志文件(LSN在归档日志中可查询到):
select SF_ARCHIVELOG_DELETE_BEFORE_LSN(33769);
DM数据库备份时如果没有指定备份集路径,则备份集保存至数据库默认备份路径下,默认备份路径由参数BAK_PATH指定:
select * from v$parameter t where name = 'BAK_PATH';
查询数据库中的备份信息(默认查询数据库默认备份路径下的备份信息):
select * from v$backupset;
该视图不包含备份集的数据库魔数信息,如果要查询数据库魔数信息,可查询如下视图:
select * from v$backupset_dbinfo;
如果要查询其他目录下的备份集,需要添加备份目录,使用如下语句添加/dm8/backup目录(只针对当前会话生效):
select sf_bakset_backup_dir_add('DISK', '/dm8/backup');
批量删除30天前的备份文件。
select sf_bakset_remove_batch ('DISK',sysdate-30,null,null);
更多备份相关函数可查询v$ifun视图:
select * from v$ifun t where t.name like 'SF_BAKSET%';
评论