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,如需转载请自行联系原作者




相关文章
|
4天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
40 10
|
19天前
|
监控 关系型数据库 数据库
OceanBase数据库常见问题之文件存在但是数据库提示文件不存在如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
21天前
|
SQL 存储 BI
【软件设计师备考 专题 】数据库语言(SQL)
【软件设计师备考 专题 】数据库语言(SQL)
88 0
|
25天前
|
Oracle 关系型数据库 分布式数据库
PolarDB常见问题之PolarDB(Oracle兼容版) 执行命令报错如何解决
PolarDB是阿里云推出的下一代关系型数据库,具有高性能、高可用性和弹性伸缩能力,适用于大规模数据处理场景。本汇总囊括了PolarDB使用中用户可能遭遇的一系列常见问题及解答,旨在为数据库管理员和开发者提供全面的问题指导,确保数据库平稳运行和优化使用体验。
|
28天前
|
SQL 安全 数据库
SQL-Server 数据库部署
SQL-Server 数据库部署
56 0
|
25天前
|
SQL Java 数据库连接
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
从来没想到我们会扒拉nohup文件去找我们想要的数据,然后往数据库中添加。。。...
17 0
|
25天前
|
SQL 数据库
sql server中创建数据库和表的语法
sql server中创建数据库和表的语法
17 1
|
4天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
44 6
|
4天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
11天前
|
数据库 SQL 索引
什么是数据库 SQL Execution Plan
什么是数据库 SQL Execution Plan
9 0

推荐镜像

更多