ORACLE-工作常用配置及命令记录-导入sql、unl文件、查看数据库状态、修改字符集等

简介:

博文说明【前言】:

    本文将记录个人工作中常用的oracle配置命令及相关知识,在目前时间点【2017年5月16号】下,所掌握的技术水平有限,可能会存在不少知识理解不够深入或全面,望大家指出问题共同交流,在后续工作及学习中如发现本文内容与实际情况有所偏差,将会完善该博文内容。




正文:


1、cmd中执行sql脚本

sqlplus mcpdb/McPDBds00@10.133.200.230/cxydck1 @D:\浏览器下载-download\TS_COMPANY-副本.sql

上面这是在没有使用ora文件的情况下,如有ora文件,则10.133.200.230/cxydck1可以替换成自定义的名称

2、plsql中执行sql脚本

打开命令窗口-->@d:\database.sql  或者 start d:\database.sql


3、将unl文件数据导入oracle数据库


1、编辑sql.ctl文件,sql.ctl文件内容如下:


load data  
infile 'C:\Users\Administrator\Desktop\移动查勘上线测试\2016-10-26-更新分公司用户数据库\prpdbankaccount.txt'  
insert  
into table ts_bankaccount_bak2  
fields terminated by'#'  
trailing nullcols  
(  
    OPENBANKCODE,  
    OPENBANKNAME,  
    NAMECODE, 
    AREACODE, 
    USEFLAG   
)


注意:文件中的“#”代表的是unl文件中以#为分隔符,如果文件中是以|作为分隔符,则需要将#替换成|,括号中的5个字段指的是对应的5个字段。


 2、打开cmd,路径进入ctl和data.txt所在的路径,运行


sqlldr mcp31000000/mcp31000000@jspt control=sql.ctl log=log.log bad=bad.log errors=5000 
rows=500 bindsize=1048576


注意:

rows与bindsize相关,rows默认64行,如果不修改bindsize,只修改rows无效。

bindsize --(每次提交记录的缓冲区的大小,字节为单位,默认256000)


4、AIX服务器上使用topas,查看时出现:Terminal linux is unknown

解决方法:export TERM=vt100  然后在CRT终端上修改将terminal修改为VT100,输出结果后可以再次修改回linux


5、查看RAC集群资源信息

# srvctl  config database -d cxydck -a 【注意:-d后面接的是server_name】


6、查看RAC集群监听信息

# srvctl config listener -n ZB23YDCK1(主机名)


7、查看RAC集群连接信息

# srvctl  config database -d cxydck -t


8、查看RAC集群实例状态【cxydck为server_name】

# srvctl  status database -d cxydck  -v


9、查看节点应用程序状态: srvctl status nodeapps


10、列出所配置的数据库名称:srvctl config database


11、列出所配置的数据库的详细信息:srvctl config database -d cxydck -a


12、查看ASM磁盘:srvctl status asm -a


13、查看listener:srvctl status listener


14、查看磁盘空间信息

进grid用户下进入asmcmd,然后lsdg查看磁盘组空间


15、修改数据库默认字符集

查看当前数据库的字符集

Sql> select userenv('language') from dual;

错误操作:

改服务器端字符集,通过ORACLE的SQL PLUS命令窗口改

在SQL*PLUS中,以DBA登录 conn 用户名 as sysdba

然后执行以下命令

>shutdown immediate;    (把database停了,关闭数据库实例Instance)

>startup mount;        (把database重开去可更改情況,实例装载数据库)

>alter system enablerestricted session;

>alter system set job_queue_processes=0;

>alter system setaq_tm_processes=0;

>alter database open;                     (Instance打开数据库)

>alter database characterset utf8;

OR

>alter database characterset internal_use utf8;(AL32UTF8)

>shutdown immediate;

>startup;        (重开正常oracle)


注意:oracle修改字符集只能全局修改,不能只针对某一个用户进行修改,并且在建库的时候字符集是已经选好的,后期是不能被修改的。如果使用命令强制修改字符集,虽然在在表面,字符集是显示的被修改,但是实际上,数据库被不可逆的破坏了。

一般修改字符集的准确做法是新建实例,做迁移。也就是说上面这一种方法是错误的,正确的修改方法为:





16、死锁问题解决


一、数据库死锁的现象

程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错。

二、死锁的原理

当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提

交,另一条对于这一列数据做更新操作的语句在执行的时候就会处于等待状态,

此时的现象是这条语句一直在执行,但一直没有执行成功,也没有报错。

三、死锁的定位方法

通过检查数据库表,能够检查出是哪一条语句被死锁,产生死锁的机器是哪一台。

1)用dba用户执行以下语句

select username,lockwait,status,machine,program from v$session where sid in

(select session_id fromv$locked_object)

如果有输出的结果,则说明有死锁,且能看到死锁的机器是哪一台。字段说明:

Username:死锁语句所用的数据库用户;

Lockwait:死锁的状态,如果有内容表示被死锁。

Status:状态,active表示被死锁

Machine:死锁语句所在的机器。

Program:产生死锁的语句主要来自哪个应用程序。


2)用dba用户执行以下语句,可以查看到被死锁的语句。

select sql_text from v$sqlwhere hash_value in

(select sql_hash_value fromv$session where sid in

(select session_id fromv$locked_object))

四、死锁的解决方法

     一般情况下,只要将产生死锁的语句提交就可以了,但是在实际的执行过程中。用户可

能不知道产生死锁的语句是哪一句。可以将程序关闭并重新启动就可以了。

 经常在Oracle的使用过程中碰到这个问题,所以也总结了一点解决方法。

1)查找死锁的进程:

sqlplus "/assysdba" (sys/change_on_install)

SELECTs.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,

l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS

FROM V$LOCKED_OBJECTl,V$SESSION S WHERE l.SESSION_ID=S.SID;

2)kill掉这个死锁的进程:

alter system kill session ‘sid,serial#’; (其中sid=l.session_id)

3)如果还不能解决:

select pro.spid fromv$session ses,v$process pro where ses.sid=XX and ses.paddr=pro.addr;

  其中sid用死锁的sid替换: exit

ps -ef|grep spid

  其中spid是这个进程的进程号,kill掉这个Oracle进程



17、执行startup时,提示ORA-00845:MEMORY_TARGET not supported on this system


在重启oracle11G的时候出现这个错误,解决方法:

如上的内容就详细的解释了该错误是由于/dev/shm小于MEMORY_TARGET的大小,或者是/dev/shm根本就没有挂载,如果同时设置了MEMORY_TARGET和MENORY_MAX_TARGET,那么/dev/shm至少必须和MEMORY_MAX_TARGET的大小一致

因此在这里需要重新把这个目录进行挂载,在挂载的时候,添加内存参数,进入/etc/fstab文件

修改为:tmpfs                   /dev/shm                tmpfs   defaults,size=3G        0 0

[root@tp-oracle11g-1 ~]# df-h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              60G   18G  39G  31% /

tmpfs                 1.9G  909M 1009M 48% /dev/shm

/dev/sda1             194M   32M 152M  18% /boot

/dev/sda5              36G  177M  34G   1% /home

/dev/sr0              4.1G 4.1G     0 100% /media

提示无法umount的时候使用  fuser -km /dev/shm/  然后再umount

重新挂载之后的状态:

[root@tp-oracle11g-1 ~]# df-h

Filesystem            Size  Used Avail Use% Mounted on

/dev/sda2              60G   18G  39G  31% /

/dev/sda1             194M  32M  152M  18% /boot

/dev/sda5              36G  177M  34G   1% /home

/dev/sr0              4.1G  4.1G    0 100% /media

tmpfs                 3.0G     0 3.0G   0% /dev/shm

然后:

SQL> startup;

ORACLE instance started.

Total System Global Area1603411968 bytes

Fixed Size               2213776 bytes

Variable Size               939526256 bytes

Database Buffers        654311424 bytes

Redo Buffers                 7360512 bytes

Database mounted.

Database opened.

然后重新挂载,如果在卸载umount  /dev/shm的时候失败,无法卸载,那么输入:fuser–km /dev/shm,

然后再重新挂载mount –a 





结尾:



     感谢阅读,祝有收获的一天,谢谢!




      本文转自1清风揽月1  51CTO博客,原文链接:http://blog.51cto.com/watchmen/1926634,如需转载请自行联系原作者




相关文章
|
11天前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
47 11
|
24天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
1月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
17天前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
1月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
49 7
|
3月前
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
|
5月前
|
SQL 存储 监控
SQL Server的并行实施如何优化?
【7月更文挑战第23天】SQL Server的并行实施如何优化?
133 13
|
5月前
|
SQL
解锁 SQL Server 2022的时间序列数据功能
【7月更文挑战第14天】要解锁SQL Server 2022的时间序列数据功能,可使用`generate_series`函数生成整数序列,例如:`SELECT value FROM generate_series(1, 10)。此外,`date_bucket`函数能按指定间隔(如周)对日期时间值分组,这些工具结合窗口函数和其他时间日期函数,能高效处理和分析时间序列数据。更多信息请参考官方文档和技术资料。
|
5月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
69 6
|
5月前
|
存储 SQL C++
对比 SQL Server中的VARCHAR(max) 与VARCHAR(n) 数据类型
【7月更文挑战7天】SQL Server 中的 VARCHAR(max) vs VARCHAR(n): - VARCHAR(n) 存储最多 n 个字符(1-8000),适合短文本。 - VARCHAR(max) 可存储约 21 亿个字符,适合大量文本。 - VARCHAR(n) 在处理小数据时性能更好,空间固定。 - VARCHAR(max) 对于大文本更合适,但可能影响性能。 - 选择取决于数据长度预期和业务需求。
456 1

推荐镜像

更多
下一篇
DataWorks