Oracle 常用系统

常用系统包

查看系统包

SELECT * FROM all_objects WHERE object_type = 'PACKAGE' AND owner = 'SYS' AND object_name = '包名称';

AUTO_SERVER_PKG

AUTO_SERVER_PKG 在Oracle数据库的上下文中,并不是一个标准的Oracle系统包或内置功能。然而,在参考文章中提到的 sys.auto_server_pkg 似乎是一个自定义的包(package),用于执行一些数据库管理任务,如解锁表、解锁用户、停止作业(JOB)、杀掉会话(SESSION)等。由于这是自定义的,因此它的具体实现、可用性以及所包含的函数(如 unlock_tableunlock_userstop_jobkill_session 等)将完全取决于该包的创建者和其内部的实现细节。

自定义包 AUTO_SERVER_PKG 的可能用途

  1. 解锁表

    • 允许数据库管理员或具有适当权限的用户解锁被锁定的表。
    • 示例命令:execute sys.auto_server_pkg.unlock_table('TABLE_OWNER', 'TABLE_NAME');
  2. 解锁用户

    • 允许解锁被锁定的数据库用户账户。
    • 示例命令:execute sys.auto_server_pkg.unlock_user('USERNAME');
  3. 停止作业

    • 允许停止正在运行的数据库作业。
    • 示例命令:execute sys.auto_server_pkg.stop_job(JOB_ID);
  4. 杀掉会话

    • 允许终止特定的数据库会话。
    • 示例命令:execute sys.auto_server_pkg.kill_session(SID, SERIAL#);

注意事项

  • 权限:执行这些操作通常需要较高的数据库权限,如SYSDBA或相应的角色权限。
  • 风险:直接杀掉会话或停止作业可能会导致数据不一致或业务中断,因此在执行这些操作之前应该仔细考虑其潜在影响。
  • 自定义性:由于这是一个自定义包,其功能和可用性可能因数据库环境的不同而有所差异。

auto_server_pkg.unlock_package

-- 解锁存储过程
set serveroutput on
execute sys.auto_server_pkg.unlock_package('PKG_OWNER','PKG_NAME');

auto_server_pkg.unlock_table

-- 解锁表
set serveroutput on
execute sys.auto_server_pkg.unlock_table('TABLE_OWNER', 'TABLE_NAME');

auto_server_pkg.stop_job

-- 停止正在运行的JOB
set serveroutput on
execute sys.auto_server_pkg.stop_job(JOB_ID);

auto_server_pkg.grant_pris

-- 用户授权
set serveroutput on
execute sys.auto_server_pkg.grant_pris ('USERNAME');

auto_server_pkg.unlock_user

-- 解锁用户
set serveroutput on
execute sys.auto_server_pkg.unlock_user('USERNAME');

auto_server_pkg.kill_session

-- KILL SESSION
set serveroutput on
execute sys.auto_server_pkg.kill_session(SID,SERAIL#);

DBMS_LOCK

dbms_lock.sleep(10);

DBMS_DDL

作用: 提供了在PL/SQL块中执行DDL语句的方法,并且也提供了一些DDL的特殊管理方法.

DBMS_METADATA

dbms_metadata.get_ddl

DBMS_METADATA包GET_DDL函数用于获取数据库对表、视图、索引、全文索引、存储过程、函数、包、序列、同义词、约束、触发器等的DDL语句。

语法定义
DBMS_METADATA.GET_DDL (
object_type IN VARCHAR2,
name IN VARCHAR2,
schema IN VARCHAR2 DEFAULT NULL,
version IN VARCHAR2 DEFAULT 'COMPATIBLE',
model IN VARCHAR2 DEFAULT 'ORACLE',
transform IN VARCHAR2 DEFAULT 'DDL')
RETURN CLOB;
重点参数详解

OBJECT_TYPE

对象类型。包括表、视图、物化视图、索引、全文索引、存储过程、函数、包、目录等,详情请见OPEN参数详解。其中,OBJECT_TYPE只能为大写。

OBJECT_TYPE的类型包括:

类型名称含义说明
CLASS类类型默认返回类头类体
CLASS_HEAD类型名
CLASS_BODY类型体
COL_STATISTICS列统计
COMMENT注释
CONSTRAINT约束不包括聚集主键和非空约束
CONTEXT上下文
DATABASE_EXPORT数据库下的所有对象库级导出
DB_LINK数据库链接因此类对象具有所有者,因此将其视为模式级对象。 对于公有连接,它们的所有者是PUBLIC;对于私有链接,它们的创建者就是它们的所有者
DIRECTORY目录
DOMAIN
FUNCTION存储函数
INDEX索引不包括系统内部定义的索引
INDEX_STATISTICS索引统计
JOB任务
OBJECT_GRANT对象权限
PACKAGE默认返回包头包体
PKG_SPEC包头
PKG_BODY包体
POLICY策略
PROCEDURE存储过程
ROLE角色
ROLE_GRANT角色权限
SCHEMA_EXPORT模式下的所有对象模式级导出
SEQUENCE序列
SYNONYM同义词私有同义词为模式对象,公有同义词为命名对象
SYSTEM_GRANT系统权限
TABLE
TABLE_STATISTICS表统计信息
TABLE_EXPORT表及与其相关的元数据表级导出
TABLESPACE表空间
TRIGGER触发器
USER用户
VIEW视图
TYPE用户自定义类型
MATERIALIZED_VIEW物化视图
MATERIALIZED_VIEW_LOG物化视图日志

NAME

对象名称,区分大小写。

SCHEMA

模式,默认是当前用户模式。

返回值

以DDL返回对象元数据中的DDL语句。

错误处理

  • INVALID_ARGVAL:如果输入参数中存在空值或非法值。
  • OBJECT_NOT_FOUND:如果指定的对象在数据库中不存在。
注意
  • 需要进行下列格式化,特别需要对long进行设置,否则无法显示完整的SQL

  • 参数要使用大写,否则会查不到

set linesize 180
set pages 999
set long 1000
使用场景
表空间的DDL语句
set linesize 180
set pages 999
set long 10000select 'select dbms_metadata.get_ddl(''TABLESPACE'','''|| tablespace_name || ''') from dual;' from dba_tablespaces;
SELECT DBMS_METADATA.GET_DDL('TABLESPACE', TS.tablespace_name) FROM DBA_TABLESPACES TS;
SELECT DBMS_METADATA.GET_DDL('TABLESPACE', 'USERS') FROM dual;
用户的ddl
set linesize 180
set pages 999
set long 10000SELECT DBMS_METADATA.GET_DDL('USER',U.username) FROM DBA_USERS U;
SELECT DBMS_METADATA.GET_DDL('USER','HR') FROM dual;-- 详细的获取用户ddl
select dbms_metadata.get_ddl('USER', du.username) AS DDL_SCRIPT
from dba_users du
where du.username = 'TYPE_USER_NAME'
union all
select dbms_metadata.get_granted_ddl('TABLESPACE_QUOTA', dtq.username) AS DDL_SCRIPT
from dba_ts_quotas dtq
where dtq.username = 'TYPE_USER_NAME'
and rownum = 1
union all
select dbms_metadata.get_granted_ddl('ROLE_GRANT', drp.grantee) AS DDL_SCRIPT
from dba_role_privs drp
where drp.grantee = 'TYPE_USER_NAME'
and rownum = 1
union all
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT', dsp.grantee) AS DDL_SCRIPT
from dba_sys_privs dsp
where dsp.grantee = 'TYPE_USER_NAME'
and rownum = 1
union all
select dbms_metadata.get_granted_ddl('OBJECT_GRANT', dtp.grantee) AS DDL_SCRIPT
from dba_tab_privs dtp
where dtp.grantee = 'TYPE_USER_NAME'
and rownum = 1
union all
select dbms_metadata.get_granted_ddl('DEFAULT_ROLE', drp.grantee) AS DDL_SCRIPT
from dba_role_privs drp
where drp.grantee = 'TYPE_USER_NAME'
and drp.default_role = 'YES'
and rownum = 1;
角色的ddl
set linesize 180
set pages 999
set long 10000SELECT DBMS_METADATA.GET_DDL('ROLE','ROLENAME') FROM DUAL;
查看表的SQL定义语句
set linesize 180
set pages 999
set long 10000-- 查看当前用户表的SQL
select dbms_metadata.get_ddl('TABLE','EMPLOYEES') from dual;
SELECT table_name,DBMS_METADATA.GET_DDL('TABLE',table_name) FROM user_tables;
-- 查看其它用户下的表结构
select dbms_metadata.get_ddl('TABLE','EMPLOYEES','HR') from dual;
SELECT DBMS_METADATA.get_ddl ('TABLE',table_name,owner) FROM dba_tables WHERE owner = UPPER('username');
查看索引的SQL定义语句
set linesize 180
set pages 999
set long 10000-- 查看所需表的索引
select INDEX_NAME, INDEX_TYPE, TABLE_NAME from all_indexes WHERE table_name='EMPLOYEES';
-- 查看当前用户索引的SQL
select dbms_metadata.get_ddl('INDEX','EMP_EMP_ID_PK') from dual;
-- 查看其他用户索引的SQL 
select dbms_metadata.get_ddl('INDEX','EMP_EMP_ID_PK','HR') from dual;
SELECT DBMS_METADATA.GET_DDL('INDEX', INDEX_NAME) FROM USER_INDEXES WHERE INDEX_TYPE ='NORMAL';
获取用户下约束的SQL定义语句
set linesize 180
set pages 999
set long 10000-- 查看所需表的约束
select owner, table_name, constraint_name, constraint_type from user_constraints where table_name='EMPLOYEES';
-- 查看创建主键的SQL
SELECT DBMS_METADATA.GET_DDL('CONSTRAINT','EMP_EMP_ID_PK','HR') FROM DUAL;
-- 查看创建外键的SQL
SELECT DBMS_METADATA.GET_DEPENDENT_DDL('REF_CONSTRAINT','OBJECT_NAME','SCHEMA_NAME') from dual;
SELECT DBMS_METADATA.GET_DDL('REF_CONSTRAINT','EMP_DEPT_FK','HR') FROM DUAL;
查看创建视图的SQL定义语句
set linesize 180
set pages 999
set long 10000-- 查看当前用户视图的SQL
SELECT view_name,DBMS_METADATA.GET_DDL('VIEW',view_name) FROM user_views;
SELECT dbms_metadata.get_ddl('VIEW', 'EMP_DETAILS_VIEW') from dual ;
-- 查看其他用户视图的SQL
SELECT dbms_metadata.get_ddl('VIEW', 'EMP_DETAILS_VIEW','HR') FROM DUAL;
SELECT DBMS_METADATA.GET_DDL('VIEW',U.OBJECT_NAME, U.OWNER) FROM DBA_OBJECTS U WHERE U.OBJECT_TYPE = 'VIEW' AND OWNER='USER_NAME';-- 查看创建视图的SQL也可以
select text from all_views where view_name='EMP_DETAILS_VIEW';
获取物化视图的SQL定义语句
set linesize 180
set pages 999
set long 10000select dbms_metadata.get_ddl('MATERIALIZED_VIEW','MV_EMP','HR') FROM DUAL;
获取用户下的触发器的SQL定义语句
set linesize 180
set pages 999
set long 10000-- 查询TRIGGER
SELECT trigger_name,DBMS_METADATA.GET_DDL('TRIGGER',trigger_name) FROM user_triggers;
select DBMS_METADATA.GET_DDL('TRIGGER','UPDATE_JOB_HISTORY','HR') FROM DUAL;-- 也可以使用系统表获取ddl
select text from user_source t where t.name='TR_TEST';
获取存储过程的SQL定义语句
set linesize 180
set pages 999
set long 10000select DBMS_METADATA.GET_DDL('PROCEDURE','ADD_JOB_HISTORY','HR') from dual;
SELECT DBMS_METADATA.GET_DDL('PROCEDURE',U.OBJECT_NAME, U.OWNER) FROM DBA_OBJECTS U WHERE U.OBJECT_TYPE = 'PROCEDURE' AND OWNER='USER_NAME';
获取用户下函数的SQL定义语句
set linesize 180
set pages 999
set long 10000select DBMS_METADATA.GET_DDL('FUNCTION','TEST','HR') from DUAL;
SELECT DBMS_METADATA.GET_DDL('FUNCTION',U.OBJECT_NAME, U.OWNER) FROM DBA_OBJECTS U WHERE U.OBJECT_TYPE = 'FUNCTION'AND OWNER='USER_NAME';
获取包的SQL定义语句
set linesize 180
set pages 999
set long 10000SELECT DBMS_METADATA.GET_DDL('PACKAGE','OBJECT_NAME','SCHEMA_NAME') FROM DUAL;
select DBMS_METADATA.GET_DDL('PACKAGE BODY','PACKAGEBODYNAME','SCHEMA_NAME') from dual;
获取用户下序列的SQL定义语句
set linesize 180
set pages 999
set long 10000-- 查询SEQUENCE
SELECT sequence_name,DBMS_METADATA.GET_DDL('SEQUENCE',sequence_name) FROM user_sequences;
select DBMS_METADATA.GET_DDL('SEQUENCE','DEPARTMENTS_SEQ','HR') from DUAL;
获取用户下同义词的SQL定义语句
set linesize 180
set pages 999
set long 10000select DBMS_METADATA.GET_DDL('SYNONYM','EMP','HR') from DUAL;
-- 也可以查看系统视图获取
select 'create synonym '||synonym_name||' for '||table_owner||'.'||table_name||';' from dba_synonyms;
获取dblink的ddl
set linesize 180
set pages 999
set long 10000SELECT dbms_metadata.get_ddl('DB_LINK','DBLINKNAME','USERNAME') stmt FROM dual;
获取远程数据库对象的定义
SELECT DBMS_LOB.SUBSTR@dblinkname(DBMS_METADATA.GET_DDL@dblinkname('TABLE', 'TABLENAME', 'USERNAME')) FROM DUAL@dblinkname
得到一个用户下的所有表,索引,存储过程,函数的ddl
SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, u.object_name) FROM USER_OBJECTS u where U.OBJECT_TYPE IN ('TABLE','INDEX','PROCEDURE','FUNCTION');SELECT DBMS_METADATA.GET_DDL(O.OBJECT_TYPE, O.object_name,O.OWNER) FROM DBA_OBJECTS O where O.OBJECT_TYPE IN ('TABLE','INDEX','PROCEDURE','FUNCTION') and ONWER = 'ONWERNAME';ORset pagesize 0
set long 90000
set feedback off
set echo off
spool schema_ddl.sql
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name,u.owner) FROM DBA_TABLES u;
SELECT DBMS_METADATA.GET_DDL('VIEW',u.view_name,u.owner) FROM DBA_VIEWS u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name,u.owner) FROM DBA_INDEXES u;
select dbms_metadata.get_ddl('PROCEDURE',u.object_name, u.owner,) from dba_objects u where u.object_type = 'PROCEDURE';
select dbms_metadata.get_ddl('FUNCTION',u.object_name, u.owner,) from dba_objects u where u.object_type = 'FUNCTION';
spool off;
获取某个schema下的对象ddl
-- 获取一个SCHEMA下的所有建表、视图和建索引的语法,以scott为例
set pagesize 0
set long 90000
set feedback off
set echo off
spool schema.sql
connect scott/tiger;
SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name) FROM USER_TABLES u;
SELECT DBMS_METADATA.GET_DDL('VIEW',u.VIEW_name) FROM USER_VIEWS u;
SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name) FROM USER_INDEXES u;
spool off;-- 获取某个SCHEMA的建全部存储过程的语法
set pagesize 0
set long 90000
set feedback off
set echo off
spool procedures.sql  
select DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name) from user_objects u where object_type = 'PROCEDURE';
spool off;-- 获取某个SCHEMA的建全部函数的语法
set pagesize 0
set long 90000
set feedback off
set echo off
spool function.sql  
select DBMS_METADATA.GET_DDL('FUNCTION',u.object_name) from user_objects u where object_type = 'FUNCTION';
spool off;
去除storage等多余参数
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
参考资料

https://blog.csdn.net/lirenkai2000/article/details/12659195

https://www.modb.pro/db/101274

dbms_metadata.get_dependent_ddl

SELECT DBMS_METADATA.GET_DEPENDENT_DDL('REF_CONSTRAINT','OBJECT_NAME','SCHEMA_NAME') from dual;

dbms_metadata.get_granted_ddl

可以用于获取用户的授权信息。Oracle支持的授权相关信息类型包括:OBJECT_GRANT、SYSTEM_GRANT、ROLE_GRANT、DEFAULT_ROLE、TABLESPACE_QUOTA和PROXY(即object_type的可选值)。

-- GET_GRANTED_DDL:     Return the metadata for objects granted to a
--      grantee as DDL.
--      This interface is meant for casual browsing (e.g., from SQLPlus)
--      vs. the programmatic OPEN / FETCH / CLOSE interfaces above.
-- PARAMETERS:
--      object_type     - The type of object to be retrieved.
--      grantee         - Name of the grantee.
--      version         - The version of the objects' metadata.
--      model           - The object model for the metadata.
--      transform       - XSL-T transform to be applied.
--      object_count    - maximum number of objects to return
-- RETURNS:     Metadata for the object as a CLOB.FUNCTION get_granted_ddl (object_type     IN  VARCHAR2,grantee         IN  VARCHAR2 DEFAULT NULL,version         IN  VARCHAR2 DEFAULT 'COMPATIBLE',model           IN  VARCHAR2 DEFAULT 'ORACLE',transform       IN  VARCHAR2 DEFAULT 'DDL',object_count    IN  NUMBER   DEFAULT 10000)RETURN CLOB;

示例:

-- You can get any user’s system grant ( create script ) as follows.
SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT','SCHEMA_NAME') from dual;
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT', dsp.grantee) AS DDL_SCRIPT
from dba_sys_privs dsp
where dsp.grantee = 'TYPE_USER_NAME'
and rownum = 1;-- You can get any user’s role grant ( create script ) as follows.
SELECT DBMS_METADATA.GET_GRANTED_DDL('ROLE_GRANT','SCHEMA_NAME') from dual;
select dbms_metadata.get_granted_ddl('ROLE_GRANT', drp.grantee) AS DDL_SCRIPT
from dba_role_privs drp
where drp.grantee = 'TYPE_USER_NAME'
and rownum = 1;-- You can get any user’s object grant ( create script ) as follows.
SELECT DBMS_METADATA.GET_GRANTED_DDL('OBJECT_GRANT','SCHEMA_NAME') from dual;
select dbms_metadata.get_granted_ddl('OBJECT_GRANT', dtp.grantee) AS DDL_SCRIPT
from dba_tab_privs dtp
where dtp.grantee = 'TYPE_USER_NAME'
and rownum = 1;select dbms_metadata.get_granted_ddl('TABLESPACE_QUOTA', dtq.username) AS DDL_SCRIPT
from dba_ts_quotas dtq
where dtq.username = 'TYPE_USER_NAME'
and rownum = 1;select dbms_metadata.get_granted_ddl('DEFAULT_ROLE', drp.grantee) AS DDL_SCRIPT
from dba_role_privs drp
where drp.grantee = 'TYPE_USER_NAME'
and drp.default_role = 'YES'
and rownum = 1;

说明:

如果指定查询的授权不存在,并不是简单的返回未选定行,而是还会显示错误信息

SQL> SELECT DBMS_METADATA.GET_GRANTED_DDL('SYSTEM_GRANT', 'TEST') FROM DUAL;
ERROR:
ORA-31608: 找不到类型为 SYSTEM_GRANT 的指定对象
ORA-06512: 在"SYS.DBMS_SYS_ERROR", line 86
ORA-06512: 在"SYS.DBMS_METADATA", line 631
ORA-06512: 在"SYS.DBMS_METADATA", line 1339
ORA-06512: 在line 1

最后还要说明一点,DBMS_METADATA的GET_GRANTED_DDL不会显示SYSDBA和SYSOPER权限。

参考资料:

https://blog.csdn.net/wu_wei_jie/article/details/6439387

DBMS_STATS

作用: 用于搜集,查看,修改数据库对象的优化统计信息.

dbms_stats.gather_table_stats

用于收集目标表、列和索引的统计信息

-- 收集test表的统计信息
BEGINDBMS_STATS.GATHER_TABLE_STATS(ownname          => 'SCOTT',tabname          => 'TEST',estimate_percent => 15, -- 采样比是15%method_opt       => 'for table',cascade          => false);  -- 默认是true,级联收集
END;
/

dbms_stats.gather_index_stats

用于收集指定统计信息

-- 收集索引idx_text的统计信息
BEGINDBMS_STATS.GATHER_INDEX_STATS(ownname          => 'SCOTT',indname          => 'IDX_TEST',estimate_percent => 100,);
END;
/

dbms_stats.gather_schema_stats

用于收集指定schema下的所有对象统计信息

-- 收集scott用户下的所有对象
BEGINDBMS_STATS.GATHER_SCHEMA_STATS(ownname		 => 'SCOTT',cascade			 =>true,granularity=>'ALL', -- 收集分区表);
END;
/

dbms_stats.gather_database_stats

用于收集全库所有的统计信息

-- 收集全库的统计信息
BEGINDBMS_STATS.GATHER_DATABASE_STATS(estimate_percent=>100,degree=>8,cascade=>true,granularity=>'ALL', -- 收集分区表);
END;
/

dbms_stats.get_system_stats

收集系统统计信息

dbms_stats.gather_dictionary_stats

收集字段对象的统计信息

dbms_stats.gather_table_stats

删除表的统计信息

dbms_stats.gather_index_stats

删除索引的统计信息

dbms_stats.export_table_stats

输出表的统计信息

dbms_stats.set_table_stats

设置表的统计

dbms_stats.auto_sample_size

estimate_percent的值

Use the constant DBMS_STATS.AUTO_SAMPLE_SIZE to have Oracle determine the appropriate sample size for good statistics. This is the default

DBMS_RANDOM

作用: 提供了内置的随机数生成器,可以用于快速生成随机数.

-- 随机查表中的数据
select *from (select rownum,c.empno,c.ename,c.jobfrom (select * from scott.emp order by dbms_random.value) cwhere rownum <=6);

DBMS_ROWID

作用: 用于在PL/SQL程序和SQL语句中取得行标识符的信息并建立ROWID,通过该包可以取得行所在的文件号,行所在文件的数据块号,行所在数据块的行号,以及数据库对象号等消息.

-- 查看rowid内容
SELECT ROWID,DBMS_ROWID.ROWID_OBJECT(ROWID) AS OBJECT,DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) AS FILENUM,DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) AS BLOCK,DBMS_ROWID.ROWID_ROW_NUMBER(ROWID) AS ROWNFROM DEPT;1.rowid_create
建立ROWID
语法如下:
dbms_rowid.rowid_create (
rowid_type in number,object_number in number,
relative_fno in n umber,block_number in number,
row_number in number)
return rowid;
注:rowid_type用于指定ROWID类型(0:受限ROWID,1:扩展ROWID);object_number用于指定数据对象号;relative_fno用于指定相对文件号;block_number用于指定在文件中的数据块号;row_number用于指定在数据块中的行号.
2.rowid_info
用于取得特定ROWID的详细信息.
3.rowid_type
用于返回特定ROWID的类型
4.rowid_object
用于取得特定ROWID所对应的数据对象号
5.rowid_relative_fno
用于取得特定ROWID所对应的相对文件号
6.rowid_block_number
用于返回特定ROWID在数据文件中所对应的数据块号.
7.rowid_row_number
用于返回特定ROWID在数据块中所对应的行号.
8.rowid_to_obsolute_fno
用于返回特定ROWID所对应的绝对文件号
9.rowid_to_extended
用于将受限rowid转变为扩展rowid
10.rowid_to_restricted
用于将扩展rowid转换为受限rowid
11.rowid_verify
检查是否可以将受限rowid转变为扩展rowid

DBMS_OUTPUT

作用: 用于输入和输出信息,使用过程PUT和PUT_LINES可以将信息发送到缓冲区,使用过程GET_LINE和GET_LINES可以显示缓冲区信息.

例如,如果您想输出一个叫做“Hello, world!”的语句,您可以使用以下代码:

DECLARE
str VARCHAR2(100) := 'Hello, world!';
BEGIN
DBMS_OUTPUT.PUT_LINE(str);
END;

详细使用

-- 1.enable
该过程用于激活对过程PUT,PUT_LINE,GET_LINE,GET_LINES的调用
语法如下:
dbms_output.enable(buffer_size in integer default 20000);-- 2.disable
该过程用于禁止对过程PUT,PUT_LINE,GET_LINE,GET_LINES的调用
语法如下:
dbms_output.disable;-- 3.put和put_line
过程put_line用于将一个完整行的信息写入到缓冲区中,过程put则用地分块建立行信息,   当使用过程put_line时,会自动在行的尾部追加行结束符;当使用过程put时,需要使用过程   new_line追加行结束符.
示例如下:
set serverout on
begin
dbms_output.put_line('伟大的中华民族');
dbms_output.put('中国');
dbms_output.put(',伟大的祖国');
dbms_output.new_line;
end;
/-- 4.new_line
该过程用于在行的尾部追加行结束符.当使用过程PUT时,必须调用NEW_LINE过程来结束行.-- 5.get_line和get_lines
过程get_line用于取得缓冲区的单行信息,过程get_lines用于取得缓冲区的多行信息.

DBMS_XPLAN

-- 查看byte大小
DBMS_XPLAN.FORMAT_SIZE(BYTES)-- 查看执行计划
select * from table(dbms_xplan.display_cursor( format=> 'allstats last' ));
select * from table(dbms_xplan.display_cursor('7w3a9ufg0xb9x',0,'all iostats last'));

DBMS_SQL

DBMS_SQL包包含了一系列过程和函数,可以让您在SQL命令行界面上执行动态SQL语句。

例如,如果您想在SQL命令行界面上创建一个新表,您可以使用以下代码:

DECLARE
l_cursor INTEGER;
BEGIN
l_cursor := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(l_cursor, 'CREATE TABLE test (id NUMBER, name VARCHAR2(100))', DBMS_SQL.NATIVE);
DBMS_SQL.CLOSE_CURSOR(l_cursor);
END;

通过上述的代码,您可以在SQL命令行界面上创建一个新表。

DBMS_LOGMNR

作用: 通过使用包DBMS_LOGMNR和DBMS_LOGMNR_D,可以分析重做日志和归档日志所记载的事务变化,最终确定误操作(例如DROP TABLE)的时间,跟踪用户事务操作,跟踪并还原表的DML操作.

DBMS_FLASHBACK

作用: 用于激活或禁止会话的flashback特征,为了使得普通用户可以使用该包,必须要将执行该包的权限授予这些用户.

DBMS_LOB

DBMS_JOB

作用: 用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务.

-- 1.submit
用于建立一个新作业.当建立作业时,需要给作业要执行的操作,作业的下次运行日期及运行时间间隔.
语法如下:
dbms_out.submit (
job out binary_integer,what in varchar2,
next_date in date default sysdate,
interval in varchar2 default 'null',
no_parse in boolean default false,
instance in binary_integer default any_instance,
force in boolean default false
);
注:job用于指定作业编号;what用于指定作业要执行的操作;next_date用于指定作业的下次运行日期;interval用于指定运行作业的时间间隔;no_parse用于指定是否解析与作业相关的过程;instance用于指定哪个例程可以运行作业;force用于指定是否强制运行与作业相关的例程.
示例如下:
var jobno number
begin
dbms_job.submit(:jobno,
'dbms_ddl.analyze_object(''table'',
''scott'',''emp'',''compute'');',
sysdate,'sysdate+1');
commit;
end;
/-- 2.remove
删除作业队列中的特定作业
示例如下:
SQL>exec dbms_job.remove(1);-- 3.change
用于改变与作业相关的所有信息,包括作业操作,作业运行日期以及运行时间间隔等.
示例如下:
SQL>exec dbms_job.change(2,null,null,'sysdate+2');-- 4.what
用于改变作业要执行的操作
示例如下:
SQL>exec dbms_job.what(
2,'dbms_stats.gather_table_stats->(''scott'',''emp'');');-- 5.next_date
用于改变作业的下次运行日期
示例如下:
SQL>exec dbms_job.next_date('2','sysdate+1');-- 6.instance
用于改变作业的例程
示例如下:
SQL>exec dbms_job.instance(2,1);-- 7.interval
用于改变作业的运行时间间隔
示例如下:
SQL>exec dbms_job.interval(2,'sysdate+1/24/60');-- 8.broken
用于设置作业的中断标识
示例如下:
SQL>exec dbms_job.broken(2,true,'sysdate+1');-- 9.run
用于运行已存在的作业
示例如下:
sql>exec dbms_job.run(1);

DBMS_TRANSACTION

作用:用于在过程,函数,和包中执行SQL事务处理语句.

1.read_only
用于开始只读事务,其作用与SQL语句SET TRANSACTION READ ONLY完全相同
2.read_write
用于开始读写事务,------------------------------------WRITE-------
3.advise_rollback
用于建议回退远程数据库的分布式事务
4.advise_nothing
用于建议远程数据库的分布式事务不进行任何处理
5.advise_commit
用于建议提交远程数据库的分布式事务
6.user_rollback_segment
用于指定事务所要使用的回滚段
7.commit_comment
用于在提交事务时指定注释.
8.commit_force
用于强制提交分布式事务.
9.commit
用于提交当前事务
10.savepoint
用于设置保存点
11.rollback
用于回退当前事务
12.rollback_savepoint
用于回退到保存点
13.rollback_force
用于强制回退分布式事务
14.begin_discrete_transaction
用于开始独立事务模式
15.purge_mixed
用于清除分布式事务的混合事务结果
16.purge_lost_db_entry
用于清除本地数据库所记载的远程事务入口,该事务入口操作因为远程数据库问题未能在远程数据库完成.
17.local_transaction_id
用于返回当前事务的事务标识号
18.step_id
用于返回排序DML事务的惟一正整数

DBMS_SESSION

作用: 提供了使用PL/SQL实现ALTER SESSION命令,SET ROLE命令和其他会话信息的方法.

1.set_identifier
用于设置会话的客户ID号
2.set_context
用于设置应用上下文属性
3.clear_context
用于清除应用上下文的属性设置
4.clear_identifier
用于删除会话的set_client_id.
5.set_role
用于激活或禁止会话角色
6.set_sql_trace
用于激活或禁止当前会话的SQL跟踪
语法如下:
dbms_session.set_sql_trace(sql_strace boolean);
7.set_nls
用于设置NLS特征
语法如下:
dbms_session.set_nls(param varchar2,value varchar2);
8.close_database_link
用于关闭已经打开的数据库链
9.reset_package
用于复位当前会话的所有包,并且会释放包状态
10.modify_package_state
用于修改当前会话的PL/SQL程序单元的状态
语法如下:
dbms_session.modify_package_state(action_flags in pls_integer);
11.unique_session_id
用于返回当前会话的惟一ID标识符
12.is_role_enabled
用于确定当前会话是否激活了特定角色.
语法如下:
dbms_session.is_role_enabled(rolename varchar2)
return boolean;
13.is_session_alive
用于确定特定会话是否处于活动状态.
14.set_close_cached_open_cursors
用于打开或关闭close_cached_open_cursors
15.free_unused_user_meory
用于在执行了大内在操作(超过100K)之后回收未用内存
16.set_context
设置应用上下文属性的值
17.list_context
用于返回当前会话原命名空间和上下文列表
18.swith_current_consumer_group
用于改变当前会话的资源使用组

DBMS_RLS

作用: 只适用于Oracle Enterprise Edition,它用于实现精细访问控制,并且精细访问控制是通过在SQL语句中动态增加谓词(WHERE子句)来实现的.通过使用ORACLE的精细访问控制特征,可以使不同数据库用户在执行相同SQL语句时操作同一张表上的不同数据.

DBMS_SHARED_POOL

作用: 提供了对共享池的一些过程和函数访问,它使用户可以显示共享池中的对象尺寸,绑定对象到共享池,清除绑定到共享池的对象.为了使用该包,必须运行dbmspool.sql脚本来建立该包.

-- 清理SQL缓存
select ADDRESS,HASH_VALUE from v$sqlarea where SQL_ID='g6gu1n3x0h1h4';
exec dbms_shared_pool.purge('ADDRESS,HASH_VALUE','C');

DBMS_OBFUSCATION_TOOLKIT

作用: 用于加密和解密数据,另外还可以生成密码检验和.通过加密输入数据,可以防止黑客或其他用户窃取私有数据;而通过结合使用加密和密码检验和,可以防止黑客破坏初加密的数据.当使用该包加密数据时,要求被加密数据的长度必须为8字节的整数倍.当使用DES算法加密数据时,密钥长度不能低于8字节;当使用DES3算法加密数据时,密钥长度不能低于16字节.

DBMS_SPACE

作用: 用于分析段增长和空间的需求

DBMS_SPACE_ADMIN

作用: 提供了局部管理表空间的功能

DBMS_TTS

作用: 用于检查表空间集合是否是自包含的,并在执行了检查之后,将违反自包含规则的信息写入到临时表TRANSPORT_SET_VIOLATIONS中.

-- 检查表空间自包含(用户里面所有的对象都在这个表空间里面,不能跨表空间,即为自包含)
beginsys.dbms_tts.transport_set_check('TEST02', true, true);
end;
/select * from sys.transport_set_violations;

DBMS_REPAIR

作用: 用于检测,修复在表和索引上的损坏数据块.

DBMS_RESOURCE_MANAGER

作用: 用于维护资源计划,资源使用组和资源计划指令;包dbms_resource_manager_privs用于维护与资源管理相关的权限.

UTL_INADDR

作用: 用于取得局域网或Internet环境中的主机名和IP地址.

-- 根据主terminal查询客户端的IP
select UTL_INADDR.get_host_address(terminal) from v$session where username is not null;

UTL_FILE

UTL_FILE包包含了一系列过程和函数,可以对本地文件系统进行操作。使用这些过程和函数,您可以读取、写入、创建和删除本地文件。

例如,如果您想创建一个新的文本文件,您可以使用以下代码:

DECLARE
fileHandle UTL_FILE.FILE_TYPE;
BEGIN
fileHandle := UTL_FILE.FOPEN('DIRECTORY', '文件名', 'W');
UTL_FILE.FCLOSE(fileHandle);
END;

其中,“DIRECTORY”代表文件的目录,“文件名”代表文件的名称。

参考资料

https://docs.oracle.com/cd/E11882_01/appdev.112/e40758/toc.htm

https://docs.oracle.com/en/database/oracle/oracle-database/12.2/arpls/index.html#Oracle%C2%AE-Database

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/46935.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型笔记3 Longformer for Extractive Summarization训练

目录 改为GPU运行 从文本label生成输入token label 多样本输出文本 保存训练过程损失和模型 部署到服务器 训练集构建 改为GPU运行  1.检查是否有可用的GPU&#xff0c;并根据可用性设置设备。  2.使用方法将模型和输入张量移动到GPU。.to(device)  3.将所有…

DeepSORT:高效对象跟踪算法

在自动驾驶领域&#xff0c;对象检测和跟踪是实现安全驾驶的关键技术。检测对象是第一步&#xff0c;而跟踪它们的去向则是更为复杂和关键的一环。本文将深入探讨一种先进的对象跟踪算法——DeepSORT&#xff0c;它结合了简单排序算法、卡尔曼滤波器、深度外观描述符等技术&…

Latte: Latent Diffusion Transformer for Video Generation

文章目录 AbstractIntroductionMethodology潜在扩散模型的初步研究Latte的模型变体Latte的实验验证潜在视频片段的patch embeddingTimestep-class information injectionTemporal positional embedding通过学习策略增强视频生成 Experiments Abstract Latte首先从输入的视频提…

成像光谱遥感技术中的AI革命:ChatGPT

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力&#xff0c;ChatGPT在遥感中的应用&#xff0c;人工智能在…

太速科技-FMC207-基于FMC 两路QSFP+光纤收发子卡

FMC207-基于FMC 两路QSFP光纤收发子卡 一、板卡概述 本卡是一个FPGA夹层卡&#xff08;FMC&#xff09;模块&#xff0c;可提供高达2个QSFP / QSFP 模块接口&#xff0c;直接插入千兆位级收发器&#xff08;MGT&#xff09;的赛灵思FPGA。支持利用Spartan-6、Virtex-6、Kin…

PTA - 接收n个关键字参数

接收n个以关键字形式传入的参数&#xff0c;按格式输出。 函数接口定义&#xff1a; def print_info (**keyargs) 提示&#xff1a;keyargs为可变参数&#xff0c;其可接受若干个关键字形式的实参值&#xff0c;并将接收到的值组装为一个字典。 裁判测试程序样例&#xff1…

Nextjs 调用组件内的方法

在 Next.js 中&#xff0c;如果你想从一个组件外部调用组件内部的方法&#xff0c;可以使用 React 的 useRef 钩子来引用组件实例并调用其方法。这种方法主要适用于类组件&#xff0c;但也可以用于函数组件&#xff0c;通过将方法暴露在 ref 对象上。 以下是一个示例&#xff…

Ningx配置前端http缓存

在构建高性能的网站或Web应用程序时&#xff0c;优化前端资源的加载速度是至关重要的。一个有效的方法是利用HTTP缓存机制&#xff0c;通过缓存静态资源来减少网络请求&#xff0c;降低服务器负载&#xff0c;并提升用户体验。本文将介绍如何使用Nginx配置前端HTTP缓存&#xf…

业务需求方面

S 最爱小组件引导弱&#xff0c;需要在用户操作的关键路径上增加引导。用户在直播间点击关注并且设为我的最爱后&#xff0c;首次会出现直播间引导条&#xff1b;若首次未点击引导条&#xff0c;之后观看满30s&#xff0c;出现引导条。写了去添加和区桌面添加两个UI。其中&…

linux学习笔记整理: 关于linux系统操作/安装软件 2024/7/16;

安装软件 安装方式: 二进制安装。---只需要解压就可以。 只针对特殊平台。 比如jdk tomcat RPM&#xff1a; 按照一定的规范就可以按照该软件。 无法安装依赖的文件。 mysql yum 远程安装 基于RPM 帮你把依赖的文件安装上去。 必须联网。 安装源码安装。 查看端口插件: 下载…

数据库:redis练习题

1、安装redis&#xff0c;启动客户端、验证。 redis-server redis-cli 2、string类型数据的命令操作&#xff1a; &#xff08;1&#xff09; 设置键值&#xff1a; set mykey "haha" &#xff08;2&#xff09; 读取键值&#xff1a; get mykey &#xff08;3&…

08_TypeScript 中的类(静态属性、静态方法、抽象类、继承多态)

静态属性、静态方法、抽象类、继承多态 一、静态属性和静态方法1、回顾ES5中的静态方法2、TS 中定义静态方法和静态属性 二、多态1、定义&#xff1a;父类定义一个方法不去实现&#xff0c;让继承它的子类去实现&#xff0c;每一个子类有不同的表现。多态属于继承 三、 抽象方法…

Halcon与C++之间的数据转换

HALCON的HTuple类型(元组)功能很强大&#xff0c;可以表示INT、double、string等多种类型数据。当元组中只有一个成员时&#xff0c;HTuple也可表示原子类型 1. haclon -> C //HTuple转int HTuple hTuple 1; int data1 hTuple[0].I(); // data1 1//HTuple转do…

MSSQL Server运维常用SQL命令

1、数据库连接数 select name, state, state_desc from sys.databases; 查询结果&#xff1a; 2、数据库状态 select name, state, state_desc from sys.databases; 查询结果&#xff1a; 3、数据文件状态 select a.name, b.physical_name, b.state, b.state_desc from sy…

TCP连接如何确保可靠性

TCP通过序列号、确认应答、超时重传、数据校验、流量控制、拥塞控制等机制&#xff0c;确保了数据传输的可靠性和效率。 序列号&#xff1a;每个TCP段都有一个序列号&#xff0c;代表了数据流中的字节位置。 通过序列号&#xff0c;接收方可以检测数据包是否丢失或重复&#…

03MFC画笔/画刷/画椭圆/圆/(延时)文字

文章目录 画实心矩形自定义画布设计及使用连续画线及自定义定义变量扇形画椭圆/圆输出颜色文本定时器与定时事件画实心矩形 自定义画布设计及使用 连续画线及自定义定义变量 扇形 画椭圆/圆 输出颜色文本

【图像】图像识别经典算法

图像识别经典算法 一、图像识别基础二、经典图像识别算法1. Haar-like Features AdaBoost (Viola-Jones)2. SIFT (Scale-Invariant Feature Transform)3. SURF (Speeded-Up Robust Features)4. HOG (Histogram of Oriented Gradients)5. CNN (Convolutional Neural Networks) …

尚品汇-(十六)

目录 商品详情功能开发 &#xff08;1&#xff09;搭建service-item &#xff08;2&#xff09;获取sku基本信息与图片信息 &#xff08;3&#xff09;获取分类信息&#xff08;查看三级分类&#xff09; 商品详情功能开发 &#xff08;1&#xff09;搭建service-item 点…

「UCD」浅谈蓝湖Figma交互设计对齐

在现代数字产品的设计和开发过程中,选择合适的工具对于提高团队效率和保证产品质量至关重要。本文将从开发和设计两个不同的角度,探讨蓝湖和Figma两款流行工具的优势与不足,并提出结论和建议。 开发研发视角:蓝湖 优点: 清晰的设计规范:蓝湖为开发工程师提供了清晰的设计…

Gradio:快速构建机器学习Web应用的神奇工具

文章目录 引言官网链接原理基础使用安装 Gradio创建一个简单的 Gradio 应用 高级使用自定义界面集成到现有Web应用中 优缺点优点缺点 总结 引言 Gradio 是一个基于 Python 的库&#xff0c;它极大地简化了将机器学习模型转化为交互式Web应用的过程。无需深入了解Web开发或后端…