“DB2:数据库创建与迁移”与“Oracle:ORA-00845”:页面之间的差异

(页面间差异)
imported>Soleverlee
以“<syntaxhighlight lang='sql'> -- db2=> create database pcp -- 自动存储器数据库 -- 有时需要制定剩余空间较大的目录 create database pcp automatic...”为内容创建页面
 
imported>Soleverlee
以“<pre> SQL> startup ORA-00845: MEMORY_TARGET not supported on this system </pre> <br/> 在oracle 11g中新增的内存自动管理的参数MEMORY_TARGET,它能自动...”为内容创建页面
 
第1行: 第1行:
<syntaxhighlight lang='sql'>
<pre>
-- db2=>
SQL> startup
create database pcp
ORA-00845: MEMORY_TARGET not supported on this system
-- 自动存储器数据库
</pre>
-- 有时需要制定剩余空间较大的目录
<br/>
create database pcp automatic storage yes on E:\
在oracle 11g中新增的内存自动管理的参数MEMORY_TARGET,它能自动调整SGA和PGA,这个特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小就会报错
-- 制定字符集
*解决方案
-- SQLCODE=-286, SQLSTATE=42727, SQLERRMC=8192 一般是因为pagesize设置的太小了,导致在创建表的时候空间不足。
初始化参数MEMORY_TARGET或MEMORY_MAX_TARGET不能大于共享内存(/dev/shm),为了解决这个问题,可以增大/dev/shm
create database pcp automatic storage yes using codeset GBK territory CN
<syntaxhighlight lang='bash'>
create database sbdb automatic storage yes using codeset GBK territory CN pagesize 32768
df -lh
 
mount -t tmpfs shmfs -o size=7g /dev/shm
-- 以下是禁用自动存储器的一些示例:
</syntaxhighlight>
create database ASNODB1 automatic storage no
为了确保操作系统重启之后能生效,需要修改/etc/fstab文件
create database ASNODB2 automatic storage no on X:
<pre>
 
shmfs /dev/shm tmpfs size=7g 0
-- 显式或隐式启用自动存储器的一些示例:
</pre>
create database DB1
或者:
create database DB2 automatic storage yes onX:
修改/etc/fstab文件,修改成下列形式(添加size=4G)
create database DB3 on/data/path1, /data/path2
<pre>
create database DB4 on D:\StoragePath dbpath on C:
tmpfs /dev/shm tmpfs defaults,size=4G 0 0
 
</pre>
-- 数据迁移
重启系统,或者,重新挂载:
-- 在原始机建立一个目录test,cd进后:
<syntaxhighlight lang="bash">
db2move dbname export –u user –p password
umount /dev/shm
-- 会生成很多文件,其中db2move.lst记录所有导出的文件,可以进行编辑从而决定导入哪些数据表。
mount /dev/shm
-- 如果需要修改schema 可以直接对db2moge.lst进行替换操作
df -k /dev/shm
-- vim %s/源字符串/目的字符串/g
</syntaxhighlight>
-- 在目标机建立一个目录test,cd进入:
umount时如果出现device is busy的情况,可使用fuser命令杀掉进程。
db2move dbname import –u user –p password
<syntaxhighlight lang="bash">
 
fuser -km /dev/shm
-- 查看所有数据库
</syntaxhighlight>
db2 list db directory
 
 
list active databases
-- 执行schema查询
select * from sysibm.sysschemata
</syntaxhighlight >
 
[[Category:Database]]
[[Category:Database]]

2015年3月19日 (四) 03:09的最新版本

SQL> startup
ORA-00845: MEMORY_TARGET not supported on this system 


在oracle 11g中新增的内存自动管理的参数MEMORY_TARGET,它能自动调整SGA和PGA,这个特性需要用到/dev/shm共享文件系统,而且要求/dev/shm必须大于MEMORY_TARGET,如果/dev/shm比MEMORY_TARGET小就会报错

  • 解决方案

初始化参数MEMORY_TARGET或MEMORY_MAX_TARGET不能大于共享内存(/dev/shm),为了解决这个问题,可以增大/dev/shm

df -lh
mount -t tmpfs shmfs -o size=7g /dev/shm

为了确保操作系统重启之后能生效,需要修改/etc/fstab文件

shmfs /dev/shm tmpfs size=7g 0

或者: 修改/etc/fstab文件,修改成下列形式(添加size=4G)

tmpfs /dev/shm tmpfs defaults,size=4G 0 0

重启系统,或者,重新挂载:

umount /dev/shm
mount /dev/shm
df -k /dev/shm

umount时如果出现device is busy的情况,可使用fuser命令杀掉进程。

fuser -km /dev/shm