Oracle Database Administration Introduction Basic administration Additional information • http://technet.oracle.com - for developers and administrators, available for: – Download of Oracle products – Download and viewing of product documentation • http://www.mini.pw.edu.pl/~maczewsk/oracle – Presentations from the lecture – Lab tasks Lecture plan • Part 1 – basic database administration: – creating database objects: users, tables, indexes, tablespaces, datafiles etc. – managing database objects – networking, connecting to remote databases – SQL language – SQL standard and Oracle extensions – programming Oracle – PL/SQL language – exporting and importing data Lecture plan cont. • Part 2 – performance tuning: – database instance parameters (e.g.: memory) – tuning individual database components (log buffers, undo space) – tuning SQL statements (obtaining execution plan, creating indexes, using hints) Lecture plan cont. • Part 3 – backup and recovery: – Physical data storage – Offline and online backups – Restoring database from backup – Recovering database after hardware failure or user error – Managing standby database Introduction to the Oracle Database Oracle History • 1978 – Oracle V1, never officially released • 1980 – Oracle V2 released, written in assembly language • 1994 – Oracle 7 for PC released • 1998 – Support for Linux platform • 1999 – Oracle 8i with Java integration • 2001 – Oracle 9i – modern Oracle • 2004 – Oracle 10g • 2007 – Oracle 11g • 2013 – Oracle 12c Oracle database • The best database for large database systems: – most reliable in terms of data safety – highest availability – scalable – good internationalization support • Oracle shortcomings: – price – expensive – speed – not the fastest database available – amount of resources consumed Data safety • Many features that ensure safety of data: – multiplexing of important database files – writing changes to data files and to special log files. Log files are used to recover database after software or hardware failure – archiving of log files. Archived log files can be written to backup location(s) – protection from human errors: • possibility to view data from some point in time in the pas • possibility to use backup and perform point in time recovery Availability • Very high availability: – online backups – without shutting down the database – most administrative tasks can be performed while the database is running and available for users, for example: analyzing, rebuilding indexes, moving data – disk failure: it is possible to turn off and recover only the part of the database that was affected by the failure, the rest of the database can continue running – parameters that ensure that recovery after failure will take no more than the specified time – standby database – second database that can be opened if the main database fails Scalability • Oracle can handle unlimited amount of data: – no limit on number of rows, number of tables etc. – no limit on total size of the database • Oracle runs on various operating systems: – Windows NT/XP – Linux – Solaris, HP-UX, AIX • Oracle Cloud/Grid – single database on a cluster Internationalization • Database supports multiple languages/locales: – sorting of text can be done in client language order – date, time and currency is client dependent – character set conversion – database running in utf8 or iso8859-2 will convert data for clients using windows-1250 • Internally database can store data in Unicode Oracle editions • Express edition: – Simple installation and administration, some features are not available (for example: Java Virtual Machine is disabled) • Standard edition: – Most frequently used features are available • Enterprise edition: – All features, very expensive Speed of the database • Oracle favors data safety over speed: – it is not possible to disable some features to achieve greater speed (e.g.: transactions) – some other databases (e.g. MySQL) are faster than Oracle Resources consumed • Oracle consumes large amounts of resources: – new, empty database – at least 200MB, usually over 1GB – at least 256MB RAM • Hint: when installing Oracle on private computer (Windows): – install Standard or Enterprise edition – assign around 256MB RAM for Oracle – install database normally – change startup of Oracle services to manual – when required start the database manually with: oradim –startup –sid database_sid Oracle terminology - database • Database – data stored on disk (data files and some additional files) • Database instance – program (group of programs) that opens the database (disk files) and makes it available to users • User connects to the database instance and retrieves data or requests changes to the database • When running Oracle on a cluster, there are multiple database instances that open the same database Oracle terminology - schema • Schema – set of objects (tables, indexes, views) that belong to a database user. – In Oracle SCHEMA = USER – When new user is created (CREATE USER command), initially it has an empty schema – When the user logs in and creates new table, the table is added to his schema – When user issues: SELECT * FROM some_table Oracle looks for some_table in the user’s schema – It is possible to access data in some other schema: SELECT * FROM some_user.some_table Major differences from other database systems Single database • Many other database systems (Postgres, MSSQL) can have multiple databases opened by a single database engine – each application can use separate database for its data • In Oracle single Oracle Instance can open one database – normally on a single database server there will be only one database – each application can store its data in separate user schema Data storage • Many other database systems (Postgres, MySQL) store table data in a separate file or group of files • Oracle stores table data in a tablespace. Multiple tables are normally stored in the same tablespace. Tablespace can be stored in one or more data files (physical disk files) Transactions • Oracle executes every statement in a transaction – there is no command to start a transaction (like BEGIN TRANSACTION) – transaction is started automatically with a first statement after COMMIT or ROLLBACK – usually transaction must be finished manually with COMMIT, exceptions: • it is possible to turn on AUTOCOMMIT (by default: disabled) • some statements commit the transaction automatically: all CREATE, ALTER, DROP and TRUNCATE statements Transaction example -- user connects to the database DELETE FROM table1; -- new transaction created INSERT INTO table1 VALUES (1, ‘some text’); INSERT INTO table1 VALUES (2, ‘some text’); CREATE TABLE table2 ( id NUMBER PRIMARY KEY, text VARCHAR2(256) ); ROLLBACK; -- table1 contains 2 rows, -- the rollback statement rolled -- back empty transaction Date format, language • Oracle has no fixed date and time format. When displaying dates, Oracle uses the format consistent with the connected client • Language used by Oracle (for example: error messages) also depend on the language settings • To use English with Oracle, set the environment variable NLS_LANG before starting SQLPlus: – SET NLS_LANG=AMERICAN_AMERICA.UTF8 General database terminology • Database user – login and password used to connect to the database. Each user has: – set of privileges for accessing the database – schema objects: objects: tables, indexes etc. • Table – database object used for data storage: – can have any number of rows – has fixed number of columns, each column has a name and datatype – can have constraints, indexes and relations to other tables • Relation – defines a dependency between two tables • Constraint – rule that must be satisfied by each table row. Constraint can be: – PRIMARY KEY constraint – NOT NULL constraint – UNIQUE constraint – FOREIGN KEY constraint (relation) – CHECK constraint • Index – object that organizes data in a table. Indexes are used: – to enforce PRIMARY KEY and UNIQUE constraints – to improve query performance • Trigger – action performed when user makes changes to database data • Session – single connection to the database. One user can open multiple sessions to the database • Transaction – set of operations that are visible as single (atomic) operation on the database. Transaction belongs to a single open database session. Accessing the database • Oracle can be accessed from various tools: – Oracle tools: • SQLPlus (always available) – command line tool for executing SQL statements. All administrative statements can be executed from SQLPlus • SQL Developer – free development tool, easier to use than SQLPlus – Third party tools: • TOAD –application for administrating Oracle database, executing SQL statements, TOAD Freeware Edition is available for free Connecting to the database • In order to connect, you need to specify: – user name – password – connect string (optional) – connect mode (optional) • Connect string: – determines location of the database, if not specified – local database • Connect mode – specified for administrative connections (database startup and shutdown) Starting database session • The following commands will start SQLPlus and connect to the database: – sqlplus test/testpass – Log in as user “test” password “testpass” to local database – sqlplus test/testpass@db – Log in as user “test” to database “db” – sqlplus system/orclstudent – Log in as user “system” password “orclstudent” – sqlplus sys/orclstudent as sysdba – Log in as user “sys” with special SYSDBA privileges Networking Connecting to Oracle • Connection to Oracle is possible: – in local mode – when connecting to local database only – via network – when connecting to some other database • All non-local connections are done through the listener The listener • Oracle Listener is separate from the database • In Windows it starts as service OraclexxxxTNSListener • One listener can handle connections for multiple databases • Listener configuration determines how clients will connect to the database. By default listener: – uses TCP/IP – listens on port 1521 – default Oracle port Listener configuration • Listener configuration is in $ORACLE_HOME/network/admin/listener.ora • Example configuration: LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = host_name)(PORT = 1521)) (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0)) ) ) Listener startup and shutdown • Listener can be started manually from the command line: – lsnrctl start • Other commands: – lsnrctl stop – stops the listener – lsnrctl status – shows list of services that this listener supports Naming configuration • When connecting to database using SQLPlus you specify: – user name – password – database name • When the database name is empty – connection to the local database • When the database name is not empty – lookup of the database name. By default database names are looked up in tnsnames.ora file tnsnames.ora • Location: $ORACLE_HOME/network/admin/tnsnames.ora • This file is used to lookup names of databases: – IP address of the database – listener port number – name of the Oracle instance tnsnames.ora - example • Typical entry in the tnsnames.ora file: TEST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = name_or_ip) (PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = database_instance_name) ) ) tnsnames.ora - example • Entries in tnsnames.ora enable: – specifying multiple addresses for a connection (connect time failover) – request load balancing between the list of available addresses TEST = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = name_or_ip) (PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = other_host) (PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = database_instance_name) ) ) tnsnames.ora - example • Load balancing example TEST = (DESCRIPTION = (ADDRESS_LIST = (LOAD_BALANCE=on) (FAILOVER=off) (ADDRESS = (PROTOCOL = TCP)(HOST = name_or_ip) (PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST = other_host) (PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = database_instance_name) ) ) Database administration Administrative privileges • Database administration requires strong privileges: – SYSDBA – the most powerful database privilege, enables database startup, shutdown and access to all data in the database – SYSOPER – enables database startup and shutdown without access to database data – DBA – role (a group of privileges) giving user full administrative access, but without the right to start and shut down the database Administrator accounts • Each Oracle database has two accounts: – SYS – owner of the administrative objects, created with DBA role, has SYSDBA and SYSOPER privileges – SYSTEM – automatically created with DBA role • SYS and SYSTEM users should not be used to create any tables DBA, SYSDBA and SYSOPER • DBA role grants administrator access to the database when the database is running • DBA role is not enough to startup and shutdown the database • SYSDBA and SYSOPER enable database startup and shutdown • In order to use the SYSDBA or SYSOPER privilege, the connection must be in special mode: connect sys/sys_password as sysdba Important! • SYSDBA is not database user name – it is a privilege and special connect mode. • When connecting to the database: connect sys/sys_password as sysdba special connection with in SYSDBA mode is requested. SYSDBA and SYSOPER • DBA user can be granted SYSDBA or SYSOPER privilege • SYSDBA privilege enables you to – Perform STARTUP and SHUTDOWN operations – ALTER DATABASE: open, mount, back up, or change character set – CREATE DATABASE – DROP DATABASE – CREATE SPFILE – ALTER DATABASE ARCHIVELOG – ALTER DATABASE RECOVER – Includes the RESTRICTED SESSION privilege – SYSDBA lets you look at any user’s data Database shutdown • SHUTDOWN NORMAL – waits for all users to disconnect, not recommended – can take a long time • SHUTDOWN TRANSACTIONAL – waits for all users to finish their transactions • SHUTDOWN IMMEDIATE – rolls back all uncommitted transactions, closes all sessions, closes the database and shuts down the instance • SHUTDOWN ABORT – aborts the instance, does not close the database properly. Requires automatic recovery after startup. Database startup • Database startup involves 3 steps: – starting the instance – mounting the database – opening the database – opened database is available for use • STARTUP – executes those 3 steps • When performing administrative actions, those steps can be performed one by one: – STARTUP NOMOUNT – only start the instance, useful when creating the database – STARTUP MOUNT – start the instance and mount the database (open database control files) Database startup • Example startup (rarely used): – STARTUP NOMOUNT – ALTER DATABASE MOUNT – ALTER DATABASE OPEN • Example startup (used for many administrative actions): – STARTUP MOUNT – perform some administrative actions, e.g. recover the database, change archiving mode – ALTER DATABASE OPEN – opens database for use System views • Oracle provides many system views that provide information about the database: – v$session – all open sessions – v$datafile – all data files – v$logfile – all log files – v$database – general information about the database – v$instance – general information about the instance • Some of those views are available when the database is closed Example scenario • The database cannot start, error message is that file number 4 is corrupt. • Recovery: – STARTUP MOUNT – SELECT name FROM v$datafile WHERE file# = 4 – fix the problem with the file, e.g. restore it from backup – recover the database – ALTER DATABASE OPEN