Oracle有什么常用脚本
这篇文章主要讲解了“Oracle有什么常用脚本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle有什么常用脚本”吧!
1.linux 启动数据库脚本
#!/bin/bash
exportORACLE_HOSTNAME=emcc.example.com
echo"StartingtheOracleDatabaseandnetworklistener....."
echo""
exportORACLE_HOME=/u01/db/product/dbhome_1
exportPATH=$ORACLE_HOME/bin:$PATH
exportORACLE_SID=orcl
$ORACLE_HOME/bin/lsnrctlstart
$ORACLE_HOME/bin/sqlplus'/assysdba'<<-_START_DB
startup;
altersystemregister;
exit;
_START_DB
2.查询主外键依赖脚本
selectb.ownerasparent_owner,b.table_nameasparent_table,a.owneraschild_owner,a.table_nameaschild_table
fromdba_constraintsa,dba_constraintsb
wherea.constraint_type='R'
anda.r_constraint_name=b.constraint_name
andb.constraint_type='P'
andb.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;
SELECTtablespace_name,
file_id,
file_name,
round(bytes/(1024*1024),0)total_space
FROMdba_data_files
ORDERBYtablespace_name;
6.查看表空间中的对象
COLUMNsegment_nameformata20
select*from(
SELECTt.owner,t.segment_name,t.segment_type,
trunc((SUM(bytes)/1024/1024/1024),2)as SIZE_GB
Fromdba_segmentst
WHEREt.tablespace_nameIN('TBS_SD','TBS_SSD')
AND t.segment_type <> 'LOBSEGMENT'
GROUPBYt.owner,t.segment_name,t.segment_type
ORDERBYSUM(bytes)desc
)whererownum<= 20;
SELECTt.owner,t.segment_name,t.segment_type,
trunc((SUM(bytes)/1024/1024/1024),2)as SIZE_GB
Fromdba_segmentst
WHEREt.segment_name = &table_name
AND t.segment_type <> 'LOBSEGMENT'
GROUPBYt.owner,t.segment_name,t.segment_type
ORDERBYSUM(bytes)desc
7.查看正在执行的SQL
selecta.terminal,a.username,b.SQL_FULLTEXT
fromv$sessiona,v$sqlareab
wherea.sql_address=b.address
anda.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.查询分区表信息
colpartition_positionformat999head"Pos"
colpartition_nameformata10head"Name"
colhigh_valueformata50head"HighValue"
selectpartition_position,partition_name,high_value
fromdba_tab_partitions
wheretable_name='T_PARTITION_SUB128'orderby1;
感谢各位的阅读,以上就是“Oracle有什么常用脚本”的内容了,经过本文的学习后,相信大家对Oracle有什么常用脚本这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。