3. Oracle 知识点

最后更新于:2022-04-02 07:44:39

#### Oracle 字符集 知识点 数据库字符集:(按照开发要求) 国家字符集:(默认) 客户端(NLS_LANG) ```shell NLS_LANG各部分含义如下: LANGUAGE指定: -Oracle消息使用的语言 -日期中月份和日显示 TERRITORY指定 -货币和数字格式 -地区和计算星期及日期的习惯 CHARACTERSET: -控制客户端应用程序使用的字符集 通常设置或者等于客户端(如Windows)代码页 或者对于unicode应用设置为UTF8 ``` #### startup,startup mount,startup nomount之间的区别 ```html startup nomount选项:(读初始化参数文件,启动实例) startup nomount选项启动实例,但不安装数据库。当数据库以这个模式启动时,参数文件被读取;后台进程和内存结构被启动;但它们不被附加或与数据库的磁盘结构进行通信。当实例处于这个状态时,数据库是不可使用的。 通常启动到这里可以做create database , create or recreate control file 或者是mount standby database等动作,修改parameter也是可以的。 startup mount 选项:(打开控制文件) startup nount选项执行STARTUP NOMOUNT选项的所有工作,但另外附加数据库结构并与这些结构进行交互。这时Oracle从它用来查找和附加到主要数据库结构的控制文件中获得信息。当处于这个模式时,可以执行一些管理型任务,比如恢复。 读取control file 通常启动到这里的目的有 recover dtabase ; backup database ; rename db files ,change archivelog mode等 startup open 选项:(打开数据文件,日志文件) 如果STARTUP命令行上没有指定任何模式,STARTUP OPEN选项就是默认的启动模式。STARTUP OPEN选项执行STARTUP NOMOUNT和STARTUP MOUNT选项的所有步骤。这个选项把数据库变成对所有用户都时可用的。 open datafile ,online redo log startup force选项: 如果在用正常方式启动数据库时遇到了困难,可以使用STARTUP FORCE选项。STARTUP FORCE选项首先异常关闭数据库,然后重新启动它。 STARTUP RESTRICT选项: STARTUP RESTRICT选项启动数据库并把它置入OPEN模式,但只给拥有RESTRICTED SESSION权限的用户赋予访问权。 ``` #### Oracle导出表补全 > deferred_segment_creation在11.2.0.4版本的新增参数,默认是true。 这会导致在exp时,没有segment的对象不会导出。 解决: 1. 设置deferred_segment_creation的值为false 此方法只对以后的表有效,之前的表还是没分配空间。 ```sql alter system set deferred_segment_creation=false scope=both; ``` 2. 创建表的时候声明立即创建Segment ```sql create table table_name segment creation immediate; ``` 3. 对于已经创建但是还没有Segment的表来说, ```sql --找到需要初始化的表,并生成语句 select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0 or num_rows is null; --执行生成语句 ``` 来使其创建出分配空间, 当然也可以插入一条数据,使其创建分配空间; #### 32位Oracle9i 调整最大内存超过1.7GB后,数据库挂了 1. 导入数据,调试成功。 2. 出于性能考虑,盲目增加了Oracle内存,超过1.7GB,导致数据库故障,百般调试失败,重新建库(7点半-12点) 3. 建表,建立用户,导入数据库报错,imp 00017 错误603,百度没有解决办法,有点慌了,(期间各种扩展表空间,无效)担心故障处理不了。 4. 强制自己冷静,看日志,http://blog.itpub.net/11976525/viewspace-702029/, 5. 临时表空间设置的是自动扩展,不回收,虽然扩展但是无效。 6. 执行如下命令后,导入目前正常。 ```sql 查看临时文件 select FILE#,TS#,NAME,STATUS,ENABLED from v$tempfile; 查看临时文件是不是自动扩展 select FILE_NAME,FILE_ID,TABLESPACE_NAME,AUTOEXTENSIBLE ,STATUS from dba_temp_files; alter database tempfile '..../temp.dbf' autoextend off ``` **血淋淋的教训: 1.盲目操作,没有按照主库进行配置,错了活该。 2.遇到问题不看日志,活该。**
';