Oracle有什么常用脚本

62次阅读
没有评论

共计 3749 个字符,预计需要花费 10 分钟才能阅读完成。

这篇文章主要讲解了“Oracle 有什么常用脚本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着丸趣 TV 小编的思路慢慢深入,一起来研究和学习“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 是一个数字,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 有什么常用脚本这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是丸趣 TV,丸趣 TV 小编将为大家推送更多相关知识点的文章,欢迎关注!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计3749字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)