千家信息网

Oracle有什么常用脚本

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要讲解了"Oracle有什么常用脚本",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Oracle有什么常用脚本"吧!1.linux 启动数据库
千家信息网最后更新 2026年10月31日Oracle有什么常用脚本

这篇文章主要讲解了"Oracle有什么常用脚本",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Oracle有什么常用脚本"吧!

1.linux 启动数据库脚本

#!/bin/bash

export ORACLE_HOSTNAME=emcc.example.com

echo "Starting the Oracle Database and network listener ....."

echo ""

export ORACLE_HOME=/u01/db/product/dbhome_1

export PATH=$ORACLE_HOME/bin:$PATH

export ORACLE_SID=orcl

$ORACLE_HOME/bin/lsnrctl start

$ORACLE_HOME/bin/sqlplus '/as sysdba'<<- _START_DB

startup;

alter system register;

exit;

_START_DB

2.查询主外键依赖脚本

select b.owner as parent_owner,b.table_name as parent_table,a.owner as child_owner,a.table_name as child_table
from dba_constraints a, dba_constraints b
where a.constraint_type='R'

and a.r_constraint_name = b. constraint_name

and b.constraint_type='P'
and b.table_name=<被依赖表名>;

3.查看数据库字符集

select * from nls_database_parameters;


4.查询数字代表的字符集

在sqlplus里通过select nls_charset_name(852) from dual;可以查看该数字代表的字符集。

03 03 54 45 58 50 4F 52 54 3A

其中,03 54是16进制的数字,代表了一种字符集。将其转换为10进制为:

SQL> select to_number('0354','xxxx') from dual;
TO_NUMBER('0354','XXXX')
------------------------
852
查询852代表的字符集
SQL> select nls_charset_name(852) from dual;
NLS_CHAR
--------
ZHS16GBK


逆向操作:
SQL> select nls_charset_id('ZHS16GBK') from dual;
NLS_CHARSET_ID('ZHS16GBK')
--------------------------
852

------------------------------------------------------------------------------------------

如何查询dmp文件的字符集
用oracle的exp工具导出的dmp文件也包含了字符集信息,dmp文件的第2和第3个字节记录了dmp文件的字符集。如果dmp文件不大,比如只有几M或几十M,可以用UltraEdit打开(16进制方式),看第2第3个字节的内容,如0354,然后用以下SQL查出它对应的字符集:
SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;
ZHS16GBK
如果dmp文件很大,比如有2G以上(这也是最常见的情况),用文本编辑器打开很慢或者完全打不开,可以用以下命令(在unix主机上):
cat exp.dmp |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6
然后用上述SQL也可以得到它对应的字符集。


5.查看表空间的使用情况
SELECT trunc(SUM(bytes) / (1024 * 1024 * 1024),2) AS free_space, tablespace_name
FROM dba_free_space
GROUP BY tablespace_name;


SELECT a.tablespace_name,
trunc(a.bytes/ (1024 * 1024 * 1024),2) total,
trunc(b.bytes/ (1024 * 1024 * 1024),2) used,
trunc(c.bytes/ (1024 * 1024 * 1024),2) free,
trunc((b.bytes * 100) / a.bytes,2) "% USED ",
trunc((c.bytes * 100) / a.bytes,2) "% FREE "
FROM sys.sm$ts_avail a, sys.sm$ts_used b, sys.sm$ts_free c
WHERE a.tablespace_name = b.tablespace_name
AND a.tablespace_name = c.tablespace_name;

SELECT tablespace_name,

file_id,

file_name,

round(bytes / (1024 * 1024), 0) total_space

FROM dba_data_files

ORDER BY tablespace_name;

6.查看表空间中的对象

COLUMN segment_name format a20

select * from (

SELECT t.owner, t.segment_name,t.segment_type,

trunc((SUM(bytes)/1024/1024/1024),2) as SIZE_GB

From dba_segments t

WHERE t.tablespace_name IN ('TBS_SD','TBS_SSD')

AND t.segment_type <> 'LOBSEGMENT'

GROUP BY t.owner,t.segment_name,t.segment_type

ORDER BY SUM(bytes) desc

) where rownum <= 20;

SELECT t.owner, t.segment_name,t.segment_type,

trunc((SUM(bytes)/1024/1024/1024),2) as SIZE_GB

From dba_segments t

WHERE t.segment_name = &table_name

AND t.segment_type <> 'LOBSEGMENT'

GROUP BY t.owner,t.segment_name,t.segment_type

ORDER BY SUM(bytes) desc

7.查看正在执行的SQL

select a.terminal,a.username,b.SQL_FULLTEXT

from v$session a, v$sqlarea b

where a.sql_address = b.address

and a.status = 'ACTIVE';

8.Interval分区表

年:INTERVAL (NUMTOYMINTERVAL(1,'year')

月:INTERVAL (NUMTOYMINTERVAL(1,'month')

周:INTERVAL ( NUMTODSINTERVAL (7, 'day') )

日:INTERVAL ( NUMTODSINTERVAL (1, 'day') )

numtodsinterval(,) ,x是一个数字,c是一个字符串,
表明x的单位,这个函数把x转为interval day to second数据类型
常用的单位有 ('day','hour','minute','second')

NUMTOYMINTERVAL(1, 'YEAR') 一年

NUMTOYMINTERVAL(1, 'MONTH') 一个月

NUMTODSINTERVAL(1, 'DAY') 一天

NUMTODSINTERVAL(1, 'HOUR') 一小时

NUMTODSINTERVAL(1, 'MINUTE') 一分钟

NUMTODSINTERVAL(1, 'SECOND') 一秒

9.查询分区表信息

col partition_position format 999 head "Pos"

col partition_name format a10 head "Name"

col high_value format a50 head "High Value"

select partition_position, partition_name, high_value

from dba_tab_partitions

where table_name = 'T_PARTITION_SUB128' order by 1;

感谢各位的阅读,以上就是"Oracle有什么常用脚本"的内容了,经过本文的学习后,相信大家对Oracle有什么常用脚本这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

字符 字符集 脚本 文件 常用 查询 代表 数字 内容 情况 数据 进制 学习 信息 单位 字节 数据库 用以 空间 分区表 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 科技互联网企业 互联网科技公司华为 科技和互联网公司 互联网最新的科技 深圳互联网络科技有限公司 互联网科技公司官网 互联网科技实习生岗位职责 互联网系的金融科技公司 互联网公司科技股 武汉健翔互联网络科技有限公司 允成互联网科技有限公司融资 乌鲁木齐新华智原互联网科技学校 企晟互联网信息科技有限公司 互联网在线教育科技创业 图游互联网科技 半导体行业属于互联网高科技类吗 神州科技互联网有限公司 互联网科技企业商标注意事项 互联网科技创业有什么好项目 互联网公司 科技公司 互联网 卓越科技 壕鑫互联网络科技 互联网科技上市公司 互联网 科技馆 互联网公司科技股 花神(南京)互联网科技有限公司 高科技互联网套路 广州千川互联网科技有限公司 南京一网一红互联网科技有限公司
0